Apostila Técnicas de Computação Forense
Apostila Técnicas de Computação Forense
Apostila Técnicas de Computação Forense
www.4linux.com.br
Conteúdo
i
Capítulo 1
Computação Forense
1
1.2 Estratégias de investigação 4Linux – www.4linux.com.br
Infelizmente, por falta de padronização, há vários termos que podem gerar confusão
como: perícia forense, forense computação, investigação digital, forense digital, perí-
cia digital, dentre outros usados comumente para descrever a mesma ciência. Nor-
malmente o termo forense digital ou investigação digital é empregado quando o
escopo não abrange somente computadores, mas também smartphones, tablets e
outros dispositivos digitais.
Já o trabalho de perícia, tem a ver com o adjetivo perito, usado para descrever pessoa
extremamente hábil e conhecedora de algum assunto.
A estratégia adequada para a investigação vai depender do tipo de caso mas normal-
mente segue uma sequência lógica que envolve indetificação da evidência, preser-
vação, coleta, análise e apresentação. Alguns autores e investigadores subdividem
Página2 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 1.2 Estratégias de investigação
estes cinco estágios ou alteram sensivelmente sua ordem. Tudo depende da exper-
iência do especialista, do tipo de caso e de como a situação se apresenta.
1.2.1 Identificação
Nesta etapa todas as fontes de prováveis evidências devem ser consideradas e reg-
istradas. Desde câmeras de vigilância até pen drives soltos sobre a mesa, todos os
aparelhos envolvidos no caso devem ser considerados. Segue uma lista parcial de
itens a serem considerados :
• Teclado
• Mouse/Touchpad
• Scanners
• Discos externos
• Documentos impressos
Tudo deve ser anotado por você. É essencial fotografar também. Nesta etapa que
você define o que será preservado, ou seja, o que é importante para a investigação,
além de registrar o estado de todas as evidências antes de você manipulá-las. Isso
vai ajudar a provar a integridade das fontes de informação, se necessário.
TécnicasdeComputaçaoForense Página3
1.2 Estratégias de investigação 4Linux – www.4linux.com.br
1.2.2 Preservação
Os dados que estão presentes nas fontes de informações que você enumerou na
etapa anterior também precisam ter sua integridade garantid a e é exatamente o que
acontece nesta etapa.
A ideia é que você não cause nenhuma alteração nas evidência s quando começar a
coletá-las.
Um bom exemplo é a descarga elétrica estática (do inglês ESD: Eletrical Static Dis-
charge) que o contato físico com um hardware sensível pode causar e fazer com que
os dados tenham sua integridade comprometida. A ocorrência de uma ESD depende
de fatores como nível de carga no corpo, umidade relativa do ar no ambiente den-
tre outros fatores físicos, mas é possível até mesmo danificar uma placa de circuito
simplesmente ao enconstar nela. Para evitar esta desagradá vel surpresa, existem
pulseiras antiestáticas como a da foto abaixo.
Nesta etapa você também vai decidir se desliga ou não os aparelhos que contém
as evidências. Existe um ditado que diz: Se está ligado, não desligue e se está
desligado, não ligue. No entanto, nem sempre ele é válido. Pode haver casos onde o
ambiente está sob ataque e desligar (ou desconectá-lo da rede, se for o caso) pode
ajudar a minimizar os prejuízos. Você deve estudar as vantagens e desvantagens de
Página4 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 1.2 Estratégias de investigação
Bloquear dispositi vos contra gravação, seja por hardware ou por software também é
uma boa ideia nesta etapa.
Antes de coletar os dados, é essencial criar um hash das mídias envolvidas no pro-
cesso, tentando ser o menos intrusivo possível e com bloqueios contra escrita.
Após a coleta dos dados (que veremos com detalhes no capítulo 2), estes hashes
devem ser checados e precisam ser idênticos, salvas exceções onde não é possível
bloquear a mídia contra escrita e haja escrita constante. Neste caso, cada cópia da
mídia terá um hash diferente e uma cópia acompanhada deve ser validada individ-
ualmente.
TécnicasdeComputaçaoForense Página5
1.2 Estratégias de investigação 4Linux – www.4linux.com.br
1.2.3 Coleta
Todo o trabalho aqui deve ser feito para gerar o menor impacto possível na máquina,
ou seja, quanto menos alterações em memória e em disco o especialista causar
para coletar os dados, menos dados são perdidos na coleta. A este impacto dá-se
o nome de footprint. Instalar um progr ama para real izar a coleta é uma ação que
normalmente gera um footprint considerável uma vez que o programa de instalação
precisa ser carregado em memória e vários arquivos são criado e/ou alterados du-
rante a instalação, por isso na coleta recomenda-se utilizar ferramentas existentes
em um pen drive ou mídia similar, funcionais para o SO alvo e evitar qualquer alter-
ação no disco rígido das máquinas onde a coleta será realizada.
Logicamente não há como evitar alterações na memória RAM das máquinas que
farão parte da investigação, uma vez que os softwares utilizados para a coleta pre-
cisam ser carregados. No entanto, deve ser dada preferência aos softwars com
menor footprint, ou seja, os executáveis otimizados que não utilizam muita RAM para
funcionarem.
Nesta etapa também se precisa calcular os hashes dos arquivos coletados e imagens
geradas, para que sejam incluídos no relatório da etapa de apresentação.
Lembre-se que uma análise em dados coletados pode ser refeita várias vezes,
mas a coleta em si normalmente não. Portanto, esta etapa de coleta deve ser min-
uciosa e muito bem estudada. Qualquer perda de dados pode ser irrecuperável e
comprometer a abrangência da análise com consequências diretas na qualidade da
investigação como um todo.
Página6 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 1.2 Estratégias de investigação
1.2.4 Análise
O importante é definir o que está sendo procurado. Sem saber o que se procura, a
análise pode demorar muito ou mesmo nunca terminar e o trabalho do perito será
ineficiente.
Nesta etapa várias ferramentas podem ser utilizadas, assim como técnicas de análise
manual, que aprenderemos mais à frente. Abaixo uma lista de distribuições Linux que
agregam várias ferramentas específicas para computa ção forense. Seu uso não é
obrigatório, mas é importante conhecê-las:
BackBox Linux distribuição para pen tests e testes de segurança que objetiva ser
rápida e com o mínimo de pacotes possíveis.
DEFT Linux (Digital Evidence and Forensic Toolkit) distribuição fácil de usar que
TécnicasdeComputaçaoForense Página7
1.2 Estratégias de investigação 4Linux – www.4linux.com.br
reúne algumas das melhoras aplicações de código aberto para resposta à inci-
dentes e computação forense.
Helix uma das mais antigas distribuições focadas em computação forense, com
muitas aplicações da área.
Matriux distribuição para pen test e computação forense baseada em Debian, com
cerca de 300 aplicações da área e até kernel personalizado.
Swift Linux leve distribuição baseada com ferramentas para computação forense e
recuperação de dados.
Página8 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 1.2 Estratégias de investigação
1.2.5 Apresentação
O relatório deve ser bem explicativo, de preferência com uso de imagens para tornar
fácil o suficiente para um público não técnico entender, mesmo que sem profundi-
dade. Um modelo de relatório pode ser consulta do no Anexo I.
Você deve entregar junto ao relatório uma tabela com todos os hashes calculados
durante a investigação e uma mídia (um DVD-R por exemplo) com os arquivos en-
contrados.
TécnicasdeComputaçaoForense Página9
Capítulo 2
Aquisição de dados
11
2.3 Memória no espaço do kernel 4Linux – www.4linux.com.br
O kernel, drivers e afins rodam no sistema de forma privilegiada e com sua própria
área de memória. Este modo de execução é conhecido como kernelmode, espaço de
kernel ou ring0. A memória mapeada neste modo pode também ser obtida através
de um dump de memória.
Nem só da memória RAM princ ipal vive um computador. Existem ainda outr as
memórias que podem fazer parte de um processo de investiga ção como:
• BIOS ROM
• Buffer de periféricos
Página12 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 2.5 Mídias USB e ópticas
Mídias ópticas como CD-R, DVD-R e BD-R são simples de serem copiadas e natu-
ralmente já são memórias somente de leitur a. Qualquer software capaz de efetu ar
uma cópia idêntica de um fluxo de dados será suficiente para obter o conteúdo de
uma mídia óptica, sem complicações.
Já dispositivos USB funcionam, na forma lógica, como discos rígidos e podem con-
ter uma ou várias partiçõe s, com diferentes sistemas de arquivos. Neste caso a
cópia também pode ser feita um software de cópia bit a bit, porém deve-se prestar
a atenção ao que se está copiando, inclusive nas permissões de acesso à mídia (é
interessante montar a mídia como somente leitura, assim como as mídias ópticas
são montadas).
Para dar um exemplo mais claro, um pen drive pode ter duas partições: uma NTFS
e uma ext4. Copiar a mídia inteira para um arquivo de imagem pode ser mais com-
plicado de analisar que copiar as partições separadamente para dois arquivos de
imagem distinhos.
2.6 Partições
A tabela de partições pode estar no MBR (Master Boot Record - Setor Mestre de Ini-
cialização), que é a forma tradicional de par ticionamento, ou no GPT (GUID Partition
Table). Neste último caso, o MBR ainda é usado mas apenas indicará onde está o
GPT.
O MBR é o primeiro setor do disco rígido e por ser um setor, tem 512 bytes de
TécnicasdeComputaçaoForense Página13
2.6 Partições 4Linux–www.4linux.com.br
Página14 TécnicasdeComputaçaoForense
4Linux–www.4linux.com.br 2.7 Discosrígidos
Cada entrada de partição na tabela de partições ocupa 16 bytes, por isso o número
máximo de partições na tabela é 4.
especial
uma novadeestrutura,
partição fora
chama da de conhecida
do MBR, extendida (tipo
como0x5)
EBR. (Extended
Esta partição
Bootaponta para
Record)
que também contém tabela de partições.
Uma outra possibilid ade é copiar todo o conteúdo de um disco, do primeiro ao último
setor, sem discriminar partições. Esta costuma ser uma boa tática, visto que o MBR
e todos os EBR são copiados e é possível analisá-los depois com softwares como
fdisk ou cfdisk.
TécnicasdeComputaçaoForense Página15
Capítulo 3
Investigação em ambientes
GNU/Linux
É mais que sabido por todos os profissionais da área de tecnologia que ela muda
muita. Na computação forense não é dife rente. Uma ferramenta ou abordag em
pode se tornar ultrapassada em questão de dias, por isso é importante se manter
atualizado a todo momento.
Em relação ao kernel Linux temos importantes mudanças nas versões recentes que
precisam ser levadas em consideração:
• /dev/kmem em desuso
• Proteção no /dev/mem
As mudanças não param e é importante para o profissional estar em dia com tais
atualizações para adaptar suas ferramen tas e técnicas às novas configurações . Um
17
3.2 Aquisição de memória RAM 4Linux – www.4linux.com.br
Quando um novo filesystem começa a ganhar espaço, é bem possível que você se
depare com ele numa investigação e por isso é recomendado que você estude suas
especificações para não ficar perdido caso precise analisá-lo.
Página18 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.2 Aquisição de memória RAM
Existe ainda uma hipótese baseada na recuperação dos dados imediatamente após
o desligamento da máquina, quando os capacitores ainda estão se descarregando e
que pode envolver até o congelamento por resfriamento dos módulos de memória,
mas é algo que ainda não teve sua eficiência comprovad a.
Para obter uma cópia da memória mapeada por um processo no Linux, primeiro
é preciso sabe r qual a faixa de endereç os que o processo está uti lizando. Para
isto, você pode consultar um arquivo especial em /proc/<pid>/maps onde <pid> é o
PID (Proce ss IDentifi er) do processo em questão. São várias regiõ es de memória
mapeadas para um processo, dentre elas a heap e a stack, também conhecida
como pilha. Por isso é importante saber o que se procura e conhecer as regiões de
memória onde os dados procurados costumam ser armazenados.
Após escolher a região, o gdb (GNU Debugger), pode ser utilizado para dumpar a
faixa de memória escolhida.
No exemplo abaixo, algumas linhas e colunas foram removidas para facilitar a visu-
alização:
$ cat /proc/178/maps
4-41 r-xp 8:5 764329
6-61 rw-p 8:5 764329
7fe6d5d29-7fe6d5ea6 r-xp glib/x86_64-linux-gnu/libc-2.13.so
TécnicasdeComputaçaoForense Página19
3.2 Aquisição de memória RAM 4Linux – www.4linux.com.br
Também pode ser útil para o investigador colher uma cópia de todo o conteúdo da
memória RAM. Apesar de ser mais difícil analisar, alguns softwares tentam com-
preender a organização dos dados na RAM e provêem uma saída bem interes-
sante.
Página20 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.2 Aquisição de memória RAM
dd if=/dev/mem of=ramdump
O arquivo ramdump será criado com todo o conteúdo da memória RAM. No entanto,
conforme consta na introdução deste capítulo, pode ser que o /dev/mem esteja prote-
gido e somente o primeiro megabyte de memória esteja acessív el. Se esta proteção
estiver ativa, o dd não conseguirá copiar mais que 1 MB da memória:
# dd if=/dev/mem of=ramdump
dd: lendo "/dev/mem": Operação não permitida
256+ registros de entrada
256+ registros de saída
152672 bytes (1,1 MB) copiados, ,362599 s,
29, MB/s
Você
kerneltambém descrobriria se essa proteção está ativa checando a configuração do
em execução:
TécnicasdeComputaçaoForense Página21
3.2 Aquisição de memória RAM 4Linux – www.4linux.com.br
areas as well, these contain the PCI * mmio resources as well as potential bios/acpi
data regions. */
Fonte: https://github.com/torvalds/linux/blob/master/arch/x86/mm/init.c#L304
$ wget -c http://hysteria.sk/~niekt/foriana/fmem_current.tgz
$ tar xf fmem_current.tgz
$ cd fmem*
$ make
$ sudo ./run.sh
que vocêIsso
sistema. o informe quando
pode ser parar,antes
conferido ou seja,
comqual a quantidade
o comando free: de memória total do
$ free -m
total used free shared buffers cached
Mem: 391 3779 122 138 1466
-/+ buffers/cache: 2175 1726
Swap: 926 926
Como eu usei a opção -m do free para exibir o resultado em megabyes, usei a opção
bs (block size) do dd para configurá-lo a copiar 3901 (opção count) blocos, ou seja,
o total da RAM, para o arquivo ramdump.
Página22 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.3 Aquisição de dados de filesystems ext4
Adquirir dados de discos não é muito diferente de adquirir dados da memória, com
exceção é claro de sua característica não volátil, então mesmo com a máquina desli-
gada, os dados do disco permanecem (com algumas exceções pois pode haver ar-
madilhas que apagam rastros caso a máquina seja desligada - inclusive-se recomenda-
se desligar a máquina na tomada em alguns casos).
1+ records in
1+ records out
Você deve ter percebido que a sintaxe é muito parecida com a do dd, mas no co-
mando acima usamos a opção hash, que já calcula os hashes desejados da imagem
gerada, um dos recursos do dcfldd. Para mais informações, basta consultar o manual
da ferramenta, como com qualquer ferramen ta Unix-like que se preze. ;)
# fdisk -l
TécnicasdeComputaçaoForense Página23
3.3 Aquisição de dados de filesystems ext4 4Linux – www.4linux.com.br
29664+ records in
29664+ records out
Página24 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.3 Aquisição de dados de filesystems ext4
Em seu antecessor, o ext3, somente os três primeiros atributos estão presentes, algo
que a comunidade de segurança já se incomodava. A resolução de tempo passou a
ser de nanosegundos, contra segundos do ext3.
http://e2fsprogs.sourceforge.net
dumpe2fs Exibe informações sobre uma partiçã o. Pode ser usado com uma im-
agem gerada pelo e2image
debugfs Um debugger interativo que também pode ser usado com imagens do
e2image
Para cada arquivo existente no filesystem, existe uma estrutura responsável por
representá-lo chamada inode. O inode tamb ém armazena todas as inf ormações
sobre um arquivo, com exceão de seu nome e conteúdo. Para verificar tais infor-
mações, podemos usar o comando stat:
# stat mbr.img
TécnicasdeComputaçaoForense Página25
3.3 Aquisição de dados de filesystems ext4 4Linux – www.4linux.com.br
File: "mbr.img"
Size: 512 Blocks: 8 IO Block: 496 arquivo comum
Device: 85h/253d Inode: 764329 Links: 1
Access: (644/-rw-r--r--) Uid: ( 1/ nandu) Gid: ( 1/ nandu)
Access: 212-5-22 :6:14.49224942 -3
Modify: 212-5-22 :6:32.56336493 -3
Change: 212-5-22 :6:32.56336493 -3
Birth: -
No entanto, conforme você deve ter percebido, a data de criação do arquivo não
apareceu. Acontece que nem todas as ferramentas já estão adaptadas ao ext4, mas
por sorte o debugfs resolve:
Página26 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.3 Aquisição de dados de filesystems ext4
$ rm mbr.iso
# debugfs -R ’stat <764329>’ /dev/sda5
Inode: 764329 Type: regular Mode: 644 Flags: x8
Generation: 3982433542 Version: x:1
User: 1 Group: 1 Size:
File ACL: Directory ACL:
Links: Blockcount:
Fragment: Address: Number: Size:
ctime: x4fbb3ad4:dc6a9c -- Tue May 22 4:5:56 212
atime: x4fbb39fe:dce57df -- Tue May 22 4:2:22 212
mtime: x4fbb3ad4:dc6a9c -- Tue May 22 4:5:56 212
crtime: x4fbb1ac:be7fc6ac -- Tue May 22 :2:4 212
dtime: x4fbb3ad4 -- Tue May 22 4:5:56 212
Size of extra inode fields: 28
EXTENTS:
O debugfs também pode atuar com imagens de disco, como faremos nos exercí-
cios.
TécnicasdeComputaçaoForense Página27
3.3 Aquisição de dados de filesystems ext4 4Linux – www.4linux.com.br
É possível ver quais os blocos utilizados por um determinado inode com o comando
dessa forma:
Um inode pode utilizar mais de um bloco por conta do tamanho do arquivo repre-
sentado por ele, mas em nosso exemplo ele utiliza apenas um bloco, de número
30447449. Podemos extr air tal bloco do disco com o dd:
previamente dumpe2fs)
arquivo for menor e o extraí
que o bloco, apóspara um arquivo
o último byte dochamado bloco.osSe
arquivo, todos o tamanho
bytes do
seguintes
serão nulos (0x00) e podem ser removidos facilmente. No exemplo o arquivo tem 512
bytes, então vou extrair 512 bytes do bloco capturado:
O hash MD5 comprova que não há qualquer diferença entre o arquivo srcinal e o
recuperado.
Página28 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.3 Aquisição de dados de filesystems ext4
• Processos em execução
• Sockets abertos
• Usuários logados
• Arquivos abertos
• Tabela de rotas
• Tabela ARP
• Variáveis de ambiente
• Dispotivos montados
TécnicasdeComputaçaoForense Página29
3.4 Análise de dumps de memória e disco 4Linux – www.4linux.com.br
Você provavelmente já ouviu falar na tabela ASCII (American Standard Code for In-
formation Interchange), certo? É uma tabela que relaciona cada caractere com um
número, de 0 a 255, totalizando 256 caracteres poss íveis. Para visualizá-la, você
pode conferir o Anexo II, mas se tiver o hack-functions instalado, basta comandar
asciitable no terminal.
Através da tablea ASCII é possível perceber que a letra maiúscula F, por exemplo,
Página30 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.4 Análise de dumps de memória e disco
$ echo x46
x46
$ echo -e ’\x46’
F
$ str2hex -x 4Linux
\x34\x4c\x69\x6e\x75\x78
No exemplo acima exibi o texto 0x46, o equivalente em ASCII do número 0x46, com
o comando echo. Em seguida, usei a função str2hex das hack-fuctions para exibir o
byte correspondente de cada caractere da string 4Linux. Que tal conferir na tabela
ASCII se a função está mostrando os bytes corretamente?
Sendo assim, devemos concordar que para procurar strings dentro de um arquivo,
seja ele qual for, é só procurar uma sequência de bytes (digamos, com no mínimo
três) que estejam na faixa de 0x20 até 0x7e, correto? Se olhar na table ASCII, verá
que estes são os caracteres imprimíveis.
TécnicasdeComputaçaoForense Página31
3.4 Análise de dumps de memória e disco 4Linux – www.4linux.com.br
17 {
18 prin tf("Uso:\n\t%s <arq uiv o >\n", arg v[
19 retu rn 1;
20 }
21
22 // t en ta ab ri r o arq ui vo
23 arq uiv o = fop en(ar gv[1 ], "rb") ;
24
Página32 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.4 Análise de dumps de memória e disco
O programa acima vai imprimir na tela todos os bytes de um arquivo passado por
argumento que possuam representação em ASCII e sejam imprimíveis.
Mas não precisamos escrever nosso próprio programa de busca de strings se es-
tivermos no Linux pois o projeto GNU já fornece um programa chamado strings que
faz exatamente isto:
$ strings -t x mbr.img
9d ZRr=
116 ‘|f
11f \|f1
18 GRUB
186 Geom
18b Hard Disk
195 Read
19a Error
O comando strings adimite que, para ser uma string, a sequência precisa ter pelo
menos 3 caracteres impri míveis. A opção -t x faz com que ele imprima o offset da
TécnicasdeComputaçaoForense Página33
3.4 Análise de dumps de memória e disco 4Linux – www.4linux.com.br
string em hexadecimal . Assim, numa análise , você pode copiar todas as strings num
dump de memória para um arquivo:
3.4.2 Carving
Neste exemplo vamos buscar por arquivos GIF dentro do dump. Para isso pre-
cisamos conhecer a especificação do GIF, como mostra a tabela abaixo (fonte: Wikipedia):
Página34 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.4 Análise de dumps de memória e disco
De cara, vemos o header da última versão do formato, que deve ser composto pelos
bytes 0x47confirmar,
Se quiser 0x49 0x46pode
0x38checar
0x39 0x61, queASCII.
na tabela representam em ASCII a string "GIF89a".
TécnicasdeComputaçaoForense Página35
3.4 Análise de dumps de memória e disco 4Linux – www.4linux.com.br
Casamos com a string inteira. Seria muita coincidênci a esses 6 caracteres casarem
se isso não for o início de um GIF? É o que veremos:
$ hd -s x8 -n 64 dump.bin
8 47 49 46 38 39 61 65 1 1a 2 f7 bb 9c 91 |GIF89ae.........|
81 6e 5b 54 d9 ad 9c 6b 69 69 c a a4 94 e3 8c 7d 3f |n[T...kii.....}?|
82 1e e 33 d 9 f6 cb ba e1 b 4 a3 e3 bb aa eb ca |..3.............|
83 8a c8 44 39 b 5 4 6b 26 2 1 44 27 19 fa f2 e4 |..D9...k&!D’....|
O próximo byte, segundo o exemplo na documentação, quando é 0xf7, diz que o GIF
tem 256 cores, dentre outras informações . Este byte bate com o nosso 0xf7.
Os formatos que não possuem bytes que marcam o fim, geralmente possuem
um campo que diz o tamanho completo do arquivo .
Página36 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.4 Análise de dumps de memória e disco
Vamos à busca:
A primeira sequência que "00 3b"que o grep encontrou após o offset 0x80000 (início
do GIF) est á em 0x82 b65. Neste offs et está o 0x00 e em 0x82 b66 est á o 0x3b,
portanto o próximo byte (0x55) não faz par te do GIF.
A resposta é em deci mal. Uma man eira mais fácil de fazer esta con ta e já ter a
resposta em hexadecima l seria usando a função hexcalc:
É preciso somar mais um pois o primeiro byte, na posição 0x80000, já conta. Vamos
relembrar o que temos:
Tipo: GIF
Resolução: 357x538 pixels
TécnicasdeComputaçaoForense Página37
3.4 Análise de dumps de memória e disco 4Linux – www.4linux.com.br
Extração com o dd
A opção bs (block size) informa ao dd para assumir blocos de 1 byte. A opção count
diz quantos blocos ele vai ler, então vão dar exatamente 11111 bytes. E por fim, a
opção skip, que só aceita números em decimal (por isso a conversão com o bash)
informa quantos bytes o dd vai pular para começar a ler, assim como a opção -s"do
hd. Temos que começar a extração do byte 0x80000, que é onde começa o GIF.
Vamos conferir:
$ file possivel.gif
possivel.gif: GIF image data, version 89a, 357 x 538
$ wc -c possivel.gif
11111 possivel.gif
Página38 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.4 Análise de dumps de memória e disco
bém se baseia no formato de arquivos para realizar sua busca. Seu uso é bastante
simples:
1 FILES EXTRACTED
gif:= 1
------------------------------------------------------------------
TécnicasdeComputaçaoForense Página39
3.4 Análise de dumps de memória e disco 4Linux – www.4linux.com.br
Trabalhar com imagens de disco geralmente envolve montá-las como somente leitura
e buscar por arquivos de log, configuração e afins.
$ chmod -w sda.img
$ md5sum sda.img && sha1sum sda.img
cebdd715d4ecaafee8f147c2e85e754 sda.img
ec3e661d7bc7bfbf5334e7dfad39f947dace5f7 sda.img
$ cp sda.img{,.1}
$ md5sum sda.img.1 && sha1sum sda.img .1
cebdd715d4ecaafee8f147c2e85e754 sda.img.1
ec3e661d7bc7bfbf5334e7dfad39f947dace5f7 sda.img.1
blkcalc
Página40 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.4 Análise de dumps de memória e disco
ifind
TécnicasdeComputaçaoForense Página41
3.4 Análise de dumps de memória e disco 4Linux – www.4linux.com.br
sorter cria uma lista ordenada por tipo de arquivo de arquiv os numa imagem
Basicamente, onde lê-se "imagem"na listagem acima, também se pode ler "disposi-
tivo", para usar as ferramentas em um dispositivo vivo (ex.: /dev/hda).
$ mmls -B sda.img
Página42 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.4 Análise de dumps de memória e disco
A opção -B do mmls adiciona a coluna Size, com os tamanhos das partições encon-
tradas.
Esta listagem também poderia ser feito com outros programas como fdisk ou
parted, mas como combinamos anteriormente, vamos dar foco nas ferramentas do
TSK.
TécnicasdeComputaçaoForense Página43
3.4 Análise de dumps de memória e disco 4Linux – www.4linux.com.br
Journal ID:
Journal Inode: 8
METADATA INFORMATION
--------------------------------------------
Inode Range: 1 - 499713
Root Directory: 2
Free Inodes: 33871
CONTENT INFORMATION
--------------------------------------------
Block Range: - 1998335
Block Size: 496
Free Blocks: 64775
Página44 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.4 Análise de dumps de memória e disco
Perceba que vários arquivos estão com os tamanhos (st_size) zerados e não adi-
anta tentar recupera-los pois não há nada dentro deles. Mesmo os que estão com
tamanho maior que zero, ainda dependerá se os blocos antigamente utilizados pelo
inode já foram reutilizado s ou não. Em caso positivo, a recuperação por software se
torna muito ineficiente.
TécnicasdeComputaçaoForense Página45
3.4 Análise de dumps de memória e disco 4Linux – www.4linux.com.br
A opção -r faz o fls funcionar de maneira recursi va, já a -d pede que só liste arquivos
excluídos.
Montando as partições
Todo o trabalho até agora vem sido feito com o arquivo sda.img sem ser montado, no
entanto, é extremamente útil montar as partições desta imagem do disco para facilitar
a busca por arquivos, caso este recurso esteja disponív el. Então mãos à obra:
O que houve? Acertou se lembrou que o arquivo sda.img é uma imagem de um disco
inteiro e não só de uma partição, por isso é necessário montar somente a partição
no offset 2048 (lembra?) do arquivo e não ele inteiro.
Página46 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.4 Análise de dumps de memória e disco
Ops. O que houve agora? Lembre-se que esse offset diz respeito a um dispositivo
em blocos (disco rígido) onde a menor unidade de armazenamento é um setor, de
normalmente 512 bytes. Já a opção offset do mount precisa da posição exata do
arquivo de onde começar, para chegar nela basta multiplicar o offset apresentado
pelo mmls pelo tamanho do setor, que o mmls também nos diz:
TécnicasdeComputaçaoForense Página47
3.5 Identificação de binários ELF maliciosos 4Linux – www.4linux.com.br
É possível que a tabela de partições do disco esteja corrompida, neste caso é bom
que você conheça o filesystem utilizado para tentar identificar os dados incosistentes
e consertá -los. Se a situação estiver muito ruim, o jeito é utiliz ar carving, como
fizemos com dumps de memória.
Supondo que você recuperou um arquivo chamado "suspeito", vamos rodar algumas
ferramentas para tentar documentar seu comportamento, começando pela file, que
tenta identificar o tipo de arquivo em questão:
$ file suspeito
suspeito: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically
linked (uses shared libs), for GNU/Linux 2.6.26,
BuildID[sha1]=x341dd4ba97cb5263efd9d1ede68e4a1f633bb7, not stripped
Página48 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.5 Identificação de binários ELF maliciosos
Já deu pra saber que o arquivo é um ELF (formato de executáveis usado no Unix/Linux)
e foi compilado para 64-bits, dentre outras informações.
$ readelf -h suspeito
ELF Header:
Magic: 7f 45 4 c 46 2 1 1
Class: ELF64
Data: 2’s complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABIVersion:
Type: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
Version: x1
Entry point address: x449
Start of program headers: 64 (bytes into file)
Start of section headers: 7512 (bytes into file)
Flags: x
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 8
Size of section headers: 64 (bytes)
Number of section headers: 29
Section header string table index: 28
O readelf apresenta uma série de informações úteis, dentre elas o endereço do en-
trypoint, que é onde o código do programa começa a ser executado. Neste nosso
TécnicasdeComputaçaoForense Página49
3.5 Identificação de binários ELF maliciosos 4Linux – www.4linux.com.br
exemplo, é em 0x400490.
Já que estamos lidando com um binário dinamicamente linkado (vide saída do file),
podemos pedir ao readelf que nos mostre a tabela de símbolos dinâmicos utilizados
pelo binário:
De fato, trata-se de um binário compilado em C, visto que as funções que ele utiliza
estão na glibc (GNU C Library) e ele usa as funções write(), system() e creat(), para
checar o que tais funções fazem, basta checar as páginas de manual nas seções 2
e 3:
Experimente também usar o comando strings para buscar por texto dentro do
binário suspeito. Isto pode adiantar muito trabalho . ;)
Página50 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.5 Identificação de binários ELF maliciosos
TécnicasdeComputaçaoForense Página51
3.5 Identificação de binários ELF maliciosos 4Linux – www.4linux.com.br
Percebeu alguns endereços sendo copiado para alguns registrados antes da chamada
a __libc_start_main()? Vamos buscar o último (possi velmente a main do progra-
mador) com o objdump novamente:
Página52 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.5 Identificação de binários ELF maliciosos
Estudar Assembly foge ao nosso foco, mas dá pra ter uma ideia do que o programa
faz. Ou não? Se ficar difícil, pode-se partir para uma análise dinâmica, como vere-
mos a seguir.
O strace é um programa bastante poderoso , que faz uso da ptrace() - uma chamada
de sistema (syscall) para rastrear ações de um determinado processo, para logar
todas as chamadas de sistem a que um processo faz. Note que o processo faz o
que o ele quer fazer, portanto se tratando de um arquivo suspeito, este deve ser
executado num ambiente controlado (máquina virtual ou similares).
TécnicasdeComputaçaoForense Página53
3.5 Identificação de binários ELF maliciosos 4Linux – www.4linux.com.br
Na seção anterior perguntei como poderíamos ter cer teza de que as ferramentas do
TSK abrem uma imagem em modo somente leitura. Uma das possibilidades é ras-
treando chamadas à syscall open (que abre arquivos e dispositivos) com o strace:
A syscall open foi chamada com a flag O_RDONLY, que garante que o arquivo será
aberto com permissão somente para leitura. ;)
$ strace ./suspeito
creat("/tmp/ls", 777) =3
write(3, "\177ELF\2\1\1\\\\\\\\\\2\>\\1\\\l\4@\\\\\"...,
4577) = 4577
clone(child_stack=, flags=CLONE_PARENT_SETTID|SIGCHLD,
parent_tidptr=x7ffff575568) = 18172
wait4(18172, [{WIFEXITED(s) && WEXITSTATUS(s) == }], , NULL) = 18172
--- SIGCHLD (Child exited) @ () ---
exit_group() =?
Deixarei como exercício para você dizer o que este suspeito faz. Como dica, use a
opção -f do strace para capturar as chamadas também do processo filho criado pela
chamada à syscall clone e o man do próprio Linux para consulta.
Para finalizar, segue uma lista de características geralmente encontradas em binários
suspeitos (mas não é regra):
Página54 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 3.5 Identificação de binários ELF maliciosos
• Sem símbolos
TécnicasdeComputaçaoForense Página55
Capítulo 4
Até o momento só utilizamos softwa res livres em nossas análises e vamos continuar
dando preferências aos softwares de código aberto, por motivos óbvios.
Este capítulo será menor, visto que várias técnicas de análise já foram apresentadas
no capítulo anterior e utilizaremos das mesmas técnicas, com algumas peculiari-
dades, para análise de dumps Windows, portanto daremos maior foco nas difer-
enças.
57
4.2 Aquisição e análise de RAM com win32dd 4Linux – www.4linux.com.br
O NTFS ainda é muito utilizado, portanto daremos um foco especial nele, mas tam-
bém falaremos do novo ReFS.
Página58 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 4.2 Aquisição e análise de RAM com win32dd
Name Value
---- -----
File type: Raw memory dump file
Acquisition method: PFN Mapping
Content: Memory manager physical memory block
TécnicasdeComputaçaoForense Página59
4.2 Aquisição e análise de RAM com win32dd 4Linux – www.4linux.com.br
Processing....Done.
O arquivo ramdump será criado no diretório atual com o conteúdo da memória RAM.
Página60 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 4.3 Aquisição de dados de filesystems NTFS e ReFS
O NTFS se estabeleceu como filesystem padrão nas versões do Windows para servi-
dores desde o Windows NT e se mantém até o Windows 2008. Já nas versões para
estação de trabalho, sua popularização veio com o Windows XP e desde então vem
sido o padrão de instalação até o Windows 7. A última ver são da especificação é
a 3.1 (não confundir com a versão do driver, que é a 6.1 no Windows 7 e 2008 R2)
e basearemos nossos estud os nesta versã o. Claro que nosso estudo será válid o
também para entedimento de versões anteriore s à 3.1 ou mesmo posteriores, ou até
outros filesystems como o ReFS (Windows 8) que veremos mais adiante.
No Windows é possível saber qual a versão de uma partição NTFS com o seguinte
comando:
Após localizar a partição NTFS (0x7) depois de ler a tabela de partições no MBR,
a primeira estrutura é o setor de boot da partição , de 512 by tes. A existência
TécnicasdeComputaçaoForense Página61
4.4 Análise de dumps com Volatility 4Linux – www.4linux.com.br
deste setor é uma característica comum nos filesystems populares e nele há várias
informações importantes para forense, dentre elas um trecho conhecido como BPB
(Bios Parameter Block), que começa no byte 0xb do setor de boot da partição e vai
até o byte 0x54, resultan do em 0x49 bytes de tamanho.
O BPB é uma estrutura com vários campos, sendo o mais importante deles o campo
de 8 bytes que começa no byte 0x30 chamado LogicalClusterMFT. Este cara contém
o número do cluster onde está armazenada a MFT (Master File Table), a tabela que
referencia todos os arquivos presentes na partição. Em uma analogia simples, esta
tabela é para o filesystem o que um índice é para um livro.
Uma maneira fácil de identificar uma entrada na MFT é a string FILE, no início de
cada entrada de 1024 bytes (2 setores). Cada entrada representa um arquivo, mas
existem arquivos especiais chamados metafiles que contém informações sobre a
partição. Existe até mesmo uma entrada que representa a própria MFT.
O Sleuth Kit possui suporte à partições NTFS, logo, é possível utilizá-lo sem prob-
lemas. As técnicas de carving apresentada s e ferramentas como foremos t e scalpel
também possuem suporte e podem ser utilizadas quando a partição estiver corromp-
ida e não puder ser montada.
Página62 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 4.4 Análise de dumps com Volatility
TécnicasdeComputaçaoForense Página63
4.4 Análise de dumps com Volatility 4Linux – www.4linux.com.br
Página64 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 4.5 Identificação e análise de binários PE maliciosos
Existem milhares de pragas construídas para danificar sistemas e boa parte delas
são executáveis PE, que tem como sistema alvo os sistemas Windows . O tipo PE
(Portable Executable) é facilmente reconhecido por conta de uma herança do formato
MZ do MS-DOS que recebeu este nome de um dos desenvolvedores do MS-DOS
chamado Mark Zbikowski. Esta assinatura "MZ"está logo no início do arquivo e faz
TécnicasdeComputaçaoForense Página65
4.5 Identificação e análise de binários PE maliciosos 4Linux – www.4linux.com.br
$ hd -n 64 putty.exe
4d 5a 9 3 4 ff ff |MZ..............|
1 b8 4 |........@.......|
2 |................|
3 1 |................|
4
Para ver mais informações sobre o PE, pode-se utilizar o pev, um toolkit multiplataforma
que fornece uma série de binários para trabalha r com arquivos PE:
Página66 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 4.5 Identificação e análise de binários PE maliciosos
$ readpe -S putty.exe
Sections
Name: .text
Virtual Address: x1
Physical Address: x53371
Size: x54 (34464 bytes)
Pointer To Data: x1
Relocations:
Characteristics: x62
contains executable code
is executable
is readable
Name: .rdata
Virtual Address: x55
TécnicasdeComputaçaoForense Página67
4.5 Identificação e análise de binários PE maliciosos 4Linux – www.4linux.com.br
$ readpe -S mewpacker.exe
Página68 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 4.5 Identificação e análise de binários PE maliciosos
Sections
Name: SBL
Virtual Address: x1
Physical Address: x23
Size: (bytes)
Pointer To Data:
Relocations:
Characteristics: xce
contains executable code
contains initialized data
contains uninitialize d data
is readable
is writable
Name: ?ug?
Virtual Address: x24
Physical Address: x19
Size: x9fa9 (4873 bytes)
Pointer To Data: x2
Relocations:
Characteristics: xce
contains executable code
contains initialized data
contains uninitialize d data
is readable
is writable
Perceba uma seção chamada SBL (sem ponto na frente) de tamanho zerado e uma
outra com um nome bem estranho. Coisa boa não é. Outro recurso é buscar funções
de TLS callbacks (comumente exploradas por programadores de malware) e packers
em si:
$ pescan mewpacker.exe
entrypoint: normal
TécnicasdeComputaçaoForense Página69
4.5 Identificação e análise de binários PE maliciosos 4Linux – www.4linux.com.br
$ pepack mewpacker.exe
packer: Mew 11 SE v1.2 (Eng) -> Northfox
No exemplo acima não havia funções TLS callbacks, mas o pescan acusou que o
DOS stub do PE é suspeito (foi modifi cado) e as seções também. Adicionalmente, o
pepack detectou o packer MEW. Vale a atenção!
E a partir do valor do EP, você pode usar o pedis para obter o disassembly:
Página70 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 4.5 Identificação e análise de binários PE maliciosos
Assim como usamos o strace para verificar as syscalls utilizadas por um ELF, pode-
mos
que ousar
PE ofaz.
Process Explorer
O software para obter
é gráfico as chamadas
e ao executá-lo, às funções
podemos criarda API pelo
filtros do Windows
nome
do processo ou PID para que ele mostre açõe s apenas de quem queremos. Esta
análise deve ser feita em um ambiente controlado, sempre.
TécnicasdeComputaçaoForense Página71
Capítulo 5
Além de executáveis em si, é possível ser infectado com outros tipos de arquivos
ou pode ser preciso entender algum formato específico para concluir o trabalho da
perícia forense. Neste capítulo vamos analisar arquiv os PDF e imagens JPG.
Arquivos PDF (Portable Document Format) são verdadieros containers que podem
abrigar desde simples textos e imagens a poderosos programas em Flash ou JavaScript.
Dentro deles há tanto texto quando dados binários.
%äüöß
2 obj
<</Length 3 R/Filter/FlateDecode>>
stream
73
5.1 Documentos PDF com pdfid e pdf-parser 4Linux – www.4linux.com.br
[bytes]
endstream
endobj
3 obj
16
endobj
Os objetos podem ser de vários tipos e existem alguns nomes pré-definidos como
/JavaScript, /JS, /OpenAction, /RichMedia e /Launch. Estes particularmente são pre-
ocupantes pois podem conter código executável que o leitor de PDF tentará executar
ao ser aber to.
Objetos também podem referenciar outros objetos, neste caso a palavra "obj"é sub-
stituída pela letra maiúscula R. Com isso já dá para traçar uma linha investigativa
no sentido de observar os objetos de um documento PDF, principalmente se tiverem
esses nomes sugestivos apresentados.
$ ./pdfid.py teste.pdf
PDFiD ..11 teste.pdf
PDF Header: %PDF-1.4
obj 6
endobj 6
stream 1
endstream 1
xref 2
trailer 2
startxref 1
/Page 1
/Encrypt
/ObjStm
/JS 1
Página74 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 5.1 Documentos PDF com pdfid e pdf-parser
/JavaScript 1
/AA 1
/OpenAction
/AcroForm
/JBIG2Decode
/RichMedia
/Launch
/Colors > 2^24
<<
/S /JavaScript
/JS 154 R
>>
\begin{verbatim}
$ ./pdf-parser.py -o 54 test.pdf
obj 154
Type:
Referencing:
TécnicasdeComputaçaoForense Página75
5.1 Documentos PDF com pdfid e pdf-parser 4Linux – www.4linux.com.br
Contains stream
[(1, ’\r\n’), (2, ’<<’), (2, ’/Length’), (1, ’ ’), (3, ’’), (2, ’/Filter’),
(1, ’ ’), (2, ’[’), (2, ’/F#6c#61#74e#44e#63#6fde’), (2,
’/#41#53#43II#38#35#44#65#63#6fd#65’), (2, ’]’), (2, ’>>’), (1, ’\r\n’)]
<<
/Length
/Filter [
/FlateDecode /ASCII85Decode]
>>
O objeto con tém um stream (flu xo) de dados , ou seja, dados biná rios. Os dados
precisam passar por um filtro para serem revelados, pois ficam encodados no PDF.
O pdf-parser é capaz de filtrar esses dados com a opção -f:
O arquivo stream.txt conterá todo o fluxo de dados após passar pelos filtros e será
possível ver o código JavaScript nele.
Página76 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br 5.2 Imagens com jhead
Imagens JPG e PNG podem conter informações valiosas numa estrutura conhecida
como EXIF (Exchangeab le Image File Format). Nem sempre essas informações são
visíveis ao SO. Avalie as capturas de tela abaixo. A primeira foi tirada no Gnome e a
segunda no Windows XP.
Percebemos que alguns campos existem numa captura e na outra não, mas estamos
visualizando os dados da mesma imagem.
$ jhead tracking.jpg
File name : tracking.jpg
File size : 31485 bytes
File date : 211:3:3 2:13:53
Camera make : SAMSUNG
Camera model : GT-I55B
Date/Time : 21-11-18 :46:23
Resolution : 16 x 12
Focal length : 2.7mm
Exposure tim e: .1 25 s (1/8)
Aperture : f/2.7
ISO equiv. : 2
Whitebalance : Auto
Metering Mode: center weight
Exposure : aperture priority (semi-auto)
GPS Latitude : ? 23d 19m 44.52s
GPS Longitude: ? 48d 29m 19.548s
Note que o jhead exibe até mesmo coordenadas GPS presentes na imagem, en-
quanto nem o Gnome nem o Windows XP o fazem. Essas informações podem ser
extremamente úteis numa perícia forense.
TécnicasdeComputaçaoForense Página77
5.3 Esteganografia 4Linux–www.4linux.com.br
5.3 Esteganografia
Página78 TécnicasdeComputaçaoForense
4Linux–www.4linux.com.br 5.3 Esteganografia
$ wc -c *.jpg
145338 chess.jpg
16151 out.jpg
$ md5sum *.jpg
4c59e2956ba43e342a18ab4e855cbb4 chess.jpg
9e8dc2125a2d8adbab424167f62947fa out.jpg
TécnicasdeComputaçaoForense Página79
Capítulo 6
6.1 Sniffers
Normalmente o driver de uma placa de rede descarta os pacotes que não são des-
tinados ao endereço dela. Este é o funcionamento normal, no entanto, é possível
alterar este comportamento utilizando softwares conhecidos como sniffers de rede.
Além de não descartar nenhum pacote, os sniffers capturam (salvam) os bytes dos
pacotes recebidos em disco. O formato mais conhecido para armazenar pacotes é o
PCAP, implementado pela libpcap e WinPcap.
Exemplos de sniffers populares são o tcpdump e o Wireshark, sendo que este último
81
6.1 Sniffers 4Linux–www.4linux.com.br
O último parâmetro é a expressão, uma ou mais condições que devem ser satisfeitas
para o tcpdump salvar o pacote no arquivo info rmado pela opção -w. Caso nenhuma
expressão seja informada, todos os pacotes serão salvos.
Uma expressão para capturar todos os pacotes ICMP com tamanho maior que zero
seria:
$ man 7 pcap-filter
1 - Física a camada de mais baixo nível, que trata dos meios físicos de conexã o.
4 - Transporte TCP/UDP.
Página82 TécnicasdeComputaçaoForense
4Linux–www.4linux.com.br 6.1 Sniffers
Não vamos estudar teoria de redes aqui e por isso vamos entender como o Wireshark
nos apresenta informações sobre um pacote:
O próximo item pode ser comparado à camada 4 (transporte), pois possui infor-
mações sobre o protocolo de transporte utilizado (TCP/UDP), portas utilizadas, flags
TCP.
E por último a interpretação do protocolo HTTP (neste caso, que é um pacote HTTP
mesmo), que pode ser comparado à soma das camadas 5, 6 e 7. É similar ao Modelo
TCP/IP de 4 camadas.
TécnicasdeComputaçaoForense Página83
Capítulo 7
Anti-forense
• Formatação de mídias
• Esteganografia
• Criptografia
A lista acima contém somente alguns exemp los. Tais ações dependem da criativi-
dade do atacante e dos recursos disponíveis.
A
emtécnica de meio
qualquer evitar de
taisipedir
técnicas porações
essas vezesdeé atacantes,
chamada de poranti-anti-f
exemplo:orense e consiste
85
7.1 Compilando seus próprios binários para alvos Linux 4Linux – www.4linux.com.br
• Obter um dump de memória rapidamente (de preferência via pen drive ao ser
inserido)
Compilar seu próprio binário estático para rodar na máquina alvo pode evitar que
você rode um binário malicioso na máquina e/ou dependa de versões de bibliotecas
específicas que a máquina alvo pode não ter. Para isso, a ideia é baixar o código-
fonte do software e, se for escrito em C, adicionar a opção -static ao gcc. Veremos
agora um exemplo de compilação do dcfldd. Para softwares escritos em outras lin-
guagens, consulte a documentação do compilador utilizado.
O arquivo binário dcfldd será criado e você pode conferir se realmente é um binário
estático com o ldd:
$ ldd dcfldd
Página86 TécnicasdeComputaçaoForense
Capítulo 8
01 FAT12
02 XENIX root
03 XENIX usr
04 FAT16 <32M
05 Extended
06 FAT16
07 HPFS/NTFS/exFAT
08 AIX
09 AIX bootable
87
4Linux – www.4linux.com.br
0B W95 FAT32
10 OPUS
11 Hidden FAT12
12 Compaq diagnostics
16 Hidden FAT16
17 Hidden HPFS/NTFS
18 AST SmartSleep
24 NEC DOS
39 Plan 9
3C PartitionMagic recov
Página88 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br
40 Venix 80286
42 SFS
4D QNX4.x
50 OnTrack DM
52 CP/M
54 OnTrackDM6
55 EZ-Drive
56 Golden Bow
5C Priam Edisk
61 SpeedStor
TécnicasdeComputaçaoForense Página89
4Linux – www.4linux.com.br
70 DiskSecure Multi-Boo
75 PC/IX
80 Old Minix
83 Linux
85 Linux extended
88 Linux plaintext
8E Linux LVM
93 Amoeba
94 Amoeba BBT
9F BSD/OS
A5 FreeBSD
A6 OpenBSD
Página90 TécnicasdeComputaçaoForense
4Linux – www.4linux.com.br
A7 NeXTSTEP
A8 Darwin UFS
A9 NetBSD
AB Darwin boot
AF HFS / HFS+
B7 BSDI fs
B8 BSDI swap
BE Solaris boot
BF Solaris
C1 DRDOS/sec (FAT-12)
C6 DRDOS/sec (FAT-16)
C7 Syrinx
DA Non-FS data
DE Dell Utility
DF BootIt
TécnicasdeComputaçaoForense Página91
4Linux – www.4linux.com.br
E1 DOS access
E3 DOS R/O
E4 SpeedStor
EB BeOS fs
EE GPT
EF EFI (FAT-12/16/32)
F0 Linux/PA-RISC boot
F1 SpeedStor
F2 DOS secondary
F4 SpeedStor
FB VMware VMFS
FC VMware VMKCORE
FE LANstep
FF BBT
Página92 TécnicasdeComputaçaoForense
Capítulo 9
Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex Dec Hex
NUL 16 1 DLE 32 2 48 3 64 4 @ 8 5 P 96 6 ‘ 112 7 p
1 1 SOH 17 11 DC1 33 21 ! 49 31 1 65 41 A 81 51 Q 97 61 a 113 71 q
2 2 STX 18 12 DC2 34 22 " 5 32 2 66 42 B 82 52 R 98 62 b 114 72 r
3 3 ETX 19 13 DC3 35 23 # 51 33 3 67 43 C 83 53 S 99 63 c 115 73 s
4 4 EOT 2 14 DC4 36 24 $ 52 34 4 68 44 D 84 54 T 1 64 d 116 74 t
5 5 ENQ 21 15 NAK 37 25 % 53 35 5 69 45 E 85 55 U 11 65 e 117 75 u
6 6 ACK 22 16 SYN 38 26 & 54 36 6 7 46 F 86 56 V 12 66 f 118 76 v
7 7 BEL 23 17 ETB 39 27 ’ 55 37 7 71 47 G 87 57 W 13 67 g 119 77 w
8 8 BS 24 18 CAN 4 28 ( 56 38 8 72 48 H 88 58 X 14 68 h 12 78 x
9 9 HT 25 19 EM 41 29 ) 57 39 9 73 49 I 89 59 Y 15 69 i 121 79 y
1 A LF 26 1A SUB 42 2A * 58 3A : 74 4A J 9 5A Z 16 6A j 122 7A z
11 B VT 27 1B ESC 43 2B + 59 3B ; 75 4B K 91 5B [ 17 6B k 123 7B {
12 C FF 28 1C FS 44 2C , 6 3C < 76 4C L 92 5C \ 18 6C l 124 7C |
13 D CR 29 1D GS 45 2D - 61 3D = 77 4D M 93 5D ] 19 6D m 125 7D }
14 E SO 3 1E RS 46 2E . 62 3E > 78 4E N 94 5E ^ 11 6E n 126 7E ~
15 F SI 31 1F US 47 2F / 63 3F ? 79 4F O 95 5F _ 111 6F o 127 7F DEL
93
Capítulo 10
95
Capítulo 11
Anexo IV - Laudo
O laudo deve ser escrito em três vias assinadas pelo perito . Segue exemplo:
Listing:
1 Perito resp onsável:
2 No me: Fern and o Me rcês
3 CPF: 987. 21.4 32-99
4 Ema il: fernan do@merc es.net
97
4Linux – www.4linux.com.br
Página98 TécnicasdeComputaçaoForense