AnĂĄlise forense
SessĂŁo de aprendizagem 3 Ambiente e ferramentas de anĂĄlise forense (parte 2)
Sumário Software básico Ferramentas do sistema 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 CD de ferramentas forenses
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.
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 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
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 /
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
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 # id uid=1000(knoppix) gid=1000(knoppix) euid=0(root) groups=1000(knoppix)
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.
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
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
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
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 <ip_da_estacao_forense>
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"
Software bรกsico de rede
Informações sobre executáveis 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
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
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
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
/data/bla /data/bla /data/bla /data/bla
Informações sobre executáveis 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-3g nm /bin/ntfs-3g objdump -x /bin/ntfs-3g objdump -D /bin/ntfs-3g objdump -S /bin/ntfs-3g
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 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
Pacote forense de ferramentas JĂĄ mencionamos a ferramenta EnCase, para Windows. Existem dois pacotes importantes para Linux: The Coronerâ&#x20AC;&#x2122;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.
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
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.
Pacote forense de ferramentas
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
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 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 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 -f linux-ext2 /data/dev_sda2_root.img # 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
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
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
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
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 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. # 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
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
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
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. # mmstat /dev/das dos
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
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
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) **
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
Outras ferramentas sorter Analisa e ordena os arquivos em uma imagem de disco baseada em um banco de dados de assinaturas de arquivos. # mkdir -p /usr/local/sleuthkit-2.09/share/file/ # cp /usr/share/file/magic /usr/local/sleuthkit2.09/share/file/ # sorter -f linux-ext2 -d /data/sorter /data/dev_sda2_root.img Analyzing "/data/dev_sda2_root.imgâ&#x20AC;&#x153; Loading Allocated File Listing Processing 12674 Allocated Files and Directories â&#x20AC;Ś 100% All files have been saved to: /data/sorter
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
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
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.
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.