AnĂĄlise forense
SessĂŁo de aprendizagem 2 Ambiente e ferramentas de anĂĄlise forense
Sumário Pré-requisitos Hardware Sistema operacional Live-CD Preservação de informações voláteis
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.
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.
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.
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
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.
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.
Hardware forense Estações e servidores para computação forense
Hardware forense Duplicadores de HDs e equipamentos para bloqueio de escrita em mĂdias digitais
Hardware forense Wireless Wi-Fi
Celulares
Pacote forense Helix The Coroner's Toolkit Flag-Knoppix SMART Linux Comerciais FTK Forensic Toolkit EnCase
Pacote forense Helix
Pacote forense FTK Forensic Toolkit
Pacote forense EnCase Forensics
Pacote forense NetWitness
Programas especĂficos Software para reconhecimento visual de imagens
Pesquise... Recupere... Classifique... Rotule... Filtre
Programas especĂficos Esteganografia
Programas especĂficos
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.
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.
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
Id 82 83 5 83
System Linuxswap Linux Extended Linux
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
Preparação do ambiente 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. 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: # date Sun Jan 6 01:34:46 MST 2008 # uptime 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 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 -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
NODE NAME 4060 socket 7524 7526 socket
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.
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: # cat /proc/2877/cmdline -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
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
0 0
Coletando informações dos processos É possível recuperar processos através do /proc. Exemplo: # ps ax | grep sshd 2792 ? Ss 2872 ? Ss
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
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)
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/<dispositivo> bs=512 conv=noerror dd: writing `/dev/<dispositivo>': 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
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 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
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
Outras formas de preservação do disco Adepto é uma 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.sh
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