03-ferramentas

52
Análise forense Sessão de aprendizagem 3 Ambiente e ferramentas de análise forense (parte 2)

description

Análise forense Sessão de aprendizagem 3 Ambiente e ferramentas de análise forense (parte 2) 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 Sumário

Transcript of 03-ferramentas

Análise forense

Sessão de aprendizagem 3

Ambiente e ferramentas de análise forense (parte 2)

Sumário

Software básicoFerramentas 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}\.[0-9]{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 / sha1deepGeram 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

fileTenta 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

hexdumpPermite a visualização de arquivos binários em um formato hexadecimal.

# hexdump -b /data/partition_table.img����

# hexdump -d /data/partition_table.img����

# hexdump -C /data/partition_table.img����

00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

*

000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 |................|

000001c0 01 00 82 fe 3f 1f 3f 00 00 00 e1 d7 07 00 00 00 |....?.?.........|

000001d0 01 20 83 fe 3f 3f 20 d8 07 00 20 d8 07 00 00 00 |. ..?? ... .....|

000001e0 01 40 05 fe ff ff 40 b0 0f 00 d4 3a f0 00 00 00 |.@....@....:....|

000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|

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 -h /data/bla����

# readelf -S /data/bla����

# readelf -l /data/bla����

# readelf -e /data/bla����

Informações sobre executáveis

ldd/nm/objdumpEstas 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’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: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

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

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 arquivosfsstat

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 arquivosffind

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 arquivosfls

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/usrr/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: 251399AllocatedGroup: 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/bashdaemon:x:1:1:daemon:/usr/sbin:/bin/shbin:x:2:2:bin:/bin:/bin/sh

Ferramentas do nível de blocos de dados

dlsLista 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|unitdls|Helix||1199680475|Fragmentaddr|alloc27891|a27892|a27893|a27894|f27895|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 TableOffset Sector: 0Units 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

hfindPara 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 54904845b4b0a9cb5f4991d39043199����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_statEste comando mostra informações sobre discos ATA e Serial-ATA.

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: 312499999Maximum 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

sorterAnalisa 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/sleuthkit-2.09/share/file/�

# 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

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.