Exercícios práticos

A seguir, ilustraremos alguns exemplos práticos da obtenção de informações(coleta de evidências) que podem ser utilizadas em processos forenses em diferentes ambientes.

Existem dois grandes grupos que devemos elucidar antes de dar continuidade aos exemplos. A análise forense digital pode ser dividida em dois ambientes para sua aplicação, são eles: sistemas offline e sistemas online.

Sistemas online
são sistemas que ainda permanecem ligados para a análise forense. Ou seja, seu conteudo em memória ainda é passível de recuperação, assim como outros dados, como informações relativas a rede.
Sistemas offline
são sistemas que foram desligados ou já se encontravam assim no momento de sua análise.

Em sistemas offlines, geralmente são utilizadas ferramentas especializadas que automatizam grande parte do trabalho de coleta de informação. Alguns exemplos de ferramentas são: Guidence EnCase Forensics, F-Response e Access Data FTK.

Além de ferramentas especializadas na coleta de informações, existem outras ferramentas especializadas na análise de informações, como ferramentas que buscam outras ferramentas (ferramentas de anti-forense, editores binários, ferramentas utilizadas em ataques e exploração de vulnerabilidade, trojans, spywares, e etc), ferramentas que analisam imagens, ferramentas que analisam a presença de esteganografia, entre outras ferramentas especializadas.

Em sistemas online, além da análise dos dados no disco é possível realizar a análise dos dados que ainda estão em execussão. Esses podem ser dados que estão na memória, cache, buffers entre outros (mais exemplos na figura sobre volatilidade). Nos exemplos a seguir, veremos como recuperar essas informações em diversos ambientes.

Coleta de Memória

Em sistemas online, um dos dados mais voláteis é o conteúdo da memória RAM. Com o intuito de não modificar os dados em disco, vamos mostrar abaixo como realizar a coleta da memória e redirecionar ela para uma outra estação em rede, essa estação, por vezes, é conhecida como estação forense.

Ambientes *NIX

Em ambiente *NIX, necessitamos de um conjunto de ferramentas forenses previamente carregados em uma mídia do tipo somente-leitura para realizarmos a coleta dos dados. Essas ferramentas devem ser preparadas com antecendência e devem ter seu resumo criptográfico coletado antes de dar início a atividade forense. Não devemos utilizar as ferramentas no sistema pois elas podem estar comprometidas.

Executamos os seguintes comandos na estação forense:

# nc -l -p porta > /forense/memoria_fisica.img

Executamos os seguintes comandos no sistema suspeito(sempre a partir da mídia em somente leitura):

# memdump | nc ipDaEstaçãoForense porta

Ambientes Windows

Em ambiente Windows, necessitamos de um conjunto de ferramentas forenses previamente carregados em uma mídia do tipo somente-leitura para realizarmos a coleta dos dados. Essas ferramentas devem ser preparadas com antecendência e devem ter seu resumo criptográfico coletado antes de dar início a atividade forense. Não devemos utilizar as ferramentas no sistema pois elas podem estar comprometidas.

Executamos os seguintes comandos na estação forense:
> nc -l -p porta > D:\forense\memoria_fisica.img

Executamos os seguintes comandos no sistema suspeito(sempre a partir da mídia em somente leitura):

> cmd.exe
> dd.exe if=\\.\Physicalmemory conv=noeror | nc ipDaEstaçãoForense porta

Coleta de Dados de Sincronismo

Após a coleta dos dados na memória, devemos recuperar informações sobre o sincronismo do sistema, pois provavelmente precisaremos correlacionar informações de evidências provenientes de outros sistemas.

Pode-se pensar que esse deveria ser o primeiro passo a ser realizado, mas como essa informação pode sobrescrever alguma informação em memória, realizamos esse procedimento agora.

Ambientes *NIX

Executamos os seguintes comandos na estação forense:

# nc -l -p portaParaDate > /forense/date.txt&
# nc -l -p portaParaUptime > /forense/uptime.txt

Executamos os seguintes comandos no sistema suspeito(sempre a partir da mídia em somente leitura):

# date | nc ipDaEstaçãoForense portaParaDate
# uptime | nc ipDaEstaçãoForense portaParaUptime

O primeiro comando obtem a data atual do sistema, já o segundo obtem por quanto tempo o sistema está ligado. Garantindo a sincronia de relógio da estação forense, podemos determinar através das informações do arquivo de data, o quanto o relógio do sistema suspeito está defasado do horário sincronizado.

Ambientes Windows

Em ambiente Windows, executamos os seguintes comandos:

Executamos os seguintes comandos na estação forense:

> nc -l -p portaParaDate > D:\forense\date.txt
> nc -l -p portaParaUptime > D:\forense\uptime.txt

Executamos os seguintes comandos no sistema suspeito(sempre a partir da mídia em somente leitura):

> date.exe \t | nc ipDaEstaçãoForense portaParaDate
> time \t | nc ipDaEstaçãoForense portaParaDate
> reg.exe query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation | nc ipDaEstaçãoForense portaParaDate
> uptime | nc ipDaEstaçãoForense portaParaUptime

Coleta de Informações de Processos

Após a coleta dos dados de sincronismo, devemos recuperar informações sobre os processos em execussão no sistema.

Ambientes *NIX

Executamos os seguintes comandos na estação forense:

# nc -l -p portaLsof-l > /forense/lsof-l.txt&
# nc -l -p portaLsof-i > /forense/lsof-i.txt&
# nc -l -p portaLsof-u > /forense/lsof-u.txt

Executamos os seguintes comandos no sistema suspeito(sempre a partir da mídia em somente leitura):

# lsof -l | nc ipDaEstaçãoForense portaLsof-l
# lsof -i | nc ipDaEstaçãoForense portaLsof-i
# lsof -U | nc ipDaEstaçãoForense portaLsof-u

O primeiro comando obtem a lista de todos os arquivos abertos, enquanto o segundo obtem a lista de todos os arquivos de rede abertos. Esses dados podem ser interessantes para determinar quais programas mantêm conexões abertas e quais arquivos são continuamente modificados. O terceiro comando obtem a lista com todos os programas que mantêm um socket UNIX aberto (útil para encontrar programas escondidos com conexões abertas).

Outra análise que pode ser realizada é através do sistema de arquivos /proc. Esse sistema contem diversas informações sobre os precessos em execussão. Caso alguma informação sobre um processo não esteja disponível em disco, como o próprio binário executado, ela pode ser encontrado no diretório /proc.

Ambientes Windows

Em ambiente Windows, executamos os seguintes comandos:

Executamos os seguintes comandos na estação forense:

> nc -l -p porta > D:\forense\processos.txt

Executamos os seguintes comandos no sistema suspeito(sempre a partir da mídia em somente leitura):

> hotname | nc ipDaEstaçãoForense porta
> whoami | nc ipDaEstaçãoForense porta
> psgetid | nc ipDaEstaçãoForense porta
> psgetid user| nc ipDaEstaçãoForense porta
> psloggedon | nc ipDaEstaçãoForense porta
> logonsessions | nc ipDaEstaçãoForense porta
> net users | nc ipDaEstaçãoForense porta
> ntfsinfo C:| nc ipDaEstaçãoForense porta
> mem | nc ipDaEstaçãoForense porta
> psinfo | nc ipDaEstaçãoForense porta
> ps -a -W | nc ipDaEstaçãoForense porta

Preservação do Disco

Após a coleta dos dados dos processos, devemos preservar as informações do disco do sistema.

Ambientes *NIX

Na estação forense, devemos garantir que o disco esteja limpo. Para isso executamos o seguinte comando antes de dar continuidade ao processo.

# dd if=/dev/zero of=/dev/(disco forense)

Executamos os seguintes comandos no sistema suspeito, após montar o disco no sistema suspeito(sempre a partir da mídia em somente leitura):

# dd if=/dev/ of=/dev/(disco forense)

Nesse passo, podemos realizar o desligamento do sistema de forma abrupta e realizarmos a coleta dos dados no disco usando outras ferramentas.

Ambientes Windows

Na estação forense, devemos garantir que o disco esteja limpo. Para isso, devemos realizar sempre a limpeza do disco.

No sistema suspeito, temos que ao desligarmos ele de forma normal, poderemos modificar os dados no arquivo de paginação, o que pode impossibilitar a descoberta de informações. Logo, o procedimento mais adequado é realizar o desligamento de forma abrupta e clonar os dados na estação forense.