119

Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

UNIVERSIDADE FEDERAL DE GOIÁS � UFG

CAMPUS CATALÃO � CaC

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO � DCC

Bacharelado em Ciência da Computação

Projeto Final de Curso

Uso da Computação Forense no Estudo deVulnerabilidades de Segurança dos Sistemas

Operacionais Windows e Linux

Autor: Karla Gonçalves

Orientador: Márcio de Souza Dias

Catalão - 2011

Page 2: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Karla Gonçalves

Uso da Computação Forense no Estudo de Vulnerabilidades de Segurança

dos Sistemas Operacionais Windows e Linux

Monogra�a apresentada ao Curso de

Bacharelado em Ciência da Computação da

Universidade Federal de Goiás Campus Catalão

como requisito parcial para obtenção do título de

Bacharel em Ciência da Computação

Área de Concentração: Segurança de Sistemas

Orientador: Márcio de Souza Dias

Catalão - 2011

Page 3: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Gonçalves, Karla

Uso da Computação Forense no Estudo de Vulnerabilidades de Segurança

dos Sistemas Operacionais Windows e Linux

Márcio de Souza Dias - Catalão - 2011

Número de paginas: 104

Projeto Final de Curso (Bacharelado) Universidade Federal de Goiás, Campus

Catalão, Curso de Bacharelado em Ciência da Computação, 2011.

Palavras-Chave: 1. Perícia Forense Computacional. 2. Evidências Criminais Ele-

trônicas. 3. Vulnerabilidades

Page 4: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Karla Gonçalves

Uso da Computação Forense no Estudo de Vulnerabilidades de Segurança

dos Sistemas Operacionais Windows e Linux

Monogra�a apresentada e aprovada em de

Pela Banca Examinadora constituída pelos professores.

Márcio de Souza Dias � Presidente da Banca

Veríssimo Guimarães Júnior

Nádia Félix Felipe da Silva

Page 5: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Dedico este trabalho a minha família, principal-

mente ao meu �lho e ao meu namorado ,e aos

amigos que sempre me apoiaram nos estudos e me

ajudaram a superar as di�culdades para que pu-

desse alcançar os meus objetivos.

Page 6: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

AGRADECIMENTOS

Em primeiro lugar agradeço a Deus, pelos dons dados a mim, os quais foram essenciais

para que eu chegasse aonde cheguei.

Aos meus pais, Sebastião Cristóvão e Divina Aparecida, pela base, pela educaçao, pelo

companheirismo, pela força, pela credibilidade e pelo apoio.

Aos meus irmãos Kássia e Danilo, meu muito obrigada.

Ao meu �lho João Víctor, que mesmo sem saber, é a minha força para todas as horas.

Ao meu namorado Lucas que não esteve presente na criação desse projeto, mas que

acompanhou os últimos ajustes...rsrs, meu muito obrigada!

Aos amigos que já formaram, Andréa Alves, Míriam Alves, Fábio Assunção e Dyêgo

Figueiredo meu muito obrigada pela amizade e pelo apoio durante o curso.

Aos demais amigos do curso, que sempre estavam presentes, seja para estudos, para

festas ou para uma conversa, Marcinha Santos, Carla Fernandes, Laísa Bárbara, Nataly

Chiminelli, Rayner Pires, Danilo Reis, Gustavo Almeida, Nélio Carneiro, Rafael Ulhôa,

Rudson Franco entre tantos outros. Muito Obrigado!

A minha grande amiga Flávia Freitas, pela amizade, apoio e carinho despendido em

todas as horas.

Aos professores Acrísio Júnior, Márcio Duarte, Liliane Nascimento, Luanna Lopes, Ro-

berto Finzi e Veríssimo Guimarães Júnior. E aos demais professores pelos conhecimentos

passados durante o curso.

Ao meu professor e orientador Márcio de Souza Dias, pela sua dedicação e disposição

para comigo neste trabalho.

A todos os meus familiares e amigos que direta ou indiretamente sempre me deram

força para vencer mais essa batalha, guiando-me sempre que preciso e sempre me aconse-

lhando com as palavras certas nos momentos em que mais precisava.

A todos vocês meus sinceros agradecimentos, muito obrigada...

Page 7: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

�Tendo amor e saúde, da vida eu não reclamo, amo

a vida que levo, levo a vida que amo. E mesmo

que meus passos sejam falsos, mesmo que os meus

caminhos sejam errados, mesmo que meu jeito de

levar a vida incomode, eu sei quem sou, e sei pelo

que devo lutar. Se você acha que meu orgulho é

grande, é porque nunca viu o tamanho da minha

fé!”

Tião Carreiro

Page 8: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

RESUMO

Gonçalves, K. Uso da Computação Forense no Estudo de Vulnerabilidades

de Segurança dos Sistemas Operacionais Windows e Linux. Curso de Ciência da

Computação, Campus Catalão, UFG, Catalão, Brasil, 2011, 104p.

Os computadores estão cada vez mais presentes no modo de vida das pessoas que

os utilizam para todo tipo de atividade, armazenando e transmitindo suas informações

pessoais na forma digital. Seguindo essa tendência, as atividades criminosas evoluíram

da mesma forma. Surge assim, a necessidade de desenvolver técnicas para obter e utilizar

evidências criminais eletrônicas, utilizando para isso conceitos e metodologias de perícia

forense computacional. Os crimes em redes de computadores tendem a aumentar, pois,

com o passar dos anos e com a disseminação de informações (notadamente através da

Internet), houve um signi�cativo avanço no entendimento de como os sistemas operam.

Isso fez com que intrusos se tornassem verdadeiros especialistas em determinar e explorar

vulnerabilidades a �m de obterem acessos privilegiados. Neste trabalho, é feito um es-

tudo das principais vulnerabilidades de segurança encontradas em sistemas operacionais

Windows e Linux, incluindo ao �nal o desenvolvimento de um protótipo de recuperação

de dados na área de swap.

Palavras-Chaves: Perícia Forense Computacional, Evidências Criminais Eletrônicas,

Vulnerabilidades

i

Page 9: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Sumário

1 Forense Computacional 1

1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Origem Histórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.3 O que é Forense Computacional? . . . . . . . . . . . . . . . . . . . . . . . 5

1.4 Perícia Computacional Forense . . . . . . . . . . . . . . . . . . . . . . . . 7

1.5 Processo Investigativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.5.1 Identi�cação das evidências . . . . . . . . . . . . . . . . . . . . . . 10

1.5.2 Preservação das evidências . . . . . . . . . . . . . . . . . . . . . . . 11

1.5.3 Análise das evidências . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.5.4 Apresentação das evidências . . . . . . . . . . . . . . . . . . . . . . 12

2 Investigação em Sistemas Operacionais e suas Vulnerabilidades 14

2.1 A investigação em si . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.1.1 Sistema de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.1.2 Arquivos de log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.3 Espaços não utilizados no dispositivo de armazenamento . . . . . . 17

2.1.4 Arquivos temporários (temp) . . . . . . . . . . . . . . . . . . . . . 17

2.1.5 Área de swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.1.6 Setor de boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.1.7 Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.1.8 Periféricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.1.9 Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.2 Segurança em Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . 19

2.3 Vulnerabilidades de segurança que afetam todos os Sistemas . . . . . . . . 20

2.3.1 Instalações default de sistemas operacionais e aplicativos . . . . . . 21

2.3.2 Contas sem senhas ou com senhas fracas . . . . . . . . . . . . . . . 22

2.3.3 Backups incompletos ou inexistentes . . . . . . . . . . . . . . . . . 23

2.3.4 Grande número de portas abertas . . . . . . . . . . . . . . . . . . . 23

2.3.5 Ausência de �ltro de pacotes de entrada e saída que garantam o uso

de endereços válidos . . . . . . . . . . . . . . . . . . . . . . . . . . 24

ii

Page 10: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

2.3.6 Sistema de logs inexistente ou incompleto . . . . . . . . . . . . . . 25

2.3.7 Programas CGI vulneráveis . . . . . . . . . . . . . . . . . . . . . . 26

2.4 Vulnerabilidades no Windows . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.4.1 Falha no Unicode conhecida como “Web Server Folder traversal” . . 26

2.4.2 Bu�er Over�ow nas Extensões ISAPI (Internet Services Applica-

tion Programming Interface) . . . . . . . . . . . . . . . . . . . . . . 27

2.4.3 Brecha nos Serviços de Dados Remotos (RDS) do IIS . . . . . . . . 27

2.4.4 NetBIOS: Falta de proteção nos compartilhamentos em redes Win-

dows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.4.5 Vazamento de informações através de sessão anônima (null session) 28

2.4.6 Codi�cação fraca de senhas no SAM (LAN Manager hash) . . . . . 29

2.5 Vulnerabilidades no Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.5.1 Bu�er Over�ow nos serviços de Remote Procedure Call (RPC) . . 29

2.5.2 Vulnerabilidades no Sendmail . . . . . . . . . . . . . . . . . . . . . 30

2.5.3 BIND Weaknesses . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.5.4 Comandos remotos (r) . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.5.5 LPD (daemon do serviço de impressão remota) . . . . . . . . . . . 31

2.5.6 Serviços Sadmind e Mountd . . . . . . . . . . . . . . . . . . . . . . 31

2.5.7 Mensagens-padrão do SNMP (Simple Network Management Protocol) 32

3 Ferramentas de Investigação Computacional 33

3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2 Easy Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.3 EnCase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.4 eMailTrackerPro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.5 Forensic ToolKit (FTK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.6 Caller IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.7 RecoverMyFiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.8 SmartWhois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.9 IP-Adress.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4 Desenvolvimento e Análise do Protótipo 41

4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.2 Investigando a Memória Principal . . . . . . . . . . . . . . . . . . . . . . . 41

4.2.1 Memória Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.3 Ánalise do espaço de Swap . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.3.1 Arquivo de Swap do Windows e Linux (page�le.sys) . . . . . . . . . 44

4.4 A linguagem de programação utilizada . . . . . . . . . . . . . . . . . . . . 45

iii

Page 11: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

4.5 Protótipo desenvolvido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.5.1 Interface Grá�ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.5.2 Extração de Diretórios . . . . . . . . . . . . . . . . . . . . . . . . . 53

4.5.3 Extração de URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.5.4 Extração de imagens JPEG . . . . . . . . . . . . . . . . . . . . . . 54

4.5.5 Extração de imagens GIF . . . . . . . . . . . . . . . . . . . . . . . 55

4.5.6 Extração de imagens PNG . . . . . . . . . . . . . . . . . . . . . . . 55

4.5.7 Extração de imagens TIFF . . . . . . . . . . . . . . . . . . . . . . . 55

4.5.8 Extração de arquivos PDF . . . . . . . . . . . . . . . . . . . . . . . 55

4.5.9 Extração de arquivos UTF8 . . . . . . . . . . . . . . . . . . . . . . 55

4.5.10 Extração de arquivos DOC . . . . . . . . . . . . . . . . . . . . . . . 56

4.6 Experimentos Realizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

4.6.1 Execução e Saída do Programa . . . . . . . . . . . . . . . . . . . . 56

5 Considerações Finais 70

5.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

Referências 73

Apêndices 74

A Código fonte 75

A.1 Classe Janela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

A.2 Classe ArquivoSwap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

A.3 Classe ArquivoSaida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

A.4 Classe BuscadorNumeroMagico . . . . . . . . . . . . . . . . . . . . . . . . 85

A.5 Classe BuscarArquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

A.6 Classe Progress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

A.7 Classe ExtratorDiretorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

A.8 Classe ExtratorURL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

A.9 Classe JanelaFotos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

A.10 Classe JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

A.11 Classe GIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

A.12 Classe PNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

A.13 Classe TIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

A.14 Classe PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

A.15 Classe UTF8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

A.16 Classe DOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

iv

Page 12: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Lista de Figuras

1.1 Exemplo de Formulário de Cadeia de Custódia [Tavares, 2007] . . . . . . . 6

1.2 Exemplos de possíveis fontes de dados [Tavares, 2007] . . . . . . . . . . . . 10

2.1 MAC times [Tavares, 2007] . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.1 Tela do EasyRecovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.2 Interface do EnCase E-mail e Internet (Tutorial) [Vargas, 2007] . . . . . . 35

3.3 Tela Principal da ferramenta E-mailTracker com rota de IPs . . . . . . . . 36

3.4 Tela Principal da Ferramenta CallerIp . . . . . . . . . . . . . . . . . . . . 37

3.5 Visualização de Pastas Deletadas na Ferramenta RecoverMyFiles . . . . . . 38

3.6 Tela Principal da Ferramenta SmartWhois . . . . . . . . . . . . . . . . . . 39

4.1 Troca de processos entre a memória principal e o espaço de swap, segundo

[Silberschatz et al., 2001] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.2 Tela inicial da ferramenta Extrator de Arquivos . . . . . . . . . . . . . . . 46

4.3 Opções do menu Arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.4 Janela de seleção da área de swap . . . . . . . . . . . . . . . . . . . . . . . 47

4.5 Opções do menu Extração . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.6 Busca e Extração de Diretórios . . . . . . . . . . . . . . . . . . . . . . . . 48

4.7 Diretórios recuperados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.8 Opções do menu Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.9 Busca e Extração de imagens JPG . . . . . . . . . . . . . . . . . . . . . . 50

4.10 Imagens JPEG recuperadas . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.11 Miniaturas das Imagens JPEG recuperadas . . . . . . . . . . . . . . . . . . 51

4.12 Opções do menu Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.13 Busca e Extração de arquivos PDF . . . . . . . . . . . . . . . . . . . . . . 52

4.14 Arquivos PDF recuperados . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.15 Janela de encerramento do programa . . . . . . . . . . . . . . . . . . . . . 52

4.16 Pastas com arquivos extraídos . . . . . . . . . . . . . . . . . . . . . . . . . 53

4.17 Exemplar de �gura extraída pelo protótipo do Bueno . . . . . . . . . . . . 58

4.18 Exemplar de �gura extraída pelo protótipo do Bueno . . . . . . . . . . . . 58

v

Page 13: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

4.19 Diretórios recuperados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.20 Arquivo de texto usado para armazenar os diretórios extraídos . . . . . . . 60

4.21 URLs extraídas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.22 Arquivo de texto usado para armazenar as URLS extraídas . . . . . . . . . 61

4.23 Imagens JPEG recuperadas . . . . . . . . . . . . . . . . . . . . . . . . . . 61

4.24 Pasta criada para armazenar imagens JPEG recuperadas . . . . . . . . . . 61

4.25 Miniaturas das Imagens JPEG recuperadas . . . . . . . . . . . . . . . . . . 62

4.26 Imagens GIF recuperadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.27 Pasta criada para armazenar imagens GIF recuperadas . . . . . . . . . . . 63

4.28 Miniaturas das Imagens GIF recuperadas . . . . . . . . . . . . . . . . . . . 63

4.29 Imagens PNG recuperadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

4.30 Pasta criada para armazenar imagens PNG recuperadas . . . . . . . . . . . 64

4.31 Miniaturas das Imagens PNG recuperadas . . . . . . . . . . . . . . . . . . 64

4.32 Imagens TIFF recuperadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

4.33 Pasta criada para armazenar imagens TIFF recuperadas . . . . . . . . . . 65

4.34 Miniaturas das Imagens TIFF recuperadas . . . . . . . . . . . . . . . . . . 65

4.35 Arquivos PDF recuperados . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

4.36 Pasta criada para armazenar arquivos PDF recuperados . . . . . . . . . . . 66

4.37 Arquivos UTF8 recuperados . . . . . . . . . . . . . . . . . . . . . . . . . . 67

4.38 Pasta criada para armazenar arquivos UTF8 recuperados . . . . . . . . . . 67

4.39 Arquivos DOC recuperados . . . . . . . . . . . . . . . . . . . . . . . . . . 68

4.40 Pasta criada para armazenar arquivos DOC recuperados . . . . . . . . . . 68

vi

Page 14: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Lista de Siglas

BBC British Broadcasting Corporation

BIND Berkeley Internet Name Domain

CERT Centro de Estudos, Resposta e Tratamento de Incidentes

CGI Common Gateway Interface

CIFS Common Internet File System

DDoS Distributed Denial of Service

DHCP Dynamic Host Con�guration Protocol

DLL Dynamic-link library

DNS Domain Name Service

DoD United States Department of Defense

DOS Disk Operating System

FBI Federal Bureau of Investigation

IIS Internet Information Services

IRC Internet Relay Chat

ISAPI Internet Services Application Programming Interface

LPD Line Printer Daemon

NFS Network File System

NIPC National Infrastructure Protection Center

NIS Network Information Service

RAM Random Access Memory

vii

Page 15: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

RAS Remote Access Services

RDS Remote Data Services

RPC Remote Procedure Call

SANS System Administration, Networking and Security

SMB Server Message Block

SNMP Simple Network Management Protocol

SO Sistema Operacional

TCP Transmission Control Protocol

URL Uniform Resource Locator

viii

Page 16: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Capítulo 1

Forense Computacional

1.1 Introdução

Nas últimas décadas, a utilização de computadores tornou-se parte integrante da vida

das pessoas. Transações bancárias e compras passaram a ser feitas pela Internet, informa-

ções diversas (desde simples correspondências pessoais até dados con�denciais) passaram

a ser armazenadas e transmitidas de forma eletrônica. Além disso, é crescente o número

de indivíduos que utilizam computadores pessoais por conveniência, educação e entrete-

nimento.

A conectividade oferecida pela Internet introduziu uma série de novas facilidades no

dia-a-dia das pessoas, como o correio eletrônico e a World Wide Web, permitindo o acesso

anônimo a quase todo tipo de informação ou sistema.

Não é de se espantar que toda essa revolução computacional tenha atingido também o

mundo do crime. A tecnologia dos computadores está envolvida em um número crescente

de atividades ilícitas. Além de serem utilizados como ferramentas para a consumação

de alguns tipos de delitos (como, por exemplo, invasão de sistemas, disseminação de

pornogra�a infantil e fraude), os computadores podem conter evidências relacionadas

com qualquer tipo de atividade ilícita, incluindo homicídio e estupro [Reis e Geus, 2001].

O aumento crescente de crimes relacionados com computadores requer um maior en-

tendimento de como se obter e utilizar essas evidências armazenadas em sistemas compu-

tacionais, e tal entendimento só pode ser alcançado através dos conceitos e metodologias

da forense computacional.

1.2 Origem Histórica

Nos primórdios da civilização humana, quando o homem vivia em aglomerações tri-

bais, a violência praticada por um indivíduo contra outro, do mesmo grupo social era

1

Page 17: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

encarada como um ato proscrito pelo senso comum da tribo. O indivíduo era então iden-

ti�cado e isolado. A tribo, ou um conjunto de seus membros, questionariam o criminoso

exigindo uma justi�cativa, e julgariam se o seu ato seria tolerado pelo grupo ou não

[Calazans e Calazans, 2001].

A detenção do criminoso, por essa sociedade primitiva, dependia de provas de que o

mesmo cometeu o crime. Essas provas eram baseadas em relatos de outros membros da

tribo. Mas, relatos de um único indivíduo e interesses escusos envolvidos, por exemplo,

suscitavam dúvidas quanto a veracidade do relato.

Percebeu-se então que havia a necessidade de comprovar esses relatos com evidências

físicas, que pudessem representar o ato criminoso. A incipiente estrutura �judiciária” da

tribo despertou então para a importância da prova material, da noção de corpo de delito,

e da necessidade de exame. Foi o surgimento das grandes perguntas forenses: Se alguém

foi assassinado, onde estaria seu corpo? Se o agressor in�igiu ferimentos à vítima, quais

seriam esses? Se um objeto foi furtado, por que teria sido acusado este indivíduo?

Sumérios, egípcios e chineses, grandes civilizações da Idade Antiga, evoluíram os con-

ceitos tribais que norteavam a forense primitiva. Tendo em vista os diferentes modos

de pensar e agir, cada uma dessas civilizações gerou diferentes códigos de leis escri-

tas para reger seus cidadãos. Vem da China o primeiro registro da Ciência Forense

[Calazans e Calazans, 2001].

No período compreendido entre os séculos XVI ao XVIII, surgiu a maior parte dos

métodos e instrumentos forenses. Diversos progressos cientí�cos surgiram e foram incor-

porados ao arsenal utilizado para esclarecer crimes [Calazans e Calazans, 2001].

No �nal do século XVIII, as armas mais curtas denominadas �carabinas” começaram

a ser produzidas. No século XIX, devido a esta característica, Henry Godard conseguiu

relacionar uma bala com a arma utilizada [Calazans e Calazans, 2001].

Outra grande invenção foi a fotogra�a, criada em 1826 pelo francês Joseph-Nicéphore

Niépce e desde sua invenção, vem sendo utilizada para gravar os vestígios do fato ocorrido

no próprio local, e veri�car possíveis suspeitos [Calazans e Calazans, 2001].

A Ciência Forense proporciona os princípios e técnicas que facilitam a investigação do

delito, em outras palavras, qualquer princípio ou técnica que pode ser aplicada para iden-

ti�car, recuperar, reconstruir ou analisar a evidência durante uma investigação criminal, é

parte da Ciência Forense. Ela proporciona métodos cientí�cos que possibilitarão a análise

das evidências disponíveis e cria hipóteses sobre o ocorrido para criar a evidência, além de

realizar provas para con�rmar ou contradizer essas hipóteses [Calazans e Calazans, 2001].

A Ciência Forense é de�nida como uma ciência multidisciplinar, porque utiliza-se

muitas vezes de subsídios de outras ciências para a devida análise de um possível vestígio,

pois assim como o Juiz recorre a vários elementos para formar sua convicção e aplicar

a lei da melhor forma possível, o pro�ssional forense se vale do conhecimento nos mais

2

Page 18: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

diversos ramos da ciência para melhor análise dos indícios encontrados na cena de um

crime [Reis e Geus, 2001].

No início de sua estruturação, a Ciência Forense utilizava-se de pro�ssionais de for-

mação genérica. Contudo face ao progresso, alguns crimes passaram a ser executados

com maior complexidade, pois aliados a utilização do conhecimento tecnológico, vieram

a ser executados com maior grau de so�sticação. Por consequência, passou-se a exigir a

colaboração de outras áreas da ciência, com a participação de pro�ssionais com a especi-

alização correspondente para fazer frente às necessidades de conhecimento que devem ser

aplicados em cada caso, visando realizar com mais e�cácia uma investigação policial.

Devido a esses fatores, a Informática chegou de maneira decisiva no auxílio à Ciência

Forense. O desenvolvimento tecnológico vem atuando de maneira determinante na inves-

tigação criminal. Softwares e computadores potentes podem ajudar na identi�cação de

criminosos de maneira rápida, rastrear evidências como conversas telefônicas, tornar níti-

das imagens da cena de um crime com os respectivos envolvidos. Ajudar na reconstrução

facial de vítimas desconhecidas, a �m de possibilitar o esclarecimento de crimes outrora

insolúveis, en�m, trata-se de um caminho de in�nitas possibilidades que certamente só

ajudarão ainda mais no trabalho criminalístico.

Em consequência de todo esse desenvolvimento tecnológico, acabou-se por criar uma

nova vertente, sobretudo com o advento da Internet. A rede mundial de computadores,

propiciou um ambiente que fornece uma série de facilidades aos cidadãos, tais como compra

de mercadorias sem sair de casa, transações bancárias, envio e recebimento de mensagens e

tantas outras. Esse ambiente, onde a segurança é algo frágil e onde o indivíduo é anônimo,

acabou por tornar-se alvo de mentes criminosas que logo vislumbraram o potencial para

prática de crimes e sua impunidade. Contudo, esse cenário de impunidade vem, apesar

da lentidão, sendo modi�cado pelas autoridades.

O termo Ciência Forense está relacionado ao meio policial, e até pouco tempo atrás,

não tinha nenhuma relação com o meio computacional. No entanto, o aumento do uso

do computador e da Internet, fez com que surgisse uma nova classe de crimes, cometidos

por pessoas que aprenderam a utilizar a nova ferramenta. Em sua maioria, essas pessoas

possuem conduta íntegra no mundo real, mas se bene�ciam do �anonimato” conferido pela

Internet para praticar atos ilícitos. Devido a necessidade das Agências Legais, que lidam

com esse novo tipo de crime e ajudam a justiça a condenar esse tipo de criminoso, surgiu

a Ciência Forense Computacional.

A Forense Computacional possui algumas características próprias. Sendo um campo

de pesquisa aparentemente novo, possui um grande número de possibilidades de pesquisa.

Essa pesquisa está se desenvolvendo principalmente pela necessidade das instituições legais

de atuarem no combate ao crime eletrônico. A queda de barreira oferecida pela Internet

gerou um novo tipo de crime, onde a vítima e o criminoso encontram-se em países distintos,

3

Page 19: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

o que gera a necessidade de haver troca de informações entre as polícias do mundo inteiro,

com o intuito de agilizar a solução desse tipo de crime, muito embora ainda não haja uma

metodologia devidamente estabelecida para tal [Reis e Geus, 2001].

Contudo, cabe dizer que na forense computacional, os vestígios encontrados constituem-

se de maneira direta, o que implica dizer que, no caso de um computador estar sob suspeita

de ter sido usado para a prática de delito, qualquer programa ou arquivo encontrado na

máquina, se foi utilizado com �m criminoso, irá atestar tal fato de maneira direta. Tal fato

não se veri�ca em um crime fora do ambiente computacional, onde às vezes um vestígio

pode apenas ser interpretado, como por exemplo, um resto de pele encontrado embaixo da

unha da vítima, leva a uma suposição de que antes da consumação do crime teria havido

uma luta entre criminoso e vítima.

Em consequência de tal situação, os pro�ssionais que trabalham na área computacio-

nal, como por exemplo, os analistas de sistemas, possuem além do conhecimento técnico,

também um raciocínio lógico que é necessário em uma investigação forense, pois aná-

lise pericial em um computador é algo muitas vezes de difícil execução, face ao grau de

complexidade do sistema operacional a ser examinado.

Então além, dos conhecimentos técnicos, o pro�ssional deve utilizar ferramentas ade-

quadas à análise em questão, evitando assim qualquer procedimento inadequado que in-

viabilize o vestígio a ser examinado.

A implementação de políticas de segurança oferece grande ajuda na prevenção contra

atos que possam se con�gurar como ilegais, pois a certeza de que o delito e seu autor

possam ser descobertos, sem dúvida inibem a prática de atos antes acobertados pelo

anonimato.

Na análise de uma máquina, a Forense Computacional utiliza ferramentas especí�cas,

visando, sobretudo não modi�car o sistema objeto de investigação. Por exemplo, se a

análise for em um servidor, todo cuidado é indispensável para que a busca não vá além

do que seria necessário. Assim, é imprescindível que se de�na antecipadamente uma área

de atuação, com o foco de, por exemplo, se evitar a violação da privacidade de algum

usuário.

Também é importante de�nir a metodologia a ser utilizada na análise. Por exemplo,

o uso de ferramentas que não alterem os tempos de acesso aos arquivos, para assim serem

veri�cados os eventos acontecidos na máquina, pois as evidências resultantes da análise

forense computacional podem afetar inúmeras investigações.

Concluindo, ao estudar a metodologia empregada nos primórdios da forense, pode-se

veri�car que pouca coisa mudou, desde então. Métodos foram simplesmente adaptados

aos tempos atuais. As ferramentas passaram constantemente por processos de atualização

tecnológica - mas, por exemplo, um microscópio de 1590 possui o mesmo princípio do mais

moderno microscópio.

4

Page 20: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Os métodos a serem adotados em forense computacional devem ter a mesma compe-

tência, clareza e e�ciência dos métodos consagrados de outros ramos da Forense.

1.3 O que é Forense Computacional?

A Computação Forense foi criada com o objetivo de suprir as necessidades das ins-

tituições legais no que se refere à manipulação das novas formas de evidências eletrôni-

cas. Ela é a ciência que estuda a aquisição, preservação, recuperação e análise de dados

que estão em formato eletrônico e armazenados em algum tipo de mídia computacional

[Noblett et al., 2000].

Assim, como a perícia forense tradicional tem como material de trabalho as evidências

físicas (arcada dentária, �os de cabelo etc.), a perícia forense computacional trabalha

com evidências também, porém denominadas no seu contexto de evidências digitais ou

eletrônicas. Entretanto, essas evidências requerem um tratamento especial, uma vez que

apresentam maiores di�culdades de manipulação. Pela sua própria natureza, dados são

em termos gerais, muito voláteis, fáceis de serem modi�cados e apagados, o que requer

maior cuidado na preservação de evidências [Bueno, 2007].

Para uma melhor compreensão da forense computacional é necessário o entendimento

de alguns conceitos. São considerados voláteis todos os dados não gravados em algum

tipo de mídia permanente, ou seja, os dados que são gerados em tempo de execução, que

serão perdidos se houver um desligamento da máquina envolvida. Alguns tipos de dados

voláteis: conexões de rede, estado das portas do sistema, programas em execução, dados

na memória do computador, etc [Cagnani e Santos, 2008].

São considerados não voláteis todos os dados gravados de forma permanente ou não em

algum tipo de mídia, isto é, os dados que mesmo que sejam considerados temporários pelo

sistema, estejam gravados em disco, podendo ser recuperados depois de um desligamento

da máquina onde estão armazenados. Alguns tipos de dados não voláteis são: arquivos

de log, swap, arquivo de hibernação, arquivos temporários, entre outros. Uma importante

informação que pode ser obtida analisando-se os dados não voláteis é o traçado da linha de

tempo dos arquivos presentes no sistema, ou seja, caso seja encontrada alguma evidência

importante podendo a�rmar a data e hora em que foi produzida ou alterada, tal evidência

pode ser usada na investigação em andamento [Cagnani e Santos, 2008].

Tem-se também o conceito de Cadeia de Custódia. A Cadeia de Custódia é um pro-

cesso usado para manter e documentar a história cronológica da evidência, para garantir

a idoneidade e o rastreamento das evidências utilizadas em processos judiciais. Na prática

é representada por um formulário onde são registrados todos os dados de especi�cação

de uma evidência e todas as movimentações que possam ocorrer com ela, registrando os

nomes e motivos que �zeram qualquer pessoa envolvida no processo a tomar contato com

5

Page 21: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

a prova. A Figura 1.1 abaixo mostra um exemplo de formulário de Cadeia de Custódia

[Tavares, 2007].

Figura 1.1: Exemplo de Formulário de Cadeia de Custódia [Tavares, 2007]

Além de ser capaz de extrair e manusear evidências digitais, a forense emprega mé-

todos de análise, lógica e o que for necessário à interpretação dos vestígios coletados. É

empregada uma variedade de ferramentas para auxiliar o trabalho de perícia.

O objetivo principal da Forense Computacional é aplicar métodos cientí�cos e siste-

máticos, buscando extrair e analisar tipos de dados dos diferentes dispositivos, para que

essas informações passem a ser caracterizadas como evidências e, posteriormente, como

provas legais de fato [Pereira et al., 2007].

Para serem consideradas provas válidas é muito importante que o perito realize o

processo de investigação de maneira cuidadosa e sistemática, preservando a integridade

das evidências e gerando documentação detalhada.

Um diferencial da forense computacional em relação às outras disciplinas forenses é a

necessidade, por parte do corpo investigativo, de ter conhecimentos profundos de hardware

e software de computador. Isso evita invalidar acidentalmente, ou até mesmo destruir

evidências digitais, buscando protegê-las para análises futuras. Desse modo, a forense

computacional deve procurar aplicar técnicas de praticamente qualquer ramo da Ciência

da Computação (Redes de Computadores, Sistemas Operacionais, Segurança e Auditoria

de Sistemas etc.), para toda diversidade de investigação cientí�ca computacional. Isso

6

Page 22: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

inclui o desenvolvimento de novos conhecimentos e tecnologias quando necessário, o que

pode ocorrer em casos complexos e desa�adores [Bueno, 2007].

O pro�ssional da Computação Forense executa os serviços de investigação, rastre-

amento, recuperação de dados, laudos periciais e consultoria, através do conhecimento

especializado e a utilização de técnicas e métodos que levem ao diagnóstico e o resultado,

sempre submetido ao princípio da con�dencialidade. Utiliza de métodos cientí�cos para

preservar, coletar, restaurar, identi�car, documentar e apresentar as evidências digitais -

capazes de determinar, por exemplo, se um sistema computacional sofreu uma violação.

1.4 Perícia Computacional Forense

Uma perícia em um computador suspeito de invasão ou mesmo um computador apre-

endido em alguma �batida policial” envolve uma série de conhecimentos técnicos e a

utilização de ferramentas adequadas para análise. Existe a necessidade de se conhecer

minúcias do sistema operacional para que se tenha uma noção global de todos os efeitos

das ações do perito. Quanto à necessidade de se utilizar ferramentas especí�cas para

análise, esta decorre da obrigatoriedade de não se perturbar o sistema que está sendo

analisado, perturbações essas que podem ser traduzidas como mudanças nos tempos de

acesso aos arquivos (MACtimes), por exemplo, anulando assim uma das mais poderosas

formas de se reconstituir o que aconteceu na máquina em um passado próximo. Ferramen-

tas convencionais não têm a preocupação de manter a integridade dos tempos de acesso

[Oliveira, 2002].

Os MACtimes são partes dos metadados do sistema de arquivos onde são registrados

certos eventos, ocorridos mais recentemente, relacionados a um arquivo. Os eventos são

geralmente descritos como �modi�cation” (a data em que o arquivo foi modi�cado), �ac-

cess”(a data em que o arquivo foi lido) e �metadata change” (a data em que as permissões

do arquivo foram alteradas). São estes termos �mtime”, �atime” e �ctime” que derivam

para o acrônimo MAC [Tanenbaum, 2003].

Para os �ns de perícia forense computacional, ou seja, para o planejamento da estraté-

gia que será utilizada na investigação das evidências, os dados serão coletados em função

da sua volatilidade. O tipo de dado, envolvido no incidente que está sendo investigado,

também é importante na determinação do tipo de análise que será utilizada na perícia,

que pode ser do tipo Live Analysis ou Dead Analysis [Cagnani e Santos, 2008].

A Análise de Sistemas em Operação (Live Analysis) é a análise executada quando o

sistema não pode ser desligado, ou seja, é feita em tempo real, na maioria das vezes no

próprio local onde se encontra a máquina suspeita, normalmente um servidor com algum

tipo de suspeita de invasão, que por ser responsável pelo fornecimento de serviços a um

elevado número de usuários, não pode ser parado, nem mesmo para a perícia. Embora

7

Page 23: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

sejam mais raros os casos desse tipo, são também os que exigem um maior preparo e

cuidado por parte da equipe responsável pela perícia, uma vez que os dados precisam ser

analisados em tempo real, sendo muito importante um elevado conhecimento dos sistemas

em operação e suas características, bem como a disponibilidade de um kit de ferramentas

computacionais adequadas e especí�cas para esse tipo de serviço, já que qualquer equívoco

poderá ocasionar a perda da prova que está sendo procurada [Cagnani e Santos, 2008].

Essa modalidade de análise apresenta inerentes di�culdades, como a di�culdade em

não alterar o estado do sistema durante a coleta de informações e a alteração das próprias

evidências, mas apesar das di�culdades a Live Analysis é o método requerido em algumas

situações de perícia digital. Isto porque o desligamento do sistema nativo eliminaria

grande parte das evidências voláteis [Bueno, 2007].

Há muitas informações voláteis que podem ser capturadas em uma Live Analysis :

tráfego de rede, arquivos de log, estado de processos, entre outros [Bueno, 2007].

Análise de Sistemas fora de Operação (Dead Analysis), ocorre quando o processo de

análise pode ser executado no melhor ambiente possível, ou seja, a máquina suspeita pode

ser desligada e levada a um laboratório forense, e submetida às ferramentas adequadas

para uma completa e detalhada análise [Cagnani e Santos, 2008].

Uma Dead Analysis geralmente é referida por alguns autores na literatura forense por

análise forense tradicional, visto que era o processo mais empregado para realizar uma

investigação computacional em uma época onde a Internet não era popular como hoje

em dia. No entanto, atualmente a coleta de evidências com o sistema vítima ligado (Live

Analysis) passou a ser bastante empregada, levando esse termo ao desuso [Bueno, 2007].

O simples ato de ligar ou desligar o computador pode alterar ou destruir evidências.

Por esse motivo, é importante que a investigação seja conduzida de maneira metódica,

bem organizada e em sintonia com a tecnologia envolvida [Cagnani e Santos, 2008].

Para uma perícia ser bem sucedida é preciso adotar boas práticas forenses antes da

coleta dos dados, como as que se seguem [Pereira et al., 2007]:

• Certi�car-se de que todas as mídias que serão utilizadas estão em perfeitas condições

de uso ou usar mídias novas a cada investigação;

• Certi�car-se de que todas as ferramentas (softwares) que serão utilizadas estão de-

vidamente licenciadas e prontas para utilização;

• Veri�car se todos os equipamentos e materiais necessários (por exemplo, a estação

forense, as mídias para coleta dos dados, etc.) estão à disposição;

• Quando chegar ao local da investigação, o perito deve providenciar para que nada

seja tocado sem o seu consentimento, com o objetivo de proteger e coletar todos os

tipos de evidências;

8

Page 24: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

• Os investigadores devem �lmar ou fotografar o ambiente e registrar detalhes sobre

os equipamentos como: marca, modelo, números de série, componentes internos,

periféricos, etc;

• Manter a cadeia de custódia.

O objetivo da perícia computacional forense ou análise forense é conduzir uma investi-

gação estruturada com uma metodologia que permita determinar o que aconteceu, quem

foi responsável e, a investigação deve ser executada de uma forma que os resultados sejam

úteis em um processo criminal.

Segundo [Cansian, 2001] a análise e a perícia de computadores que tenham passado

por algum tipo de violação ou ataque, torna-se uma matéria importante no conjunto

de ações de um processo de segurança. A perícia tem diversos aspectos relevantes, dois

deles se destacam: primeiramente, ela é importante porque permite que se entenda o

que aconteceu, de forma a corrigir falhas que tenham sido cometidas no processo. Em

segundo lugar, ao olharmos para o passado, interpretando o que aconteceu, pode ser

possível coletar evidências necessárias a identi�car o atacante, de tal forma que possam

ser adotadas medidas legais ou jurídicas pertinentes.

1.5 Processo Investigativo

O processo investigativo é a busca por informações relevantes a uma investigação

de crime eletrônico. Nenhum crime é cometido sem deixar vestígios, ou seja, quando um

criminoso estabelece contato com o sistema invadido, seja copiando ou adulterando dados,

as ações executadas por ele deixam rastros no sistema da vítima. Esses rastros são as

denominadas evidências digitais ou eletrônicas.

As evidências digitais tem um papel central na forense computacional, pois a elas

são referidos processos, padrões e ferramentas em uma perícia. Há diversos processos

que constituem o universo de tarefas que podem ser executados em relação às evidências

digitais, como: preservação, identi�cação, aquisição, documentação, análise, correlação,

apresentação etc [Bueno, 2007].

As evidências digitais, após serem adequadamente coletadas e analisadas, podem ser

apresentadas em favor do esclarecimento da investigação em curso de um crime. Elas

também são a peça chave na criação de possíveis cenários viáveis que expliquem logica-

mente como a seqüência de fatos do crime teria ocorrido. Em forense computacional é

considerado como evidência eletrônica, e-mail, históricos de internet, planilhas eletrônicas,

textos eletrônicos, imagens entre outros [Pimenta, 2007].

Assim, uma perícia computacional forense é sempre executada em quatro fases bem

9

Page 25: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

distintas, onde diferentes tipos de informações devem ser obtidos em cada etapa, e diferen-

tes ações devem ser executadas pelos peritos em cada uma. São elas [Cagnani e Santos, 2008]:

• Identi�cação das evidências;

• Preservação das evidências;

• Análise das evidências;

• Apresentação das evidências.

1.5.1 Identi�cação das evidências

Nessa primeira etapa dos trabalhos periciais se faz necessário o levantamento de todos

os dados relativos à investigação da qual as evidências fazem parte, bem como do máximo

detalhamento possível das características de cada evidência apresentada para a perícia.

Alguns dados úteis nessa etapa são: nomes de pessoas e empresas envolvidas, datas, locais

e circunstâncias gerais dos fatos que originaram a investigação, bem como o detalhamento

das características de cada item colhido como possível prova, computadores, hard disks,

CDs e DVDs, Portas de comunicação como: USB, Firewire, Flash card e PCMCIA,

máquina fotográ�ca, relógio com comunicação via USB, etc. A Figura 1.2 mostra alguns

exemplos [Cagnani e Santos, 2008]:

Figura 1.2: Exemplos de possíveis fontes de dados [Tavares, 2007]

É necessário que o perito visualize como pretende iniciar os trabalhos e que tipo de

dados podem ser relevantes para essa investigação. Outra informação importante a ser

conhecida pela equipe é se os dados levantados na perícia servirão para a acusação ou

defesa do suspeito ou vítima [Cagnani e Santos, 2008].

Segundo [Freitas, 2006], discos rígidos em computadores podem trazer imensas quan-

tidades de informações após os processos de recuperação de dados.

As evidências de um crime digital estão diretamente relacionadas com o tipo de crime.

No caso de acesso não autorizado a arquivos, o �log de eventos” e �pastas compartilhadas”

devem ser analisados. No caso de pornogra�a, o perito deverá procurar por imagens

10

Page 26: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

no computador, históricos de sites visitados, arquivos temporários, arquivos excluídos e

e-mails enviados e recebidos etc [Pimenta, 2007].

As evidências devem ser procuradas em todos os dispositivos de armazenamento en-

contrados e dentro do que foi encontrado deve-se separar para análise o que é relevante

ao caso.

1.5.2 Preservação das evidências

Essa etapa inicia com a coleta dos dados necessários à investigação, obedecendo alguns

critérios necessários para evitar a perda de dados importantes e para não alterar as provas.

O cuidado com a preservação da evidência é essencial para que não haja dúvida sobre

a sua veracidade. Em primeiro lugar o perito executa a coleta dos dados voláteis; a

seguir dá prioridade àqueles que exigirem um maior esforço por parte da equipe, ou seja,

coleta os dados que exigirão maior tempo, maior dedicação e o uso de ferramentas mais

especí�cas; depois é feita uma avaliação do tipo de dados que pode ser mais relevante

para a investigação e feita a sua coleta [Cagnani e Santos, 2008].

Todas as evidências encontradas precisam obrigatoriamente ser legítimas, para terem

sua posterior validade jurídica. Sendo assim, todo o processo relativo à obtenção e co-

leta das mesmas, deve seguir normas internacionais. Parte-se sempre do princípio de que

a outra parte envolvida, no caso, poderá e deverá pedir a contra-prova sobre os mes-

mos elementos físicos, então o pro�ssionalismo destas tarefas será crítico na seqüência do

processo, lembrando sempre que, caso o juiz não valide a evidência, ela não poderá ser

re-apresentada [Freitas, 2006].

Alguns passos devem ser seguidos para que não ocorra um comprometimento da evi-

dência, evitando a sua perda ou destruição durante o transporte ou o manuseio [Freitas, 2006]:

• Trabalhar sempre que possível em imagens do sistema, este procedimento evita dani-

�car ou perder a evidência, além de possibilitar a reprodução da análise novamente;

• Caso seja analisado um computador ainda ligado a evidência deve ser gravada em

algum tipo de mídia e posteriormente protegida contra gravação;

• Todos os dispositivos do computador devem ser identi�cados e armazenados em

sacos com etiquetas para sua montagem em laboratório;

• As mídias deverão ser armazenadas em sacos antiestática para evitar perda dos

dados;

• Tudo deve ser lacrado e identi�cado;

• No transporte das evidências deve se tomar o cuidado com líquidos, impactos, su-

jeira, calor, eletricidade e estática; e

11

Page 27: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

• Para evitar a adulteração às evidências deverão ser trancadas para serem analisadas

no momento certo. As alterações realizadas na evidência deverão ser documentadas

e justi�cadas.

1.5.3 Análise das evidências

Nessa fase são utilizados todos os meios necessários ao levantamento dos dados re-

levantes à investigação. É preciso saber exatamente o que se deve buscar nos dados

coletados na fase anterior, a �m de poder criar a �prova” que está sendo procurada, ou

seja, criar a relação que possa existir entre os dados encontrados e a vítima, ou suspeito

[Cagnani e Santos, 2008].

O pro�ssional nesta fase deve ser cuidadoso ao encontrar a evidência. A chamada

prova deve ser inquestionável. Todas as evidências digitais encontradas precisam ser

obrigatoriamente legítimas para ter validade jurídica e precisam estar em conformidade

com a lei, além de serem autênticas, exatas e completas [Freitas, 2006].

É importante manter o foco ao solicitado, pois muitas vezes, durante a análise, depara-

se com novas fontes de dados que podem levar a outras vertentes, fazendo com que esta

mudança de foco, prejudique a perícia podendo até anular todo o trabalho pericial, devido

ao abuso na coleta de provas. O pro�ssionalismo é essencial quando se trata da obtenção

da chamada �prova legítima”, a qual consiste numa demonstração efetiva e inquestionável

dos rastros e elementos da comunicação entre as partes envolvidas e seu teor, além das

datas, trilhas, e histórico dos segmentos de disco utilizados [Rodrigues, 2004].

1.5.4 Apresentação das evidências

A partir das evidências encontradas o perito produz um relatório denominado Laudo

Pericial. É um relatório técnico sobre a investigação, onde são apresentados fatos, proce-

dimentos, análises e resultados. Para não deixar dúvidas sobre a veracidade o laudo deve

ser claro, conciso e sem ambigüidade. O laudo precisa estar descrito com a�rmações e

conclusões que possam ser provadas tecnicamente [Freitas, 2006].

É nessa fase que as informações e evidências coletadas são apresentadas para a auto-

ridade que determinou a sua execução, podendo assumir o formato jurídico ou não, uma

vez que nem toda perícia forense tem objetivo criminal [Cagnani e Santos, 2008].

A característica mais marcante dessa etapa deve ser a imparcialidade do laudo pericial,

o que na justiça se traduz em con�abilidade, habilidade e isenção do perito, elevando o

peso do laudo gerado pela perícia na determinação da culpa ou inocência do envolvido no

processo, conforme seja o caso [Cagnani e Santos, 2008].

Dessa forma, quando se tem a certeza material das evidências, os advogados de cada

uma das partes ou mesmo o juiz do caso atuam em conjunto para a apresentação das

12

Page 28: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

mesmas [Freitas, 2006].

Informações importantes nessa etapa são:

• Os métodos utilizados;

• Os procedimentos de identi�cação;

• A preservação;

• A análise;

• Os softwares utilizados; e

• Os hardwares utilizados.

Sendo assim todo o processo relativo à obtenção, coleta e análise das evidências devem

ser documentadas para ter validade jurídica e estar conforme a lei [Freitas, 2006].

Comparando a Ciência Forense dos séculos XVI ao XVIII com os dias de hoje, percebe-

se que muita coisa mudou. Os métodos e instrumentos forenses estão mais e�cientes e

adequados a nova realidade de crimes computacionais.

No capitulo 2 será exposto todo esse processo de investigação e busca por evidências

em sistemas operacionais, incluindo também um estudo das principais vulnerabilidades

de segurança encontradas nos sistemas Windows e Linux.

13

Page 29: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Capítulo 2

Investigação em Sistemas Operacionais

e suas Vulnerabilidades

2.1 A investigação em si

A busca por indícios em um sistema operacional constitui-se de uma varredura minuci-

osa nas informações que nele residam, sejam dados em arquivos ou em memória, apagados

ou não, cifrados ou possivelmente dani�cados. Tais indícios variam de acordo com o tipo

de infração a que estão relacionados, determinando diferentes abordagens, no que diz

respeito ao objetivo da busca, para o processo de análise forense [Reis e Geus, 2001].

Muitas vezes, o objetivo do exame forense é a busca de indícios que por si só caracteri-

zam a infração, ou relacionam um suspeito ao ato ilícito (como por exemplo, arquivos de

imagens de pornogra�a infantil, mensagens eletrônicas com ameaças ou chantagens, ar-

quivos com informações incriminatórias ou dados roubados). Outras vezes, os indícios são

como �peças de um quebra-cabeça” (registros em arquivos de log e atributos de arquivos,

por exemplo), precisando ser correlacionados para se ter uma conclusão acerca da infra-

ção. Em alguns casos, ainda, a perícia objetiva responder alguns quesitos preestabelecidos,

como, por exemplo, �descrever o conteúdo das mídias enviadas a exame”, �determinar se

o conteúdo de um determinado arquivo sofreu alterações”, ou ainda, um estudo das vul-

nerabilidades de segurança de determinados sistemas operacionais. [Reis e Geus, 2001].

Quando se conduz uma investigação do comportamento de um programa, o investiga-

dor precisa coletar informação acerca do estado corrente do sistema onde o mesmo está

sendo executado. Alguns métodos devem ser usados para coletar este tipo de informação

e então salvá-la em uma outra máquina forense para posterior análise, ou até mesmo

direcionar a saída das ferramentas de coleta de informações para a máquina forense a�m

de não escrever ou alterar o estado da máquina utilizada [Atilio et al., 2003].

Essas informações coletadas, que são denominadas de evidências digitais, são capazes

14

Page 30: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

de determinar que um incidente ocorreu ou prover alguma ligação entre o incidente e as

vítimas.

Em uma análise forense, usa-se o conceito de ordem de volatilidade, como foi descrito

no capítulo anterior, o qual determina que o tempo de vida de uma evidência digital

varia de acordo com o local onde ela está armazenada. Quanto maior a volatilidade de

uma informação, mais difícil se torna sua extração e menos tempo há para capturá-la. O

simples ato de observar informações altamente voláteis pode alterá-las [Atilio et al., 2003].

Muitas são as fontes de informação para uma análise forense em um sistema opera-

cional e elas são coletadas de acordo com sua ordem de volatilidade, primeiramente as

informações voláteis e em seguida as não voláteis. São elas [Freitas, 2006]:

• Sistema de arquivos;

• Arquivos de log ;

• Espaços não utilizados no dispositivo de armazenamento;

• Arquivos temporários (temp);

• Área de swap;

• Setor de boot ;

• Memória;

• Periféricos;

• Processos.

A seguir será tratado sobre cada uma das fontes de informação citadas anteriormente.

2.1.1 Sistema de arquivos

O sistema de arquivos representa a maior fonte de informação para o exame forense, e

apresenta informações voláteis e não voláteis. Um sistema de arquivos é um conjunto de

estruturas lógicas e de rotinas, que permitem ao sistema operacional controlar o acesso

ao disco rígido [Freitas, 2006].

Num sistema de arquivos, os arquivos de dados e executáveis são analisados para

determinar seu conteúdo e funcionalidade no sistema operacional. Os indícios podem

ser encontrados através da busca por palavras-chave (como por exemplo, datas, nomes,

números de telefone e vocábulos especí�cos da linguagem criminal), imagens, dados espe-

cí�cos (registros em arquivos de log e informações roubadas, por exemplo) ou programas

utilizados para práticas ilícitas (como cavalos de tróia) [Reis e Geus, 2001].

15

Page 31: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Além disso, mudanças inesperadas em diretórios e arquivos, especialmente aqueles

cujo acesso é normalmente restrito, podem caracterizar-se como indícios de uma infração.

Tais mudanças podem incluir modi�cação, criação ou �deleção” de diretórios e arquivos

(identi�cadas por alterações nos MACtimes dos arquivos ou por meio de assinaturas

digitais). O que torna tais mudanças inesperadas pode depender de quem as concebeu,

onde, quando, e como foram feitas [Reis e Geus, 2001].

A Figura 2.1 abaixo representa um arquivo com seus respectivos MAC times.

Figura 2.1: MAC times [Tavares, 2007]

2.1.2 Arquivos de log

Os arquivos de log representam um papel importante na análise do sistema de ar-

quivos, pois permitem a reconstituição de fatos que ocorreram no sistema operacional.

São registros de atividades no computador, sendo geralmente gravados em arquivos no

formato texto, de forma abreviada e algumas são até codi�cadas. Os registros de ocorrên-

cia podem facilmente ser interpretados por quem conhece e lida com o sistema, podendo

ser acessados diretamente, convertidos para outros formatos, ou utilizar de ferramentas

amigáveis e técnicas que variam de acordo com o conhecimento do perito. [ZAGO, 2007].

Estes arquivos contém a data, hora e a mensagem emitida pelo programa (violações

do sistema, mensagens de erro, alerta e outros eventos) entre outros campos. En�m,

muitos detalhes úteis ao administrador tanto para acompanhar o funcionamento do sis-

16

Page 32: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

tema, comportamento dos programas ou ajudar na solução e prevenção de problemas

[ZAGO, 2007].

Os arquivos de log variam de acordo com o sistema operacional, os aplicativos e ser-

viços executando no sistema, e as con�gurações determinadas pelo administrador. Os

arquivos de log contém dados voláteis e não voláteis. Eles podem registrar, entre outras

informações, as atividades dos usuários, dos processos e do sistema, as conexões de rede,

as atividades da rede, e informações especí�cas dos aplicativos e serviços. Processos e

conexões de rede são consideradas informações voláteis. Desse modo, os arquivos de log

podem conter registros de atividades usuais e não usuais que ocorreram no sistema ou

rede, caracterizando uma possível infração [Reis e Geus, 2001].

Um arquivo de log serve para a indicação de ações em um determinado sistema ope-

racional ou de alguma aplicação. Um exemplo de arquivo de log é o arquivo que con-

tém o histórico dos registros das páginas visitadas por um usuário no acesso a web.

[Reis e Geus, 2001].

2.1.3 Espaços não utilizados no dispositivo de armazenamento

Os espaços podem ser caracterizados por espaços não alocados dentro do sistema de

arquivos, espaços alocados a arquivos mas não totalmente utilizados, áreas do dispositivo

de armazenamento que não constituem uma partição de disco ou que não contém um sis-

tema de arquivos, e podem ser caracterizados também por arquivos e diretórios excluídos

[Freitas, 2006].

Esses espaços no dispositivo de armazenamento não utilizados pelo sistema de arquivos

podem conter indícios de algum ato ilícito que o usuário tentou apagar e devem ser

investigados. A �deleção” de arquivos e diretórios não apaga os dados do dispositivo de

armazenamento, apenas disponibiliza o espaço ocupado para ser sobrescrito por novos

arquivos [Freitas, 2006].

2.1.4 Arquivos temporários (temp)

Arquivos temporários são dados não voláteis. Alguns programas de processamento

de texto e de banco de dados criam arquivos temporários durante sua execução, que são

normalmente apagados automaticamente ao �nal da sessão de trabalho. Tais arquivos

podem conter indícios de atos ilícitos e deverão ser investigados [Reis e Geus, 2001].

2.1.5 Área de swap

A área de swap é utilizada pelo gerenciador de memória do sistema operacional como

uma grande área de armazenamento temporário de arquivos, permitindo que arquivos se-

17

Page 33: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

jam momentaneamente descarregados da memória principal, liberando espaço para a exe-

cução de outros. Os arquivos de swap são considerados dados não voláteis [Freitas, 2006].

A área de swap pode conter tanto um arquivo quanto uma partição inteira do disco,

podendo conter fragmentos de dados ou até mesmo um arquivo texto completo. Logo,

esta área poderá conter alguma prova de algum ato ilícito e deve ser também investigada

[Reis e Geus, 2001].

2.1.6 Setor de boot

O setor de boot de um computador contém informações relativas aos programas que são

carregados quando o computador é inicializado. Se tais informações forem modi�cadas, é

possível carregar qualquer programa durante a inicialização do computador [Freitas, 2006].

Exemplo: inserção de uma instrução no boot que irá inicializar algum tipo de ocorrência

maliciosa no sistema operacional. Logo é importante também para o investigador a análise

do setor de boot do computador periciado.

2.1.7 Memória

A memória principal contém todo tipo de informação volátil, como, por exemplo,

informações dos processos que estão em execução, dados que estão sendo manipulados e

muitas vezes ainda não foram salvos no disco e informações do sistema operacional. Tais

informações podem ser acessadas por meio de dumps da memória ou pela geração de core

�les (arquivos com dados e informações da memória utilizada pelos processos). Exemplo:

bu�er de impressora, área de transferência de arquivos [Freitas, 2006].

2.1.8 Periféricos

Na concepção de [Freitas, 2006], os Periféricos são quase todos os dispositivos, implan-

tados ou não, em um computador, que obtém memória, sendo esta temporária ou não.

Exemplo: impressoras, pendrives, scanners, etc.

Muitos dispositivos como modems, pagers, aparelhos de fax e impressoras, contém

memórias que podem ser acessadas e salvas. Além disso, dispositivos não autorizados

podem ter sido implantados no computador, possibilitando a execução da infração.

2.1.9 Processos

Cada processo executa em um ambiente com privilégios especí�cos que determinam

quais recursos do sistema, programas e arquivos de dados podem ser acessados, e de que

modo. O comportamento de um processo é representado pelas operações que ele executa,

18

Page 34: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

pela maneira como tais operações são realizadas, e pelos recursos do sistema que o processo

utiliza. Os processos são considerados dados voláteis.

Um invasor pode alterar a execução de um programa ou serviço, causando sua falên-

cia, ou fazendo com que ele opere de maneira inesperada ao administrador ou usuário,

acessando informações não autorizadas ou consumindo recursos excessivos, por exemplo

[Reis e Geus, 2001].

2.2 Segurança em Sistemas Operacionais

A segurança tem se tornado uma preocupação constante para todos os usuários de

computador, ainda mais com o crescente número de computadores ligados à internet.

Quanto mais usuários despreparados na rede mais fácil é o trabalho de vírus, spywares,

adwares e hackers em geral.

Por conta disso é muito importante, para não dizer essencial, manter-se atualizado

e protegido contra todo o tipo de invasão e ataque provenientes da rede mundial de

computadores.

Estatisticamente, ao conectar um computador na internet sem nenhum tipo de prote-

ção, levam menos de oito segundos para que este seja invadido. A informação é de uma

pesquisa feita pela BBC (British Broadcasting Corporation) [CERT, 2006].

Além disso todos os hackers estão em constante aprimoramento, assim como suas

ferramentas de invasão, portanto, além de se proteger de todas as frentes de possíveis

ataques , ainda é necessário manter-se muito atualizado para não ser surpreendido por um

programa malicioso espionando suas ações no computador e roubando dados importantes.

Dizemos que um sistema é seguro se seus recursos forem usados e acessados conforme

o pretendido, sob todas as circunstâncias [Silberschatz et al., 2001].

As informações armazenadas no sistema operacional ( dados e código), precisam ser

protegidas contra acesso não-autorizado, destruição ou alteração maliciosa, e introdução

acidental de inconsistências.

Segurança em Sistemas Operacionais exige não apenas um sistema de proteção interno

adequado, mas também uma consideração do ambiente externo dentro do qual o sistema

opera. A proteção interna não é útil se a máquina for exposta a um pessoal não-autorizado

ou se os arquivos puderem ser removidos do computador em �tas e discos e levados para

um sistema desprotegido [Silberschatz et al., 2001].

Assim, um sistema computacional é dito seguro se este atende a três requisitos básicos

relacionados aos recursos que o compõem: con�dencialidade, integridade e disponibilidade

[CERT, 2006].

• Con�dencialidade: a informação só está disponível para aqueles devidamente auto-

19

Page 35: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

rizados.

• Integridade: a informação não é destruída ou corrompida e o sistema tem um de-

sempenho correto.

• Disponibilidade: os serviços/recursos do sistema estão disponíveis sempre que forem

necessários.

Computadores domésticos são utilizados para realizar inúmeras tarefas, tais como:

transações �nanceiras, sejam elas bancárias ou mesmo compra de produtos e serviços; co-

municação, por exemplo, através de e-mails; armazenamento de dados, sejam eles pessoais

ou comerciais, etc.

É importante se preocupar com a segurança do computador, pois, provavelmente,

ninguém gostaria que:

• Suas senhas e números de cartões de crédito fossem furtados e utilizados por tercei-

ros;

• Sua conta de acesso à Internet fosse utilizada por alguém não autorizado;

• Seus dados pessoais, ou até mesmo comerciais, fossem alterados, destruídos ou vi-

sualizados por terceiros;

• Seu computador deixasse de funcionar, por ter sido comprometido e arquivos essen-

ciais do sistema terem sido apagados, etc.

Existem medidas de segurança, mas nem sempre elas são adotadas. Assim, o atacante

aproveita desse descuido dos administradores de sistemas para explorar falhas conhecidas

em um Sistema Operacional.

2.3 Vulnerabilidades de segurança que afetam todos os

Sistemas

Vulnerabilidade é de�nida como uma falha no projeto, implementação ou con�guração

de um software ou sistema operacional que, quando explorada por um atacante, resulta

na violação da segurança de um computador [CERT, 2006].

Existem casos onde um software ou sistema operacional instalado em um computador

pode conter uma vulnerabilidade que permite sua exploração remota, ou seja, através da

rede. Portanto, um atacante vindo da Internet pode explorar tal vulnerabilidade, obtendo

acesso não autorizado ao computador vulnerável.

20

Page 36: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

A melhor forma de evitar que o sistema operacional e os softwares instalados em um

computador possuam vulnerabilidades é mantê-los sempre atualizados. Fabricantes em

muitos casos não disponibilizam novas versões de seus softwares quando é descoberta

alguma vulnerabilidade, mas sim correções especí�cas patches. Estes patches, em alguns

casos também chamados de hot �xes ou service packs, têm por �nalidade corrigir os

problemas de segurança referentes às vulnerabilidades descobertas [CERT, 2006].

Portanto, é extremamente importante além de manter o sistema operacional e os

softwares sempre atualizados, instalar os patches sempre que forem disponibilizados.

A maioria dos atacantes são oportunistas, eles exploram falhas conhecidas utilizando

ferramentas bem difundidas e partem do princípio que as empresas não corrigem seus

sistemas e passam a buscar sistemas vulneráveis na internet. Os administradores normal-

mente não corrigem falhas, pois não sabem que determinadas falhas são perigosas e não

têm tempo para corrigir todas as falhas divulgadas [SANS, 2002].

As vulnerabilidades mais críticas dos Sistemas Operacionais segundo o SANS (Sys-

tem Administration, Networking and Security) e o NIPC/FBI (National Infrastructure

Protection Center, FBI) são as seguintes [SANS, 2002]:

• Instalações default de sistemas operacionais e aplicativos;

• Contas sem senhas ou com senhas fracas;

• Backups incompletos ou inexistentes;

• Grande número de portas abertas;

• Ausência de �ltro de pacotes de entrada e saída que garantam o uso de endereços

válidos;

• Sistema de logs inexistente ou incompleto;

• Programas CGI vulneráveis.

2.3.1 Instalações default de sistemas operacionais e aplicativos

A maioria dos softwares, incluindo sistemas operacionais e aplicativos, vem com scripts

ou programas que têm por objetivo instalar os sistemas tão rapidamente quanto possível,

com a máxima funcionalidade e com o mínimo de esforço por parte do administrador.

Para atingir este objetivo, os programas normalmente instalam mais componentes do que

a maioria dos usuários necessita. Esta ação, embora seja conveniente para o usuário,

origina a existência de muitas das mais críticas vulnerabilidades de segurança, pois os

usuários não mantêm, nem corrigem componentes de software não usados. Além disso,

muitos usuários desconhecem o que realmente é instalado, deixando programas perigosos

21

Page 37: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

no sistema, simplesmente porque eles não sabem que estão lá. Estes serviços vulneráveis

fornecem meios para os atacantes invadirem seus sistemas [SANS, 2002].

No que diz respeito aos sistemas operacionais, as instalações default comumente in-

cluem serviços adicionais, abrindo conseqüentemente as portas associadas a eles. É justa-

mente por estas portas que os atacantes costumam invadir. Quanto menos portas abertas,

menor a probabilidade de o sistema ser invadido.

2.3.2 Contas sem senhas ou com senhas fracas

A maioria dos sistemas é con�gurada para usar senhas como a primeira, e única, linha

de defesa. A identidade do usuário (User ID) é razoavelmente fácil de obter, e a maioria das

companhias oferece acesso dial-up que comumente dribla o �rewall. Consequentemente,

se um atacante puder determinar um nome e uma senha de cliente, poderá também ter

acesso à rede. Senhas fáceis de adivinhar e senhas default constituem um problema grave,

pior ainda são as contas sem senha. Na prática, todas essas contas (com senhas fracas,

senhas default, ou sem senhas) devem ser removidas do sistema [SANS, 2002].

Adicionalmente, muitos sistemas têm contas de usuário que fazem parte da instalação

padrão, as quais geralmente mantêm a mesma senha em todas as instalações do software.

Os atacantes procuram geralmente por estes tipos de contas, amplamente conhecidas pela

comunidade `blackhat '. Conseqüentemente, é preciso que estas contas sejam identi�cadas

e removidas do sistema.

Muitas organizações adicionam programas de controle de senha, mecanismos que ga-

rantem que as senhas sejam mudadas regularmente, e que senhas antigas não sejam reu-

tilizadas. Se a expiração de senhas for implementada, tais programas certi�cam que os

usuários sejam alertados a trocar a sua senha antes dela expirar. Diante de uma mensagem

do tipo: �sua senha expirou”, ela deve ser mudada.

A maioria dos usuários tende a escolher uma senha fraca, então é muito importante

a conscientização dos usuários para entender como e por que escolher senhas fortes. A

recomendação mais comum dada durante o processo de escolha de senhas é escolher uma

frase ou parte de uma canção que inclua um número, e construir a senha da primeira ou

segunda letra de cada palavra que compõe a frase, além de dígitos de quaisquer números.

Adicionando pontuação torna a senha ainda mais difícil de ser quebrada [SANS, 2002].

Uma outra maneira de se proteger contra senhas fracas ou mesmo contas sem senhas, é

utilizar uma forma alternativa de autenticação de usuários, tal como sistemas de geração

de senhas ou biometria. Estes programas garantem que as senhas sejam de comprimento

e composição, tal que sejam difíceis de serem quebradas ou descobertas.

22

Page 38: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

2.3.3 Backups incompletos ou inexistentes

Quando um incidente ocorrer (e ocorrerá em quase todas organizações), a recuperação

do incidente requer backups atualizados e métodos de recuperação dos dados previamente

testados. Algumas organizações fazem backups diários, mas nunca veri�cam se eles estão

realmente funcionando. Outras criam políticas e procedimentos de backup, mas não de

restauração. Freqüentemente, tais erros são descobertos somente depois que um hacker

invade os sistemas e os dados são destruídos, ou arruinados de alguma outra maneira.

Um segundo problema que envolve backups é a falta de proteção física das mídias. Os

backups contêm a mesma informação sensível que reside no servidor, portanto devem ser

protegidos da mesma maneira.

No mínimo, os backups devem ser feitos diariamente. Na maioria das organizações, o

requisito mínimo é que sejam executados backups completos semanalmente e backups

incrementais diariamente. Ao menos uma vez por mês, a mídia deve ser veri�cada

restaurando-se os dados em um servidor de teste para comprovar se os mesmos estão

sendo corretamente restaurados. Algumas companhias executam backups completos uma

ou várias vezes por dia.

No que diz respeito a backups, a mais recente solução consiste em ter uma rede in-

teiramente redundante que implemente tolerância a falhas- solução usada em sistemas

de tempo real críticos (�nanceiros e de comércio eletrônico), sistemas que controlam in-

fraestruturas críticas, e alguns sistemas do Departamento de Defesa dos EUA (DoD)

[SANS, 2002].

2.3.4 Grande número de portas abertas

Ambos, tanto os usuários legítimos quanto os atacantes, se conectam aos sistemas

através de portas abertas. Quanto maior o número de portas abertas, maior a possibilidade

de alguém se conectar ao sistema. Consequentemente, é importante manter o menor

número de portas abertas necessárias para o correto funcionamento do sistema, o restante

deve ser fechado.

Em sistemas Linux/Unix, muitos dos serviços são controlados pelo super daemon inetd

e seu correspondente arquivo de con�guração, inetd.conf. O arquivo inetd.conf lista os

serviços associados a uma determinada porta, e freqüentemente é usado para fechar portas.

Ao remover um determinado serviço do arquivo inetd.conf, reinicializando-o em seguida, se

faz com que a porta associada a tal serviço seja fechada. Outros serviços são inicializados

através de scripts, os quais são executados durante o processo de inicialização do sistema

(tais como: /etc/rc, /etc/rc.local, ou scripts encontrados nos diretórios /etc/rc*). Além

disso, existe um programa chamado lsof que pode ser usado para auditar portas abertas.

Este programa pode ser obtido em: ftp://vic.cc.purdue.edu/pub/tools/UNIX/lsof/

23

Page 39: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

lsof.tar.gz.

Em sistemasWindows NT e 2000, para determinar que serviço/programa está �escutando”

em uma determinada porta, pode ser usada a ferramenta fport, encontrada em http:

//www.foundstone.com/. No Windows XP, pode ser utilizado o comando netstat com a

opção `-o'. Esta informação permitirá desabilitar o serviço e fechar a porta associada a

ele.

2.3.5 Ausência de �ltro de pacotes de entrada e saída que garan-

tam o uso de endereços válidos

O Spoo�ng de endereços IP é um método comumente usado por atacantes para escon-

der evidências. Por exemplo, o tão popular ataque �smurf ” faz uso de uma funcionalidade

dos roteadores para enviar pacotes a milhares de máquinas. Cada pacote contém o en-

dereço forjado de uma vítima. Os computadores que recebem este tipo de pacote, em

resposta, inundam à vítima com outros pacotes, chegando a retirá-la da rede em alguns

casos. Filtrar o tráfego que entra na sua rede (ingress �ltering) e que sai (egress �ltering)

pode ajudar a elevar o nível de proteção. As regras básicas de �ltragem são como segue

[SANS, 2002]:

1. Nenhum pacote que entra em sua rede pode ter como endereço de origem qualquer

IP da sua rede interna.

2. Todo pacote que entra em sua rede deve ter como endereço de destino algum ende-

reço pertencente à sua rede interna.

3. Qualquer pacote que sai da sua rede deve ter como endereço de origem algum IP

que pertença à sua rede interna.

4. Nenhum pacote que sai da sua rede deve ter como endereço de destino algum IP de

sua rede interna.

5. Nenhum pacote que entra ou sai de sua rede deve conter como endereço de origem

ou destino qualquer endereço privado ou endereço reservado segundo descrito na

RFC 1918. Estão incluídos neste espaço de endereçamento as redes 10.x.x.x/8,

172.16.x.x/12 ou 192.168.x.x/16, e a rede 127.0.0.0/8, correspondente a loopback.

Um loopback é um canal de comunicação com apenas um ponto �nal. Qualquer

mensagem transmitida por meio de tal canal é imediatamente recebida pelo mesmo

canal.

6. Bloquear qualquer pacote que tenha a opção �source routing” ativada ou o campo

`IP Options' ativado.

24

Page 40: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

7. Endereços reservados de auto-con�guração DHCP e Multicast também devem ser

bloqueados:

• 0.0.0.0/8

• 169.254.0.0/16

• 192.0.2.0/24

• 224.0.0.0/4

• 240.0.0.0/4

Para defender-se deste tipo de ataque, é necessário implementar regras de �ltragem

no �rewall e no roteador de borda.

2.3.6 Sistema de logs inexistente ou incompleto

Uma das premissas de segurança é: �A prevenção é ideal, mas a detecção é imprescindível”.

Enquanto houver tráfego entre a rede interna e a Internet, existe a oportunidade de um

atacante invadir a rede [SANS, 2002].

Novas vulnerabilidades surgem a cada semana, e poucas são as maneiras de defender-

se de um atacante que use uma vulnerabilidade nova. Uma vez que o sistema tenha sido

atacado, sem registros (logs), a possibilidade de se descobrir o que eles �zeram no sistema

é mínima. Sem esta informação, a organização deve escolher entre fazer uma restauração

completa do sistema operacional a partir da mídia original, torcendo para que os dados

armazenados estejam corretos; ou correr o risco de possuir um sistema ainda controlado

pelo hacker.

Não há como detectar um ataque se não se sabe o que está ocorrendo na rede. Os logs

provêem detalhes sobre o que está acontecendo, os sistemas que estão sendo atacados e

os que foram efetivamente invadidos.

O registro de eventos deve ser feito de maneira regular em todos os sistemas críticos, e

os logs devem ser devidamente armazenados e arquivados, pois nunca se sabe quando eles

serão necessários. A maioria dos especialistas recomenda o envio de todos os logs a um

servidor central que grave os dados em uma mídia que não possa ser apagada, de forma

que o atacante não possa adulterar os logs e evitar assim a sua deleção.

Para a proteção do sistema, é importante con�gurar todos os sistemas de logs para

registrar as informações localmente e para enviar os logs a um sistema remoto. Isto provê

redundância e adiciona uma camada extra de segurança. Além disso, ambos sistemas de

registro podem ser comparados, onde qualquer discrepância pode indicar atividade sus-

peita. Adicionalmente, este esquema permite o cruzamento de informações: uma entrada

isolada no arquivo de logs de um único servidor pode não ser suspeita, mas a mesma

25

Page 41: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

entrada em 50 servidores de uma organização diferindo em apenas um minuto entre uma

e outra, pode ser sinal de um problema maior [SANS, 2002].

Quando possível, é importante enviar os logs a um dispositivo que use mídia que não

possa ser apagada.

2.3.7 Programas CGI vulneráveis

A maioria dos servidores, incluindo IIS (Internet Information Services) da Microsoft

e Apache, suportam programas CGI (Common Gateway Interface) para proporcionar

interatividade em páginas web, permitindo algumas funções como o levantamento e a

veri�cação de dados. De fato, a maioria dos servidores web são distribuídos com programas

CGI de exemplo. Infelizmente, muitos programadores de CGI não consideram que seus

programas oferecem, para qualquer usuário de qualquer lugar na Internet, uma ligação

direta com o sistema operacional da máquina que abriga o servidor web. Os programas

CGI vulneráveis representam para os atacantes um alvo particularmente atraente porque

são relativamente fáceis de serem localizados e operam com os privilégios do próprio

servidor web [SANS, 2002].

Os atacantes costumam utilizar os programas CGI vulneráveis para des�gurar websites,

roubar números de cartão de crédito, ou instalar backdoors para permitir futuras invasões.

Quando o website do Departamento de Justiça foi des�gurado, uma investigação concluiu

que muito provavelmente uma brecha de segurança em um programa CGI tinha sido o

caminho usado pelos atacantes.

Da mesma forma, os aplicativos do servidor web são igualmente vulneráveis às ameaças

criadas por programadores descuidados. Como regra geral, os programas de exemplos que

acompanham as distribuições dos servidores web sempre devem ser retirados dos sistemas

de produção.

2.4 Vulnerabilidades no Windows

2.4.1 Falha no Unicode conhecida como “Web Server Folder traversal”

O Unicode é um padrão para representar caracteres, onde cada símbolo utiliza dois

bytes, o que permite um total de 65.536 combinações, com as quais é possível representar

o alfabeto da maioria das línguas do mundo [SANS, 2002].

O padrão Unicode foi adotado pela maioria dos fabricantes de software, incluindo a

Microsoft. O envio de uma URL que contém uma seqüência inválida de Unicode UTF-8 a

um servidor IIS por um atacante, pode forçar o servidor a executar comandos arbitrários.

Este tipo de ataque é conhecido também como o ataque �directory transversal”.

26

Page 42: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Os caracteres equivalentes em Unicode de / e \ são %2f e %5c,respectivamente. En-

tretanto, pode-se também representar estes caracteres usando seqüências denominadas

�overlong”. As seqüências �overlong” são as representações inválidas de Unicode que são

mais longas do que o requerido realmente para representar o caracter. Tanto / como \

podem ser representados com um único byte. Uma representação �overlong”, tal como

%c0%af representa o caracter / usando dois bytes. O IIS não foi escrito para veri�car a

segurança em seqüências do tipo �overlong” [SANS, 2002].

Assim, ao enviar uma seqüência de Unicode overlong em uma URL, as veri�cações de

segurança da Microsoft serão contornadas. Se o pedido for feito a um diretório marcado

como �executável”, o atacante poderá fazer com que os arquivos sejam executados no

servidor.

2.4.2 Bu�er Over�ow nas Extensões ISAPI (Internet Services

Application Programming Interface)

O servidor IIS, da Microsoft, é o software de servidor Web encontrado na maioria

dos web sites operando nas plataformas Windows NT e Windows 2000. Quando o IIS

é instalado, diversas extensões de ISAPI são instaladas automaticamente. O ISAPI,

permite aos programadores estender as potencialidades de um servidor IIS utilizando

bibliotecas DLLs. Várias DLLs, como idq.dll, contém erros de programação que resultam

na realização imprópria da checagem de erros. Em particular, não bloqueiam strings de

entrada longos (long input strings).Os atacantes podem enviar dados a estas DLLs, no

que é conhecido como bu�er over�ow, resultando no controle completo do servidor IIS

por parte do atacante.

2.4.3 Brecha nos Serviços de Dados Remotos (RDS) do IIS

O servidor IIS da Microsoft é o software de servidor Web encontrado na maioria dos web

sites operando na plataforma Microsoft Windows NT e Windows 2000. Para executar

comandos remotos com privilégios de administrador, os usuários maliciosos exploram

falhas de programação nos serviços RDS (Remote Data Services), Serviços de Dados

Remotos do IIS.

2.4.4 NetBIOS: Falta de proteção nos compartilhamentos em re-

des Windows

NetBIOS é uma interface de programa que foi desenvolvida para permitir a comunica-

ção entre máquinas. O protocolo Server Message Block (SMB), conhecido também como

Common Internet File System (CIFS), permite compartilhar arquivos através de redes.

27

Page 43: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

A con�guração incorreta do SMB pode expor arquivos críticos do sistema ou permitir

acesso completo do sistema a qualquer usuário hostil conectado à Internet.

Muitos usuários de forma ingênua, abrem seus sistemas aos hackers quando tentam

facilitar a conveniência para colegas de trabalho, e alguns usuários externos quando abrem

o acesso de leitura e escrita nos compartilhamentos realizados pela rede. Administradores

de um site do governo utilizado para o desenvolvimento de software voltado para o plane-

jamento de missão, permitiram acesso irrestrito aos seus arquivos, de modo que pessoas

em um outro departamento do governo pudessem ter fácil acesso aos arquivos. No período

de dois dias, os atacantes descobriram os compartilhamentos de rede abertos e roubaram

o software de planejamento de missão.

Abrir o acesso para o compartilhamento de arquivos em máquinas Windows os faz

vulneráveis ao roubo de informação e determinados tipos de vírus. Os sistemas operaci-

onais Macintosh e Unix também são vulneráveis, se habilitarem o compartilhamento de

arquivos.

Os mecanismos de SMB que permitem compartilhar arquivos também podem ser utili-

zados por atacantes para obter informações sensíveis dos sistemas Windows. A informação

do usuário e do grupo (usernames, últimas datas de login, política de senha, informação

de RAS), informações do sistema, e determinadas chaves do registro podem ser obtidas

através de uma conexão �null session” ao serviço de sessão do NetBIOS. Esta informação

é útil aos hackers porque lhes ajuda a adivinhar uma senha ou descobrir uma senha por

via de um ataque de força bruta.

2.4.5 Vazamento de informações através de sessão anônima (null

session)

Uma conexão de sessão nula, também conhecida como o início de uma sessão anô-

nima, é um mecanismo que permite que um usuário anônimo recupere informação (tal

como nomes de usuários e arquivos compartilhados) sobre a rede, ou para conectar sem

autenticação. É usada por aplicativos como explorer.exe para listar arquivos comparti-

lhados em servidores remotos. Em sistemas Windows NT e Windows 2000, muitos dos

serviços funcionam sob a conta SYSTEM, conhecido como LocalSystem no Windows 2000.

A conta SYSTEM é usada para várias operações críticas do sistema. Quando uma má-

quina precisa recuperar dados de outro sistema, a conta SYSTEM abre uma sessão nula

com a outra máquina.

A conta SYSTEM tem privilégios virtualmente ilimitados e não possui senha, o que

impede que seja realizado o login com a conta SYSTEM. SYSTEM às vezes precisa acessar

informações em outras máquinas como compartilhamentos, nomes de usuários, etc. -

funcionalidade do tipo Network Neighborhood. Como não é possível logar nos outros

28

Page 44: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

sistemas utilizando um identi�cador de usuário (UserID) e senha, é utilizada a sessão

nula para se conseguir o acesso. Infelizmente, hackers também podem realizar o login

utilizando-se do mesmo mecanismo.

2.4.6 Codi�cação fraca de senhas no SAM (LAN Manager hash)

Embora a maioria dos usuários de Windows não necessite do suporte do gerente de

LAN (Lan Manager), a Microsoft armazena hashes de senhas do Lan Manager na con�-

guração padrão de sistemas Windows NT e em Windows 2000. Um hash de senha, é uma

espécie de ”assinatura” ou ”impressão digital” que representa o conteúdo de um �uxo de

dados.

O Lan Manager usa um esquema muito fraco de criptogra�a para as senhas, mais

antigo do que o utilizado em aplicativos mais recentes da Microsoft, com isso as senhas

do Lan Manager podem ser quebradas em um curto período de tempo. Mesmo os hashes

de senha fortes podem ser quebrados em menos de um mês. As principais fragilidades dos

hash de senha Lan Manager são [SANS, 2002]:

• Senha de tamanho �xo de, no máximo, 14 caracteres;

• Senhas curtas são preenchidas com ”espaços” para conter 14 caracteres;

• Senha convertida para letras maiúsculas;

• Senha é dividida em dois blocos de sete letras.

Isto quer dizer que um programa para quebrar senhas somente precisa quebrar duas

senhas de sete letras, sem mesmo necessitar testar as letras minúsculas. Além disso, o

LAN Manager é vulnerável à interceptação da senha. A interceptação dos hashes da senha

pode fornecer aos atacantes as senhas do usuário.

2.5 Vulnerabilidades no Linux

2.5.1 Bu�er Over�ow nos serviços de Remote Procedure Call

(RPC)

As chamadas RPC (Remote Procedure Call) permitem que programas de um compu-

tador executem programas num outro computador. Este recurso é extensamente usado

no acesso a alguns serviços de rede, tais como arquivos compartilhados via NFS (Network

File System), ou ainda no NIS (Network Information Service). Muitas vulnerabilidades

têm sido causadas por falhas no RPC e estão sendo ativamente exploradas. Há evidências

29

Page 45: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

de que a maioria dos sistemas que participaram dos ataques DDoS (Distributed Denial of

Service) ocorridos durante 1999 e 2000, foi comprometida através de vulnerabilidades no

serviço de RPC [SANS, 2002].

O ataque muito bem sucedido contra sistemas militares dos E.U.A. durante o incidente

conhecido como �Solar Sunrise”, também explorou uma falha do RPC encontrada em

centenas de sistemas no Departamento de Defesa dos EUA [SANS, 2002].

2.5.2 Vulnerabilidades no Sendmail

O Sendmail é o programa que envia, recebe e encaminha a maioria do correio eletrônico

processado em computadores UNIX e Linux. O fato de ser amplamente usado na Internet

faz com que o Sendmail seja um alvo em potencial para os atacantes. Foram encontradas

diversas falhas ao longo dos anos, sendo que o primeiro alerta emitido pelo CERT/CC,

em 1988, fez referência justamente a uma falha de segurança no Sendmail.

Um dos ataques mais comuns acontece quando o atacante cria e envia uma mensagem

de correio eletrônico, especialmente formatada, para a máquina que está usando Sendmail

e este a interpreta como instrução para enviar o arquivo de senhas para a máquina do

atacante (ou ainda para outra vítima), onde então as senhas podem ser quebradas.

2.5.3 BIND Weaknesses

O pacote BIND, Berkeley Internet Name Domain, é a implementação mais usada do

Domain Name Service (DNS) - é a maneira que permite localizar sistemas na Internet

através do nome (por exemplo,www.cert.org) sem ter que saber endereços IP especí�cos

- e isto faz com que ele seja um alvo favorito para ataques.

Infelizmente, de acordo com um estudo realizado em meados de 1999, cerca de 50% do

total de servidores de DNS conectados à Internet estão executando versões vulneráveis do

BIND. O típico exemplo de ataque ao BIND é o caso em que os atacantes apagam os logs

do sistema e instalam ferramentas para obter acesso com privilégios de administrador.

Feito isto, eles então compilam e instalam programas de IRC e ferramentas para varrer a

Internet em busca de redes vulneráveis (network scanners), que foram usadas para varrer

mais de uma dúzia de redes classe-B, a procura de outros sistemas com versões vulneráveis

do BIND [SANS, 2002].

Em questão de minutos, estavam usando o sistema comprometido para atacar centenas

de sistemas remotos, resultando em várias outras invasões bem sucedidas. Este exemplo

ilustra o caos que pode ser gerado por uma única vulnerabilidade de um software como o

DNS.

Versões velhas do BIND incluem também vulnerabilidades do tipo bu�er over�ow, que

os atacantes podem explorar para obter acesso não autorizado.

30

Page 46: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

2.5.4 Comandos remotos (r)

As relações de con�ança são muito usadas em ambientes UNIX, principalmente na

administração de sistemas. Muitas companhias nomeiam um único administrador como

responsável por dezenas ou até centenas de sistemas. Os administradores usam frequen-

temente as relações de con�ança e os comandos UNIX r para trabalhar, acessando vários

sistemas, mais confortavelmente. Os comandos r permitem ao usuário acessar um sistema

remoto sem a exigência da senha.

Em vez de exigir uma combinação de nome de usuário/senha, a máquina remota

autentica qualquer usuário que tente acessá-la através de endereços IP con�áveis. Se

um atacante conseguir controlar qualquer máquina de uma rede con�ável, poderá assim

ter acesso as demais máquinas que con�am na máquina comprometida. Os seguintes

comandos r são usados com freqüência [SANS, 2002]:

1. rlogin - remote login

2. rsh - remote shell

3. rcp - remote copy

2.5.5 LPD (daemon do serviço de impressão remota)

Em ambientes Unix, o in.lpd permite aos usuários interagir com a impressora local. O

LPD aguarda requisições através da porta 515 TCP. Os programadores que desenvolveram

o código responsável por transferir trabalhos para impressão de uma máquina para outra,

cometeram um erro que originou uma vulnerabilidade de bu�er over�ow. Se o daemon

receber muitos trabalhos para impressão dentro de um curto intervalo de tempo, ele

deixará de funcionar ou processará código arbitrário com privilégios elevados.

2.5.6 Serviços Sadmind e Mountd

O Sadmind permite a administração remota de sistemas Solaris, através de uma in-

terface grá�ca que disponibiliza funções de administração do sistema. O Mountd controla

o acesso aos arquivos mapeados pelo NFS em hosts UNIX. As falhas de bu�er over�ow

existentes nestes aplicativos, originados por erros de programação, podem ser explorados,

permitindo aos atacantes obterem o controle do sistema com privilégios de �root”.

Esta vulnerabilidade é um caso especial de bu�er over�ow, tratado no item Bu�er

Over�ow em serviços RPC. Os colaboradores desta lista detectaram a ocorrência tão

freqüente deste caso especial, que decidiram criar um segundo item dedicado exclusiva-

mente a ele [SANS, 2002].

31

Page 47: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

2.5.7 Mensagens-padrão do SNMP (Simple Network Manage-

ment Protocol)

O protocolo SNMP é muito usado pelos administradores de rede para monitorar e

administrar todos os tipos de equipamentos conectados à rede, desde roteadores e impres-

soras, até servidores e estações de trabalho. O SNMP usa uma �community string” sem

criptogra�a, como seu único mecanismo de autenticação.

A falta de criptogra�a por si só já é um fato ruim, além disso, a community string

de�nida como padrão e usada por grande parte dos equipamentos SNMP é �publica”, sendo

que somente alguns dos fabricantes de equipamentos de rede �mais espertos” alteram a

community para �privada”, quando se trata de informações mais sensíveis. Os atacantes

podem usar esta vulnerabilidade no SNMP para recon�gurar ou desligar remotamente os

equipamentos.

O tráfego SNMP, quando interceptado, pode revelar muitas informações sobre a es-

trutura da rede, bem como dos sistemas e os equipamentos conectados a ela. Os invasores

usam tais informações para escolher alvos e planejar os ataques.

O SNMP não é parte integrante apenas dos sistemas Linux. No entanto, ele está

listado junto com as vulnerabilidades Linux, pois os colaboradores desta lista notaram

um grande número de ataques a sistemas Linux, explorando a con�guração imprópria do

SNMP, enquanto que este não parece ser um problema muito explorado em ambientes

Windows.

Estas principais vulnerabilidades de software contabilizam a maioria dos ataques bem

sucedidos, simplesmente pelo fato dos atacantes serem oportunistas, isto é, escolherem

o caminho mais fácil e conveniente. Eles exploram as falhas mais comuns usando as

mais efetivas e difundidas ferramentas de ataque. Os atacantes partem do princípio que

as organizações não corrigem seus sistemas e saem vasculhando sistemas vulneráveis na

Internet.

Essas vulnerabilidades podem ser encontradas através de ferramentas disponíveis pu-

blicamente na Internet ou desenvolvida pelo próprio atacante.

No capítulo 3 será exposto as principais ferramentas de investigação usadas na Forense

Computacional.

32

Page 48: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Capítulo 3

Ferramentas de Investigação

Computacional

3.1 Introdução

Embora existam ferramentas comerciais completas com a �nalidade de execução de

análises detalhada de dados, a maiorias dos pro�ssionais da área computacional forense

recomendam a criação de um Kit de ferramentas personalizado, onde estejam presentes

as ferramentas que o perito tenha mais familiaridade em utilizar. A única exigência é

de que sejam adequadas ao cumprimento do objetivo �nal, e a obtenção dos resultados

esperados.

Para que o trabalho com a forense computacional seja respeitado, é necessário ter

conhecimento das ferramentas reais e que o perito seja capaz de levantar hipóteses que

possibilitarão supor e a�rmar o que aconteceu, ou está acontecendo ou poderá acontecer

[Farmer e Venema, 2007].

Algumas das principais ferramentas utilizadas pelos peritos e analisadas nesse traba-

lho são Easy Recovery, EnCase, eMailTrakerPro, Forensic Toolkit (FTK), caller IP, reco-

verMyFiles, smartWhois e também uma nova vertente on-line ainda não muito explorada

conhecida como portal IP-Adress.com. Todas elas são ferramentas do tipo Shareware.

3.2 Easy Recovery

A ferramenta Easy Recovery (http://www.ontrack.com), representada pela Figura

3.1, possui uma coleção de ferramentas com o objetivo básico de recuperação de dados

perdidos. Recupera desde dados apagados, até partições corrompidas [Andrade, 2005].

Todas suas ferramentas são não destrutivas e somente leitura. Dos seus recursos podem

ser citados:

33

Page 49: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

• Capacidade de gerar um disco de inicialização para recuperação de dados sem a

necessidade de inicialização do Sistema Operacional;

• Capacidade de recuperação de dados em discos ou partições que sofreram processo

de formatação;

• Capacidade de recuperação de dados de discos do qual não se possuem dados a

respeito do sistema de arquivos utilizado;

• Capacidade de destinar os dados recuperados para disquetes, zip-drives ou outros

discos removíveis, outro disco rígido ou uma unidade mapeada na rede;

Figura 3.1: Tela do EasyRecovery

3.3 EnCase

A ferramenta EnCase desenvolvida pela Guidance Software é uma das ferramentas

mais completas no que se refere a perícia forense, pois além de auxiliar na recuperação

de arquivos deletados, padroniza laudos periciais, organiza um Banco de Dados com as

evidências, faz o encryption (fornece senhas) e o decryption (quebra de senhas) dos

arquivos, analisa hardwares, analisa logs, analisa formatos e tipos de e-mails e fornece

uma opção de se manusear a evidência sem alterá-la, além de outras características mais

avançadas [Andrade, 2005].

O Encase cria também um arquivo de provas (evidence �le) de forma não invasiva,

garantido assim a integridade e �delidade para com a fonte original dos dados. Possui um

34

Page 50: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

recurso de grande utilidade, a procura de texto especí�co, pesquisando por uma string

dentro do arquivo de evidência criado, além de pesquisa por setor de disco em modo

hexadecimal ou em texto [Andrade, 2005].

A versatilidade e objetividade desta ferramenta fazem com que seja utilizada prefe-

rencialmente em casos de análise de conteúdos de mensagens eletrônicas e suas particu-

laridades tais como, cabeçalhos, anexos e seu conteúdo em si. Sendo possível também

analisar históricos de páginas acessadas na internet, suportando vários navegadores.

Na Figura 3.2, foi feita uma veri�cação na caixa de entrada de e-mail de um suposto

infrator, utilizando métodos de busca e investigação da ferramenta EnCase em e-mails e

Internet [Vargas, 2007].

Figura 3.2: Interface do EnCase E-mail e Internet (Tutorial) [Vargas, 2007]

3.4 eMailTrackerPro

A ferramenta eMailTrackerPro possibilita a análise do cabeçalho ou headers de e-

mails, fornecendo dados como IP da máquina que fez o envio da mensagem e localização

geográ�ca através de uma visão do mapa mundi. E permite a identi�cação da técnica mis-

direction ou Direcionamento Falso. Esta técnica é utilizada por spammers para esconder

rastros [Vargas, 2007].

A ferramenta fornece através de uma entrada de e-mail ou uma lista de e-mails o

local de origem, onde fora criado, a rota entre empresas �liadas, ou não, a organização

em questão e a mesma responsável pelo e-mail, sendo identi�cada com a apresentação de

seu endereço, telefone, dentre outros dados.

35

Page 51: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

A Figura 3.3 apresenta à esquerda a rota de um e-mail por IPs e a rota do mesmo

no mapa mundi, enquanto que à direita está sendo indicado a empresa responsável pelos

serviços de e-mail.

Figura 3.3: Tela Principal da ferramenta E-mailTracker com rota de IPs

3.5 Forensic ToolKit (FTK)

A ferramenta Forensic ToolKit (FTK) é uma das ferramentas mais completas tam-

bém, pois oferece perícias completas, além de rápidas e customizáveis avaliações sobre os

milhares de arquivos do sistema. É também a principal ferramenta forense para análise

de e-mail [Freitas, 2006].

Outras características citadas pelo autor [Freitas, 2006] são: Recuperação de e-mails

deletados e ou excluídos; Componente para visualização de registros; Auditoria de logs e

relatórios de casos especí�cos; Recuperação automática de dados deletados e partições do

disco rígido; Ampla compatibilidade para visualizar mais de 270 formatos diferentes de

arquivos; FTK Explorer que auxilia a visualização e navegação ágil pelas imagens obtidas;

Suporte aos sistemas de arquivos: NTFS, FAT 12/16/32, Linux ext2 e ext3; Formatos

de imagens produzidos por outros softwares como EnCase, Smart, Snapback, Safeback

e Linux DD; Softwares que atuam como gerenciadores de mensagens eletrônicas como

Outlook, Outlook Express, AOL, Netscape, Yahoo, Eudora, Hotmail e MSN e-mail são

compatíveis com a ferramenta; Funcionalidades como a visualização, pesquisa, impressão

e exportação de mensagens de e-mails e anexos, são oferecidas também; e a extração de

informações de arquivos comprimidos com os softwares PKZIP, Winzip, WinRAR, GZIP

e TAR.

36

Page 52: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Através da exposição do autor, pode-se compreender a viabilidade do uso deste soft-

ware como ferramenta pericial. Apresenta os mais variados tipos de arquivos, adaptabili-

dade na recuperação de e-mails deletados e visualização de imagens de diversos formatos.

Estas potenciais características fazem com que a ferramenta seja bem vista no meio forense

computacional.

3.6 Caller IP

A ferramenta CallerIp auxilia na indicação de entradas, saídas e invasões de IP na

máquina em questão, informando qual o IP que está conectado ou tentando se conectar,

apresentando no mapa mundi a sua localização com endereço, telefone e responsável por

aquele IP.

Na Figura 3.4, a ferramenta CallerIp foi utilizada para veri�car quais IPs estavam

tentando acessar o sistema operacional e por quais programas estavam tentando fazer

as conexões, sendo apresentado do lado direito da �gura, os IPs que estavam em maior

evidência e acima quando clicados são apresentados ao lado do mapa mundi as principais

informações do mesmo [Vargas, 2007].

Figura 3.4: Tela Principal da Ferramenta CallerIp

37

Page 53: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

3.7 RecoverMyFiles

A ferramenta RecoverMyFiles é um programa que permite recuperar facilmente arqui-

vos apagados acidentalmente, ou não, do Windows. Para evitar que o arquivo apagado

seja sobrescrito, essa ferramenta não requer a instalação, funcionando diretamente de um

disco �exível.

A Figura 3.5 está apresentando a tela da aplicação RecoverMyFiles recuperando os

dados apagados de uma determinada partição de um HD, que foram deletados acidental-

mente ou não de suas supostas pastas, sendo acionado anteriormente a opção de demons-

trar somente as pastas deletadas à esquerda e à direita os arquivos destas pastas.

Além de disponibilizar uma seleção de quais extensões serão buscadas, pois o mesmo

disponibiliza uma busca �ltrando os arquivos por tipos de extensão e em qual partição

será feito este tipo de busca, como qualquer outra ferramenta de recuperação, então com a

informação de todos estes requisitos a ferramenta recupera todos os dados anteriormente

perdidos [Vargas, 2007].

Figura 3.5: Visualização de Pastas Deletadas na Ferramenta RecoverMyFiles

3.8 SmartWhois

A ferramenta SmartWhois auxilia na veri�cação de IPs e de domínios na Internet,

sendo apenas necessário a indicação do IP ou domínio, apresentando na tela a localização

destes, gerando endereço, telefone, responsável pelo IP ou pelo domínio em questão, em

resumo, todos os dados referentes a uma determinada organização procurada.

38

Page 54: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Na Figura 3.6, foi adicionado um domínio, para veri�cação dos possíveis responsáveis.

O domínio indicado foi o da empresa ProXad. Ao indicar este IP ou um domínio a

ferramenta retorna todos os dados da empresa responsável por este serviço como telefone,

endereço, responsáveis pelo setor, data de criação, dentre outras [Vargas, 2007].

Figura 3.6: Tela Principal da Ferramenta SmartWhois

O perito pode então, com o auxílio desta ferramenta, veri�car o IP de domínio em

questão e entrar em contato com o responsável, para poder reaver, mediante pedido

judicial a quebra de sigilo de e-mail do mesmo, para poder veri�car quem foi que enviou

esse e-mail, podendo dar um direcionamento à investigação.

3.9 IP-Adress.com

A ferramenta IP-Adress.com, ou melhor, o endereço eletrônico http://www.ip-adress.

com é um portal que disponibiliza uma série de informações relevantes, que podem auxiliar

no levantamento de informações, seja do IP utilizado pelo provedor de acessos, quanto

39

Page 55: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

pelo IP de terceiros, que pode ter enviado alguma mensagem eletrônica, ou tentou invadir

algum sistema de rede, etc.

O questionamento inicial do serviço é: É possível descobrir a origem de um e-mail?

Sim, é! Basta copiar e colar o e-mail abaixo do cabeçalho da mensagem, que o sistema

apontará a localização dos remetentes e endereço IP. O que já explica a utilidade da

ferramenta oferecida pelo portal.

A cada dia essas ferramentas são mais importantes porque 76% dos casos de vítimas de

crimes virtuais tiveram o e-mail como meio de comunicação, como atesta [Vargas, 2007].

As ferramentas evoluem na medida em que o trabalho acontece com os crimes virtuais,

por isso é importante que aliado à tecnologia, haja um pro�ssional habilitado para usar e

aperfeiçoar essas ferramentas.

Além do pro�ssional habilitado cuja quali�cação é essencial na utilização e e�cácia

dessas ferramentas, tem se o usuário que desempenha um papel fundamental na facilitação

ou não do trabalho do perito.

Essas são as principais ferramentas de investigação computacional existentes no mer-

cado, mas existem outras com o mesmo intuito das citadas neste capítulo.

No capítulo 4 será apresentado um prótotipo que realiza a recuperação de informações

na área de swap, se comparado às ferramentas citadas nesse capítulo ele constitui uma

ferramenta bem básica. As ferramentas descritas neste capítulo são bastante complexas,

lidam com análise de e-mails, veri�cação de rotas de IP, recuperação de arquivos apagados

etc.

40

Page 56: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Capítulo 4

Desenvolvimento e Análise do

Protótipo

4.1 Introdução

Neste capítulo são apresentados alguns tópicos sobre análise forense na memória prin-

cipal e no espaço de swap. É feita uma descrição de como funciona a troca de processos

entre a memória e a área de swap, além de descrever algumas possíveis fontes de infor-

mações de interesse à forense. Por �m, é apresentado um protótipo para automatizar a

busca e extração de conteúdo (imagens, arquivos, URLs e Diretórios) na área de swap.

4.2 Investigando a Memória Principal

A Memória Principal tem por �nalidade armazenar toda a informação que é mani-

pulada pelo computador - programas e dados. Para que um programa possa ser ma-

nipulado pela máquina, primeiro ele precisa estar armazenado na memória principal

[Silberschatz et al., 2001].

Diante do grande �uxo de informações (processos, dados, drivers de dispositivos etc.)

armazenados na memória principal em um curto intervalo de tempo, surgem di�culdades

inerentes à obtenção de dados armazenados nesse dispositivo. Não obstante, é uma área

importante para a análise forense, pois pode conter diversas informações, como senhas,

textos em claro de mensagens cifradas, imagens comprometedoras etc [Bueno, 2007].

Um importante ponto a considerar na busca por informações nesse dispositivo é o seu

alto caráter de volatilidade. Segundo [Farmer e Venema, 2007], o �tempo de vida” das

informações armazenadas na memória é da ordem de nanossegundos. Por esse motivo, a

captura de informações apresenta um desa�o ao investigador, uma vez que as evidências

necessitam ser capturadas rapidamente.

41

Page 57: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Assim, as informações são mantidas na mémoria principal enquanto houver alimenta-

ção de energia elétrica. Dada essa característica, o procedimento usual é coletar dados da

memória com o sistema nativo ligado, ou seja, trata-se de uma live analysis, já exposta

no Capítulo 1.

4.2.1 Memória Virtual

É a técnica de gerenciamento que combina a memória principal e a secundária (disco

rígido) dando ao usuário uma idéia de que existe mais memória principal.

Assim, a Memória virtual é uma forma de contornar o problema de falta de me-

mória RAM (Random Access Memory) num computador utilizando a própria memória

interna do HD (Hard Disk) através da criação virtual de memória estendida que funci-

ona da mesma maneira que a RAM, embora, muito mais lentamente, uma vez que isto

acontece ao nível do HD e, como se sabe, a velocidade dos discos rígidos ainda é muito

inferior à de um pente de memória RAM normal. A memória virtual é feita deixando

um espaço do HD reservado para que seja possível a sua utilização como memória virtual

[Silberschatz et al., 2001].

4.3 Ánalise do espaço de Swap

O espaço de swap está essencialmente relacionado ao esquema de memória virtual

adotado por muitos sistemas operacionais, pois é um recurso usado quando a memória

RAM está sobrecarregada. Assim, ele armazena os dados que não �cabem” na memória

RAM em um arquivo ou partição swap criadas no HD.

Existem situações em que não é possível manter todos os processos na memória

[Tanenbaum, 2003].

• Um processo já alocado na memória faz uma chamada de sistema pedindo mais

memória e não existe memória livre contígua a área onde o mesmo está alocado.

• Um usuário dispara um programa, não existe memória disponível, mas é política do

sistema atender os pedidos do usuário.

Usando a técnica de Swap (Swapping), o sistema operacional escolhe um programa

residente que é levado da memória para o disco (swap-out) e retornando posteriormente

para a memória(swap-in) [Silberschatz et al., 2001].

Por Swap, entende-se como a ação de congelar e descongelar um processo na memória

principal com o apoio da memória secundária.

Assim, chamaremos de �Swap in” a leitura de um processo congelado no disco, sua

carga na memória principal e a transferência do controle do processador para este processo.

42

Page 58: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Da mesma forma, chamaremos de �Swap out” a retirada do controle do processador de

um processo, sua gravação no disco, e a liberação da memória principal por ele ocupada.

A �gura 4.1 ilustra essas operações. Esta técnica é empregada por dois motivos diferentes

[Silberschatz et al., 2001]:

• primeiro, para possibilitar a implementação de um S.O. multiusuário em esquemas

de gerenciamento de memória onde os vários usuários utilizam o mesmo espaço de

memória;

• segundo para implementar a memória virtual. Neste caso o que se congela/descongela

não é o processo inteiro, e sim uma parte dele, já que o programa do usuário neste

caso pode ser maior que a memória física do computador.

Figura 4.1: Troca de processos entre a memória principal e o espaço de swap, segundo

[Silberschatz et al., 2001]

No espaço de swap podem ser encontrados dados dos mais variados tipos, como: senhas

que não chegaram a ser armazenadas no disco rígido, arquivos con�denciais (completos e

parciais), rascunhos não salvos etc. Também podem ser encontradas nessa área: dados

de processos e do kernel do sistema, bu�ers de impressora, assim como dados ocultados

deliberadamente. Portanto, analisar à area de swap é uma tarefa importante na busca de

dados - possíveis evidências- que provavelmente nunca seriam encontrados em outra área

do disco [Silberschatz et al., 2001].

43

Page 59: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

4.3.1 Arquivo de Swap do Windows e Linux (page�le.sys)

O arquivo page�le.sys é utilizado pelo Windows como espaço de troca (memória virtual

ou swap). Do ponto de vista de utilização da máquina não é recomendado a remoção deste

arquivo, na verdade o que se faz por questões de performance é sempre desfragmentar o

disco onde ele se encontra (justamente pelo seu tamanho, que na maioria das vezes é o

tamanho da quantidade de memória física).

No Linux a opção mais comum é implementar o espaço de swap como uma partição

especí�ca para tal �m. Mas pode ser usado arquivo de swap (semelhante ao modo feito

no Windows), no lugar da partição. No entanto, para se ter um uso mais e�ciente da

swap no Linux, é recomendado o uso da armazenagem da Swap em partição em lugar de

um arquivo. [Silberschatz et al., 2001].

No trabalho desenvolvido pelo ex-aluno Marcos Bueno, �Forense Computacional: Téc-

nicas e Ferramentas”, defendido no ano de 2007, neste departamento, a fonte de dados

utilizada foi um trecho da área de swap do Windows XP, extraída no Linux por meio da

sequência de comando descrita a seguir.

Para copiar o conteúdo da partição de swap do Windows, ele utilizou o comando dd

(direct copy) do Linux da seguinte forma:

# dd if=/dev/hdaX of=/swap/swaplinux bs=1024 count=131070

que copiará o conteúdo da partição de swap, localizada em /dev/hdaX (�hdaX” é o nú-

mero �ctício de dispositivo neste exemplo) para o arquivo �/swap/swaplinux”, instruindo

o dd a copiar 131070 blocos de 1024 bytes cada, resultando em 128MB, que é o tamanho

da partição de swap (esse valor depende do tamanho da partição de swap con�gurada no

sistema).

O comando dd é uma ferramenta do Linux utilizada para clonar uma partição inteira.

Para criar uma cópia de uma partição, é necessário saber como está estruturado a tabela

de partições. No caso do [Bueno, 2007], a partição de swap estava con�gurada com um

tamanho igual a 128MB.

No presente trabalho, também foi utilizado o arquivo de swap do Windows XP, ex-

traído no Linux por meio dos comandos Control-C e Control-V, diferenciando-se assim

do trabalho do [Bueno, 2007], o qual fez através de linhas de comando.

Em suma, talvez não seja possível copiar a swap sem causar o mínimo de alteração a

ela. Mas isso não quer dizer que a análise será em vão, pois deve-se ter em mente que este

é um caso de live analysis. Deve-se procurar minimizar os efeitos da coleta de evidências

no sistema em funcionamento, causando o menor distúrbio possível.

44

Page 60: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

4.4 A linguagem de programação utilizada

A linguagem de programação escolhida para a implementação do protótipo foi a lin-

guagem Java no ambiente de desenvolvimento Net Beans 6.9.1. O motivo principal para

o uso desta linguagem se deve ao fato de sua portabilidade, robustez, padronização forte

e por possuir uma biblioteca de interface grá�ca consistente, facilitando a implementação

deste protótipo.

Uma das características principais de Java é a simplicidade da linguagem. Acompa-

nhada de um grande número de bibliotecas de classes já testadas e que proporcionam

várias funcionalidades (E/S, interface grá�ca, multimídia,etc.). Foi projetada para criar

software altamente con�ável. Além de prover veri�cações durante a compilação, Java

possui um segundo nível de veri�cações (em tempo de execução). Apresenta também,

características de segurança e a própria plataforma realiza veri�cações em tempo de exe-

cução. Assim, aplicações escritas em Java estão �seguras” contra códigos não autorizados

que tentam criar vírus ou invadir sistemas de arquivos [Pinto, 2003].

Esses motivos apresentados foram relevantes para o emprego desta linguagem. Por-

tanto, desenvolver aplicações em Java resulta em um software que é portável em múltiplas

plataformas de hardware e software (sistemas operacionais, interfaces grá�cas), seguro e

de alto desempenho.

4.5 Protótipo desenvolvido

O Protótipo desenvolvido consiste no aperfeiçoamento de uma ferramenta utilizada

para automatizar a busca e extração de conteúdo na área de swap, desenvolvida pelo

ex-aluno Marcos Bueno [Bueno, 2007].

Foram implementadas nesse protótipo algumas sugestões de trabalhos futuros citadas

por ele. Como:

• Desenvolver uma interface grá�ca;

• Implementar a extração de outros tipos de informação, como Diretórios, outros tipos

de imagens (GIF, PNG e TIFF), arquivos (PDF e UTF8) e documentos do Microsoft

Word.

Então, além das funções já existentes que eram Extração de imagens JPEG e Extração

de URLs, foram implementadas mais essas.

4.5.1 Interface Grá�ca

A ferramenta desenvolvida por Marcos Bueno [Bueno, 2007] era executada através de

linhas de comando, sem interface grá�ca. Como mostrado a seguir:

45

Page 61: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

C:\PrototipoSwap\dist>java -jar PrototipoSwap.jar

SINTAXE: PrototipoSwap.jar [OPCOES] [ORIGEM] [DESTINO]

Opcoes

-i extrai imagens JPEG

-u extrai URLs

Origem

Caminho absoluto do arquivo de swap

Destino

Diretorio (pre-existente) para armazenar itens extraidos

Exemplos de uso:

PrototipoSwap.jar -u c:\swapcopy\swap.dd c:\swapcopy\ext_url

PrototipoSwap.jar -i c:\swapcopy\swap.dd c:\swapcopy\ext_jpeg

PrototipoSwap.jar -iu c:\swapcopy\swap.dd c:\swapcopy\extracao

C:\PrototipoSwap\dist> java -jar PrototipoSwap.jar-iu

c:\swapwin\swap.dd c:\swapwin\result

Como observado acima, utilizar as linhas de comando tornam o programa um tanto

complexo. Com a inteface grá�ca �ca melhor a visualização dos resultados, sem falar na

facilidade de uso da ferramenta, que se dá através de �clique” nas opções do sistema.

Por tais motivos torna-se interessante o desenvolvimento de uma interface grá�ca para

o protótipo, conforme mostra a Figura 4.2, que representa a tela inicial do programa com

os menus �Arquivo” e �Extração”.

Figura 4.2: Tela inicial da ferramenta Extrator de Arquivos

46

Page 62: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Ao se clicar no menu �Arquivo” tem-se as opções �Abrir Arq Swap” e �Sair”, onde a

primeira opção serve para selecionar a área de swap a ser utilizada e a segunda serve para

sair do programa, conforme mostra a Figura 4.3.

Ao clicar na primeria opção �Abrir Arq Swap” irá aparecer a seguinte janela, repre-

sentada pela Figura 4.4. Clica-se então no arquivo �page�le.sys” e em �Abrir”. Assim,

pode-se começar a extração de informações, pois a área de swap está selecionada.

Figura 4.3: Opções do menu Arquivo

Figura 4.4: Janela de seleção da área de swap

Clicando-se então na segunda opção do menu, que é �Extração”, irá aparecer as opções

�Diretórios”, �URLs”, �Imagens” e �Arquivos”, como mostrado na Figura 4.5.

47

Page 63: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Figura 4.5: Opções do menu Extração

Ao se clicar em �Diretórios”, depois de ter selecionado a área de swap, irá começar a

busca e extração de Diretórios na área de swap e aparecerá a seguinte janela, conforme

se observa na Figura 4.6.

Figura 4.6: Busca e Extração de Diretórios

É necessário esperar até a �nalização do comando �Aguarde...”. Será exibido na tela do

programa todos os resultados de Diretórios recuperados, um por linha, conforme mostra

a Figura 4.7.

Esse mesmo procedimento pode ser executado para as �URLs”.

48

Page 64: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Ao se clicar em �Imagens” irá aparecer as opções �JPG”, �GIF”, �PNG” e �TIFF”, que

representam os tipos de imagens a serem extraídas da área de swap, conforme mostra a

Figura 4.8.

Figura 4.7: Diretórios recuperados

Figura 4.8: Opções do menu Imagens

Clicando agora na opção �JPG”, depois de ter selecionado a área de swap, irá começar a

busca e extração de imagens JPG na área de swap e aparecerá a seguinte janela, conforme

mostra a Figura 4.9.

É necessário esperar até a �nalização do comando �Aguarde...”. Será exibido na tela do

49

Page 65: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

programa todos os resultados de imagens JPEG recuperadas, uma por linha, informando

ao �nal a quantidade de arquivos extraídos, como pode ser observado na Figura 4.10.

Figura 4.9: Busca e Extração de imagens JPG

Figura 4.10: Imagens JPEG recuperadas

Será aberta uma janela, conforme mostra a Figura 4.11, denominada �Miniatura das

imagens JPEG” que irá conter todas as imagens JPEG extraídas pelo protótipo na forma

de miniaturas. Esse mesmo procedimento pode ser executado para as opções �GIF”,

�PNG” e �TIFF”, bastando clicar na opção correspondente.

Voltando ao menu �Extração” e clicando na opção �Arquivos”, irá aparecer a tela

representada pela Figura 4.12, com as opções �PDF”, �UTF8” e �DOC”, que representam

os tipos de arquivos a serem extraídos da área de swap.

50

Page 66: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Figura 4.11: Miniaturas das Imagens JPEG recuperadas

Figura 4.12: Opções do menu Arquivos

Clicando agora na opção �PDF”, com a área de swap selecionada, irá começar a busca

e extração de arquivos PDF na área de swap selecionada e aparecerá a seguinte janela,

representada pela Figura 4.13.

Da mesma forma que as imagens, é necessário esperar até a �nalização do comando

�Aguarde...”. Será exibido na tela do programa todos os resultados de arquivos PDF recu-

perados, um por linha, informando ao �nal a quantidade de arquivos extraídos, conforme

mostra a Figura 4.14.

Nesse caso não será aberta uma janela de �Miniaturas” como na extração de imagens,

pois agora estamos lidando com arquivos. Esse mesmo procedimento pode ser executado

para as opções �UTF8” e �DOC”, bastando clicar na opção correspondente.

51

Page 67: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Figura 4.13: Busca e Extração de arquivos PDF

Figura 4.14: Arquivos PDF recuperados

Para sair do programa basta selecionar no menu �Arquivo” a opção �Sair”. Apare-

cerá a janela representada pela Figura 4.15, perguntando se deseja realmente encerrar o

programa, se sim, basta clicar em �OK” que o programa será fechado.

Figura 4.15: Janela de encerramento do programa

52

Page 68: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Todas essas informações recuperadas (Diretórios, URLs, Imagens e Arquivos) são ar-

mazenadas automaticamente em pastas criadas pelo próprio programa, conforme mostra

a Figura 4.16.

Figura 4.16: Pastas com arquivos extraídos

4.5.2 Extração de Diretórios

Foi veri�cado que a swap apresenta diversos caminhos de diretórios armazenados, o que

pode con�gurar uma fonte interessante de informação. No protótipo, foi implementada a

busca de diretórios por meio de classes em Java para expressões regulares. A expressão

regular usada foi: [A-Z]\ \ s?:\ \ s?\ \ \ \ \ \ s?(([\ \ d\ \ w\ \ p{Punct}&&[� ,;` \”]])+\ \ s?)*

Para se chegar a expressão regular acima que realiza a extração de Diretórios, foi

necessário entender a estrutura de um caminho para diretório e monta-lá de acordo com

os conceitos de expressões regulares e programação. Para isso, foi necessário consultar o

livro �Java Como Programar” [Deitel, 2005], e entender algumas de�nições referenciadas

por ele.

\d - qualquer dígito.

\w - qualquer caractere de palavra.

\s - qualquer espaço em branco.

* - localiza zero ou mais ocorrências do padrão.

? - localiza zero ou uma ocorrência do padrão.

53

Page 69: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

+ - localiza uma ou mais ocorrências do padrão.

\\- gera a saída do caractere de barra invertida (\).

\p{Punct} - Pontuação: ! ” # $ % & ' ( ) * + , - . / : ; = > ? @ [ \ ] �_ ` { | } �

& & - intersecção.

\\” - gera a saída do caractere de aspas duplas (”).

Com isso, foi possível montar a expressão regular para Extração de Diretórios.

4.5.3 Extração de URLs

Foi veri�cado que a swap apresenta diversas URLs armazenadas, o que pode con�gurar

uma fonte interessante de informação. No protótipo, foi implementada a busca de URLs

por meio de classes em Java para expressões regulares. A expressão regular usada foi:

(http|https|ftp|news|�le)://[!-� &&[� < \ \ > ]]*

Com isso, foram buscados diversos tipos de endereços:

• HTTP

• HTTPS

• FTP

• NEWS

• FILE (notação de navegadores para indicar arquivos locais da máquina)

Para se chegar a expressão regular acima que realiza a extração de URLS, foram usadas

as de�nições da seção anterior, mais as seguintes [Deitel, 2005]:

� - exceto o que vem na frente.

! - negação.

4.5.4 Extração de imagens JPEG

Foi implementada a busca e extração de imagens JPEG por meio do número mágico

e por uma variável chamada trailer que representa a sequência de �nalização dos tipos

de dados que se está extraindo. Os números mágicos são sequências hexadecimais pra

identi�car cada tipo de dado (PDF, BMP, JPEG etc) que se deseja extrair.

O protótipo busca exaustivamente, byte a byte, pelo número mágico JPEG (FF,D8,FF,E0),

e a varredura só termina quando for encontrado o valor armazenado na variável trailer,

0xD9, que representa o �m da imagem.

O protótipo armazena todas as ocorrências desse número mágico e depois extrai todos

os arquivos. Foi adotado neste trabalho uma implementação em Java que faz dumps de

54

Page 70: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

imagens JPEG de tamanho 256 KB (de fácil alteração no código fonte). Esse tamanho

é razoavelmente su�ciente para a grande maioria das imagens que foram testadas, até

mesmo de outras fontes de dados, como por exemplo documentos do Microsoft Word.

4.5.5 Extração de imagens GIF

Foi implementada a busca de imagens GIF também por meio do número mágico e da

variável trailer. Os arquivos de imagens GIF tem um código ASCII para �GIF89a” (47

49 46 38 39 61) ou �GIF87a” (47 49 46 38 37 61), que são de�nidos na variável magico.

A variável trailer apresenta os valores (0x00, 0x3B), que representam o �m da imagem.

Então a busca da imagem GIF é feita também exaustivamente, byte a byte, através do

número mágico (47 , 49 , 46 , 38 , 37 , 61) ou (47 , 49 , 46 , 38 , 39 , 61) e só termina

quando for encontrado o segmento 0x3B.

4.5.6 Extração de imagens PNG

Foi implementada a busca de imagens PNG também por meio do número mágico e da

variável trailer. O número mágico de uma imagem PNG é representado por (89, 50 , 4E ,

47 , 0D , 0A , 1A , 0A) de�nido na variável magico. A sequencia (4E ,44 ,AE ,42 ,60 ,82)

de�nida na variável trailer representa o �m da imagem.

4.5.7 Extração de imagens TIFF

Foi implementada a busca de imagens TIFF também por meio do número mágico e

da variável trailer. O número mágico de uma imagem TIFF é representado por (49, 49,

2A, 00) de�nido na variável magico. A sequencia (0x00, 0x00) de�nida na variável trailer

representa o �m da imagem.

4.5.8 Extração de arquivos PDF

Foi implementada a busca de arquivos PDF também por meio do número mágico e da

variável trailer. O número mágico de um arquivo PDF é representado por (25, 50, 44, 46)

de�nido na variável magico. A sequencia (25, 25, 45, 4F, 46) de�nida na variável trailer

representa o �m da imagem.

4.5.9 Extração de arquivos UTF8

Foi implementada a busca de arquivos UTF8 também por meio do número mágico e

da variável trailer. O número mágico de um arquivo UTF8 é representado por (EF, BB,

55

Page 71: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

BF) de�nido na variável magico. A sequencia (0x00, 0x00) de�nida na variável trailer

representa o �m da imagem.

4.5.10 Extração de arquivos DOC

Foi implementada a busca de arquivos DOC também por meio do número mágico e

da variável trailer. O número mágico de um arquivo DOC é representado por (D0, CF,

11, E0) de�nido na variável magico. A sequencia (0x57, 0x6F, 0x72, 0x64, 0x2E, 0x44,

0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x38, 0x00, 0xF4, 0x39, 0xB2, 0x71)

de�nida na variável trailer representa o �m da imagem.

4.6 Experimentos Realizados

4.6.1 Execução e Saída do Programa

O programa do [Bueno, 2007] foi executado através de linhas de comando, conforme

exposto nesse capítulo. A execução do programa pode ser observada abaixo::

Ferramenta forense de extração de imagens JPEG e URLs da área de swap e a�ns.

Armazena as URLs encontradas em um arquivo de texto �swap_urls.txt” e as imagens

encontradas usando nomes variáveis no diretório destino especi�cado.

SINTAXE: PrototipoSwap.jar [OPCOES] [ORIGEM] [DESTINO]

Opcoes

-i extrai imagens JPEG

-u extrai URLs

Origem

Caminho absoluto do arquivo de swap

Destino

Diretorio (pre-existente) para armazenar itens extraidos

Exemplos de uso:

PrototipoSwap.jar -u c:\swapcopy\swap.dd c:\swapcopy\ext_url

PrototipoSwap.jar -i c:\swapcopy\swap.dd c:\swapcopy\ext_jpeg

PrototipoSwap.jar -iu c:\swapcopy\swap.dd c:\swapcopy\extracao

C:\PrototipoSwap\dist> java -jar PrototipoSwap.jar-iu

c:\swapwin\swap.dd c:\swapwin\result

56

Page 72: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

3903 URL(s) extraida(s).

28 imagem(ns) extraida(s).

Como saída do programa é gravado os seguintes arquivos no diretório destino (c:\swapwin\resul):

C:\swapwin\result>dir

O volume na unidade C não tem nome.

O número de série do volume é 44E9-1D64.

Pasta de C:\swapwin\result

13/06/2007 07:24 <DIR> .

13/06/2007 07:24 <DIR> ..

13/06/2007 05:07 524.288 img_rec_122394704.jpg

13/06/2007 05:07 524.288 img_rec_126819489.jpg

13/06/2007 05:07 524.288 img_rec_126819919.jpg

13/06/2007 05:07 524.288 img_rec_126820756.jpg

13/06/2007 05:07 524.288 img_rec_126821186.jpg

13/06/2007 05:07 524.288 img_rec_126838231.jpg

13/06/2007 05:07 524.288 img_rec_126838661.jpg

13/06/2007 05:07 524.288 img_rec_152634684.jpg

13/06/2007 05:07 524.288 img_rec_169684024.jpg

13/06/2007 05:07 524.288 img_rec_169689096.jpg

13/06/2007 05:07 524.288 img_rec_169697168.jpg

13/06/2007 05:07 524.288 img_rec_169709248.jpg

13/06/2007 05:07 524.288 img_rec_178074936.jpg

13/06/2007 05:08 524.288 img_rec_178761740.jpg

13/06/2007 05:08 524.288 img_rec_180715359.jpg

13/06/2007 05:08 524.288 img_rec_189319952.jpg

13/06/2007 05:08 524.288 img_rec_196595701.jpg

13/06/2007 05:08 524.288 img_rec_197001205.jpg

13/06/2007 05:08 524.288 img_rec_197382021.jpg

13/06/2007 05:08 524.288 img_rec_198340485.jpg

13/06/2007 05:08 524.288 img_rec_199358816.jpg

13/06/2007 05:07 524.288 img_rec_48656124.jpg

13/06/2007 05:07 524.288 img_rec_57613979.jpg

13/06/2007 05:07 524.288 img_rec_87146736.jpg

13/06/2007 05:07 524.288 img_rec_88166408.jpg

57

Page 73: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

13/06/2007 05:07 524.288 img_rec_90595301.jpg

13/06/2007 05:07 524.288 img_rec_90678584.jpg

13/06/2007 05:07 524.288 img_rec_91189488.jpg

13/06/2007 05:05 231.658 swap_urls.txt

29 arquivo(s) 14.911.722 bytes

2 pasta(s) 741.470.208 bytes disponíveis

Nas �guras 4.17 e 4.18 seguem dois exemplares de imagens extraídas da área de swap

do programa do [Bueno, 2007].

Figura 4.17: Exemplar de �gura extraída pelo protótipo do Bueno

Figura 4.18: Exemplar de �gura extraída pelo protótipo do Bueno

Abaixo encontra-se um trecho do arquivo swap_urls.txt do programa do [Bueno, 2007]:

http://www.casabrasil.gov.br

http://www.w3.org/2000/09/xmldsig#

http://schemas.xmlsoap.org/soap/envelope/

http://imagine-msn.com/hotmail/tab/default.aspx?locale=en-us

http://schemas.xmlsoap.org/soap/envelope/

https://www.netlock.net/docs

http://www.usertrust.com1604

http://www.usertrust.com1604

http://

58

Page 74: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

http://zone.msn.com/messengertab/?loc=en-us

http://www.entrust.net/CRL/net1.crl0+

http://www.casabrasil.gov.br

http://bmm.imgag.com/bmm/xml/menuitem_us_em_5.xml

http://rad.msn.com/ADSAdClient31.dll?GetAd?PG=IMUSCI

Pode-se perceber que o programa do [Bueno, 2007] extrai somente imagens JPG e

URls, fazendo a extração com muita e�ciência, como foi demonstrado anteriormente. Foi

proposto então, um aperfeiçoamento desse protótipo com algumas funções adicionais.

Será mostrado a seguir como se deu a execução desse protótipo.

Os diversos testes do protótipo foram realizados em um computador equipado com

processador AMD Turion-64 com 2 GB de memória RAM. A fonte de dados foi um tre-

cho da área de swap(500MB)do Windows XP, extraído no Linux por meio dos comandos

Control-C e Control-V.

Executa-se o arquivo jar, nesse caso de nome �Forense_karla.jar” e obtêm-se os se-

guintes resultados para:

Extração de Diretórios

É gerada a seguinte saída (Figura 4.19) com um diretório por linha:

Figura 4.19: Diretórios recuperados

Essa saída é armazenada na pasta �Diretorios” criada automaticamente na execução

do programa, a qual contém um arquivo de texto denominado �swap_Diretorios.txt” que

armazena os diretórios extraídos, um por linha, da swap selecionada. Como pode-se

observar na Figura 4.20.

59

Page 75: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Figura 4.20: Arquivo de texto usado para armazenar os diretórios extraídos

Extração de URLs

É gerada a seguinte saída (Figura 4.21), com uma URL por linha:

Figura 4.21: URLs extraídas

Essa saída é armazenada na pasta �URLs” criada automaticamente na execução do

programa, a qual contém um arquivo de texto denominado �swap_urls.txt” que armazena

as URLs extraídas, uma por linha, da swap selecionada. Como pode-se observar na Figura

4.22.

60

Page 76: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Figura 4.22: Arquivo de texto usado para armazenar as URLS extraídas

Extração de Imagens JPEG

É gerada a seguinte saída (Figura 4.23), com uma imagem JPEG recuperada por linha:

Figura 4.23: Imagens JPEG recuperadas

Essa saída é armazenada na pasta �imagensJPEG” criada automaticamente na execu-

ção do programa, conforme pode-se observar na Figura 4.24.

Figura 4.24: Pasta criada para armazenar imagens JPEG recuperadas

61

Page 77: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

É aberta também uma janela com as miniaturas das imagens recuperadas, conforme

mostra a Figura 4.25.

Figura 4.25: Miniaturas das Imagens JPEG recuperadas

Extração de Imagens GIF

É gerada a seguinte saída (Figura 4.26), com uma imagem recuperada por linha:

Figura 4.26: Imagens GIF recuperadas

Essa saída é armazenada na pasta �imagensGIF”, conforme pode-se observar na Figura

4.27.

Da mesma forma que as imagens JPEG, também é aberta uma janela com as minia-

turas das imagens recuperadas, conforme pode-se observar na Figura 4.28.

62

Page 78: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Figura 4.27: Pasta criada para armazenar imagens GIF recuperadas

Figura 4.28: Miniaturas das Imagens GIF recuperadas

Extração de Imagens PNG

É gerada a seguinte saída (Figura 4.29), com uma imagem PNG recuperada por linha:

Figura 4.29: Imagens PNG recuperadas

63

Page 79: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Essa saída é armazenada na pasta �imagensPNG”, conforme pode-se observar na Fi-

gura 4.30.

Figura 4.30: Pasta criada para armazenar imagens PNG recuperadas

Da mesma forma que as outras imagens, também é aberta uma janela com as minia-

turas das imagens PNG recuperadas, conforme mostra a Figura 4.31.

Figura 4.31: Miniaturas das Imagens PNG recuperadas

Extração de Imagens TIFF

É gerada a seguinte saída (Figura 4.32), com uma imagem TIFF recuperada por linha:

64

Page 80: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Figura 4.32: Imagens TIFF recuperadas

Essa saída é armazenada na pasta �imagensTIFF”, conforme pode-se observar na

Figura 4.33.

Figura 4.33: Pasta criada para armazenar imagens TIFF recuperadas

Também é aberta uma janela com as miniaturas das imagens TIFF recuperadas, con-

forme mostra a Figura 4.34.

Figura 4.34: Miniaturas das Imagens TIFF recuperadas

65

Page 81: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Extração de Arquivos PDF

É gerada a seguinte saída (Figura 4.35), com um arquivo PDF recuperado por linha:

Figura 4.35: Arquivos PDF recuperados

Essa saída é armazenada na pasta �PDF”, conforme pode-se observar na Figura 4.36.

Figura 4.36: Pasta criada para armazenar arquivos PDF recuperados

66

Page 82: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Extração de Arquivos UTF8

É gerada a seguinte saída (Figura 4.37), com um arquivo UTF8 recuperado por linha:

Figura 4.37: Arquivos UTF8 recuperados

Essa saída é armazenada na pasta �UTF8”, conforme pode-se observar na Figura 4.38.

Figura 4.38: Pasta criada para armazenar arquivos UTF8 recuperados

Extração de Arquivos DOC

É gerada a seguinte saída (Figura 4.39), com um arquivo DOC recuperado por linha:

67

Page 83: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Figura 4.39: Arquivos DOC recuperados

Essa saída é armazenada na pasta �DOC”, conforme pode-se observar na Figura 4.40.

Figura 4.40: Pasta criada para armazenar arquivos DOC recuperados

Assim, encerram-se as funções do Protótipo. Pode-se observar que alguns conteúdos

são recuperados com e�ciência e outros não. Por exemplo, arquivos pdf e arquivos Word

não são recuperados com e�ciência por serem muito grandes, então é raro estarem com-

pletos na swap. Ao contrário das imagens; JPEG, GIF e PNG; que são extraídas com

muita e�ciência.

Neste capítulo, foi apresentado um aperfeiçoamento do protótipo de recuperação de

68

Page 84: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

dados na área de swap, desenvolvido pelo ex-aluno Marcos Bueno, no qual foi implemen-

tado além das funções já existentes, as funções de extração de diretórios, extração de

imagens GIF, PNG e TIFF e extração de arquivos PDF, UTF8 e DOC.

Primeiramente foi necessário apresentar uma breve discussão sobre a coleta de dados

na memória principal e como se dá o processo de obtenção do espaço de swap do Win-

dows através do Linux. Além dessa caracterização, foram apresentados os processos para

obtenção das expressões regulares necessárias para a implementação das demais funções

do protótipo.

O protótipo e suas características foram, então, apresentados, e de que forma ele lida

com imagens e arquivos, o que requer a utilização do conceito de número mágico. Uma

limitação percebida foi a extração parcial que é feita pelo protótipo, mas para a Forense

é considerado uma valiosa fonte de informação.

Existem ainda algumas melhorias que podem ser realizadas no protótipo que serão

mencionadas no Capítulo 5, podendo servir de base para uma ferramenta mais abrangente

e e�ciente de perícia forense na área de swap ou áreas a�ns.

69

Page 85: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Capítulo 5

Considerações Finais

No atual contexto em que vivemos está claro que o papel da investigação forense é

fundamental para permitir uma sociedade mais justa e cienti�camente capaz de tratar

de crimes realizados por meio de um computador. Esse ramo da criminalística é recente

e, por isso, cresce expressivamente, tanto em uso como em evolução como ciência. Por

outro lado, sofre da falta de padrões, especialmente quando comparado a outros ramos

já consagrados da ciência forense, como a Psicologia Forense ou a Medicina Forense, os

quais são praticados a muito mais tempo.

Por tratar-se de uma área extremamente técnica, a computação forense exige um

estudo permanente e aprofundado de muitos aspectos da informática, sendo necessário

um acompanhamento constante, tanto das tecnologias envolvidas quanto das técnicas

mais utilizadas nos crimes eletrônicos.

A análise e a perícia de computadores que tenham passado por algum tipo de violação

ou ataque têm diversos aspectos relevantes. Primeiramente, ela é importante porque

permite que se entenda o que aconteceu, de forma a corrigir falhas que tenham sido

cometidas no processo. Em segundo lugar, ao olharmos para o passado, interpretando o

que aconteceu, pode ser possível coletar evidências necessárias a identi�car o atacante, de

tal forma que possam ser adotadas medidas legais ou jurídicas pertinentes.

Para realizar perícias forenses computacionais com e�ciência é necessário conhecer e

estabelecer procedimentos con�áveis, bem como documentá-los e auxiliá-los com ferra-

mentas seguras. Uma questão fundamental é que os resultados têm de ser con�áveis e

devem seguir uma cadeia rigorosa de procedimentos, a �m de que possam servir como

prova em um caso criminal. Além disso, as provas coletadas têm de estar à disposição

para novos esclarecimentos ou perícias, assim como ocorre em todas as áreas das ciências

do crime.

Neste trabalho, foi feito um estudo das diversas fontes de informação em um compu-

tador, como sistemas de arquivos, arquivos de log, memória, área de swap, etc. Foram

apresentados diversos aspectos dessas fontes, tendo em mente quais evidências podem ser

70

Page 86: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

extraídas e de que forma.

Um ponto importante desse trabalho foi o estudo das principais vulnerabilidades de

segurança encontradas nos sistemas operacionais Windows e Linux. Essas vulnerabilida-

des podem ser encontradas através de ferramentas disponíveis publicamente na Internet

ou desenvolvida pelo próprio atacante.

Para que o trabalho com a forense computacional seja respeitado, é necessário ter

conhecimento das ferramentas de investigação computacional e que o perito seja capaz de

levantar hipóteses que possibilitarão supor ou a�rmar o que aconteceu, ou está ou poderá

acontecer. Neste trabalho, são citadas apenas algumas ferramentas computacionais, mas

existem outras no mercado com o mesmo intuito ou melhores.

O protótipo desenvolvido, consiste em uma implementação melhorada de uma ferra-

menta de recuperação de dados na área de swap desenvolvida pelo ex-aluno [Bueno, 2007].

As di�culdades encontradas no decorrer desse protótipo foram relacionadas ao processo

de extração de arquivos, pois sendo a swap uma área de armazenamento de informações

temporária, muitos dados não são armazenados, e as vezes quando são armazenados são

grandes demais e �cam fragmentados. Mas, mesmo assim a swap constitui uma valiosa

fonte de informação forense.

5.1 Trabalhos Futuros

Para trabalhos futuros têm-se:

• A perspectiva de ampliação do protótipo, no intuito de implementar a extração de

outros tipos de informação, como outros tipos de imagens, arquivos MP3, bytecodes

Java, códigos fonte de linguagens de programação, etc.

• Melhorar a e�ciência do programa, seja por meio da adoção de linguagens de pro-

gramação mais rápidas ou pelo uso de estruturas de programação mais e�cientes.

• Lidar com a fragmentação presente na área de swap.

• Melhorar o processo de extração de arquivos, além da swap, investigar outras fontes

de informação.

• Realizar um comparativo de e�ciência das principais ferramentas de investigação

computacional encontradas atualmente no mercado.

Em suma, a forense computacional é um tema bastante atual e que tem recebido

atenção signi�cativa tanto da comunidade cientí�ca quanto da indústria, principalmente

devido aos inúmeros crimes de tecnologia ocorridos.

71

Page 87: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Espera-se que este trabalho sirva de incentivo para futuras pesquisas sobre forense

computacional, vulnerabilidades de segurança nos Sistemas Operacionais, e especialmente

na recuperação de dados na área de swap.

72

Page 88: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Referências

Andrade, T. F. d. (2005). PERÍCIA FORENSE COMPUTACIONAL BASEADA EM

SISTEMA OPERACIONAL WINDOWS. Disponível em: http://www.batori.com.

br/downloads/trabalhosacademicos/periciaforensecomputacional.pdf. Acesso

em 29/03/2009.

Atilio, C., Cansian, A., e Siqueira, T. A. (2003). Análise Dinâmica de Código Malicioso

Baseado em Sistemas Windows: Conceitos e Procedimentos.

Bueno, M. L. d. P. (2007). Forense Computacional: Técnicas e Ferramentas.

Cagnani, C. e Santos, V. d. D. d. (2008). Computação Forense: Fundamentos. Disponí-

vel em: http://pt.scribd.com/doc/47774532/computacao-forense-fundamentos.

Acesso em 17/08/10.

Calazans, C. H. e Calazans, S. M. (2001). Ciência Forense: das Origens à Ciên-

cia Forense Computacional. Disponível em: http://pt.scribd.com/doc/51494536/

Ciencia-Forense-Das-origens-a-forense-computacional. Acesso em 10/06/2009.

Cansian, A. M. (2001). Conceitos para perícia forense computacional. Disponível em:

http://www.acmesecurity.org/~adriano/docs/eri2001/artigo-adr-icmc-2001.

pdf. Acesso em 13/06/2010.

CERT (2006). Crimes Cibernéticos Manual Prático de Investigação. Editora MPF.

Deitel (2005). Java Como Programar. Editora Prentice-Hall.

Farmer, D. e Venema, W. (2007). Perícia Forense Computacional Teoria e Prática Apli-

cada. Editora Pearson.

Freitas, A. R. d. (2006). Perícia Forense Aplicada à Informática. Editora Brasport.

Noblett, M. G., Pollitt, M. M., e Presley, L. A. (2000). Recovering and Examining

Computer Forensic Evidence.

Oliveira, F. d. S. (2002). Resposta a Incidentes e Análise Forense para Redes Baseadas

em Windows 2000. Disponível em: http://www.las.ic.unicamp.br/paulo/teses/

20021121-MSc-Flavio.Oliveira-Resposta.a.incidentes.e.analise.forense.

para.redes.baseadas.em.Windows.2000.pdf. Acesso em 05/09/2010.

Pereira, E., Fagundes, L. L., Neukamp, P., Ludwig, G., e Konrath, M. (2007).

Forense Computacional: fundamentos, tecnologias e desa�os atuais. Disponível

73

Page 89: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

em: http://www.ppgia.pucpr.br/~maziero/static/ceseg/sbseg07/minicursos/

cap1-forense.pdf. Acesso em 02/10/2010.

Pimenta, F. A. (2007). Perícia forense computacional baseada em sistema operacional

Windows XP Professional. Disponível em: http://pt.scribd.com/doc/55358550/

Pericia-forense-computacional-baseada-em-sistema-operacional-Windows-XP

-Professional. Acesso em 27/10/2009.

Pinto, S. A. (2003). Introduçao a Linguagem Java. Disponível em: www.conquista.

cefetba.br/stenio/java.pdf,Unicamp. Acesso em 03/10/2010.

Reis, M. A. d. e Geus, P. L. d. (2001). Forense Computacional: Procedimen-

tos e Padrões. Disponível em: http://www.las.ic.unicamp.br/paulo/papers/

2001-SSI-marcelo.reis-forense.padroes.pdf. Acesso em 25/05/2009.

Rodrigues, W. d. P. (2004). ANÁLISE PERICIAL EM SISTEMA OPERACIONAL

MS-WINDOWS 2000. Disponível em: http://www2.dc.uel.br/nourau/document/

?down=169. Acesso em 22/03/2010.

SANS, T. I. (2002). As 20 Vulnerabilidades de Segurança Mais Críticas na Internet.

Silberschatz, Galvin, e Gagne (2001). Sistemas Operacionais: conceitos e aplicações.

Editora Campus.

Tanenbaum, A. S. (2003). Sistemas Operacionais Modernos. Editora Prentice-Hall.

Tavares, D. (2007). Forense Computacional. Disponível em: http://www.dsc.

ufcg.edu.br/~pet/atividades/ciclo_seminarios/tecnicos/2007/Forense_

Computacional.pdf. Acesso em 10/06/2011.

Vargas, R. (2007). Perícia Forense Computacional - Ferramentas Periciais. Dispo-

nível em: http://imasters.uol.com.br/artigo/6485/forense/pericia_forense_

computacional_ferramentas_periciais/. Acesso em 25/06/2009.

ZAGO (2007). log - obter informações do sistema, processos e hardware. Disponível em:

http://www.zago.eti.br/log.html. Acesso em 24/08/2009.

74

Page 90: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

Apêndice A

Código fonte

A.1 Classe Janela

package forensekarla;

import com.sun.corba.se.impl.orbutil.closure.Constant;

import java.awt.FileDialog;

import java.io.File;

import java.io.FilenameFilter;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.SwingWorker;

public final class Janela extends javax.swing.JFrame {

final static int stc_urls = 1;

final static int stc_jpg = 2;

final static int stc_png = 3;

final static int stc_tiff = 4;

final static int stc_gif = 5;

final static int stc_diretorios = 6;

final static int stc_pdf = 7;

final static int stc_utf8 = 8;

final static int stc_doc = 9;

75

Page 91: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

String diretorioImagensJPEG = "imagensJPEG";

String diretorioImagensPNG = "imagensPNG";

String diretorioImagensTIFF = "imagensTIFF";

String diretorioImagensGIF = "imagensGIF";

String diretorioURLs = "URLs";

String diretorioPDF = "PDF";

String diretorioUTF8 = "UTF8";

String diretorioDOC = "DOC";

//String diretorioDiretorios = "C:\\swap\\Diretorios";

String diretorioDiretorios = "Diretorios";

JFrame janelaArquivo = null;

String diretorioArquivo = "";

ArquivoSwap arq;

File diretorioacriar;

//Cria uma nova Janela

public Janela() {

initComponents();

setExtendedState(MAXIMIZED_BOTH);

//criar pasta JPEG

criarDiretorio(diretorioImagensJPEG);

//criar pasta PNG

criarDiretorio(diretorioImagensPNG);

//criar pasta TIFF

criarDiretorio(diretorioImagensTIFF);

//criar pasta GIF

criarDiretorio(diretorioImagensGIF);

//criar pasta Diretorios

criarDiretorio(diretorioDiretorios);

//criar pasta URL

criarDiretorio(diretorioURLs);

//criar pasta PDF

criarDiretorio(diretorioPDF);

76

Page 92: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

//criar pasta UTF8

criarDiretorio(diretorioUTF8);

//criar pasta DOC

criarDiretorio(diretorioDOC);

}

//cria um diretorio

public void criarDiretorio(String localcriacao){

diretorioacriar= new File(localcriacao);

if (!diretorioacriar.mkdir()) {

System.out.println("O diretorio nao foi criado -> "

+ localcriacao);

} else {

System.out.println("Diretorio criado com sucesso -> "

+ localcriacao) ;

}

}

//executa a extração

private void executar(final int opcao) {

if (diretorioArquivo.length() != 0) {

final Progress p = new Progress();

p.setAlwaysOnTop(true);

p.setVisible(true);

SwingWorker worker = new SwingWorker() {

@Override

protected Object doInBackground() throws Exception {

// função que irá demorar algum tempo

executaCodigoExtracao(opcao);

return null;

}

@Override

77

Page 93: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

protected void done() {

p.setVisible(false);

}

};

worker.execute();

} else {

JOptionPane.showMessageDialog(null, "Erro ao localizar arquivo

swap", "Erro", JOptionPane.ERROR_MESSAGE);

}

}

//executa URLs, imagens, arquivos e diretórios

private void executaCodigoExtracao(int opcao) {

switch (opcao) {

case stc_urls:

//cria o objeto da classe de extração de URLs passando como

//parâmetro a referencia da classe Janela (o this)

ExtratorURL ext = new ExtratorURL(this);

ext.extraiURL(arq, diretorioURLs);

break;

case stc_jpg:

//cria o objeto da classe de extração de imagens JPEG passando

// como parâmetro a referencia da classe Janela (o this)

JPEG jpeg = new JPEG(this, arq, diretorioImagensJPEG);

break;

case stc_png:

//cria o objeto da classe de extração de imagens PNG passando

//como parâmetro a referencia da classe Janela (o this)

PNG png = new PNG(this, arq, diretorioImagensPNG);

break;

case stc_tiff:

//cria o objeto da classe de extração de imagens TIFF passando

//como parâmetro a referencia da classe Janela (o this)

TIFF tiff = new TIFF(this, arq, diretorioImagensTIFF);

break;

case stc_gif:

//cria o objeto da classe de extração de imagens GIF passando

78

Page 94: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

//como parâmetro a referencia da classe Janela (o this)

GIF gif = new GIF(this, arq, diretorioImagensGIF);

break;

case stc_diretorios:

//cria o objeto da classe de extração de Diretorios passando

//como parâmetro a referencia da classe Janela (o this)

ExtratorDiretorios dirs = new ExtratorDiretorios(this);

dirs.extraiDiretorios(arq, diretorioDiretorios);

break;

case stc_pdf:

//cria o objeto da classe de extração de arquivos pdf passando

//como parâmetro a referencia da classe Janela (o this)

PDF pdf = new PDF(this, arq, diretorioPDF);

break;

case stc_utf8:

//cria o objeto da classe de extração de arquivos UTF8 passando

// como parâmetro a referencia da classe Janela (o this)

UTF8 utf8 = new UTF8(this, arq, diretorioUTF8);

break;

case stc_doc:

//cria o objeto da classe de extração de arquivos DOC passando

// como parâmetro a referencia da classe Janela (o this)

DOC doc = new DOC(this, arq, diretorioDOC);

break;

}

}

//Abre a janela para selecionar o arquivo de swap

public String localizaArquivosSwap() {

FileDialog Fabrir;

Fabrir = new FileDialog(this, "Abrir arquivo", FileDialog.LOAD);

String nomeArq = "";

try {

Fabrir.setVisible(true);

if (Fabrir.getFile() != null) {

79

Page 95: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

nomeArq = Fabrir.getDirectory() + Fabrir.getFile();

Status.setText("Diretório: " + nomeArq);

}

} catch (Exception e) {

e.printStackTrace();

}

return nomeArq;

}

}

A.2 Classe ArquivoSwap

package forensekarla;

import java.io.*;

public class ArquivoSwap {

private File swap;

private InputStream inBuffer = null;

private BufferedReader reader = null;

private String arquivo = null;

//Metodo construtor da classe, prepara o arquivo de swap para seu uso

public ArquivoSwap(String arquivo) {

this.arquivo = arquivo;

carregarSwap();

}

// carrega o arquivo de swap no buffer deixando-o pronto para o uso

public void carregarSwap(){

swap = new File(arquivo);

try {

inBuffer = new BufferedInputStream(new FileInputStream(arquivo));

// para classe de Exp. Reg.

80

Page 96: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

reader = new BufferedReader(new FileReader(arquivo));

} catch (IOException e) {

System.out.println("erro de I/O");

}

}

//verifica se a swap esta pronta para ser lida

public boolean readerEstaPronto() {

try {

return reader.ready();

} catch (IOException e) {

System.out.println("erro de I/O");

}

return false; // erro

}

//faz a leitura da swap

public int leSwap() {

try {

return (inBuffer.read());

} catch (IOException e) {

System.out.println("erro de I/O");

}

return (-2); // erro

}

//marca posição de leitura

public void marcaPosicao(int pos) {

try {

inBuffer.mark(pos);

inBuffer.reset();

} catch (IOException e) {

System.out.println("erro de I/O");

}

}

//retorna posição

public void retornaPosicao() {

81

Page 97: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

try {

inBuffer.reset();

} catch (IOException e) {

System.out.println("erro de I/O");

}

}

//fecha stream

public void fechaStream() {

try {

if (inBuffer != null) {

inBuffer.close();

}

} catch (IOException e) {

System.out.println("erro de I/O");

}

}

//fecha Reader

public void fechaReader() {

try {

reader.close();

} catch (IOException e) {

System.out.println("erro de I/O");

}

}

//faz a leitura das linhas

public String leLinha() {

try {

return reader.readLine();

} catch (IOException e) {

System.out.println("erro de I/O");

}

return (" -1"); // erro

}

public void setSwap(File arq) {

82

Page 98: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

swap = arq;

}

public File getSwap() {

return swap;

}

//verifica se ainda existem bytes para serem lidos

public long bytesDisponiveis() {

try {

return inBuffer.available();

} catch (IOException e) {

System.out.println("erro de I/O");

}

return (-1);

}

public InputStream getBufferEntrada() {

return inBuffer;

}

}

A.3 Classe ArquivoSaida

package forensekarla;

import java.io.*;

public class ArquivoSaida {

private File out;

private OutputStream outBuffer = null;

private PrintWriter pw = null;

//gera o arquivo de saida

public ArquivoSaida(String saida) {

out = new File(saida);

83

Page 99: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

try {

out.createNewFile();

outBuffer = new BufferedOutputStream(

new FileOutputStream(out));

pw = new PrintWriter(outBuffer);

} catch (IOException e) {

System.out.println("erro de I/O");

}

}

//escreve no arquivo

public void escreveNoArquivo(int valor) {

try {

outBuffer.write(valor);

} catch (IOException e) {

System.out.println(e.getMessage());

}

}

public void flushEscrita() {

pw.flush();

}

//imprime a linha do arquivo

public void imprimeLinha(String saida) {

pw.println(saida);

}

//fecha a stream de saída

public void fechaStream() {

try {

if (outBuffer != null) {

outBuffer.close();

}

} catch (IOException e) {

System.out.println("erro de I/O");

}

}

84

Page 100: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

}

A.4 Classe BuscadorNumeroMagico

package forensekarla;

public class BuscadorNumeroMagico {

private int[] numeroMagico;

public BuscadorNumeroMagico(int[] nm) {

numeroMagico = nm;

}

public void setNumeroMagico(int[] nm) {

numeroMagico = nm;

}

public int[] getNumeroMagico() {

return numeroMagico;

}

/* 'onde_encontrou' tem que ser -1 no INICIO. O valor zero nao deve ser

* usado pois ele pode ser atribuido á variável caso exista a primeira

* ocorrencia do n.m., isto eh, nm[0] casar com a primeira posicao do

*/arquivo de swap posicao (zero)

public long buscaNumeroMagico(ArquivoSwap swap) {

long onde_encontrou = -1;

int byteLido;

// variavel para contagem de correspondência entre NM e a Swap

// apartir do primeiro casamento

int j = 1;

while (true) {

byteLido = swap.leSwap();

if (byteLido == -1) {

return (-1);

}else if (byteLido == numeroMagico[0]) {//encontrou primeira ocorrencia

swap.marcaPosicao(numeroMagico.length);

85

Page 101: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

onde_encontrou = swap.getSwap().length()

-swap.bytesDisponiveis()-1;

//laço para verificar se as proximas ocorrencias do numero magico

//batem com os proximos bytes lidos da swap

while (j < numeroMagico.length && numeroMagico[j] == swap.leSwap()){

j++;

}

/*nao chegou a encontrar o n.m. completo, esse teste if é necessário

*para não permitir que a soma de NM incompletos incremente a variavel

*j ate que ela atinja o comprimento de nm.length, o que causaria uma

*falsa ocorrencia de n.m. retornada logo abaixo do if

if (j < numeroMagico.length) {

j = 1;

swap.retornaPosicao();

} /*encontrou n.m. completo*/ else if (j == numeroMagico.length) {

return onde_encontrou;

}

}//if

}//while

}

}

A.5 Classe BuscarArquivos

package forensekarla;

import java.io.IOException;

import java.io.RandomAccessFile;

import java.util.Vector;

public class BuscarArquivos {

private int[] magico;

private int[] trailer;

private int dumpSize;

86

Page 102: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

private String tipoImagem;

ArquivoSwap swap;

String destino;

Janela janela;

private String[] localizacoesImagens;

private Vector localizacoes;

private boolean usarTrailer = false;

private int byteCorrente;

private int posTrailer;

public BuscarArquivos(Janela janela, ArquivoSwap swap, String destino) {

this.janela = janela;

this.swap = swap;

this.destino = destino;

}

public void setVariaveis(int[] magico, int[] trailer, int dumpSize,

String tipoImagem, boolean usarTrailer) {

this.dumpSize = dumpSize;

this.magico = magico;

this.trailer = trailer;

this.tipoImagem = tipoImagem;

this.usarTrailer = usarTrailer;

}

/* Varre a swap e retorna as localizações dos itens identificados

* conforme o número mágico (por exemplo, caso o número mágico

* for para identificar imagens JPEG, o método retornará todas

* as localizações das imagens JPEG

*/

public long[] localizaTodasOcorrencias() {

//abri novamente o strem caso tenho sido fechado

swap.carregarSwap();

BuscadorNumeroMagico b = new BuscadorNumeroMagico(magico);

int quant = 0; // quantindade de NM encontrados

long[] pos = new long[500];

87

Page 103: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

//limpa o array de posições

for (int i = 0; i < pos.length; i++)//limpando array de posiçoes

{

pos[i] = -1;

}

//tenta localizar na swap o primeiro número mágico(caso o resultado

//seja -1, significa que chegou no fim do arquivo)

pos[quant] = b.buscaNumeroMagico(swap);

// enquanto não tiver chegado no fim do arquivo, busca localizações

// do número mágico

while (pos[quant] != -1) {

quant++;

pos[quant] = b.buscaNumeroMagico(swap);

}

return pos;

}

/* Copia os arquivos da swap contidas no array localizações

* para o diretório de destino

*/

public String[] copiaArquivos() {

long[] pos;

pos = localizaTodasOcorrencias();

int count = 0;

localizacoes = new Vector();

janela.areaTexto.setText("");

try {

RandomAccessFile raf = new RandomAccessFile(swap.getSwap(),

"r");

88

Page 104: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

for (int i = 0; i < pos.length; i++) {

if (pos[i] == -1) {//fim

swap.fechaStream();

janela.areaTexto.append("\n" + i + " arquivo(s)

extraido(s).");

break;

}else {

ArquivoSaida out = new ArquivoSaida(destino + swap.getSwap().

separator + "arq_recup_" + pos[i] + "." + tipoImagem);

raf.seek(pos[i]);//posiciona o cabeçote leitura no começo do NM

localizacoes.add(destino + swap.getSwap().separator + "arq_recup_"

+ pos[i] + "." + tipoImagem);

janela.areaTexto.append("\n" + localizacoes.lastElement().toString());

for (int j = 0; j < dumpSize; j++) {

byteCorrente = raf.read();

out.escreveNoArquivo(byteCorrente);

//posição do byte do array trailer

posTrailer = 0;

//procura fim do arquivo (trailer)

while (usarTrailer && posTrailer < trailer.length &&

byteCorrente == trailer[posTrailer]) {

System.out.println("bytecorrente: " + byteCorrente);

System.out.println("posTrailer: " + posTrailer);

System.out.println("trailer[posTrailer]: " + trailer

[posTrailer]);

byteCorrente = raf.read();

posTrailer++;

//para nao escrever o ultimo byte

if (posTrailer < trailer.length) {

out.escreveNoArquivo(byteCorrente);

}

89

Page 105: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

}//fim while

//fim do arquivo

if (posTrailer == trailer.length) {

break;

}

}// fim for

out.fechaStream();

}//else

}//for

localizacoesImagens = new String[localizacoes.size()];

localizacoes.copyInto(localizacoesImagens);

} catch (IOException e) {

System.out.println("erro de I/O");

}

System.err.print("finalizou");

return localizacoesImagens;

}

}

A.6 Classe Progress

package forensekarla;

import java.awt.Dimension;

import java.awt.Toolkit;

import javax.swing.JDialog;

import javax.swing.JProgressBar;

public class Progress extends JDialog {

public Progress( ) {

90

Page 106: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

this.setTitle("Aguarde...");

setModal(false);

JProgressBar progress = new JProgressBar();

progress.setIndeterminate(true);

progress.setSize(200,20);

getContentPane().add(progress);

pack();

Dimension tela = Toolkit.getDefaultToolkit().getScreenSize();

this.setLocation((tela.width - this.getSize().width) / 2,

(tela.height - this.getSize().height) / 2);

}

}

A.7 Classe ExtratorDiretorios

package forensekarla;

import java.util.regex.*;

import java.io.*;

public class ExtratorDiretorios {

private String regex = null;

private Janela janela;

public ExtratorDiretorios(Janela janela) {

this.janela = janela;

//regex = "(http|hppts|ftp|news|file)://[!-^&&[^<\">]]*";

//regex = "[A-Z]\\s?:\\s?\\\\\\s?(([\\d\\w])+\\s?)*";

// regex = "[A-Z]\\s?:\\s?\\\\\\s?(([\\d\\w\\p{Punct}])+\\s?)*";

regex = "[A-Z]\\s?:\\s?\\\\\\s?(([\\d\\w\\p{Punct}&&[^,;`\"]])+\\s?)*";

}

public void extraiDiretorios(ArquivoSwap swap, String destino) {

//abre novamente o stream caso tenho sido fechado

swap.carregarSwap();

91

Page 107: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

String input = null;

long cont = 0;//contador de linhas

//determinando onde será criado o arquivo destino

//ArquivoSaida out = new ArquivoSaida(destino + swap.getSwap().separator

+ "swap_Diretorios.txt");

ArquivoSaida out = new ArquivoSaida(destino + File.separator+

"swap_Diretorios.txt");

System.out.println(destino + swap.getSwap().separator + "swap_Diretorios.txt");

//limpar a area texto

janela.areaTexto.setText("");

Pattern pregex = Pattern.compile(regex);

Matcher m = pregex.matcher("");

while (true) {

if(!swap.readerEstaPronto()) {//nao há mais linhas para ler

swap.fechaReader();

out.flushEscrita();

out.fechaStream();

janela.areaTexto.append("\n" + cont + " diretorios(s) extraido(s).");

break;

else {

input = swap.leLinha();

m = pregex.matcher(input);

if (m.find() ){ //&& !(m.group().trim().contains((CharSequence) "WINDOWS")))

{ //&& !(m.group().trim().equals("http://")) && !(m.group().trim().

equals("ftp://")) && !(m.group().trim().equals("file://"))) {

//if (m.find() && (m.group().trim().contains((CharSequence) ".")) ) {

out.imprimeLinha(m.group());//escreve a URL no arquivo destino

//imprime na tela os diretórios

janela.areaTexto.append("\n" + m.group() );

cont++;

92

Page 108: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

}//if

}//else

}//while

swap.fechaStream();

}//fim do metodo

}

A.8 Classe ExtratorURL

package forensekarla;

import java.util.regex.*;

import java.io.*;

public class ExtratorURL {

//expressão regular

private String regex = null;

Janela janela;

public ExtratorURL(Janela janela) {

this.janela = janela;

regex = "(http|https|ftp|news|file)://[!-^&&[^<\">]]*";

}

/*Metodo para extrair URLs do arquivo Swap e exibe as URLs na Janela

*/

public void extraiURL(ArquivoSwap swap, String destino) {

//abre novamente o stream caso tenho sido fechado

swap.carregarSwap();

String input = null;

/*contador de linhas*/

long cont = 0;

93

Page 109: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

/*determinando onde será criado o arquivo destino*/

ArquivoSaida out = new ArquivoSaida(destino + swap.getSwap().

separator+ "swap_urls.txt");

//compila a expressão regular

Pattern pregex = Pattern.compile(regex);

Matcher m = pregex.matcher("");

// limpa area texto da janela

janela.areaTexto.setText("");

System.out.println("inicio..");

while (true) {

//verifica se nao há mais linhas para ler (chegou no fim do arquivo)

if (!swap.readerEstaPronto()) {

swap.fechaReader();

out.flushEscrita();

out.fechaStream();

System.out.println("fim..");

janela.areaTexto.append("\n" + cont + " URL(s) extraida(s).");

break;

} else {

input = swap.leLinha();

//aplicar a expressão regular na linha lida da swap

m = pregex.matcher(input);

// caso encontrou a expressão regular..

if (m.find() && !(m.group().trim().equals("http://"))

&& !(m.group().trim().equals("ftp://"))

&& !(m.group().trim().equals("file://"))&& !(m.group().

trim().equals("https://"))) {

//if (m.find() && (m.group().trim().contains((CharSequence)

".")) ) {

//escreve a URL no arquivo destino

out.imprimeLinha(m.group());

janela.areaTexto.append("\n" +m.group().trim());

94

Page 110: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

cont++;

}//if

}//else

}//while

System.out.println("fim..");

swap.fechaStream();

}//fim do metodo

}

A.9 Classe JanelaFotos

package forensekarla;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.Label;

import java.awt.Scrollbar;

import java.awt.geom.AffineTransform;

import java.awt.image.BufferedImage;

import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollBar;

import javax.swing.JScrollPane;

import javax.swing.ScrollPaneConstants;

public class JanelaFotos extends JFrame {

private JLabel labels[];

95

Page 111: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

/* Metodo construtor. Irá montar um janela com as imagens (em miniatura)

* cujas localizações foram passadas no array "localizações"

*/

public JanelaFotos ( String[] localizacoes, String tipoArquivo){

super("Miniatura das imagens " + tipoArquivo);

//setLayout(new FlowLayout());

Icon icon;

JPanel painel = new JPanel();

JScrollPane barra;

int valor = (int) Math.sqrt(localizacoes.length);

painel.setBackground(Color.WHITE);

labels = new JLabel[localizacoes.length];

for(int i=0; i<localizacoes.length; i++){

icon = new ImageIcon(localizacoes[i]);

labels[i] = new JLabel();

labels[i].setIcon(diminuiFoto((ImageIcon) icon));

painel.add(labels[i]);

//painel.add(barra);

// barra.add(painel);

painel.setLayout(new FlowLayout());

painel.setPreferredSize( new Dimension( valor * 150, valor * 150));

barra = new JScrollPane(painel);

//JScrollBar barra2 = new JScrollBar(painel);

barra.setVerticalScrollBarPolicy(ScrollPaneConstants.

VERTICAL_SCROLLBAR_ALWAYS);

barra.setHorizontalScrollBarPolicy(ScrollPaneConstants.

HORIZONTAL_SCROLLBAR_ALWAYS);

//barra = barra.createHorizontalScrollBar();

//janela.Painel_Imagens.add(labels);

add(barra);

}

96

Page 112: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

}

/* Estabelece um tamanho único para as imagens (fotos em ImageIcon)

*/

private ImageIcon diminuiFoto(ImageIcon icon) {

ImageIcon iconeFoto = null;

//int maxDim = 230;

int maxDim = 130;

try {

Image inImage = icon.getImage();

double scale = (double) maxDim / (double) inImage.getHeight(null);

if (inImage.getWidth(null) > inImage.getHeight(null)) {

scale = (double) maxDim / (double) inImage.getWidth(null);

}

int scaleW = (int) (scale * inImage.getWidth(null));

int scaleH = (int) (scale * inImage.getHeight(null));

BufferedImage outImage = new BufferedImage(scaleW, scaleH,

BufferedImage.TYPE_INT_RGB);

AffineTransform tx = new AffineTransform();

if (scale < 1.0d) {

tx.scale(scale, scale);

}

Graphics2D g2d = outImage.createGraphics();

g2d.drawImage(inImage, tx, null);

g2d.dispose();

iconeFoto = new ImageIcon(outImage);

} catch (Exception e) {

97

Page 113: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

e.printStackTrace();

}

return iconeFoto;

}

}

A.10 Classe JPEG

package forensekarla;

import javax.swing.JFrame;

public class JPEG extends BuscarArquivos {

// JPEG image files begin with FF D8 and end with FF D9.

private int[] magico = {0xFF, 0xD8, 0xFF, 0xE0};

private int[] trailer = {0xFF, 0xD9};

private int dumpSize = 1024 * 256; //256KB

String tipoImagem = "jpg";

boolean usarTrailer = true;

public JPEG(Janela janela, ArquivoSwap swap, String destino) {

super(janela, swap, destino);

iniciarExtracao();

}

//método de extração de JPEG

private void iniciarExtracao() {

setVariaveis(magico, trailer, dumpSize, tipoImagem, usarTrailer);

String[] localizacoes = copiaArquivos();

JanelaFotos prep = new JanelaFotos(localizacoes, "JPEG");

prep.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

prep.setLocation(0, 70);

prep.setSize(800, 450);

prep.setVisible(true);

}

}

98

Page 114: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

A.11 Classe GIF

package forensekarla;

import javax.swing.JFrame;

public class GIF extends BuscarArquivos {

/*GIF image files have the ASCII code for "GIF89a" (47 49 46 38 39 61)

*or "GIF87a" (47 49 46 38 37 61)

*define que irá terminar com (00 3B)

*/

// private int[] magico = {0x47 , 0x49 , 0x46 , 0x38 , 0x37 , 0x61};

private int[] magico = {0x47 , 0x49 , 0x46 , 0x38 , 0x39 , 0x61};

private int[] trailer = {0x00, 0x3B};

private int dumpSize = 1024 * 256; //256KB

String tipoImagem = "gif";

boolean usarTrailer = true;

public GIF(Janela janela, ArquivoSwap swap, String destino) {

super(janela, swap, destino);

iniciarExtracao();

}

//método de extração de GIF

private void iniciarExtracao() {

setVariaveis(magico, trailer, dumpSize, tipoImagem, usarTrailer);

String[] localizacoes = copiaArquivos();

JanelaFotos prep = new JanelaFotos(localizacoes, "GIF");

prep.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

prep.setLocation(0, 70);

prep.setSize(500, 500);

prep.repaint();

prep.setVisible(true);

}

}

99

Page 115: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

A.12 Classe PNG

package forensekarla;

import java.util.Locale;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

public class PNG extends BuscarArquivos {

/* PNG image files have the code

* (89 50 4E 47 0D 0A 1A 0A).

*/ defini que termina com 4E 44 AE 42 60 82

private int[] magico = {0x89, 0x50 , 0x4E , 0x47 , 0x0D , 0x0A , 0x1A , 0x0A};

private int[] trailer = {0x4E ,0x44 ,0xAE ,0x42 ,0x60 ,0x82};

private int dumpSize = 1024 * 256; //256KB

boolean usarTrailer = true;

String tipoImagem = "png";

public PNG(Janela janela, ArquivoSwap swap, String destino) {

super(janela, swap, destino);

this.janela = janela;

iniciarExtracao();

}

//método para extração de imagens PNG

private void iniciarExtracao(){

setVariaveis(magico, trailer,dumpSize, tipoImagem, usarTrailer);

String[] localizacoes = copiaArquivos();

JanelaFotos prep = new JanelaFotos( localizacoes, "PNG");

prep.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

prep.setLocation(0,70);

prep.setSize(600, 600);

prep.repaint();

prep.setVisible(true);

100

Page 116: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

}

}

A.13 Classe TIFF

package forensekarla;

import javax.swing.JFrame;

public class TIFF extends BuscarArquivos {

/*TIFF files begin with either II or MM followed by 42 as a two-byte integer

* in little or big endian byte ordering. II was for Intel which uses little

*/ endian byte ordering, so the magic number is 49 49 2A 00.

private int[] magico = {0x49, 0x49, 0x2A, 0x00};

private int[] trailer = {0x00, 0x00};

private int dumpSize = 1024 * 256; //256KB

String tipoImagem = "tif";

boolean usarTrailer = false;

public TIFF(Janela janela, ArquivoSwap swap, String destino) {

super(janela, swap, destino);

iniciarExtracao();

}

//método de extração de imagens TIFF

private void iniciarExtracao() {

setVariaveis(magico, trailer, dumpSize, tipoImagem, usarTrailer);

String[] localizacoes = copiaArquivos();

JanelaFotos prep = new JanelaFotos(localizacoes, "TIFF");

prep.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

prep.setLocation(0, 70);

prep.setSize(800, 450);

prep.setVisible(true);

}

}

101

Page 117: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

A.14 Classe PDF

package forensekarla;

import javax.swing.JFrame;

public class PDF extends BuscarArquivos {

/* PDF files start with "%PDF" (25 50 44 46).

*/ termina com %%EOF( 25 25 45 4F 46)

private int[] magico = {0x25, 0x50, 0x44, 0x46};

private int[] trailer = {0x25, 0x25, 0x45, 0x4F, 0x46};

private int dumpSize = 1024 * 256; //256KB

String tipoImagem = "pdf";

boolean usarTrailer = true;

public PDF(Janela janela, ArquivoSwap swap, String destino) {

super(janela, swap, destino);

iniciarExtracao();

}

/*método para extração de PDF

private void iniciarExtracao() {

setVariaveis(magico, trailer, dumpSize, tipoImagem, usarTrailer);

copiaArquivos();

}

}

A.15 Classe UTF8

package forensekarla;

import javax.swing.JFrame;

public class UTF8 extends BuscarArquivos {

/*UTF-8 text files often start with the UTF-8 encoding of the same character,

*/ EF BB BF.

102

Page 118: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

private int[] magico = {0xEF, 0xBB, 0xBF};

private int[] trailer = {0x00, 0x00};

private int dumpSize = 1024 * 1024; //256KB

String tipoImagem = "txt";

boolean usarTrailer = false;

public UTF8(Janela janela, ArquivoSwap swap, String destino) {

super(janela, swap, destino);

iniciarExtracao();

}

/*método de extração de UTF8*/

private void iniciarExtracao() {

setVariaveis(magico, trailer, dumpSize, tipoImagem,usarTrailer);

copiaArquivos();

}

}

A.16 Classe DOC

package forensekarla;

import javax.swing.JFrame;

public class DOC extends BuscarArquivos {

/** Microsoft Office document files start with D0 CF 11 E0,

* which is visually suggestive of the word "DOCFILE0".

*/ definir que irá terminar com (57 6F 72 64...)

private int[] magico = {0xD0, 0xCF, 0x11, 0xE0};

private int[] trailer = {0x57, 0x6F, 0x72, 0x64, 0x2E, 0x44, 0x6F, 0x63,

0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x38, 0x00, 0xF4, 0x39, 0xB2, 0x71};

private int dumpSize = 1024 * 512; //512KB

String tipoImagem = "doc";

boolean usarTrailer = true;

public DOC(Janela janela, ArquivoSwap swap, String destino) {

103

Page 119: Uso da Computação Forense no Estudo de …forense computacional. Os crimes em redes de computadores tendem a aumentar, pois, com o passar dos anos e com a disseminação de informações

super(janela, swap, destino);

iniciarExtracao();

}

/*método de extração de DOC

private void iniciarExtracao() {

setVariaveis(magico, trailer, dumpSize, tipoImagem, usarTrailer);

copiaArquivos();

}

}

104