Post on 28-Mar-2016
description
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"�
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
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.