ferramentas forense em sistemas gnu linux e microsoft windows

Transcrição

ferramentas forense em sistemas gnu linux e microsoft windows
FERRAMENTAS FORENSE EM SISTEMAS GNU LINUX
E MICROSOFT WINDOWS
Bolsista: Eric Barbosa Jales de Carvalho
Coordenador: Nathan Franklin Saraiva de Sousa
Teresina
Dezembro/2009
SUMÁRIO
1 INTRODUÇÃO ........................................................................................................................6
2 JUSTIFICATIVA DE EXECUÇÃO DO PROJETO ..............................................................7
3 OBJETIVO E METAS .............................................................................................................8
4 COMPUTAÇÃO FORENSE ...................................................................................................9
4.1 PROCEDIMENTOS ............................................................................................................................. 9
5 GNU LINUX .......................................................................................................................... 11
5.1 Live Forense ................................................................................................................................... 11
5.1.1 Memória Principal do sistema ...................................................................................................... 11
5.1.2 Tráfego da rede do sistema........................................................................................................... 13
5.1.3 Informações sobre as tabelas de roteamento .............................................................................. 15
5.1.4 Informações sobre a tabela ARP ................................................................................................... 16
5.1.5 Informações de processos ativos .................................................................................................. 16
5.1.6 Informações de módulos do sistema ............................................................................................ 19
5.1.7 Informações de registro do sistema .............................................................................................. 19
5.1.8 Informações sobre o /proc e o boot ............................................................................................. 21
5.1.9 Informações sobre o Disco Rígido ................................................................................................. 21
5.1.10 Esterilizar as mídias para a cópia ................................................................................................ 22
5.1.11 Gerar imagem do Disco Rígido .................................................................................................... 23
5.2 Post Mortem .................................................................................................................................. 24
5.2.1 Camada Física ................................................................................................................................ 25
5.2.2 Camada de Dados ......................................................................................................................... 25
5.2.3 Camada de Sistema de Arquivos ................................................................................................... 27
5.2.3 Camada de Metadados ................................................................................................................. 28
5.2.3 Camada de Arquivos ..................................................................................................................... 30
6 MICROSOFT WINDOWS .................................................................................................. 32
6.1 Live Forense ................................................................................................................................... 32
6.1.1 Memória Principal do sistema ...................................................................................................... 33
6.1.2 Sistema Operacional ..................................................................................................................... 34
6.1.3 Usuários e Grupos do sistema ....................................................................................................... 37
6.1.4 Informações de processos ativos .................................................................................................. 40
6.1.5 Serviços em execução ................................................................................................................... 41
6.1.6 Tráfego da rede do sistema........................................................................................................... 43
6.1.7 Informações de registro do sistema .............................................................................................. 46
6.1.8 Informações de registro de Eventos ............................................................................................. 47
6.1.8 Analisando a Lixeira ...................................................................................................................... 48
6.1.9 Analisando histórico de navegação ............................................................................................... 49
6.2 Post Mortem .................................................................................................................................. 50
6.2.1 Geração da Timeline ..................................................................................................................... 50
6.2.2 Análise de arquivos com o HELIX .................................................................................................. 51
7 MICROSOFT WINDOWS - GUI ....................................................................................... 54
7.1 Informações sobre o sistema ......................................................................................................... 54
7.2 Informações sobre os dispositivos ................................................................................................. 57
7.3 Informações gerais sobre o sistema ............................................................................................... 58
7.4 Informações extras sobre o sistema ............................................................................................... 60
7.5 Informações senhas e históricos de navegação .............................................................................. 62
8 CONCLUSÃO ........................................................................................................................ 63
9 DIFICULDADES ENCONTRADAS................................................................................... 64
10 BIBLIOGRAFIA ................................................................................................................ 65
ANEXOS ................................................................................................................................... 67
ANEXO 1 – ADQUIRIR IMAGEM FORENSE ATRAVÉS DO HELIX ............................ 67
HELIX - DD ............................................................................................................................................ 67
HELIX – FTK IMAGER ............................................................................................................................ 68
ANEXO 2 – RECUPERAÇÃO DE ARQUIVOS EXT2 E EXT3 ......................................... 74
Descobrir informações sobre o sistema de arquivo.............................................................................. 74
Recuperar arquivos que não foram sobrescritos .................................................................................. 74
Recuperar arquivos que foram sobrescritos......................................................................................... 75
Recuperar arquivos que foram parcialmente sobrescritos ................................................................... 76
Recuperação de arquivos journaling .................................................................................................... 77
ANEXO 3 – FORENSE COM O AUTOPSY ......................................................................... 82
Iniciando o Autopsy ............................................................................................................................. 82
Criando um novo Caso a ser periciado ................................................................................................. 82
Adicionando um host ao caso .............................................................................................................. 84
Adicionando uma imagem ao caso ...................................................................................................... 85
Criação da Timeline ............................................................................................................................. 86
Recuperando strings da imagem .......................................................................................................... 89
Verificar arquivos baseados em assinaturas ........................................................................................ 93
Verificar os Metadados ........................................................................................................................ 95
Verificar Integridade ............................................................................................................................ 97
Abrir um caso....................................................................................................................................... 97
ANEXO 4 – USANDO A FERRAMENTA BMAP................................................................ 99
Criando um arquivo para testes ........................................................................................................... 99
Verificando conteúdo do arquivo ......................................................................................................... 99
Verificando o espaço ocupado pelo arquivo ........................................................................................ 99
Verificando informações do slack space............................................................................................... 99
Verificando informações do arquivo .................................................................................................. 100
Colocando informação no slack space do arquivo .............................................................................. 100
Verificando novamente informações do slack space .......................................................................... 100
Verificando informações do arquivo .................................................................................................. 100
Checando novamente o conteúdo do arquivo ................................................................................... 101
Verificando novamente o espaço ocupado pelo arquivo.................................................................... 101
ANEXO 5 – ALTERNATE DATA STREAMS .................................................................. 102
Criando um arquivo para testes ......................................................................................................... 102
Verificando tamanho do arquivo ....................................................................................................... 102
Verificando o conteúdo do arquivo .................................................................................................... 102
Adicionando um ADS ao arquivo........................................................................................................ 102
Verificando novamente tamanho do arquivo .................................................................................... 102
Verificando novamente o conteúdo do arquivo ................................................................................. 103
Verificando o conteúdo de um ADS no arquivo .................................................................................. 103
ÍNDICE DE FIGURAS
Figura 1 – Executar o prompt do DOS ......................................................................................... 32
Figura 2 – Configurar variável PATH............................................................................................ 32
Figura 3 – Prompt do DOS alterado ............................................................................................ 33
Figura 4 – Tela inicial do HELIX .................................................................................................... 54
Figura 5 – Selecionar o opção pelo menu ................................................................................... 54
Figura 6 – Tela de confirmação do visualizador do sistema........................................................ 55
Figura 7 – Módulos Disponíveis .................................................................................................. 55
Figura 8 – Exportando um relatório ............................................................................................ 55
Figura 9 – Gerar relatório I .......................................................................................................... 56
Figura 10 – Gerar relatório II ....................................................................................................... 56
Figura 11 – Gerar relatório III ...................................................................................................... 56
Figura 12 – Relatório em HTML ................................................................................................... 57
Figura 13 – Selecionar o opção pelo menu ................................................................................. 57
Figura 14 – Tela de confirmação do Drive Manager ................................................................... 57
Figura 15 – Tela inicial do Drive Manager ................................................................................... 58
Figura 16 – Verificando a opção Disk Info ................................................................................... 58
Figura 17 – Selecionar o opção pelo menu ................................................................................. 58
Figura 18 – Tela de confirmação do Drive Manager ................................................................... 59
Figura 19 – Tela inicial do WinAudit ............................................................................................ 59
Figura 20 – Relatório finalizado................................................................................................... 59
Figura 21 – Exportar relatório ..................................................................................................... 60
Figura 22 – Segunda tela do menu de Respostas a Incidentes de Segurança ............................ 60
Figura 23 – Tela de confirmação do RootkitRevealer ................................................................. 60
Figura 24 – Tela do RootkiteRevealer ......................................................................................... 61
Figura 25 - Tela de confirmação do PC On/Off ........................................................................... 61
Figura 26 – Tela de exibição do PC On/Off.................................................................................. 61
Figura 27 – Terceira tela do menu de respostas a incidentes de segurança .............................. 62
Figura 28 – Aquisição da imagem pelo DD .................................................................................. 67
Figura 29 – Confirmação do comando DD .................................................................................. 67
Figura 30 – FTK Imager ................................................................................................................ 68
Figura 31 – Menu de opções do FTK ........................................................................................... 68
Figura 32 – Tipo evidência a ser periciada .................................................................................. 69
Figura 33 – Dispositivo a ser duplicado ....................................................................................... 70
Figura 34 – Tela de criação de imagem I ..................................................................................... 70
Figura 35 – Tipo de imagem ........................................................................................................ 71
Figura 36 – Informações para o relatório.................................................................................... 71
Figura 37 – Tela de criação de imagem II .................................................................................... 71
Figura 38 – Tela de criação de imagem III ................................................................................... 72
Figura 39 – Confirmação da integridade da imagem .................................................................. 72
Figura 40 – Relatório gerado pelo FTK ........................................................................................ 73
Figura 41 – Página inicial do Autopsy.......................................................................................... 82
Figura 42 – Criação de um novo caso.......................................................................................... 83
Figura 43 – Confirmação de criação de um novo caso................................................................ 83
Figura 44 – Adicionar um novo host ........................................................................................... 84
Figura 45 – Confirmação da adição de um novo host ................................................................. 84
Figura 46 – Adicionar uma nova imagem I .................................................................................. 85
Figura 47 – Adicionar uma nova imagem II ................................................................................. 85
Figura 48 – Confirmação da adição da imagem .......................................................................... 86
Figura 49 – Imagens adicionadas ao caso ................................................................................... 86
Figura 50 – Criação da Timeline I ................................................................................................ 86
Figura 51 – Criação da Timeline II ............................................................................................... 87
Figura 52 – Criação da Timeline III .............................................................................................. 87
Figura 53 – Criação da Timeline IV .............................................................................................. 88
Figura 54 – Confirmação da criação da Timeline ........................................................................ 88
Figura 55 – Visualização da Timeline .......................................................................................... 88
Figura 56 – Janela de análise de Imagens ................................................................................... 89
Figura 57 – Detalhes da Imagem I ............................................................................................... 89
Figura 58 – Confirmação da extração de strings da imagem ...................................................... 90
Figura 59 – Detalhes da Imagem II .............................................................................................. 90
Figura 60 – Confirmação da extração de fragmentos não alocados ........................................... 91
Figura 61 – Detalhes da Imagem III ............................................................................................. 91
Figura 62 – Confirmação da extração das strings de fragmentos não alocados ......................... 92
Figura 63 – Detalhes da Imagem IV............................................................................................. 92
Figura 64 – Informações gerais sobre a imagem ........................................................................ 93
Figura 65 – Análise de arquivos baseados em assinaturas I ....................................................... 93
Figura 66 – Análise de arquivos baseados em assinaturas II ...................................................... 94
Figura 67 – Análise de arquivos baseados em assinaturas III ..................................................... 94
Figura 68 – Link para visualização dos arquivos .......................................................................... 94
Figura 69 – Arquivos listados baseados em assinaturas ............................................................. 95
Figura 70 – Informações sobre os metadados I .......................................................................... 95
Figura 71 – Informações sobre os metadados II ......................................................................... 96
Figura 72 – Análise da Imagem ................................................................................................... 96
Figura 73 – Validação de algum item .......................................................................................... 97
Figura 74 – Abrir um caso............................................................................................................ 97
Figura 75 – Opções de casos a serem abertos ............................................................................ 98
Figura 76 – Opções de hosts a serem abertos ............................................................................ 98
1 INTRODUÇÃO
Com a popularização da Internet, as barreiras físicas foram eliminadas e a falsa
idéia do anonimato que esta proporciona, gerou um grande problema para as empresas
e/ou instituições. Os crimes cibernéticos passaram a ser realizados independentes da
localização geográfica (cidades, estados, países) e, recentemente, do nível de
conhecimento do atacante.
Já foi o tempo em que as ameaças aos servidores de uma instituição ou empresa
– seja ela de pequena, média ou grande porte – estavam confinadas aos limites da LAN.
As ameaças contavam com o limitador físico e para tanto era necessário estar
fisicamente presentes na rede interna.
Dessa forma, surge no mundo da segurança digital a forense computacional: um
campo de pesquisa da Ciência da Computação que apóia a área Criminal, onde a
preservação, coleta e análise dos dados periciais, juntamente com a apresentação de
vestígios e a produção de um laudo técnico têm valor jurídico, desde que estas provas
eletrônicas não sejam manipuladas sem padrões pré-estabelecidos, pois assim não
haveria possíveis contestações.
6
2 JUSTIFICATIVA DE EXECUÇÃO DO PROJETO
No Brasil, e não muito diferente no nosso estado, existem poucos profissionais
que trabalham com Forense Computacional. Existem algumas empresas com a função
de investigar crimes digitais, mas a grande maioria desses profissionais se encontra na
Polícia Civil e na Polícia Federal.
As utilizações de procedimentos Forenses na área da computação são de suma
importância para a identificação de uma possível invasão em um computador. Através
das técnicas Forenses podemos descobrir a forma como ocorreu à invasão, se houve
alterações nos dados, que tipo de informação foi acessado e, como uma invasão
corresponde a um crime eletrônico, podem-se tomar medidas legais contra o invasor.
7
3 OBJETIVO E METAS
Esse projeto tem como objetivo o estudo de ferramentas FOSS (Free and Open
Source Software) de Forenses aplicadas à Computação. As ferramentas utilizadas e os
métodos aqui especificados não podem ser considerados como uma base para referência
definitiva em Forense Computacional. As bibliografias indicadas servem de base para
uma formação completa em uma pesquisa mais elaborada.
As principais metas são investigar, preservar os dados periciados, coletar
informações (inclusive artefatos), analisar e identificar as ações de um potencial
invasor. Vale à pena lembrar que nem sempre a Forense Computacional serve para
provar que certa pessoa cometeu um crime cibernético. Às vezes, ela funciona também
para provar a inocência do acusado.
8
4 COMPUTAÇÃO FORENSE
A Computação Forense pode ser dividia em três etapas:

Forense In Vivo ou Live Forensic: Corresponde a forense realizada
pelo perito quando o mesmo encontra a máquina a ser investigada
ainda ligada. Usando ferramentas e boas práticas o perito poderá
realizar a coleta e armazenar os dados coletados em outro local.

Forense de Rede ou Network Forensic: Corresponde a forense
realizada pelo perito nos ativos de rede envolvidos com a máquina
alvo. Como a grande maioria dos ativos de rede registra suas ações, o
perito poderá colher os artefatos, reconstruir comunicações de rede
interceptada, verificar log´s gerados, entre outras ações.

Forense Post Mortem ou Post Mortem Forensic: Corresponde a
forense realizada pelo perito em todos os dados periciais coletados na
máquina já desligada. Tarefa essa realizada na máquina do perito
utilizando ferramentas com esse propósito.
O perito busca cruzar as informações adquiridas nas três etapas da Forense. O
intuito é adquirir um bom entendimento do caso estudado e elaborar do laudo pericial.
4.1 PROCEDIMENTOS
Durante a elaboração desse material, grande parte das ferramentas utilizadas era
encontrada na distribuição HELIX da empresa E-FENSE. A distribuição HELIX ainda
era assegurada pela licença GPL e, com o decorrer do tempo, passou a ser cobrado um
valor para se ter uma nova versão da sua distribuição. Isso não quer dizer que não
iremos mais usufruir das ferramentas que se encontram na distribuição paga ou mesmo
que é uma exclusividade da distribuição possuir tais ferramentas.
Existem outras distribuições como CAINE, FCCU, FDTK que se não possuem
as mesmas ferramentas da distribuição HELIX, possuem similares. As distribuições
servem para eliminar o tempo que o perito ia perder montando o seu CD/DVD de
ferramentas Forenses. Entre outras palavras, basta que o perito tenha as ferramentas
compiladas estaticamente em um CD/DVD com as devidas permissões atribuídas.
A metodologia que segue a Computação Forense serve para qualquer
plataforma, se diferenciando apenas em alguns detalhes. A forma como uma máquina
9
com o sistema Microsoft Windows foi invadida, bem como o objetivo que o invasor
busca, se difere e muito, por exemplo, de uma máquina invadida com o sistema GNU
Debian, mas a metodologia aplicada nas máquinas permanece a mesma.
O projeto faz um estudo em cima de duas plataformas mais utilizadas: GNU
Debian e Microsoft Windows XP. Devido às diferenças e peculiaridades de cada
plataforma existem ferramentas forenses específicas para cada uma delas.
As técnicas do Modus Operandi do invasor, cadeia de custódia, assim como o
procedimento de registro visual (fotos) e preservação do local fogem ao escopo desse
projeto que visa apenas o estudo das ferramentas forense.
10
5 GNU LINUX
5.1 Live Forense
Segundo a RFC 3227, o perito deve fazer a coleta das provas a partir do mais
volátil para o menos volátil. Dentre a ordem de volatilidade podemos destacar:

Registos, cache ;

Memória de Periféricos ;

Memória Principal do sistema ;

Roteamento na tabela, arp cache, processo tabela, estatísticas kernel

Sistemas de arquivos temporários ;

Disco ;

Log de dados de controle remoto que seja relevante para o sistema em causa;

Configuração física, topologia ;

Mídia (cd, dvd, pen drive, fitas magnéticas, etc).
No cenário de teste foi usado um cd contento todas as ferramentas utilizadas
nos testes e uma máquina com ip 10.10.10.100 como estação forense.
5.1.1 Memória Principal do sistema
Na memória principal estão contidas todas as informações dos processos em
execução, senhas em texto claro, dados e informações manipuladas antes mesmo da
escrita no disco rígido. Essas informações só são obtidas através de dumps de memória,
seja na captura de arquivos core ou pela interface virtual criada no diretório /proc.
A ferramenta memdump faz uma cópia da memória RAM em uma imagem do
tipo RAW. Por padrão ela realiza a cópia da memória física (/dev/mem), mas, através
do parâmetro -k, é possível realizar o dump da memória do kernel (/dev/kmem).
Enviando informações sobre a memória principal na máquina suspeita
# /media/cdrom/memdump | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/memdump -k | /media/cdrom/nc 10.10.10.100 3232
Recebendo informações sobre a memória principal na estação forense
# nc -l -p 3232 | tee mem_princ | md5sum $1 > mem_princ.md5
# nc -l -p 3232 | tee mem_kernel | md5sum $1 > mem_kernel.md5
11
Obs.: O comando tee recebe como seu stdin o stdout do comando pipe (“|”). Joga o
resultado para a saída padrão, no caso a tela do computador, e salva em um arquivo
definido pelo usuário. Sendo assim o comando md5sum gera o hash do arquivo gerado
pelo comando tee e o salva. Apesar da comunidade acadêmica ter provado que o hash
MD5 pode ter colisões e ser descoberto, o perito pode optar por tirar mais um hash com
um comando sha1sum e acrescentar juntamente com o hash gerado do comando
md5sum, ou simplesmente usar hash´s mais robustos como sha224sum, sha256sum,
sha384sum ou sha512sum.
Outras formas de coletas de informações voláteis da memória RAM é através do
comando dd. Este realiza bit-a-bit um copia de dados binários, que podem ser arquivos
ou mesmos dispositivos físicos ou, dependendo da situação, virtuais.
Enviando informações de memória da área de kernel na máquina suspeita
# /media/cdrom/dd if=/dev/mem | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/dd if=/dev/kmem | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/dd if=/dev/rswap | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/dd if=/proc/kcore | /media/cdrom/nc 10.10.10.100 3232
Recebendo informações de memória da área de kernel na estação forense
# nc -l -p 3232 | tee mem_pric | md5sum $1 > mem_princ.md5
# nc -l -p 3232 | tee mem_kernel | md5sum $1 > mem_kernel.md5
# nc -l -p 3232 | tee rswap | md5sum $1 > rswap.md5
# nc -l -p 3232 | tee kcore | md5sum $1 > kcore.md5
Obs.: Se a máquina suspeita tiver 2 GB de RAM, o dump da memória deverá ter o
mesmo tamanho. Isso não ocorre em algumas distribuições que utilizam o SELINUX
devido à proteção este faz no /dev/mem.
Vale salientar que é importante ter coerência nas informações de tempo que as
evidências trazem. Por isso, após o dump de memória, é importante colher informações
sobre o tempo da máquina suspeita.
Enviando informações sobre a data da máquina suspeita
# /media/cdrom/date | /media/cdrom/nc 10.10.10.100 3232
12
Obs.: Caso o perito opte por coletar a data usando o formato (UTC) deve-se fazer o uso
do parâmetro -u no comando date.
Recebendo informações sobre a data da máquina alvo na estação forense:
# nc -l -p 3232 | tee data | md5sum $1 > data.md5
Enviando informações sobre o tempo em que a máquina suspeita está no ar
# /media/cdrom/uptime | /media/cdrom/nc 10.10.10.100 3232
Recebendo informações sobre o tempo ativo da máquina alvo na estação forense
# nc -l -p 3232 | tee uptime | md5sum $1 > uptime.md5
Enviando informações sobre o horário da BIOS da máquina suspeita
# /media/cdrom/hwclock | /media/cdrom/nc 10.10.10.100 3232
Recebendo informações sobre o horário da BIOS da máquina alvo na estação
forense
# nc -l -p 3232 | tee bios | md5sum $1 > bios.md5
5.1.2 Tráfego da rede do sistema
Com a utilização de sniffers, o perito tem a possibilidade de capturar os
datagramas que trafegam na rede. Assim, é possível reconstruir a troca de informações
entre a máquina atacante e a máquina alvo. Nesse tipo de procedimento, a máquina
forense tem que estar no mesmo enlace da máquina alvo e conectada em uma porta do
switch que faz espelhamento com a porta da máquina alvo. Isso se diz respeito a um
ambiente tipicamente projetado para dar suporte à resposta a Incidente de Segurança.
Na máquina alvo podemos levantar informações sobre os estados das conexões,
tabelas de roteamento, processos ativos, entre outros.
Enviando informações sobre as interfaces de rede da máquina suspeita
# /media/cdrom/ifconfig -a | /media/cdrom/nc 10.10.10.100 3232
13
Obs.: O comando ifconfig juntamente com o parâmetro –a exibe as configurações da
interfaces ativas ou não.
Recebendo informações sobre as interfaces de rede na estação forense
# nc -l -p 3232 | tee interfaces | md5sum $1 > interfaces.md5
Enviando informações sobre Conexões de Redes TCP ativas da máquina suspeita
#
/media/cdrom/netstat
-natp
| /media/cdrom/tee
conexoes.tcp
|
/media/cdrom/nc 10.10.10.100 3232
Obs.: O comando netstat pode descobrir rapidamente a existência de portas abertas,
conexões estabelecidas e rotas estáticas inseridas manualmente.
Recebendo informações sobre as Conexões TCP ativas na estação forense
# nc -l -p 3232 | tee conexoes.tcp | md5sum $1 > conexoes.tcp.md5
Enviando informações sobre Conexões de Redes UDP ativas da máquina suspeita
# /cdrom/netstat -naup | tee conexoes.udp | /cdrom/nc 10.10.10.100 3232
Recebendo informações sobre as Conexões UDP ativas na estação forense
# nc -l -p 3232 | tee conexoes.udp | md5sum $1 > conexoes.udp.md5
Enviando informações sobre Conexões de Redes RAW ativas da máquina suspeita
# /media/cdrom/netstat -nawp | /media/cdrom/tee conexoes.raw |
/media/cdrom/nc 10.10.10.100 3232
Recebendo informações sobre as Conexões RAW ativas na estação forense
# nc -l -p 3232 | tee conexoes.raw | md5sum $1 > conexoes.raw.md5
14
5.1.3 Informações sobre as tabelas de roteamento
Enviando atividades sobre as rotas estáticas da máquina suspeita
#
/media/cdrom/route
-n
|
/media/cdrom/tee
rotas_estaticas
|
/media/cdrom/nc 10.10.10.100 3232
#
/media/cdrom/cat
/proc/net/route
|
/media/cdrom/tee
rotas_estaticas_proc | /media/cdrom/nc 10.10.10.100 3232
Obs.: O comando route exibe e manipula a tabela de roteamento IP. O diretório virtual
/proc/net/route contém as informações sobre os roteamentos IP realizados pelo kernel.
Recebendo informações sobre as rotas estáticas na estação forense
# nc -l -p 3232 | tee rotas_estaticas | md5sum $1 > rotas_estaticas.md5
# nc -l -p 3232 | tee rotas_estaticas_proc | md5sum $1 >
rotas_estaticas_proc.md5
Enviando informações em cache de rotas estáticas da máquina suspeita
# /media/cdrom/route -n -C | /media/cdrom/tee cache_rotas_estaticas |
/media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/cat /proc/net/rt_cache | /media/cdrom/tee rotas_rt_cache |
/media/cdrom/nc 10.10.10.100 3232
Recebendo informações sobre o cache das rotas estáticas da máquina suspeita na
estação forense
# nc -l -p 3232 | tee cache_rotas_estaticas | md5sum $1 >
cache_rotas_estaticas.md5
# nc -l -p 3232 | tee rotas_rt_cache | md5sum $1 > rotas_rt_cache.md5
15
5.1.4 Informações sobre a tabela ARP
Enviando informações sobre a tabela ARP da máquina suspeita
# /media/cdrom/arp -an | /media/cdrom/nc 10.10.10.100 3232
Obs.: O comando arp exibe e manipula o cachê ARP do sistema.
Recebendo informações sobre a tabela ARP na estação forense
# nc -l -p 3232 | tee tabela_arp | md5sum $1 > tabela_arp.md5
5.1.5 Informações de processos ativos
As informações dos processos podem ser coletadas pelos comandos ps, pstree e
lsof. O primeiro, utilizando alguns parâmetros, mostra o estado dos processos naquele
momento. O segundo tem a função de exibir a árvore de processos. E o terceiro, mas
não menos importante, consegue integrar funcionalidades de diversas ferramentas como
netstat, ps e ainda listar todos os arquivos abertos (parâmetro -l), listar todos os arquivos
de rede abertos (parâmetro -i), listar todos os processos com socket Unix aberto
(parâmetro -U), entre outros.
Enviando informações sobre os processos ativos na máquina suspeita
# /media/cdrom/ps -aufex | /cdrom/nc 10.10.10.100 3232
# /media/cdrom/pstree | /cdrom/nc 10.10.10.100 3232
# /media/cdrom/lsof -l | /cdrom/nc 10.10.10.100 3232
# /media/cdrom/lsof -i | /cdrom/nc 10.10.10.100 3232
# /media/cdrom/lsof -U | /cdrom/nc 10.10.10.100 3232
Recebendo informações sobre os processos ativos da máquina suspeita na estação
forense
# nc -l -p 3232 | tee psaufex | md5sum $1 > psaufex.md5
# nc -l -p 3232 | tee pstree | md5sum $1 > pstree.md5
# nc -l -p 3232 | tee lsof_todos | md5sum $1 > lsof_todos.md5
16
#
nc
-l
-p
3232
|
tee
lsof_rede_aberto
|
md5sum
$1
>
lsof_rede_aberto.md5
# nc -l -p 3232 | tee lsof_socket_aberto | md5sum $1 >
lsof_socket_aberto.md5
Obs.: É importante, em alguns momentos, capturar possíveis processos excluídos. Esses
processos podem ter sido gerados por algum Malware e para não ser identificado, foi
apagado.
Enviando informações sobre os processos excluídos na máquina suspeita
# /media/cdrom/lsof | grep -i DEL | /cdrom/nc 10.10.10.100 3232
Recebendo informações sobre os processos excluídos da máquina suspeita na
estação forense
# nc -l -p 3232 | tee lsof_del | md5sum $1 > lsof_del.md5
Caso o perito desconfie de algum processo e queira obter mais informações
poderá realizar alguns procedimentos.
De forma simples, uma verificação com o comando fuser. Esse comando
identifica através do diretório /proc, os arquivos ou sockets que estão sendo usados
como processo.
# fuser -v [porta]/tcp ou fuser -v [porta]/udp
# /media/cdrom/fuser -v 2261/udp | /cdrom/nc 10.10.10.100 3232
Outra forma de recuperar informações sobre os processos é mexendo
diretamente com o diretório /proc. Para cada processo, é criado um diretório dentro do
/proc contendo diversos dados sobre ele.
# /media/cdrom/ls /proc/1883
17
A saída desse comando demonstra as diversas informações disponíveis sobre o
processo de pid 1883. Alguns desses arquivos contêm dados importantes sobre o
processo em execução.
Análise de conteúdo de alguns arquivos do processo no diretório /proc.
Caso algum processo com um nome comum não esteja sendo executado a partir
do seu diretório comum, basta verificar no arquivo cwd. Esse arquivo é um link para o
diretório corrente do processo.
# /media/cdrom/ls -l /proc/1883/cwd
Caso se deseja verificar a linha de comando que foi utilizada para dar início ao
processo, devido a uma diferença ou não no comando acima, basta verificar o conteúdo
do arquivo cmdline.
# /media/cdrom/cat /proc/1883/cmdline
As variáveis de ambiente utilizadas no momento da execução do programa se
encontram no arquivo environ.
# /media/cdrom/cat /proc/1883/environ
O status do processo como: usuário que executou, grupo que pertence,
quantidade de memória e processador utilizados, entre outras informações se encontram
no arquivo status.
# /media/cdrom/cat /proc/1883/status
Pelo /proc também é possível recuperar um processo que está em memória sem
precisar do arquivo correspondente em disco realizando apenas alguns passos.

Descobrir o número do processo ao qual aquele serviço está vinculado
# /media/cdrom/ps aux | /media/cdrom/grep telnet

Com o número do processo, salvar o binário do serviço
#
/media/cdrom/cat
/proc/1596/exe
|
/media/cdrom/nc
10.10.10.100 3232
18
5.1.6 Informações de módulos do sistema
Os módulos no sistema servem para diversas funcionalidades. Dentre elas
podemos destacar a ativação de um novo recurso ao kernel, reconhecimento de um novo
dispositivo adicionado a máquina, reconhecimento de uma nova linguagem ao sistema e
também manipular as chamadas do sistema operacional. Esta última funcionalidade é
uma característica presente nos rootkit´s LKM (Loadable Kernel Modules).
Enviando informações sobre os módulos ativos da máquina suspeita:
# /media/cdrom/lsmod | /media/cdrom/nc 10.10.10.100 3232
Obs.: O comando lsmod exibe os módulos ativados do sistema.
# /media/cdrom/cat /proc/modules | /media/cdrom/nc 10.10.10.100 3232
Recebendo informações sobre os módulos ativos da máquina suspeita na estação
forense
# nc -l -p 3232 | tee modulos | md5sum $1 > modulos.md5
# nc -l -p 3232 | tee proc_modulos | md5sum $1 > proc_modulos.md5
5.1.7 Informações de registro do sistema
Por mais que existam técnicas anti-forense com o intuito de não deixar vestígios
e por conseqüência apagar os logs do sistema, os logs têm papeis relevantes para uma
análise forense.
Enviando informações sobre os registros do sistema da máquina suspeita
# /media/cdrom/w | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/who -a | /media/cdrom/nc 10.10.10.100 3232
Obs.: O comando w mostra quem está logado no sistema e o que este usuário está
fazendo. Já o comando who exibe quem está conectado no sistema. Ambos recorrem às
informações contidas no arquivo /var/run/utmp.
19
# /media/cdrom/last | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/lastb | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/lastlog | /media/cdrom/nc 10.10.10.100 3232
Obs.: O comando last recorre das informações contidas no arquivo /var/log/wtmp para
exibir uma lista dos usuários que entraram e saíram do sistema. Em confronto com o
comando last usa-se o comando lastb. O comando lastb informa baseado no arquivo
/var/log/btmp, as informações sobre as ultimas entradas malsucedidas no sistema. O
comando lastlog levanta as informações das ultimas entradas e saídas de todos os
usuários cadastrados no sistema.
# /media/cdrom/cat /var/log/syslog | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/cat /var/log/messages | /media/cdrom/nc 10.10.10.100
3232
# /media/cdrom/cat /root/.bash_history | /media/cdrom/nc 10.10.10.100
3232
Obs.: As informações contidas no syslog, no messages e o histórico dos usuários
acrescentam mais riqueza na coleta das informações sobre no registro. No exemplo
acima foi coletado apenas o histórico do usuário root.
Recebendo informações sobre os registros do sistema da máquina suspeita na
estação forense
# nc -l -p 3232 | tee last | md5sum $1 > last.md5
# nc -l -p 3232 | tee lastb | md5sum $1 > lastb.md5
# nc -l -p 3232 | tee lastlog | md5sum $1 > lastlog.md5
# nc -l -p 3232 | tee syslog | md5sum $1 > syslog.md5
# nc -l -p 3232 | tee messages | md5sum $1 > messages.md5
# nc -l -p 3232 | tee root_history | md5sum $1 > root_history.md5
20
5.1.8 Informações sobre o /proc e o boot
Algumas informações sobre o sistema ainda podem ser coletadas no /boot.
Informações como versão do kernel, do processador, partição SWAP e outras partições,
informações do boot, entre outras.
Enviando informações sobre o diretório virtual do sistema da máquina suspeita
# /media/cdrom/cat /proc/version | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/cat /proc/sys/kernel/domainname | /media/cdrom/nc
10.10.10.100 3232
# /media/cdrom/cat /proc/cpuinfo | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/cat /proc/swaps | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/cat /proc/partitions | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/cat /proc/self/mounts | /media/cdrom/nc 10.10.10.100
3232
# /media/cdrom/cat /proc/uptime | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/dmesg | /media/cdrom/nc 10.10.10.100 3232
Recebendo informações sobre o diretório virtual do sistema da máquina suspeita
na estação forense
# nc -l -p 3232 | tee kernel_versao | md5sum $1 > kernel_versao.md5
# nc -l -p 3232 | tee dominio | md5sum $1 > dominio.md5
# nc -l -p 3232 | tee cpuinfo | md5sum $1 > cpuinfo.md5
# nc -l -p 3232 | tee swap | md5sum $1 > swap.md5
# nc -l -p 3232 | tee particoes | md5sum $1 > particoes.md5
# nc -l -p 3232 | tee mout_proc | md5sum $1 > mount_proc.md5
# nc -l -p 3232 | tee uptime_proc | md5sum $1 > uptime_proc.md5
# nc -l -p 3232 | tee dmesg | md5sum $1 > dmesg.md5
5.1.9 Informações sobre o Disco Rígido
Informações sobre o que estão montadas ou não no disco também são relevantes.
21
Enviando informações sobre a montagem do HD da máquina suspeita
# /media/cdrom/cat /etc/fstab | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/cat /etc/mtab | /media/cdrom/nc 10.10.10.100 3232
Recebendo informações sobre a montagem do HD da máquina suspeita
# nc -l -p 3232 | tee fstab | md5sum $1 > fstab.md5
# nc -l -p 3232 | tee mtab | md5sum $1 > mtab.md5
Enviando informações sobre as partições do HD da máquina suspeita
# /media/cdrom/fdisk -l /dev/sda | /media/cdrom/nc 10.10.10.100 3232
# /media/cdrom/file -s /dev/sda{1,2,4,5,6,7,8,9} | /cdrom/nc 10.10.10.100
3232
Recebendo informações sobre as partições do HD da máquina suspeita
# nc -l -p 3232 | tee fdisk | md5sum $1 > fdisk.md5
# nc -l -p 3232 | tee file_HD | md5sum $1 > file_HD.md5
5.1.10 Esterilizar as mídias para a cópia
As informações voláteis já foram coletadas. O próximo passo seria realizar uma
cópia de qualquer dispositivo conectado a máquina suspeita. A análise desses
dispositivos é processo mais demorado. Nessa análise a busca por vestígios, instalação
de ferramentas, análise de binários, análise de slack space, logs e outros dados
pertinentes se torna um pouco cansativa.
O projeto da ênfase na cópia do Disco Rígido da máquina suspeita, mas não quer
dizer que não precise realizar a coleta dos dados do pen-drive, CDs, DVDs e outros
dispositivos de armazenamento. As cópias devem ser realizadas em mídias esterilizadas
e, portanto o procedimento abaixo deve ser realizado para “zerar” o conteúdo que irá
armazenar a imagem do disco.
# dd if=/dev/zero of=/dev/<dispositivo> bs=512 conv=noerror
22
Obs.: O comando dd realiza uma cópia bit a bit da origem para o destino. No caso acima
ele esta colocando bits zeros no dispositivo de saída, especificando o tamanho dos
blocos lidos e a conversão sem erros.
5.1.11 Gerar imagem do Disco Rígido
Existem diversas formas de realizar a cópia da imagem a ser periciada. As
cópias podem ser feitas por hardware ou software. Algumas das cópias realizadas por
software será exemplificado no decorrer desse material.
A cópia do Disco Rígido, feita nesse material, será feita utilizando uma unidade
de armazenamento conectada fisicamente a máquina periciada. Esse procedimento
também pode ser realizado em uma unidade de armazenamento na rede.
Gerando uma imagem de todo do disco
# dd if=/dev/sda of=/dev/sdb/imagem_disco.dd bs=512 conv=noerror
Gerando uma imagem apenas de uma partição do disco
# dd if=/dev/sda1 of=/dev/sdb/imagem_sda1.dd bs=512 conv=noerror
Gerando uma imagem de todo do disco pela rede
# dd if=/dev/sda | /media/cdrom/nc 10.10.10.100 3232
Verificando a integridade na estação forense
# dd if= imagem_disco.dd | md5sum -b > imagem_disco.dd.md5
Outra forma
# dcfldd if=/dev/sda of=/dev/sdb/imagem_disco.dd bs=512 conv=noerror
Obs.: O comando dcfldd realiza a cópia da mesma forma do comando dd, mas com a
diferença de tirar um hash SHA1 automaticamente. Existe também o Adpeto que serve
de interface gráfica para ele.
23
5.2 Post Mortem
Todo o trabalho de análise Post Mortem é realizado na estação forense. O perito
já esta de posse de todos, se não da grande maioria dos dados a serem analisados.
A análise do disco em si é baseada no conceito de cinco camadas da SUN
MICROSYSTEMS. Alguns softwares, para facilitar a vida do perito, ocultam algumas
camadas, como é o caso do FTK comercializado pela AccessData ou do EnCase
comercializado pela Guidance Software.
Extrair mensagens dos arquivos
O dump de memória contem informações relevantes, mas ele se encontra de uma
forma inteligível. Usando o comando strings é possível extrair mensagens de um
arquivo. Isto é claro se for usando uma codificação ASCII, pois caso contrário teria que
ser realizado outro procedimento.
# strings -a mem_pric > mem_pric.strings
# strings -a mem_kernel > mem_kernel.strings
Utilizando o comando grep e com o auxílio do REGEX, o perito pode realizar
comandos bastante poderosos.
# grep -i --color “\.bz2$” mem_pric.strings
# grep -i --color “\.rar$” mem_pric.strings
# grep -i --color “\/exploits\/” mem_pric.strings
# grep -i --color “rootkit\/” mem_pric.strings
# grep “\/\.\.\.\/” mem_pric.strings
De uma forma mais prática, bastaria colocar todas as possíveis ocorrências em
um arquivo texto e chamar com o comando grep.
# grep -i -f arquivo.txt --color mem_pric.strings
24
Utilizando o conceito de camadas
No conceito proposto pela SUN MICROSYSTEMS a análise Post Mortem pode
ser realizada em cinco camadas: Física, Dados, Sistema de Arquivos, Metadados e
Arquivos.
5.2.1 Camada Física
Reunir
e
documentar
informações
sobre
os
dispositivos
de
armazenamento de dados relacionados. Ex.: No disco rígido documentar
informações como: modelo, ano de fabricação, fabricante, capacidade, interface,
velocidade de rotação, entre outros.
5.2.2 Camada de Dados
Logo após a coleta das imagens é iniciada essa camada. Tem como
características a verificação da integridade das imagens geradas e análise do
setor
de
boot
e
particionamento
do
disco
e/ou
imagem.
Uso de Ferramentas
# file -s /dev/sda
# lshw
Informações sobre o disco
# disk_stat /dev/sda
Obs.: o comando disk_stat mostra as informações sobre ATA e Serial-ATA. Capaz
também de mostrar área Host Protected Area – HPA (normalmente uma área reservada
onde os fabricantes instalam arquivos de recuperação do S.O.).
# disktype /dev/sda
# cat /proc/scsi/scsi
Informações sobre as partições
# fdisk -lu imagem_disco.dd
# sfdisk -luS imagem_disco.dd
25
Informações sobre o layout do disco/imagem, incluindo espaços não particionados
# mmls /dev/sda
# mmls imagem_disco.dd
Montando a Imagem de uma única partição
# mount imagem_disco.dd /img/ -t ext3 -o loop,ro,noatime,nodev,noexec
Montando a Imagem de um disco com múltiplas partições associando a um
dispositivo físico
# loosetup /dev/loop0 imagem_sda1_dd
Obs.: O comando losetup juntamente como o comando mount possibilitam a
manipulação de imagens
Listar os dispositivos
# losetup -a
Obter informações dessa partição
# fdisk -lu /dev/loop0
Disk /dev/loop0: 1407 MB, 1407476736 bytes
16 heads, 63 sectors/track, 2727 cylinders, total 2748978 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000
Device Boot
/dev/loop0p1 *
Start
63
End
Blocks Id System
72575
36256+ 83 Linux
/dev/loop0p2
72576
2116799
1022112
5 Extended
/dev/loop0p5
72639
278207
102784+ 83 Linux
/dev/loop0p6
278271
410255
65992+ 82 Linux swap / Solaris
/dev/loop0p7
410319
513071
51376+ 83 Linux
/dev/loop0p8
513135
2116799
801832+ 83 Linux
26
Montando a partição sem conhecer o FileSystem
# losetup /dev/loop0 imagem_disco.dd
Calcula-se o offset para podemos ver uma nova alocação
# expr 72639 \* 512
37191168
Obs.: O primeiro número corresponde ao valor de início da partição e o segundo
corresponde ao valor do tamanho do bloco. Ambos foram coletados pelo comando fdisk.
O resultado da expressão corresponde ao offset que será usado para montar a partição.
# losetup -o 37191168 /dev/loop1 imagem_disco.dd
# mount /dev/loop1 /mnt/forense/ -o loop,ro,noexec,noatime,nodev
Exemplos de outras ferramentas:
Visualizar informações do tamanho da imagem
# img_stat imagem_disco.dd
Exibir tipo de partição presente no disco
# mmstat /dev/sda
Remover bloqueio de acesso ao HPA
# disk_sreset /dev/sda
5.2.3 Camada de Sistema de Arquivos
Responsável por verificar as informações da estrutura do FileSystem.
# fsstat imagem_disco.dd | less
Obs.: O comando fsstat mostra detalhes e estatísticas do FileSystem. Existem também
outros comandos com o jcat e jls que informam a estrutura de arquivos journaling.
27
5.2.3 Camada de Metadados
Metadados está relacionado à tabela de inodes. Os inodes contem as informações
necessárias aos processos para acessar um arquivo. Informações como permissões de
dono, grupo, MACtime(Mudança nos metadados, Acesso e Criação de Arquivo),
localização no disco ficam armazenadas nos inodes.
Como o sistema de arquivos já está montado, poderemos ir atrás de arquivos
alocados ou não alocados pelo sistema (quando se apaga um arquivo, os dados
continuam no disco e podem ser recuperados desde que não sejam reescritos), bem
como gerar a Timeline do sistema.
Com a Timeline do sistema é possível obter as seguintes informações:

mactime dos arquivos;

Data de instalação do sistema operacional;

Ultimas atualizações do sistema;

Últimos acessos ao sistema;

Etc.
Informações gerais de Inode
# ils -r -f linux-ext2 imagem_disco.dd
Obs.: o comando acima lista de forma recursiva os inodes da imagem, sejam eles
alocados ou não.
Recuperar, pelo endereçamento de inode, arquivos apagados
# icat -f linux-ext2 imagem_disco.dd 4444
Obs.: O último número corresponde ao número do endereço do inode em que o arquivo
se encontrava. O inode do arquivo pode ser recuperado pelo comando fls ou ls -i.
Informações estruturais de Inode.
# istat imagem_disco.dd 4444
28
Obs.: O número ao final do comando istat corresponde ao número do inode. O range de
inode pode ser coletado a partir do comando fsstat.
Criar uma timeline
# mactime -b imagem_disco.dd.mac -p /etc/passwd -z GMT-3
Obs.: O comando mactime pode ser utilizado em conjunto com os comandos ils ou fls
para a criação da timeline.
Mostrar detalhes sobre um de bloco de dados
# mactime -b imagem_disco.dd.mac -p /etc/passwd -z GMT-3
# dstat -f linux-ext2 imagem_disco.dd 2034
Obs.: o ultimo número corresponde ao endereço do bloco. Este endereço pode ser
recuperado pelo comando dls.
Listar informações de áreas alocadas, não alocadas e slack space.
 Alocadas
# dls -a -f ext imagem_disco.dd > imagem_disco.dd.dls.alocadas
#
strings
-a
imagem_disco.dd.dls.alocadas
>
imagem_disco.dd.dls.alocadas.strings
# less imagem_disco.dd.dls.alocadas.strings
 Não Alocadas
# dls -A -f ext imagem_disco.dd > imagem_disco.dd.dls. naoalocadas
#
strings
-a
imagem_disco.dd.dls.naoalocadas
>
imagem_disco.dd.dls.naoalocadas.strings
# less imagem_disco.dd.dls.naoalocadas.strings
Extrair blocos de dados do disco
# dcat -f linux-ext2 imagem_disco.dd 2034
29
Encontrar bloco original na imagem
# dcalc -u 18511 imagem_disco.dd
Obs.: O comando dcalc recupera o número de bloco de endereço correspondente na
imagem a partir da imagem de arquivos não alocados.
5.2.3 Camada de Arquivos
Diz respeito à recuperação e análise de possíveis artefatos.
Listar nomes de arquivos alocados ou não alocados em uma imagem
# fls -a -r -d -f linux-ext2 imagem_disco.dd
Procura por nomes de arquivos que apontem para uma dada estrutura de
metadados
# ffind -f linux-ext2 imagem_disco.dd 4444
Obs.: O resultado do campo acima pode ser: * /bin/ls
Buscar informações de estruturas de Inode
# ifind -a imagem_disco.dd -d 50
Obs.: O resultado acima pode retornar 4444. Jogando esse valor no comando ffind
obtêm-se o: * /bin/ls
Analisar os arquivos de uma imagem baseado em um banco de assinaturas
# sorter -d /dados/forense/arquivos imagem_disco.dd
Recuperar artefatos
# sorter -d /dados/forense/arquivos imagem_disco.dd
# foremost -o /dados/forense/artefatos -c /dados/forense/foremost.conf
imagem_disco.dd.dls.alocadas
30
Verificando possibilidade de dados ocultos no slack space
# bmap --mode slack /tmp/arquivo
Gerando Timeline
Criando uma linha do tempo da imagem
# fls -alrpm / imagem_disco.dd | mactime -z GMT-3 01/01/2000
31/12/2007 | tee timeline.txt
31
6 MICROSOFT WINDOWS
O tipo de incidente em uma máquina Windows se difere um pouco de uma
máquina Linux (servidora ou não). Toda a metodologia empregada para forense pode
ser utilizada para ambos os casos, a diferença é que em uma máquina Windows as
informações mais “preciosas” são voláteis e por isso o foco maior está na Live Forense.
6.1 Live Forense
Quanto menos interação do perito com o ambiente a ser periciado, melhor.
Ferramentas gráficas não são recomendadas, pois como elas serão carregadas em
memória e sendo assim poderão sobrescrever alguma evidência que lá se encontra. Em
todo caso, serão apresentadas períficas com e sem interface gráfica.
Executando ferramentas a partir do CD
Figura 1 – Executar o prompt do DOS
Alterar o valor da variável PATH para apontar apenas para os diretórios de
ferramentas do CD.
Figura 2 – Configurar variável PATH
Obs.: Para verificar a alteração da variável PATH, basta colocar o comando env no
prompt alterado.
32
O prompt alterado já pode ser usado
Figura 3 – Prompt do DOS alterado
6.1.1 Memória Principal do sistema
Assim como visto no GNU Linux, também será necessária a realização do dump
de memória. Com a alteração da variável PATH e o uso do comando dd, essa tarefa
pode ser realizada sem dificuldades.
No Windows, existe um dispositivo especial que dá acesso a memória física do
sistema. Esse dispositivo se chama \\.\PhysicalMemory.
Enviando informações sobre a memória principal na máquina suspeita
D:\IR\xp> dd if=\\.\PhysicalMemory conv=noerror | nc 10.10.10.100
3232
D:\IR\xp> mem | nc 10.10.10.100 3232
D:\IR\xp> pclip | nc 10.10.10.100 3232
Recebendo informações sobre a memória principal na estação forense
# nc -l -p 3232 | tee mem_princ | md5sum $1 > mem_princ.md5
# nc -l -p 3232 | tee mem | md5sum $1 > mem.md5
# nc -l -p 3232 | tee area_transf | md5sum $1 > area_transf.md5
Obs.: O comando mem fornece algumas informações básicas sobre a memória principal
do sistema, enquanto o comando pclip exibe textos que estão na Área de Transferência.
33
6.1.2 Sistema Operacional
Enviando informações sobre a máquina suspeita
D:\IR\xp> ver | nc 10.10.10.100 3232
D:\IR\xp> hostname | nc 10.10.10.100 3232
D:\IR\xp> whoami | nc 10.10.10.100 3232
Obs.: O primeiro comando informa a versão do sistema operacional. O comando
hostname retorna o nome da máquina, enquanto o comando whoami exibe na tela quem
é o usuário logado naquele momento.
Recebendo informações sobre a máquina alvo na estação forense:
# nc -l -p 3232 | tee versao_so | md5sum $1 > versao_so.md5
# nc -l -p 3232 | tee hostname | md5sum $1 > hostname.md5
# nc -l -p 3232 | tee whoami | md5sum $1 > whoami.md5
Enviando informações sobre a data da máquina suspeita
D:\IR\xp> date /t | nc 10.10.10.100 3232
Recebendo informações sobre a data da máquina alvo na estação forense:
# nc -l -p 3232 | tee data | md5sum $1 > data.md5
Enviando informações sobre o horário da máquina suspeita
D:\IR\xp> time /t | nc 10.10.10.100 3232
Recebendo informações sobre o horário da máquina alvo na estação forense:
# nc -l -p 3232 | tee time | md5sum $1 > time.md5
34
Enviando informações sobre o timezone da máquina suspeita
D:\IR\xp>
reg
query
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Time
ZoneInformation | nc 10.10.10.100 3232
Recebendo informações sobre o timezone da máquina alvo na estação forense:
# nc -l -p 3232 | tee timezone | md5sum $1 > timezone.md5
Caso a máquina suspeita sincronize o horário com um servidor de NTP remoto,
também será relevante coletar essa informação.
Enviando informações sobre o NTP remoto da máquina suspeita
D:\IR\xp> net time \\<hostname> | nc 10.10.10.100 3232
D:\IR\xp> net time \\<hostname> /querysntp | nc 10.10.10.100 3232
Recebendo informações sobre o NTP remoto da máquina alvo na estação forense
# nc -l -p 3232 | tee sntp | md5sum $1 > sntp.md5
# nc -l -p 3232 | tee sntp_query | md5sum $1 > sntp_query.md5
Enviando informações sobre o tempo em que a máquina suspeita está no ar
D:\IR\xp> uptime | nc 10.10.10.100 3232
Recebendo informações sobre o tempo ativo da máquina alvo na estação forense
# nc -l -p 3232 | tee uptime | md5sum $1 > uptime.md5
Enviando informações sobre tarefas agendadas na máquina suspeita
D:\IR\xp> at | nc 10.10.10.100 3232
35
Recebendo informações sobre tarefas agendadas da máquina alvo na estação
forense
# nc -l -p 3232 | tee tarefas_agendadas_at | md5sum $1 >
tarefas_agendadas_at.md5
Outra forma:
Enviando informações sobre tarefas agendadas na máquina suspeita
D:\IR\xp> schtasks | nc 10.10.10.100 3232
Recebendo informações sobre tarefas agendadas da máquina alvo na estação
forense
# nc -l -p 3232 | tee tarefas_agendadas_sch | md5sum $1 >
tarefas_agendadas_sch.md5
Enviando informações gerais sobre o sistema da máquina suspeita
D:\IR\xp> psinfo | nc 10.10.10.100 3232
Obs.: Dentre as informações que o comando psinfo retorna, pode se coletar as
informações referentes à atualização do sistema e por quem ele foi autenticado.
Recebendo informações gerais sobre o sistema da máquina alvo na estação forense
# nc -l -p 3232 | tee psinfo | md5sum $1 > psinfo.md5
Enviando informações básicas sobre o disco da máquina suspeita
D:\IR\xp> ntfsinfo c: | nc 10.10.10.100 3232
Obs.: O comando ntfsinfo exibe informações de um disco ou partição formatado em
NTFS.
36
Recebendo informações gerais sobre o sistema da máquina alvo na estação forense
# nc -l -p 3232 | tee info_disco | md5sum $1 > info_disco.md5
6.1.3 Usuários e Grupos do sistema
Os usuários em sistemas Microsoft Windows são identificados pelo SID (Secure
Identification). Este identificador corresponde uma parte para identificar o host da
máquina e o outro para identificar o usuário ligado ao host. Ele é único e normalmente é
utilizado para tratar as permissões de recursos em diversos sistemas.
Enviando informações sobre todos os usuários da máquina suspeita
D:\IR\xp> net users | nc 10.10.10.100 3232
Obs.: O comando net vem como pacote básico nos sistemas Microsoft Windows. Ele
possui diversos parâmetros para interagir com o sistema.
Recebendo informações sobre todos os usuários da máquina alvo na estação
forense:
# nc -l -p 3232 | tee usuarios | md5sum $1 > usuarios.md5
Enviando informações sobre todos os grupos locais da máquina suspeita
D:\IR\xp> net localgroup | nc 10.10.10.100 3232
Recebendo informações sobre todos os grupos locais da máquina alvo na estação
forense:
# nc -l -p 3232 | tee grupos_locais | md5sum $1 > grupos_locais.md5
Enviando informações básicas sobre determinado usuário da máquina suspeita
D:\IR\xp> net user <usuario> | nc 10.10.10.100 3232
37
Recebendo informações básicas sobre determinado usuário da máquina alvo na
estação forense:
# nc -l -p 3232 | tee usuario | md5sum $1 > usuario.md5
Obs.: Caso se opte por um detalhamento maior na coleta de certo usuário, pode se usar a
ferramenta userdump.
Enviando informações gerais sobre determinado usuário da máquina suspeita
D:\IR\xp> userdump \\<hostname> <usuario> | nc 10.10.10.100 3232
Recebendo informações gerais sobre determinado usuário da máquina alvo na
estação forense:
# nc -l -p 3232 | tee usuario | md5sum $1 > usuario.md5
Enviando informações sobre o SID da máquina suspeita
D:\IR\xp> psgetsid | nc 10.10.10.100 3232
Obs.: O comando psgetsid retorna informações relacionadas ao Secure Identificantion
(SID)
Recebendo informações sobre o SID da máquina alvo na estação forense:
# nc -l -p 3232 | tee sid | md5sum $1 > sid.md5
Enviando informações sobre o SID de um usuário da máquina suspeita
D:\IR\xp> psgetsid <usuario> | nc 10.10.10.100 3232
Recebendo informações sobre o SID de um usuário da máquina alvo na estação
forense:
# nc -l -p 3232 | tee sid_usuario | md5sum $1 > sid_usuario.md5
38
Enviando informações sobre os usuários logados na máquina suspeita
D:\IR\xp> psloggedon | nc 10.10.10.100 3232
Obs.: O comando psloggedon quais usuários locais ou remotos estão conectados na
máquina.
Recebendo informações sobre os usuários logados da máquina alvo na estação
forense:
# nc -l -p 3232 | tee users_logados | md5sum $1 > users_logados.md5
Enviando informações sobre os registros do sistema da máquina suspeita
D:\IR\xp> ntlast -s | nc 10.10.10.100 3232
D:\IR\xp> ntlast -f | nc 10.10.10.100 3232
D:\IR\xp> ntlast -r | nc 10.10.10.100 3232
Obs.: O comando ntlast retorna informações relacionadas à entrada e saída de usuários
no sistema. Entre os diversos parâmetros disponíveis podemos destacar:

s – correspondente ao logons de sucesso;

f – correspondente aos logons falhos;

r – correspondente aos logons remotos.
Recebendo informações sobre os registros do sistema da máquina suspeita na
estação forense
# nc -l -p 3232 | tee login_sucesso | md5sum $1 > login_sucesso.md5
# nc -l -p 3232 | tee login_falha | md5sum $1 > login_falha.md5
# nc -l -p 3232 | tee login_remoto | md5sum $1 > login_remoto.md5
Obs.: As informações sobre os logons só serão exibidas se as políticas de auditoria da
máquina suspeita estiverem ativas. Caso contrário, será retornada apenas a informação
para verificação dessas políticas.
39
6.1.4 Informações de processos ativos
As informações dos processos podem ser coletadas, em linha de comando, pelos
comandos ps e pslist. O primeiro funciona da mesma maneira que no GNU Linux,
modificando apenas os parâmetros a serem utilizados. O segundo, bem mais avançado,
permite listar a utilização de memória de cada processo ou os threads que cada mantém.
Enviando informações sobre os processos ativos na máquina suspeita
D:\IR\xp> ps -a -W | nc 10.10.10.100 3232
D:\IR\xp> pslist -m -d | nc 10.10.10.100 3232
Recebendo informações sobre os processos ativos da máquina suspeita na estação
forense
# nc -l -p 3232 | tee psaW | md5sum $1 > psaW.md5
# nc -l -p 3232 | tee pslist | md5sum $1 > pslist.md5
Obs.: Existe também a possibilidade de verificar as bibliotecas compartilhadas que o
processo está usando. O comando listdlls retorna essa informação.
Enviando informações sobre as DLLs de um processo ativo na máquina suspeita
D:\IR\xp> listdlls calc | nc 10.10.10.100 3232
Recebendo informações sobre um processo ativo da máquina suspeita na estação
forense
# nc -l -p 3232 | tee calc_dll | md5sum $1 > calc_dll.md5
Outra forma:
Enviando informações sobre as DLLs de um processo ativo na máquina suspeita
D:\IR\xp> ..\winfingerprint\procinterrogate -pid 2000 | nc 10.10.10.100
3232
40
Recebendo informações sobre um processo ativo da máquina suspeita na estação
forense
# nc -l -p 3232 | tee calc_dll | md5sum $1 > calc_dll.md5
Enviando informações sobre arquivos abertos na máquina suspeita
D:\IR\xp> handle -a -u calc | nc 10.10.10.100 3232
Obs.: Um processo desconhecido pode manter alguns arquivos abertos. Durante sua
execução arquivos de logs, pipes e outros arquivos podem estar abertos. O comando
handle exibe essas informações.
Recebendo informações sobre arquivos abertos da máquina suspeita na estação
forense
# nc -l -p 3232 | tee calc_arq_aberto | md5sum $1 > calc_arq_aberto.md5
Enviando informações sobre ultimo arquivo acessado na máquina suspeita
D:\IR\xp> afind c:\windows\system32 | nc 10.10.10.100 3232
Obs.: O comando afind exibe o último arquivo que foi acessado em um determinado
diretório.
Recebendo informações sobre ultimo arquivo acessado da máquina suspeita na
estação forense
# nc -l -p 3232 | tee sys32_ultimo | md5sum $1 > sys32_ultimo.md5
6.1.5 Serviços em execução
Existem diversas formas de verificar a execução de um serviço na inicialização
do sistema. Podendo ser simples, apenas exibindo qual serviço está iniciado, até mais
completas, em que exibe chaves do registro do sistema. Abaixo são usadas algumas
ferramentas para esse propósito.
41
Usando o comando net
Enviando informações sobre os serviços ativos na máquina suspeita
D:\IR\xp> net start | nc 10.10.10.100 3232
Recebendo informações sobre os serviços ativos da máquina suspeita na estação
forense
# nc -l -p 3232 | tee netstart | md5sum $1 > netstart.md5
Obs.: O comando net traz apenas informações básicas dos serviços.
Usando o comando servicelist
Enviando informações sobre os serviços ativos na máquina suspeita
D:\IR\xp> servicelist \\<hostname> | nc 10.10.10.100 3232
Obs.: O comando servicelist uma listagem mais abrangente do que com o comando net.
Recebendo informações sobre os serviços ativos da máquina suspeita na estação
forense
# nc -l -p 3232 | tee servicelist | md5sum $1 > servicelist.md5
Usando o comando psservice
Enviando informações sobre os serviços ativos na máquina suspeita
D:\IR\xp> psservice | nc 10.10.10.100 3232
Obs.: O comando psservice possui um controle maior sobre a listagem dos serviços.
Recebendo informações sobre os serviços ativos da máquina suspeita na estação
forense
# nc -l -p 3232 | tee psservice | md5sum $1 > psservice.md5
42
Obtendo pelo registro
Enviando informações sobre os serviços ativos na máquina suspeita
D:\IR\xp>
reg
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
query
|
nc
10.10.10.100 3232
Recebendo informações sobre os serviços ativos da máquina suspeita na estação
forense
# nc -l -p 3232 | tee registro_serv | md5sum $1 > registro_serv.md5
Obtendo pelo registro através do comando autorunsc
Enviando informações sobre os serviços ativos na máquina suspeita
D:\IR\xp> autorunsc | nc 10.10.10.100 3232
Obs.: O comando autorunsc procura por chaves no registro do Windows que iniciem
automaticamente um serviço.
Recebendo informações sobre os serviços ativos da máquina suspeita na estação
forense
# nc -l -p 3232 | tee autorunsc | md5sum $1 > autorunsc.md5
6.1.6 Tráfego da rede do sistema
Na máquina alvo deve ser levantado todas as informações sobre o os estados das
conexões, tabelas de roteamento, processos ativos, entre outros.
Enviando informações sobre as interfaces de rede da máquina suspeita
D:\IR\xp> ipconfig /all | nc 10.10.10.100 3232
Obs.: O comando ipconfig juntamente com o parâmetro /all funciona da mesma forma
que o comando ifconfig no sistema GNU Linux.
43
Recebendo informações sobre as interfaces de rede na estação forense
# nc -l -p 3232 | tee interfaces | md5sum $1 > interfaces.md5
Outra forma:
Enviando informações sobre as interfaces de rede da máquina suspeita
D:\IR\xp> iplist | nc 10.10.10.100 3232
Obs.: O comando iplist exibe apenas as configurações de IP para as interfaces presentes
no sistema.
Recebendo informações sobre as interfaces de rede na estação forense
# nc -l -p 3232 | tee interfaces_iplist | md5sum $1 > interfaces_iplist.md5
Enviando informações sobre Conexões de Redes ativas da máquina suspeita
D:\IR\xp> netstat -na | nc 10.10.10.100 3232
Obs.: O comando netstat com o parâmetro -na exibe todas as conexões, estabelecidas e
outras que já foram fechadas, sem resolver nomes.
Recebendo informações sobre as Conexões de Redes ativas na estação forense
#
nc
-l
-p
3232
|
tee
conexões_gerais
|
md5sum
$1
>
conexões_gerais.md5
Enviando informações sobre os executáveis com conexões ativas da máquina
suspeita
D:\IR\xp> netstat -nbv | nc 10.10.10.100 3232
Obs.: O comando netstat com o parâmetro -nbv exibe informações sobre os executáveis
envolvidos na criação da conexão, bem como os componente envolvidos.
44
Recebendo informações sobre os executáveis com conexões na estação forense
# nc -l -p 3232 | tee conexões_proc | md5sum $1 > conexões_proc.md5
Enviando informações sobre portas abertas ativas da máquina suspeita
D:\IR\xp> openports -netstat | nc 10.10.10.100 3232
Obs.: O comando openports exibe as portas abertas do sistema. O uso do parâmetro netstat serve apenas para formatação.
Recebendo informações sobre as portas abertas na estação forense
# nc -l -p 3232 | tee portas_abertas | md5sum $1 > portas_abertas.md5
Outra forma:
Enviando informações sobre portas abertas ativas da máquina suspeita
D:\IR\xp> fport | nc 10.10.10.100 3232
Obs.: O comando fport exibe de forma simples as portas que estão abertas. Ele não faz o
mapeamento completo de portas para processos.
Recebendo informações sobre as portas abertas na estação forense
# nc -l -p 3232 | tee portas_abertas | md5sum $1 > portas_abertas.md5
Enviando informações sobre interfaces em modo promíscuo da máquina suspeita
D:\IR\xp> promiscdetect | nc 10.10.10.100 3232
Obs.: Alguma interface de rede pode estar configurada para capturar todos os pacotes
que trafegam na rede. O comando promiscdetect exibe quais interfaces estão
configuradas para esse fim.
45
Recebendo informações sobre interfaces em modo promíscuo na estação forense
# nc -l -p 3232 | tee int_promisc | md5sum $1 > inter_promisc.md5
6.1.7 Informações de registro do sistema
Sistemas Microsoft Windows possuem uma base hierárquica e centralizada de
dados para armazenar informações sobre as configurações do sistema para os usuários,
aplicações e dispositivos de hardware. Essa base se chama registro do Windows e
normalmente não podem ser copiada.
Enviando informações sobre o registro do sistema na máquina suspeita
D:\IR\xp> regdmp | nc 10.10.10.100 3232
Obs.: O comando regdmp realiza um dump do registro para um formato de texto.
Recebendo informações sobre o registro do sistema na estação forense
# nc -l -p 3232 | tee registro | md5sum $1 > registro.md5
Enviando informações sobre algumas chaves de registro na máquina suspeita
D:\IR\xp>
reg
query
HKLM\Software\Microsoft\Windows\
CurrentVersion\Run | nc 10.10.10.100 3232
D:\IR\xp>
reg
query
HKLM\Software\Microsoft\Windows\
CurrentVersion\RunOnce | nc 10.10.10.100 3232
D:\IR\xp> reg query HKCU\Software /s | nc 10.10.10.100 3232
D:\IR\xp>
reg
query
HKCU\Software\Microsoft\Windows\
CurrentVersion\Run | nc 10.10.10.100 3232
D:\IR\xp>
reg
query
HKCU\Software\Microsoft\Internet
Explorer\TypedURLs | nc 10.10.10.100 3232
D:\IR\xp>
reg
query
HKCU\Software\Microsoft\CurrentVersion\
Explorer\RunMRU | nc 10.10.10.100 3232
46
D:\IR\xp>
reg
query
HKCU\Software\Microsoft\CurrentVersion\
Explorer\ComDlg32\OpenSaveMRU\* | nc 10.10.10.100 3232
Recebendo informações sobre algumas chaves de registro na estação forense
# nc -l -p 3232 | tee hklm_run | md5sum $1 > hklm_run.md5
# nc -l -p 3232 | tee hklm_runonce | md5sum $1 > hklm_runonce.md5
# nc -l -p 3232 | tee hkcu_soft | md5sum $1 > hkcu_soft.md5
# nc -l -p 3232 | tee hkcu_run | md5sum $1 > hkcu_run.md5
# nc -l -p 3232 | tee hkcu_EType | md5sum $1 > hkcu_EType.md5
# nc -l -p 3232 | tee hkcu_ERun | md5sum $1 > hkcu_ERun.md5
# nc -l
-p 3232
| tee hkcu_ESaveMRU
| md5sum $1 >
hkcu_ESaveMRU.md5
6.1.8 Informações de registro de Eventos
Diferentemente como é no Linux, sistemas Microsoft Windows armazena os
seus registros de eventos em formato binário e sendo assim, precisa de ferramentas
específicas para extraí-los.
Enviando informações sobre o registro do sistema na máquina suspeita
D:\IR\xp> psloglist security | nc 10.10.10.100 3232
Obs.: O comando psloglist pode extrair informações dos eventos para um formato em
texto.
Recebendo informações sobre o registro do sistema na estação forense
# nc -l -p 3232 | tee event_security | md5sum $1 > event_security.md5
Outra forma:
Enviando informações sobre o registro do sistema na máquina suspeita
47
D:\IR\xp> ..\2k\res_kit\dumpel -l security -t | nc 10.10.10.100 3232
Obs.: O comando dumpel realiza uma consulta mais completa nos eventos (system,
application, security). Pode ser realizada uma consulta por datas, padrões de texto e
ainda formatar a saída.
Recebendo informações sobre o registro do sistema na estação forense
# nc -l -p 3232 | tee event_security | md5sum $1 > event_security.md5
Obs.: Os arquivos de log´s em sistemas Microsoft Windows de alguns processos,
antivírus ou outro programa qualquer geralmente possuem a extensão .evt e ficam
armazenados no diretório c:\windows\system32\config.
D:\IR\xp> dir c:\windows\system32\config\*.evt
6.1.8 Analisando a Lixeira
Existe um diretório oculto em sistemas Microsoft Windows chamado de
RECYCLER (representado pela lixeira no Desktop). Esse diretório está presente em
cada partição de disco. Descendo um nível encontram-se subdiretórios de SID de
usuários. Esses diretórios correspondem aos arquivos apagados por cada usuário.
Enviando informações sobre quais usuários tem informações na lixeira na
máquina suspeita
D:\IR\xp> dir /a c:\RECYCLER | nc 10.10.10.100 3232
Recebendo informações sobre quais usuários tem informações na lixeira na estação
forense
# nc -l -p 3232 | tee users_lixeira | md5sum $1 > users_lixeira.md5
Descobrindo a quem pertence o SID da lixeira
Obs.: Caso o sid seja S-1-5-21-790525478-1060284298-1801674531-500
48
# sid2user 5 21 790525478 1060284298 1801674531 500
Enviando informações dos arquivos da lixeira de um usuário na máquina suspeita
D:\IR\xp> rifiuti c:\recycler\<SID>\info2 | nc 10.10.10.100 3232
Obs.: O comando rifiuti exibe o nome original do arquivo que foi apagado.
Recebendo informações dos arquivos da lixeira de um usuário na estação forense
# nc -l -p 3232 | tee usuario_lixeira | md5sum $1 > usuario_lixeira.md5
6.1.9 Analisando histórico de navegação
Através dos históricos de navegação e dos cookies é possível saber se a máquina
suspeita visitou algum site que contenha um malware e a infectou, se o usuário acessou
páginas indevidas, entre outros.
Enviando informações sobre o histórico de navegação do Internet Explorer de um
usuário na máquina suspeita
D:\IR\xp>
pasco
-d
“c:\Documents
and
Settings\<usuario>\Cookies\index.dat” | nc 10.10.10.100 3232
Obs.: O comando pasco exibe informações de forma legível do histórico de navegação
do Internet Explorer.
Recebendo informações sobre o histórico de navegação do Internet Explorer de um
usuário na estação forense
# nc -l -p 3232 | tee usuario_hist_IE | md5sum $1 > usuario_hist_IE.md5
Enviando informações sobre o cookies do Firefox de um usuário na máquina
suspeita
49
D:\IR\xp> galleta “c:\Documents and Settings\<usuario>\Application
Data\Mozzila\Firefox\Profiles\1jwwc64.default\cookies.txt”
|
nc
10.10.10.100 3232
Obs.: O comando galleta exibe informações do comando pasco, a diferença é que ele é
destinado ao Mozilla Firefox
Recebendo informações sobre os cookies do Firefox de um usuário na estação
forense
# nc -l -p 3232 | tee usuario_hist_firefox | md5sum $1 >
usuario_hist_firefox.md5
6.2 Post Mortem
Como grande parte das informações “preciosas” está na Live Forense, resta
apenas à árdua análise de arquivos e geração da timeline.
Essas duas etapas serão feitas em uma máquina Windows por questão de
exemplificação. Nada impede de coletar as informações e analisar em outra plataforma
como estava sendo feito na coleta da Live Forense.
6.2.1 Geração da Timeline
Para realizar essa tarefa, a imagem foi montada com as devidas permissões de
leitura em outro computador. A partição do drive suspeito passará a se chamar E:.
Serão gerados três arquivos para a criação da Timeline. Um contendo
informações de todos os arquivos que foram acessados, outro contendo as informações
para os arquivos criados e o último contendo informações sobre todos os arquivos que
foram modificados.
Coletando informações sobre todos os arquivos criados no drive suspeito
C:\ > dir/t:c/a/s/o e: > c:\arquivos_criados.txt
Obs.: O comando dir, nativo dos sistemas Microsoft Windows, pode ter diversas
funcionalidades. O comando acima irá realizar uma busca por tempo de criação
50
(parâmetro /t:c), exibindo todos os atributos (parâmetro /a), todos os diretórios e
subdiretórios (parâmetro /s) e de forma ordenada (parâmetro /o).
Coletando informações sobre todos os arquivos acessados no drive suspeito
C:\ > dir/t:a/a/s/o e: > c:\arquivos_acessados.txt
Obs.: Segue da mesma forma do que foi utilizado para se obter os arquivos criados. A
diferença estar em usar a busca por tempo de ultimo acesso (parâmetro /t:a).
Coletando informações sobre todos os arquivos modificados no drive suspeito
C:\ > dir/t:w/a/s/o e: > c:\arquivos_modificados.txt
Obs.: Segue da mesma forma do que foi utilizado para se obter os arquivos criados e
acessados. A diferença em relação aos outros dois esta em usar a busca por tempo de
ultima gravação (parâmetro /t:w).
De posse dos arquivos gerados, será possível realizar algumas consultas usando
o comando find. O comando find pode utilizar uma sequência de strings para descobrir
se tem alguma ocorrência do que se procura.
C:\ > find “.jpg” c:\arquivos_criados.txt
C:\ > find “.dll” c:\arquivos_modificados.txt
C:\ > find “@” c:\arquivos_criados.txt
Obs.: Essas consultadas podem ser realizadas de acordo com o item a ser analisado.
Pode ser concatenados e armazenados em outro de texto.
6.2.2 Análise de arquivos com o HELIX
Coletando MACtime de arquivos ou diretórios
51
D:\IR\xp> mac -d e:\windows\system32 > c:\system32_mac.txt
Obs.: O comando mac exibe informações relacionadas ao tempo de acesso, criação,
modificação e a que usuário pertence.
Coletando informações sobre arquivos
D:\IR\xp> file -m ..\Cygwin\magic c:\boot.ini > c:\bootini_file.txt
Obs.: O comando file funciona semelhante ao usado em sistemas GNU Linux, a
diferença é que tem que especificar os padrões de tipos de arquivos.
Coletando informações completas sobre arquivos
D:\IR\xp> filestat c:\boot.ini > c:\bootini_filestat.txt
Obs.: O comando filestat exibe informações referentes a permissões, mactimes, dono do
arquivo, entre outros.
Verificando possibilidade de dados ocultos (ADS)
D:\IR\xp> ads c:\boot.ini > c:\bootini_ads.txt
Obs.: Os Alternate Data Streams (ADS) foram criados inicialmente para armazenar
informações extras sobre o arquivo, mas pessoas mal intencionadas podem colocar
códigos para serem executados por algum malware.
Outras formas:
Verificando possibilidade de dados ocultos (ADS)
D:\IR\xp> sfind c:\boot.ini > c:\bootini_ads.txt
D:\IR\xp> streams c:\boot.ini > c:\bootini_ads.txt
52
Obs.: Também é possível remover as streams através do comando streams com o
parâmetro -d. formas. Outra forma seria apagando o arquivo que contem as streams.
53
7 MICROSOFT WINDOWS - GUI
Como dito anteriormente às ferramentas que usam interface gráfica são
carregadas na memória e geralmente podem sobrescrever informações preciosas que
estavam presentes nela.
Abaixo serão exemplificadas algumas ferramentas gráficas de diversos
propósitos.
7.1 Informações sobre o sistema
Executando o HELIX
Figura 4 – Tela inicial do HELIX
Acesso rápido pelo menu
Figura 5 – Selecionar o opção pelo menu
54
Figura 6 – Tela de confirmação do visualizador do sistema
Módulos disponíveis para análise
Figura 7 – Módulos Disponíveis
Gerar relatório dos módulos
Figura 8 – Exportando um relatório
55
Telas de geração do relatório
Figura 9 – Gerar relatório I
Figura 10 – Gerar relatório II
Figura 11 – Gerar relatório III
56
Figura 12 – Relatório em HTML
7.2 Informações sobre os dispositivos
Acesso rápido pelo menu
Figura 13 – Selecionar o opção pelo menu
Figura 14 – Tela de confirmação do Drive Manager
57
Figura 15 – Tela inicial do Drive Manager
Figura 16 – Verificando a opção Disk Info
7.3 Informações gerais sobre o sistema
Acesso rápido pelo menu
Figura 17 – Selecionar o opção pelo menu
58
Figura 18 – Tela de confirmação do Drive Manager
Figura 19 – Tela inicial do WinAudit
Obs.: Para começar a examinar basta clicar na descrição “Aqui” Ou no botão
simbolizado por uma seta.
Figura 20 – Relatório finalizado
Obs.: O relatório pode ser exportado para diversas extensões. Basta clicar no botão
guardar ou aguardar a tela que aparece após fechar a aplicação WinAudit.
59
Figura 21 – Exportar relatório
7.4 Informações extras sobre o sistema
Acesso pelo 2ª página do menu de respostas a incidentes do HELIX
Figura 22 – Segunda tela do menu de Respostas a Incidentes de Segurança
Obs.: Clicando em Rootkit Revealer para descobrir rootkits, aparece a tela abaixo.
Figura 23 – Tela de confirmação do RootkitRevealer
60
Figura 24 – Tela do RootkiteRevealer
Obs.: Ainda no segunda tela do menu de respostas a incidentes de segurança, é possível
saber quanto tem o PC ficou ligado. Basta clicar em PC On/Off Time e confirmar a tela
abaixo.
Figura 25 - Tela de confirmação do PC On/Off
Figura 26 – Tela de exibição do PC On/Off
61
7.5 Informações senhas e históricos de navegação
Acesso pelo 3ª página do menu de respostas a incidentes do HELIX
Figura 27 – Terceira tela do menu de respostas a incidentes de segurança
Obs.: Como a usabilidade é bem intuitiva, abaixo segue apenas uma definição de cada
item que aparece nessa tela.

PST Password Viewer – Visualiza senhas em arquivos do Microsoft Outlook;

Messenger Password – Visualiza logins e senhas de usuários do MSN;

Protected Storage Viewer – Visualiza arquivos protegidos por senhas;

IE History Viewer – Visualiza o histórico de navegação do Internet Explorer;

IE Cookie Viewer – Visualiza os cookies armazenados pelo Internet Explorer;

IE Password Viewer – Visualiza as senhas que foram armazenadas pelo Internet
Explorer;

Mail Password Viewer – Visualiza login e senha de usuários configurados no
Hotmail ou MSN;

Network Password Viewer – Visualiza as senhas de rede;

Asterisk Logger – Visualiza senhas mascaradas por asteriscos (*).

Mozilla Cookie Viewer – Visualiza os cookies armazenados pelo Mozilla
Firefox;

Registro Viewer – Scanner para buscas no registro do sistema;

USB Deview – Visualiza dispositivos USB.
62
8 CONCLUSÃO
Para ser ter sucesso na investigação é preciso que o ambiente seja propício à
Forense. Quanto mais informações úteis puderem ser coletadas, melhor será o trabalho
da Forense e, para garantir que o que será coletado irá preservar a evidência existe a
cadeia de custódia. Essa priva por garantir a originalidade dos dados.
O perito sempre deve ser imparcial, por mais que outras formas de prova (como
a testemunhal) acusem o infrator. Jamais outro tipo de prova poderá intervir na
produção do laudo pericial. O perito deverá produzir o laudo a partir das suas
conclusões e resultados coletados durante a perícia, usando técnicas e ferramentas
destinadas à perícia forense computacional.
As ferramentas forense foram criadas para ajudar o perito no tempo de análise da
máquina suspeita. Cabe ao perito estudar e definir as suas ferramentas. Sempre é bom
ter as principais ferramentas atualizadas e compiladas estaticamente em um cd ou drive
USB. Cabe ao perito usar da forma que achar mais propício, seja com pouca intervenção
no ambiente periciado ou de uma forma mais intrusiva.
63
9 Dificuldades Encontradas
Apesar de a Computação Forense ser uma área muito nova e ainda estar
“engatinhando” no nosso país, existem dezenas de ferramentas para diversos fins.
Inicialmente as dificuldades encontradas eram relacionadas à definição de uma linha de
pesquisas para usar as ferramentas. Ferramentas com propósito geral e com propósitos
específicos foram analisadas e estudadas.
64
10 Bibliografia
[1] Autopsy Forensic Browser. Disponível em: http://www.sleuthkit.org/autopsy/
[2] The Sleuth Kit. Disponível em: http://www.sleuthkit.org/
[3] HELIX: Incident Response & Computer Forensics Live CD. Disponível em:
http://www.e-fense.com/products.php
[4] HELIX from Forensics Wiki. Disponível em:
http://www.forensicswiki.org/index.php?title=Helix
[5] The Coroner´s Toolkit. Dipodies em: http://www.porcupine.org/forensics/tct.html
[6] New version of EnCase includes stand-alone utility to capture RAM. Disponível em:
http://www.forensickb.com/2008/06/new-version-of-encase-includes-stand.html
[7] Suiche, Matthieu, “Win32dd : Challenges of Windows physical memory acquisition and
exploitation”. Disponível em: http://www.shakacon.org/talks/NFI-Shakaconwin32dd0.3.pdf
[8] Oliveira, Flávio de Souza, “Forense Computacional: Aspectos Legais e
Padronização”. Disponível em:
http://www.buscalegis.ufsc.br/revistas/index.php/buscalegis/article/viewFile/6018/5587
[9] Heredia,Tomás, “Gestión y tratamiento de Incidentes de Seguridad de la Información”.
Disponível em: http://www.arcert.gov.ar/ncursos/material/gestion_de_incidentes-parte_3v2.1.1-6pp.pdf
[10] Melo, Sandro “Computação Forense com Software Livre”, editora Alta Books, 2009.
[11] Rohr, Altieres “Additional Data Streams”. Disponível em:
http://www.linhadefensiva.org/2005/02/streams/
[12] Elias, Wagner, “Alternate Data Stream”. Disponível em:
http://wagnerelias.com/2005/12/29/alternate-data-stream/
[13] Slack space data: Subversive Technologies & Countermeasures. Disponível
em: http://www.wikistc.org/wiki/Slack_space_data
[14] RFC 3227 (Fevereiro de 2002). Disponível em: http://www.ietf.org/rfc/rfc3227.txt
[15] Kamoshida, Akiteru, “Analyze an Unknown Binary, Perform Sfind Tool Validation
and Legal Issue of Incident Handling in Japan”. Disponível em: https://computerforensics.sans.org/community/papers/evaluation_of_the_forensic_toolkit_118
[16] WINDOWS FORENSIC TOOLCHEST. Disponível em:
http://www.foolmoon.net/security/wft/
65
[17] Stratikopoulos, Alexandre, “Técnicas anti-forense para ocultação de dados”.
Disponível em: http://www.dicas-l.com.br/dicas-l/20091105.php
[18] Chuvakin, Anton, “Linux Data Hiding and Recovery”. Disponível em:
http://www.linuxsecurity.com/content/view/117638/49/
[19] How to get information about your file system in Ubuntu. Disponível em:
http://www.ubuntugeek.com/how-to-get-information-about-your-file-system-in-ubuntu.html
[20] Levy, Jamie, “/dev/crash Driver”. Disponível em:
http://gleeda.blogspot.com/2009/08/devcrash-driver.html
[21] Linux Memory Forensics. Disponível em:
http://volatilesystems.blogspot.com/2008/07/linux-memory-analysis-one-of-major.html
[22] Crash. Disponível em: http://people.redhat.com/anderson/
[23] Creating disk image for Jari OS. Disponível em: http://jarios.org/node/33
[24] RIP Thinkpad / Mount partition of whole-disk-dd-image. Disponível em:
http://pronweb.de/node/15
[25] Packt Storm. Disponível em: http://www.packetstormsecurity.org/linux/security/
66
ANEXOS
ANEXO 1 – Adquirir imagem forense através do HELIX
HELIX - DD
A primeira opção especifica-se o dispositivo. Na segunda opção opta-se se a
cópia dos dados será feita sob a forma de conexão física ou via rede. A opção que se
segue requer a informação aonde será armazenada a imagem. O nome que será dado à
imagem vem logo abaixo. Ao final, especificar o tamanho dos blocos lidos e a
conversão sem erros.
Figura 28 – Aquisição da imagem pelo DD
Clicando em Acquire, uma janela de confirmação dos campos preenchidos para
serem usados com o comando dd irá aparecer.
Figura 29 – Confirmação do comando DD
67
HELIX – FTK IMAGER
O botão IMAGER iniciará o modo de utilização do FTK.
Figura 30 – FTK Imager
Figura 31 – Menu de opções do FTK
Para adicionar uma evidência, basta clicar no ícone correspondente a uma lupa
com um símbolo de “+”, localizado no lado superior esquerdo. Ao lado deste ícone,
encontre outro capaz de adicionar todos os dispositivos (particionamentos, mídias)
ligados à máquina que será periciada. Os ícones correspondentes a lupas com sinais
vermelhos são utilizados para cancelar a utilização da evidência.
Após os ícones simbolizados pelas lupas, encontra-se o ícone de criar disco de
imagem. É com ele que se inicia o processo de duplicação da mídia e aquisição da
imagem para a análise.
Caso os dispositivos analisados possuam arquivos protegidos, o FTK possui um
artifício para a quebra dessa proteção, basta clicar no ícone correspondente a um cofre
na cor amarela. O ícone ao lado do cofre, correspondente a uma chave amarela, pode
detectar sistemas criptografados em EFS.
68
Para exportar um arquivo que está sendo investigado em seu formato original,
basta clicar no ícone correspondente a uma página branca, ao lado da chave na cor
amarela.
Os três ícones que possuem um óculos possibilitam a visualização dos dados de
forma original, em texto e hexadecimal.
Obs.: O versão do FTK quem vem na distribuição do HELIX modifica o MACtime ao
se manipular a árvore de diretórios e arquivos diretamente nele. Para poder visualizar e
manipular a árvore será necessário pegar uma versão mais nova do FTK.
De posse de uma versão que possibilite a navegação na árvore de arquivo e
diretórios, já pode ser realizada a busca, recuperação e análise dos arquivos a serem
periciados. Sendo assim, podem-se visualizar arquivos em formato texto, arquivos pdf,
imagens jpg, jpeg, bmp, tif e em formato hexadecimal.
Aquisição da Imagem
Clicando no botão correspondente a Create Disk Image para iniciar o processo
de aquisição da imagem. Na tela que se abre será questionado o tipo de evidência que se
está tratando. No exemplo criado nesse material foi selecionada a opção de uma
partição.
Figura 32 – Tipo evidência a ser periciada
69
Seleciona o dispositivo de origem que será duplicado e clicar em Finish.
Figura 33 – Dispositivo a ser duplicado
A tela a segui serve para adicionar o destino da imagem e marcar as três caixas
de seleção. Elas servem para acionar os comandos de verificação, calcular o tempo do
desenvolvimento do trabalho e criar uma lista contendo todos os arquivos e diretórios.
Figura 34 – Tela de criação de imagem I
70
Clicando no botão Add... da Figura 8, a tela a seguir questiona o formato da
imagem que se quer adquirir. No exemplo demonstrado foi escolhido o tipo de imagem
dd.
Figura 35 – Tipo de imagem
Preencher os campos que serão utilizados na criação do relatório
Figura 36 – Informações para o relatório
A próxima tela diz respeito ao local de destino da imagem e o nome que a
mesma terá ao ser armazenada.
Figura 37 – Tela de criação de imagem II
71
Após todos os quesitos preenchidos, basta clicar em Start para iniciar a aquisição
da imagem forense. Esse processo pode demorar, dependendo muito do tamanho da
mídia que está sendo duplicada.
Figura 38 – Tela de criação de imagem III
Quando a duplicação termina, o FTK exibe a informação de verificação do hash
da imagem e confirma a sua integridade.
Perceba que os dados que estão inseridos, estão constantes no relatório final
Figura 39 – Confirmação da integridade da imagem
72
No mesmo local em que se encontra a imagem, conta o relatório com todos os campos
anteriormente preenchidos.
Figura 40 – Relatório gerado pelo FTK
73
ANEXO 2 – Recuperação de Arquivos Ext2 e Ext3
Para recuperar arquivos é necessário saber em qual inode o arquivo estava
armazenado. Caso não seja possível descobrir o inode, ainda assim existem
possibilidades de recuperar apenas parte do arquivo, usar ferramentas para vasculhar o
disco e recuperar arquivos ou mesmo utilizar os comandos grep e strings para saber
onde à informação a que se procura está armazenada.
Descobrir informações sobre o sistema de arquivo
# fsstat -f linux-ext2 imagem_disco.dd
Obs.: Entre outras informações que o comando fsstat traz, as informações sobre os
metadados como range e tamanho do bloco são bastante relevantes.
Recuperar arquivos que não foram sobrescritos
Encontrar o inode onde o arquivo estava armazenado
# fls -adpr imagem_disco.dd
Mais informações sobre o arquivo
# istat imagem_disco.dd 4444
Nome original do arquivo
# ffind -a imagem_disco.dd 4444
Recuperar o arquivo no inode encontrado
# icat imagem_disco.dd 4444 > /dados/arquivo.tgz
Obs.: Utiliza-se o comando icat quando se tem o valor do inode. Caso não o possua,
utiliza-se o comando dcat.
74
Recuperar arquivos que foram sobrescritos
Recuperar informações dos blocos não alocados
#
dls
-A
-f
linux-ext2
imagem_disco.dd
>
imagem_disco.dd.dls.naoalocadas
Descobrir a posição do arquivo
# grep -ab “rm -rf” imagem_disco.dd.dls.naoalocadas
Obs.: Irá retornar o offset em bytes onde a sequência “rm -rf” pode ser encontrada.
Recuperar o tamanho do bloco do disco
# fsstat -f linux-ext2 imagem_disco.dd | grep “Block Size”
Block Size: 4096
Recuperar o endereço do bloco no disco
# echo $((75821667/4096))
18511
Obs.: o primeiro número usado foi encontrado em uma das ocorrências do comando
grep. O segundo corresponde ao tamanho do bloco do disco. O resultado é o endereço
do bloco.
Encontrar a posição original na imagem
# dcalc -u 18511 imagem_disco.dd
30978
Obs.: O resultado obtido pelo comando dcalc corresponde ao bloco de dados na imagem
original, obtido a partir do bloco de endereço da imagem de arquivos não alocados.
75
Recuperando arquivo
# dcat -f linux-ext2 imagem_disco.dd 30978 > /data/arquivo
Recuperar arquivos que foram parcialmente sobrescritos
Geralmente o sistema operacional tenta alocar blocos consecutivos para um
arquivo. O método especificado abaixo se baseia nessa alocação e recupera
parcialmente um arquivo do tipo TAR(baseado na assinatura do arquivo). Caso o
arquivo não esteja alocado em blocos consecutivos, talvez seja impossível recuperá-lo
totalmente.
Recuperar informações dos blocos não alocados
#
dls
-A
-f
linux-ext2
imagem_disco.dd
>
imagem_disco.dd.dls.naoalocadas
Analisar diversos blocos ao redor do bloco encontrado
# dcat -f linux-ext2 imagem_disco.dd 39341 1000
Obs.: O ultimo número corresponde ao número de blocos próximos ao bloco indicado
no primeiro número.
Procurar por um texto que esteja próximo do fim do arquivo
# grep -ab './udhss -f ./s' imagem_disco.dd.dls.naoalocadas
Obs.: Irá retornar o offset em bytes onde a sequência “./udhss -f ./s” pode ser
encontrada.
Recuperar o tamanho do bloco do disco
# fsstat -f linux-ext2 imagem_disco.dd | grep “Block Size”
Block Size: 4096
76
Recuperar o endereço do bloco no disco
# echo $((68975440/4096))
16839
Obs.: o primeiro número usado foi encontrado em uma das ocorrências do comando
grep. O segundo corresponde ao tamanho do bloco do disco. O resultado é o endereço
do bloco.
Encontrar a posição original na imagem
# dcalc -u 16839 imagem_disco.dd
39943
Exibir o número do bloco a ser recuperado
# echo $((39943-39341))
602
Recuperar o bloco de arquivo
# dcat -f linux-ext2 imagem_disco.dd 39341 602 > /data/recuperado.tar
Obs.: Ao se executar o comando tar -tvf /data/recuperado.tar será exibido o conteúdo
armazenado no arquivo. Pode ser que no fim gere uma saída de erro. Isso se deve ao
fato do arquivo estar parcialmente sobrescrito, mas pode ser recuperado quase que
totalmente.
Recuperação de arquivos journaling
A forma de recuperação de arquivos em filesystem ext2 é um pouco diferente
em filesystem ext3. Quando um arquivo é apagado em um filesystem ext3, a lista de
blocos que apontam para o seu conteúdo é zerada. Não sendo mais possível a
recuperação pelas informações do inode. No entanto, as informações ficam armazenadas
no journaling do filesystem e assim será possível recuperar informações que foram
77
apagadas do inode original. Será utilizado um exemplo para mostrar como se deve
proceder.
Descobrindo o tamanho do bloco no disco
# dumpe2fs /dev/sda1 | more
Obs.: O arquivo usado para teste será criado em /dev/sda1, por isso é necessário saber o
tamanho do bloco nessa partição. Atentar-se para o campo Block Size.
Criando um arquivo
# gzip -9 -c /bin/nc > /tmp/file.gz
Informações sobre os metadados como o comando li
# ls -li /tmp/file.gz
242703 -rw-r--r-- 1 root root 10611 2009-12-12 13:28 /tmp/file.gz
Informações sobre os metadados como o comando istat
# istat /dev/sda1 242703
inode: 242703
Allocated
Group: 15
Generation Id: 519868635
uid / gid: 0 / 0
mode: -rw-r--r-size: 10611
num of links: 1
Inode Times:
Accessed:
Sat Dec 12 13:28:51 2009
File Modified:
Sat Dec 12 13:28:51 2009
Inode Modified:
Sat Dec 12 13:28:51 2009
78
Direct Blocks:
520756 520757 520758
Obs.: Entre outras informações atentar para o MACtime, Direct Blocks e size.
Apagando o arquivo
# rm -rf /tmp/file.gz
Exibir novamente as informações dos metadados com o comando li
# ls -li /tmp/file.gz
ls: /tmp/file.gz: Arquivo ou diretório não encontrado
Exibir novamente as informações dos metadados com o comando istat
# istat /dev/sda1 242703
inode: 242703
Not Allocated
Group: 15
Generation Id: 519868635
uid / gid: 0 / 0
mode: -rw-r--r-size: 0
num of links: 0
Inode Times:
Accessed: Sat Dec 12 13:28:51 2009
File Modified:
Sat Dec 12 13:30:23 2009
Inode Modified:
Sat Dec 12 13:30:23 2009
Deleted:
Sat Dec 12 13:30:23 2009
Direct Blocks:
Obs.: Pode se constatar que o arquivo não está mais alocado. Também não há mais
informações sobre o tamanho e a lista de blocos onde o arquivo foi armazenado.
79
Acessando as informações do Journal do FileSystem
# debugfs /dev/sda1
Obs.: O debugfs abre um prompt e fica aguardando comandos para acessar diretamente
o dispositivo.
No prompt do debugfs localizar o arquivo corresponde ao inode
debugfs: logdump -i <242703>
A saída do comando logdump -i pode ser bem extensa, dependendo do inode
pesquisado. O importante é procurar informações mais próximas ao MACtime coletado
com o comando istat.
Dentre um dos registros próximos a MACtime identificado, encontra-se o
registro de uma cópia do inode original do arquivo, bem como o seu tamanho e lista de
blocos.
Identificar os campos
size: 10611
Blocks: (0+3): 520756
Obs.: O campo size corresponde ao tamanho do arquivo. O campo Blocks identifica
quantos blocos de endereço comporta o arquivo e o primeiro bloco de endereço
associado a ele.
Recuperar arquivo
# dcat /dev/sda1 520756 3 > /tmp/arquivo_recuperado.gz
Obs.: É passado o valor do primeiro bloco de endereço e da quantidade de blocos que se
quer recuperar.
80
Checando informações do arquivo recuperado com o comando file
# file /tmp/arquivo_recuperado.gz
/tmp/arquivo_recuperado.gz: gzip compressed data, was "nc", from Unix,
last modified: Fri Mar 24 14:29:13 2006, max compression
Checando informações do arquivo recuperado com o comando ls
# ls -l /tmp/arquivo_recuperado.gz
-rw-r--r--
1
root
root
12288
2009-12-12
13:45
/tmp/arquivo_recuperado.gz
Obs.: O comando dcat consegue recuperar apenas blocos inteiros de endereço. O
tamanho do bloco de endereço no sistema para esse exemplo é de 4096 bytes. Como ele
recuperou três blocos, o valor do arquivo vai ser de 12288 bytes.
Recuperando o valor exato do arquivo
# dd if=/tmp/arquivo_recuperado.gz of=/tmp/arquivo_recuperado_real.gz
bs=1 count=10611
Verificando compreensão do arquivo
# gzip -l -t /tmp/arquivo_recuperado_real.gz
compressed
10611
uncompressed ratio uncompressed_name
20192
47.6% /tmp/arquivo_recuperado_real
81
ANEXO 3 – Forense com o Autopsy
A ferramenta Autopsy nada mais é que um front end para a suíte SleuthKit. O
SleuthKit está presente em diversas distribuições de live-cd forenses. Seu
desenvolvimento foi baseado em uma ferramenta muito parecida, porém descontinuada,
chamada de The Coroner's Toolkit.
Instalação do Autopsy
# aptitude install autopsy
Obs.: A distribuição testada com as ferramentas já possuía essa ferramenta. O comando
acima serve apenas para exemplificar a sua instalação em uma distribuição GNU
Debian.
Iniciando o Autopsy
# autopsy
O Autopsy utiliza o browser para poder manipular as ferramentas do Sleuthkit.
Ao
iniciá-lo,
ela
passa
a
escutar
na
porta
9999
através
do
caminho
http://localhost:9999/autopsy.
Figura 41 – Página inicial do Autopsy
Criando um novo Caso a ser periciado
Clicar em New Case e preencher os campos da próxima tela. Entre os campos se
encontra o Nome do caso, a sua descrição e os nomes dos investigadores.
82
Figura 42 – Criação de um novo caso
Após preencher os campos, clicar em New Case e aguardar verificar onde o caso
está sendo criado e selecionar o investigador que vai tratar do caso.
Figura 43 – Confirmação de criação de um novo caso
Obs.: O Autopsy não vem com a opção de deleção do caso criado. Caso ocorra algum
erro no momento da sua criação, a deleção do caso terá que ser feita vinha linha de
comando aonde a informação Case directory está apontando.
83
Adicionando um host ao caso
Clica-se em Add Host para passar as informações do host a ser periciado.
Informações como nome do host, sua descrição, time zone utilizado, banco com hash
conhecidos, entre outros podem ser utilizados.
Figura 44 – Adicionar um novo host
Ao clicar em Add Host ocorre a confirmação da criação do host na pasta definida
no caso. Após isso será necessário adicionar a imagem do disco, partição ou mídia da
máquina suspeita.
Figura 45 – Confirmação da adição de um novo host
84
Adicionando uma imagem ao caso
No exemplo usado para a elaboração desse material do projeto foi usado a
imagem de uma partição /boot, separada previamente para a análise.
Figura 46 – Adicionar uma nova imagem I
Como é a primeira vez no caso e o hash já foi tirado anteriormente, basta apenas
preencher os campos pertinentes a ao ponto de montagem, tipo de FileSystem e
deixando a forma da integridade da mídia como padrão.
Figura 47 – Adicionar uma nova imagem II
85
Ao clicar no botão Add surge uma nova janela com o a confirmação da adição da
imagem ao caso, além da opção da adição de novas imagens. Para o nosso exemplo
usaremos apenas essa partição, mas o procedimento que irá se seguir terá que ser usado
para todas as partições que serão adicionadas.
Figura 48 – Confirmação da adição da imagem
Ao clicar OK, o Autopsy exibe as imagens referentes aquele caso e abre as
opções de manuseio da imagem.
Figura 49 – Imagens adicionadas ao caso
Criação da Timeline
Para se criar a timeline basta clicar no campo File Activity Time Lines e seguir as
instruções que se segue na janela que irá aparecer.
Figura 50 – Criação da Timeline I
86
Primeiro será necessário criar o arquivo de dados do FileSystem. Basta Clicar no
botão superior esquerdo com a descrição Create Data File.
Entre outras opções que aparecem pode se optar pela imagem que será gerada a
timeline, a opção por arquivos alocados ou não e escolher o local onde essas
informações ficarão armazenadas.
Figura 51 – Criação da Timeline II
A janela seguinte exibe a confirmação da tarefa realizada e gera o hash para
garantir a integridade dos arquivos.
Figura 52 – Criação da Timeline III
Ao se clicar em OK o próximo passo será a definição do início e final das datas
para a geração da timeline, bem como o seu nome. Se, a imagem contiver os arquivos
/etc/passwd e /etc/group deverá ser especificado, caso contrário, basta apenas deixar
conforme a figura abaixo.
87
Figura 53 – Criação da Timeline IV
Clicando em OK aparecerá à confirmação das opções escolhidas na janela
anterior.
Figura 54 – Confirmação da criação da Timeline
Clicando em OK novamente o Autopsy retorna a timeline formatada conforme
escolhido anteriormente.
Figura 55 – Visualização da Timeline
Clicando em Close no canto superior direito, acarretará na volta das opções do
host.
88
Figura 56 – Janela de análise de Imagens
Recuperando strings da imagem
Em details pode-se obter informações referentes à imagem, bem como dados
que ainda podem ser coletados.
Figura 57 – Detalhes da Imagem I
Para se extrair as strings da imagem basta clicar em Extract String e aguardar a
tela de confirmação a confirmação a seguir.
89
Figura 58 – Confirmação da extração de strings da imagem
Clicando na opção de Image Details a próxima tela irá retornar a confirmação e
abrir a opção de extrair fragmentos não alocados.
Figura 59 – Detalhes da Imagem II
90
Para se extrair fragmentos não alocados basta clicar na opção Extract
Unallocated e aguardar a confirmação da tela a seguir.
Figura 60 – Confirmação da extração de fragmentos não alocados
Novamente clicando em clicando em Image Details será possível exibir as
informações referentes à imagem e ainda abre a opção de extrair as string dos
fragmentos não alocados.
Figura 61 – Detalhes da Imagem III
Clicando em Extract Strings será possível extrair as strings dos fragmentos não
alocados.
91
Figura 62 – Confirmação da extração das strings de fragmentos não alocados
Clicando em Image Details pode se visualizar todas as informações da imagem e
opções que foram utilizadas para extrair strings.
Figura 63 – Detalhes da Imagem IV
Clicando em File System podem-se obter informações gerais sobre a imagem
periciada.
92
Figura 64 – Informações gerais sobre a imagem
Verificar arquivos baseados em assinaturas
Ao entrar na opção File System, novas opções aparecem no menu superior. No
campo descrito como File Type será possível analisar os arquivos da imagem baseado
em um banco de assinaturas.
Figura 65 – Análise de arquivos baseados em assinaturas I
Para analisar os arquivos baseados em assinaturas basta apenas clicar em Sort
Files by Type e selecionar as opções a seguir.
93
Figura 66 – Análise de arquivos baseados em assinaturas II
A confirmação de que as opções foram executadas com êxito aparecem na
próxima tela e ver os arquivos basta clicar na opção View Sorted Files.
Figura 67 – Análise de arquivos baseados em assinaturas III
O Autopsy apenas exibirá o caminho em HTML onde os arquivos poderão ser
visualizados.
Figura 68 – Link para visualização dos arquivos
94
Basta copiar o link e colocar no Browser para poder visualizá-los.
Figura 69 – Arquivos listados baseados em assinaturas
Verificar os Metadados
Voltando para a figura anterior a essa acima, também é possível trabalhar na
camada de Metadados clicando em Meta Data. Colando o número do inode no campo
correspondente, será possível visualizar informações referentes a ele.
Figura 70 – Informações sobre os metadados I
95
Para saber como estar à lista completa dos inode, seja ele alocado ou não
alocado, basta clicar em Allocation List no canto esquerdo.
Figura 71 – Informações sobre os metadados II
Clicando em Close no canto superior esquerdo, volta para a tela de opções do
host.
Figura 72 – Análise da Imagem
96
Verificar Integridade
Para obter a validade da integridade da imagem, timeline ou de alguns dos
arquivos extraídos, basta apenas clicar na opção Image Integrity e na janela seguinte
clicar em Validate naquele arquivo que se deseja validar.
Figura 73 – Validação de algum item
Dessa forma está finalizada o conceito de cinco camadas na análise Post Mortem
elaborada pela SUN MICROSYSTEMS, só que de uma forma transparente para o
perito.
Abrir um caso
Para abrir novamente o caso ou mesmo para modificá-lo, basta escolher a opção
de Open Case na tela inicial do Autopsy.
Figura 74 – Abrir um caso
97
Seleciona-se o caso que será aberto e clica-se em OK.
Figura 75 – Opções de casos a serem abertos
Na janela seguinte basta escolher umas das opções para modificar o caso se não,
basta apenas clicar em OK para se exibir o caso novamente.
Figura 76 – Opções de hosts a serem abertos
98
ANEXO 4 – Usando a ferramenta bmap
O slack space é o espaço não alocado por um dado em um bloco de endereço do
sistema. Atacantes mais astutos podem usar esse espaço no bloco para injetar códigos
maliciosos ou até um sistema operacional inteiro.
A ferramenta bmap é capaz de manipular o slack space. Ela se encontra de forma
gratuita na internet e na distribuição mais nova, e proprietária, do HELIX.
Criando um arquivo para testes
# echo “teste” > /tmp/arquivo.txt
Verificando conteúdo do arquivo
# cat /tmp/arquivo.txt
teste
Verificando o espaço ocupado pelo arquivo
# ls -lh /tmp/arquivo.txt
-rw-r--r-- 1 root root 6 Dez 18 10:52 /tmp/arquivo.txt
Verificando informações do slack space
# bmap --mode slack /tmp/arquivo.txt
getting from block 2561
file size was: 6
slack size: 1018
block size: 1024
Obs.: O comando usando esse parâmetro exibe informações sobre o número do bloco de
endereço, tamanho ocupado pelo arquivo, espaço que ainda sobra no bloco de endereço
e tamanho do bloco de endereço. Uma forma apenas para recuperar o espaço que ainda
tem no slack space seria:
99
# bmap --mode slackbytes /tmp/arquivo.txt
1018
Verificando informações do arquivo
# dcat /dev/sda6 2561 | hexdump -C
00000000
74 65 73 74 65 0a 00 00
00 00 00 00 00 00 00 00
|teste...........|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000400
Obs.: Esse comando servirá apenas para confrontar a verificação quando tiver alguma
informação no slack space. Os primeiros 6 bytes correspondem ao arquivo original.
Colocando informação no slack space do arquivo
# echo “Exemplo de texto de codigo injetado no slack space” | bmap -mode putslack /tmp/arquivo.txt
Verificando novamente informações do slack space
# bmap --mode slack /tmp/teste.txt
getting from block 2561
file size was: 6
slack size: 1018
block size: 1024
Exemplo de texto de codigo injetado no slack space
Verificando informações do arquivo
# dcat /dev/sda6 2561 | hexdump -C
00000000
74 65 73 74 65 0a 45 78
65 6d 70 6c 6f 20 64 65
|teste.Exemplo de|
100
00000010 20 74 65 78 74 6f 20 64 65 20 63 6f 64 69 67 6f | texto de
codigo|
00000020 20 69 6e 6a 65 74 61 64 6f 20 6e 6f 20 73 6c 61 | injetado no
sla|
00000030 63 6b 20 73 70 61 63 65 0a 00 00 00 00 00 00 00 |ck
space........|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000400
Checando novamente o conteúdo do arquivo
# cat /tmp/arquivo.txt
teste
Verificando novamente o espaço ocupado pelo arquivo
# ls -lh /tmp/arquivo.txt
-rw-r--r-- 1 root root 6 Dez 18 10:52 /tmp/arquivo.txt
Obs.: Não foi alterado nem o tamanho do arquivo e muito menos o seu conteúdo. Um
HIDS não detecta este tipo de ataque, pois ele irá checar a integridade do arquivo e
como foi demonstrada, essa integridade permanece intacta.
101
ANEXO 5 – Alternate Data Streams
Os Alternate Data Streams (ADS) foram criados inicialmente para armazenar
informações extras sobre o arquivo, como uma forma de descrição dos arquivos. Um
exemplo do uso de ADS é o Thumbnail ou o ícone de uma imagem.
A idéia parte do presuposto de que qualquer arquivo ou pasta possui uma stream
principal. Cada stream principal pode ter várias streams adicionais. Essas streams
adicionais são identificas por qualquer nome e até o que parece tem um tamanho
ilimitado. Sendo assim, pessoas mal intencionadas podem colocar códigos para serem
executados por algum malware.
Criando um arquivo para testes
D:\IR\xp> echo teste > c:\teste.txt
Verificando tamanho do arquivo
D:\IR\xp> dir c:\teste.txt
18/12/2009
12:24
8 testes.txt
Verificando o conteúdo do arquivo
D:\IR\xp> type c:\teste.txt
teste
Adicionando um ADS ao arquivo
D:\IR\xp> echo texto oculto > c:\teste.txt:nomeads
Verificando novamente tamanho do arquivo
D:\IR\xp> dir c:\teste.txt
18/12/2009
12:26
8 testes.txt
102
Verificando novamente o conteúdo do arquivo
D:\IR\xp> type c:\teste.txt
teste
Obs.: Apenas o MACtime é alterado. O tamanho do arquivo, conteúdo e o seu nome
permanecem o mesmo.
Verificando o conteúdo de um ADS no arquivo
D:\IR\xp> less < c:\teste.txt:nomeads
texto oculto
Outra forma:
Verificando com a ferramenta streams
D:\IR\xp> streams c:\teste.txt
:nomeads:DATA 15
Obs.: Caso fosse um arquivo executável basta usar o comando demonstrado abaixo.
D:\IR\xp> start c:\teste.txt:arquivo.exe
103