ferramentas forense em sistemas gnu linux e microsoft windows

103
FERRAMENTAS FORENSE EM SISTEMAS GNU LINUX E MICROSOFT WINDOWS Bolsista: Eric Barbosa Jales de Carvalho Coordenador: Nathan Franklin Saraiva de Sousa Teresina Dezembro/2009

Upload: trandiep

Post on 07-Jan-2017

244 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 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

Page 2: ferramentas forense em sistemas gnu linux e microsoft windows

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

Page 3: ferramentas forense em sistemas gnu linux e microsoft windows

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

Page 4: ferramentas forense em sistemas gnu linux e microsoft windows

Í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

Page 5: ferramentas forense em sistemas gnu linux e microsoft windows

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

Page 6: ferramentas forense em sistemas gnu linux e microsoft windows

6

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.

Page 7: ferramentas forense em sistemas gnu linux e microsoft windows

7

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.

Page 8: ferramentas forense em sistemas gnu linux e microsoft windows

8

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.

Page 9: ferramentas forense em sistemas gnu linux e microsoft windows

9

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

Page 10: ferramentas forense em sistemas gnu linux e microsoft windows

10

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.

Page 11: ferramentas forense em sistemas gnu linux e microsoft windows

11

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

Page 12: ferramentas forense em sistemas gnu linux e microsoft windows

12

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

Page 13: ferramentas forense em sistemas gnu linux e microsoft windows

13

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

Page 14: ferramentas forense em sistemas gnu linux e microsoft windows

14

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

Page 15: ferramentas forense em sistemas gnu linux e microsoft windows

15

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

Page 16: ferramentas forense em sistemas gnu linux e microsoft windows

16

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

Page 17: ferramentas forense em sistemas gnu linux e microsoft windows

17

# 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

Page 18: ferramentas forense em sistemas gnu linux e microsoft windows

18

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

Page 19: ferramentas forense em sistemas gnu linux e microsoft windows

19

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.

Page 20: ferramentas forense em sistemas gnu linux e microsoft windows

20

# /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

Page 21: ferramentas forense em sistemas gnu linux e microsoft windows

21

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.

Page 22: ferramentas forense em sistemas gnu linux e microsoft windows

22

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

Page 23: ferramentas forense em sistemas gnu linux e microsoft windows

23

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.

Page 24: ferramentas forense em sistemas gnu linux e microsoft windows

24

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

Page 25: ferramentas forense em sistemas gnu linux e microsoft windows

25

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

Page 26: ferramentas forense em sistemas gnu linux e microsoft windows

26

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 Start End Blocks Id System

/dev/loop0p1 * 63 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

Page 27: ferramentas forense em sistemas gnu linux e microsoft windows

27

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.

Page 28: ferramentas forense em sistemas gnu linux e microsoft windows

28

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

Page 29: ferramentas forense em sistemas gnu linux e microsoft windows

29

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

Page 30: ferramentas forense em sistemas gnu linux e microsoft windows

30

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

Page 31: ferramentas forense em sistemas gnu linux e microsoft windows

31

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

Page 32: ferramentas forense em sistemas gnu linux e microsoft windows

32

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.

Page 33: ferramentas forense em sistemas gnu linux e microsoft windows

33

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.

Page 34: ferramentas forense em sistemas gnu linux e microsoft windows

34

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

Page 35: ferramentas forense em sistemas gnu linux e microsoft windows

35

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

Page 36: ferramentas forense em sistemas gnu linux e microsoft windows

36

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.

Page 37: ferramentas forense em sistemas gnu linux e microsoft windows

37

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

Page 38: ferramentas forense em sistemas gnu linux e microsoft windows

38

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

Page 39: ferramentas forense em sistemas gnu linux e microsoft windows

39

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.

Page 40: ferramentas forense em sistemas gnu linux e microsoft windows

40

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

Page 41: ferramentas forense em sistemas gnu linux e microsoft windows

41

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.

Page 42: ferramentas forense em sistemas gnu linux e microsoft windows

42

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

Page 43: ferramentas forense em sistemas gnu linux e microsoft windows

43

Obtendo pelo registro

Enviando informações sobre os serviços ativos na máquina suspeita

D:\IR\xp> reg query

HKLM\Software\Microsoft\Windows\CurrentVersion\Run | 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.

Page 44: ferramentas forense em sistemas gnu linux e microsoft windows

44

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.

Page 45: ferramentas forense em sistemas gnu linux e microsoft windows

45

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.

Page 46: ferramentas forense em sistemas gnu linux e microsoft windows

46

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

Page 47: ferramentas forense em sistemas gnu linux e microsoft windows

47

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

Page 48: ferramentas forense em sistemas gnu linux e microsoft windows

48

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

Page 49: ferramentas forense em sistemas gnu linux e microsoft windows

49

# 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

Page 50: ferramentas forense em sistemas gnu linux e microsoft windows

50

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

Page 51: ferramentas forense em sistemas gnu linux e microsoft windows

51

(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

Page 52: ferramentas forense em sistemas gnu linux e microsoft windows

52

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

Page 53: ferramentas forense em sistemas gnu linux e microsoft windows

53

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.

Page 54: ferramentas forense em sistemas gnu linux e microsoft windows

54

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

Page 55: ferramentas forense em sistemas gnu linux e microsoft windows

55

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

Page 56: ferramentas forense em sistemas gnu linux e microsoft windows

56

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

Page 57: ferramentas forense em sistemas gnu linux e microsoft windows

57

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

Page 58: ferramentas forense em sistemas gnu linux e microsoft windows

58

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

Page 59: ferramentas forense em sistemas gnu linux e microsoft windows

59

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.

Page 60: ferramentas forense em sistemas gnu linux e microsoft windows

60

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

Page 61: ferramentas forense em sistemas gnu linux e microsoft windows

61

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

Page 62: ferramentas forense em sistemas gnu linux e microsoft windows

62

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.

Page 63: ferramentas forense em sistemas gnu linux e microsoft windows

63

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.

Page 64: ferramentas forense em sistemas gnu linux e microsoft windows

64

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.

Page 65: ferramentas forense em sistemas gnu linux e microsoft windows

65

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-Shakacon-

win32dd0.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_3-

v2.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://computer-

forensics.sans.org/community/papers/evaluation_of_the_forensic_toolkit_118

[16] WINDOWS FORENSIC TOOLCHEST. Disponível em:

http://www.foolmoon.net/security/wft/

Page 66: ferramentas forense em sistemas gnu linux e microsoft windows

66

[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/

Page 67: ferramentas forense em sistemas gnu linux e microsoft windows

67

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

Page 68: ferramentas forense em sistemas gnu linux e microsoft windows

68

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.

Page 69: ferramentas forense em sistemas gnu linux e microsoft windows

69

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

Page 70: ferramentas forense em sistemas gnu linux e microsoft windows

70

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

Page 71: ferramentas forense em sistemas gnu linux e microsoft windows

71

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

Page 72: ferramentas forense em sistemas gnu linux e microsoft windows

72

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

Page 73: ferramentas forense em sistemas gnu linux e microsoft windows

73

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

Page 74: ferramentas forense em sistemas gnu linux e microsoft windows

74

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.

Page 75: ferramentas forense em sistemas gnu linux e microsoft windows

75

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.

Page 76: ferramentas forense em sistemas gnu linux e microsoft windows

76

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

Page 77: ferramentas forense em sistemas gnu linux e microsoft windows

77

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

Page 78: ferramentas forense em sistemas gnu linux e microsoft windows

78

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

Page 79: ferramentas forense em sistemas gnu linux e microsoft windows

79

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.

Page 80: ferramentas forense em sistemas gnu linux e microsoft windows

80

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.

Page 81: ferramentas forense em sistemas gnu linux e microsoft windows

81

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 uncompressed ratio uncompressed_name

10611 20192 47.6% /tmp/arquivo_recuperado_real

Page 82: ferramentas forense em sistemas gnu linux e microsoft windows

82

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.

Page 83: ferramentas forense em sistemas gnu linux e microsoft windows

83

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.

Page 84: ferramentas forense em sistemas gnu linux e microsoft windows

84

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

Page 85: ferramentas forense em sistemas gnu linux e microsoft windows

85

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

Page 86: ferramentas forense em sistemas gnu linux e microsoft windows

86

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

Page 87: ferramentas forense em sistemas gnu linux e microsoft windows

87

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.

Page 88: ferramentas forense em sistemas gnu linux e microsoft windows

88

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.

Page 89: ferramentas forense em sistemas gnu linux e microsoft windows

89

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.

Page 90: ferramentas forense em sistemas gnu linux e microsoft windows

90

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

Page 91: ferramentas forense em sistemas gnu linux e microsoft windows

91

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.

Page 92: ferramentas forense em sistemas gnu linux e microsoft windows

92

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.

Page 93: ferramentas forense em sistemas gnu linux e microsoft windows

93

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.

Page 94: ferramentas forense em sistemas gnu linux e microsoft windows

94

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

Page 95: ferramentas forense em sistemas gnu linux e microsoft windows

95

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

Page 96: ferramentas forense em sistemas gnu linux e microsoft windows

96

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

Page 97: ferramentas forense em sistemas gnu linux e microsoft windows

97

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

Page 98: ferramentas forense em sistemas gnu linux e microsoft windows

98

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

Page 99: ferramentas forense em sistemas gnu linux e microsoft windows

99

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:

Page 100: ferramentas forense em sistemas gnu linux e microsoft windows

100

# 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|

Page 101: ferramentas forense em sistemas gnu linux e microsoft windows

101

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.

Page 102: ferramentas forense em sistemas gnu linux e microsoft windows

102

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

Page 103: ferramentas forense em sistemas gnu linux e microsoft windows

103

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