Você está na página 1de 56

FILE CARVING

Escovando bits, garimpando


dados e identificando
artefatos

Sandro Melo
(sandro.melo@bandtec.com.br)
About me

Sandro Melo - Atualmente é Coordenador do curso


de Tecnologia em Redes de Computadores na
BANDTEC onde também é professor das cátedras:
"Sistema Operacionais, Segurança e Auditoria" e
responsável pelo Curso de Pós Graduação Lato
Sensu em "Segurança Computacional e
Computação Forense”. Atua na área de TI desde
1995. Doutorando pelo TIDD/PUC-SP, Mestre em
Engenharia da Computação pelo IPT e Graduado
em Tecnologia de Processamento de Dado Pela
Universidade Mackenzie. Ministrou palestras em
eventos nacionais e internacionais relevantes como
CNASI, COALTI, FISL, FIRST/USA,
BRUCON/Bélgica, LATINOWARE UPE/Paraguai,
SUSECON/Holanda; é escritor e revisor técnico;
autor de 7 Livros publicados no Brasil pela editora
Altabooks e RNP; conteudista, revisor técnico e
instrutor convidado pela ESR/RNP.
Sobre a
BandTec

A BandTec é uma faculdade de tecnologia


superior.

Superior pela qualidade de seus professores. Superior pelas


tecnologias educacionais. Superior pela metodologia que equilibra
teoria e prática de forma exemplar. E superior, acima de tudo, por
crer que está formando não apenas tecnólogos, mas líderes em
suas áreas, o que exige uma formação técnica e também
humanística, ampla e profunda.
Conceitos sobre
Computação
Forense
Forense de
Memória
Volatilidade vs Tempo de
Mídias Vida
NETWORK FORENSE
Disco nos ativos de Rede
Rígido Análise Post Mor tem
Estado Análise In V ivo
do S.O.
Memória
NETWORK
RAM
FORENSE
Tráfego
da Rede
Memória de
periféricos
Registradore
s
Cache
Nível Volatilidade
T he W hole 5-Layer Process
Data
Layer
Duplicação
Cadeia de 1o – Camada Fisica (2nd)
Custódia

File System
String Extracts Layer
& (3rd)
Analysis with Regex

Analise de
Artefatos Metadata
Layer
File (4rd)
Relatório Carving File Layer
(5rd)
O Processo da
Forense de Memória

12ª Conferencia Latino-americana de Software Livre


Desafio p/ o profissional
? Entre os desafios de Segurança
Cibernetica e o fato que o mercado
espera um super heroi, ou seja...
Temos que aprender metodologias,
tecnica e ferramentas de segurança
computacional
Temos que aprender a fazer testes
de seguranca (Pentest / Kali...)
E atualmente, precisamos
aprender sobre Resposta a
Incidente, Computação Forense e
Malware...

12ª Conferencia Latino-americana de Software Livre


Extração de
Dados para
Análise
Extração e análise de Strings

A geração de um arquivo de strings do Dump de memória


é um passo inicial importante que pode permitir identificar
informações relevantes.

# strings -a Dump_de_memoria > string_dump.txt

# srch_strings lab1.img | grep "\.exe"


O uso de Regex será um mecanismo fundamental para o
tratamento do arquivo de strings, dessa forma o uso de
ferramentas como: GREP, EGREP, GLARK.

12ª Conferencia Latino-americana de Software Livre


Extração e análise de
Strings

Exemplos de uso de Regex para extração de informações


relevantes a parti das Strings do arquivo de dump de
memória:

# grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
DUMP.img.str
# grep -i "\/exploit\/" DUMP.img.str
# grep -i "rootkit\/" DUMP.img.str

12ª Conferencia Latino-americana de Software Livre


Bulk_extractor
Extração de Dados
Outra forma que pode possibilitar a extração de artefatos é a
utilização de ferramentas como Bulk_extractor/, originalmente
desenvolvida pelo Prof. Simson L. Garfinkel da Escola Naval
Americana, que facilita a extração de dados como: “numeros IP,
número de cartões de créditos, emails, urls, numeros de
telefones].

O Bulk_extractor pode ser utlizado para analisar um arquivo


RAW, um arquivo PCAP, um Dump de Memória.

12ª Conferencia Latino-americana de Software Livre


Bulk_extractor
Extração de Dados
Exemplificação do bulk_extractor:

Extração de informações genéricas de redes


# bulk_extractor -E net -o bulk_output/ dump_de_memoria .img

Extração de informações de emails:


bulk_extractor -e net -e email -o bulk_output/
dump_de_memoria

12ª Conferencia Latino-americana de Software Livre


Bulk_extractor
Extração de Dados
Exemplificação de extração de informação de emails baseada em
uma palavra chave, diretamente de um dispositivo:
# bulk_extractor -E email -f '[Bb]acktrack' -o pericia -R /dev/sda1 -M 1 -j 20 -q
30
bulk_extractor version:1.2.0
Hostname: bt
Input file: /dev/sda1
Output directory: pericia
Disk Size: 30836523008
Threads: 20
Phase 1.
23:15:40 Offset 0MB (0.00%) Done in n/a at 23:15:39
23:16:06 Offset 503MB (1.63%) Done in 0:26:07 at 23:42:13

12ª Conferencia Latino-americana de Software Livre


Bulk_extractor
Extração de Dados
Resultado:
# ls -alh pericia/
total 1.1M
drwxr-xr-x 2 root root 4.0K 2015-07-03 23:15 .
drwx------ 40 root root 4.0K 2015-07-03 23:15 ..
-rw-r--r-- 1 root root 0 2015-07-03 23:15 alerts.txt
-rw-r--r-- 1 root root 423K 2015-07-03 23:16 domain.txt
-rw-r--r-- 1 root root 78K 2015-07-03 23:16 email.txt
-rw-r--r-- 1 root root 20K 2015-07-03 23:16 ether.txt
-rw-r--r-- 1 root root 669 2015-07-03 23:16 find.txt
-rw-r--r-- 1 root root 5.6K 2015-07-03 23:16 report.xml
-rw-r--r-- 1 root root 1.5K 2015-07-03 23:16 rfc822.txt
-rw-r--r-- 1 root root 505K 2015-07-03 23:16 url.txt

12ª Conferencia Latino-americana de Software Livre


Recuperação de
Artefatos
Conceitos de Recuper ação

As técnicas de recuperação partem do principio da existência


dos dados no disco não sobrescrito, considerando que as
informação de Metadados do arquivo estão preservada na
tabela de Metadados do sistema de arquivo nem que seja
parcialmente.

O que nos remete a situação que este conceito de


recuperação é limitado ao sistema de arquivos que
preservam Metadados dos arquivos após serem apagados e
até que aquele área da tabela de Metadados seja reescrita.

12ª Conferencia Latino-americana de Software Livre


Conceitos de Recuper ação

Outra ponto é que se ocorrer uma formatação é criada a


uma nova tabela de Metadados de particionamento, ou
seja, nesse caso talvez ainda possa se recuperar a
tabela anterior com um ferramenta como Testdisk, mas
ainda sim de uma foram geral a recuperação de dados a
partir de informações de tabela de Metadados (alocação
de arquivos) é limitada;

12ª Conferencia Latino-americana de Software Livre


FILE CARVING
(Data Carving)
Mas quando não tem
Metadados?
No caso de Sistema de arquivos Linux quando ocorre
uma exclusão de arquivos em uma partição com ext2 é
feito um ajuste no valor do “comprimento da entrada” de
diretório anterior para obscurecer registro excluído, mas
nenhuma reorganização, entrada de diretório excluídos
na tabela de Metadados são canceladas.

12ª Conferencia Latino-americana de Software Livre


Mas quando não tem
Metadados?

E embora funcione similar ao ext2, os sistemas de


arquivos ext3/ext4, na deleção de um arquivo realizar um
“wipe” na refência de inode, ou seja escreve zeros, mas
isto não ocorre com entradas de diretório, dessa forma
técnicas de recuperação tradicional de arquivos não
funcionam.

12ª Conferencia Latino-americana de Software Livre


Conceitos File Car ving (Data
Car ving)
O conceito de Data Carving ou File Carving muitas vezes
também "Carving", é o processo de identificação e
recuperação de dados que é independe de informações
de Metadados do sistema de arquivos.

O termo Carving original pode ser traduzindo do inglês


como "talhar ou esculpir" e de uma certa forma é
justamente essa idéia que se deseja passar.

12ª Conferencia Latino-americana de Software Livre


Conceitos File Car ving (Data
Car ving)

Para o uso de uma técnica básica de File Carving,


assume três hipóteses:

- O início deles, ou seja, seus cabeçalhos não estão


sobre escritos.
- Não estão fragmentados.
- E não estão compactados ou criptografados.

12ª Conferencia Latino-americana de Software Livre


Conceitos File Car ving (Data
Car ving)
As técnicas de File Carving, possibilitam a recuperação de
dados até mesmo em situações mas críticas quando:

- Ocorre uma corrupção do sistema de arquivos


- Ocorre a formatação de um dispositivo
- Os dados em formato proprietário ou desconhecido
- Os arquivos removidos/apagados (intencionalmente ou
não)

12ª Conferencia Latino-americana de Software Livre


ESTUDO DE
CASO 1
(modo cabra macho)
Recuper ação com o DD

O DD e ferramentas desenvolvidas a partir deles,


originalmente não foram desenhadas para file carving,
mas partindo do principio que um arquivo é uma
sequência de bloco de dados que por sua vez são dentro
de um contexto tradicional, combinações de “clusters” de
512 bytes.

Assim sendo, sabemos o bloco inicial de um arquivo e o


bloco final é possível sua recuperação.

12ª Conferencia Latino-americana de Software Livre


Recuper ação com o DD

Uma vez que foi possível reunir todas essa informações pode-
se usar o comando DD para extrair o pedaço de fluxo de
bytes que corresponde ao arquivo em uma respectiva
imagem:.

Exemplificação da utilização do comando hexdump em busca


de um arquivo JPEG em um arquivo raw, num contexto ideal:

# hexdump -C carving.raw | grep "ff d8"


000052a0 ff d8 ff e0 00 10 b4 f1 55 9c 4a 46 49 46 00 01
|..U.......JFIF..|

12ª Conferencia Latino-americana de Software Livre


Recuper ação com o DD

Com o comando grep filtrando pela valor que é a


assinatura ffd8 padrão de um arquivo JPEG próximo a
string “JFIF: , foi possível identificar o offset 00052a0
dentro do fluxo de dados da imagem onde iniciar um
determinado arquivo JPEG. Na sequencia é necessário
calcular o valor do offset em decimal

# echo $((0x00052a0))
21152

12ª Conferencia Latino-americana de Software Livre


Recuper ação com o DD

Considerando que o “ffd8” são representados por 4 bytes,


então 21152+4=21156, ou seja, é a partir de offset decimal
21156 que devemos encontrar o valor de assinatura de
rodapé do arquivo.

Agora pode-se utilizar o hexdump parametrizando para


pular direto offset decimal 21156 e apartir dele continuar
varrendo fluxo de bytes, e usar o valor de assinatura de
arquivos JPEG que corresponde a “ffd9”

12ª Conferencia Latino-americana de Software Livre


Recuper ação com o DD
Exemplificação:
# hexdump -s 21156 -C carving.raw | grep "ff d9"
00006c74 ff d9 d1 75 65 0b ce 68 45 43 0b f5 67
05 a7 3c |...ue..hEC..g..<|
Converte-se o offset de hexa para decimal do fim do
arquivo.
# echo $((0x00006c74))
27764
Como o esse offset corresponde a um deslocamento
para o inicio da linha é necessário a adicionar 2 bytes
para incluir o valor ffd9, assim o valor final do offset
decimal é 22764+2= 27766.
12ª Conferencia Latino-americana de Software Livre
Recuper ação com o DD

Agora que se tem os offset decimais do início de fim de arquivo,


deve calcular a quantidade blocos envolvidas.
# expr 27766 - 21156
6610
Com todas essa informações reunidas é possível parametrizar o
comando DD e fazer o File do Carving do arquivo, conforme a
exemplificação:
# dd if=carving.raw of=file_carving.jpg skip=21156 bs=1
count=6610
6610+0 records in
6610+0 records out
6610 bytes (6.6 kB) copied, 0.0144731 s, 457 kB/s

12ª Conferencia Latino-americana de Software Livre


Conceitos File Car ving (Data
Car ving)

Para finalizar basta fazer um teste do arquivo para


verificar se ele é identificado como uma imagem JPEG e
depois abri-lo com qualquer software que leia um arquivo
de imagem JPEG:

# file file_carving.jpg
file_carving.jpg: JPEG image data, JFIF standard 1.01

# tkjpeg file_carving.jpg

12ª Conferencia Latino-americana de Software Livre


ESTUDO DE
CASO 2
(exemplo com sleuthkit)
File Car ving com Sleuthkit

Exemplificação de processo de recuperação de um


arquivo a partir de uma imagem utilizando as ferramentas
do sleuthkit:

Faz a extração das informações de arquivos e identifique


os endereços (inodes):

# fls -t ext imagem.img > lista.imagem.txt

12ª Conferencia Latino-americana de Software Livre


File Car ving com Sleuthkit

Na lista extraida com o FLS, identifica-se o inode do


arquivo que se deseja recuperare com o comando ICAT,
faz as extração de bytes do inode indicado:

# icat imagem.img 4157 > arquivo.odt

Essa forma de recuperação baseou-se exclusivamente no


endereço de inode do arquivo, escolhido.

12ª Conferencia Latino-americana de Software Livre


ESTUDO DE
CASO 3
(Automatização)
File Car ving (Automatizado)

A recuperação de artefatos a partir de arquivos de duplicação


de mídias ou Dump memória é a utilização de ferramentas
como Foremost e scalpel que automatização o processo.

Foremost: é ferramenta que automatizada a recuperação


de arquivos baseada no conceito de File Carving de
informações de cabeçalhos e rodapés de a arquivo fazendo
de forma automática uma análise completa no Sistema de
Arquivo na sua forma bruta ou uma imagem de disco com
base em um arquivo de configuração originalmente chamado
foremost.conf que armazena uma lista de assinaturas validas
de dados de cabeçalho e rodapé de arquivos.

12ª Conferencia Latino-americana de Software Livre


Foremost - File Car ving
(Automatizado)
Onde cada assinatura contém um valor conhecido, o
tamanho máximo do arquivo, se o valor do cabeçalho é
sensível a letras maiúsculas e minúsculas, a extensão mais
comum do tipo de arquivo.

Sabendo-se que o cabeçalho do arquivo de um arquivo tem


um padronização, veja a exemplo de um arquivo JPEG:
$ hexdump /usr/share/pixmaps/faces/flower.jpg | head -n 5
0000000 d8ff e0ff 1000 464a 4649 0100 0101 6000
0000010 6000 0000 e1ff 1600 7845 6669 0000 4d4d
0000020 2a00 0000 0800 0000 0000 0000 dbff 4300
0000030 0500 0403 0404 0503 0404 0504 0505 0706
0000040 080c 0707 0707 0b0f 090b 110c 120f 1112

12ª Conferencia Latino-americana de Software Livre


Foremost - File Car ving
(Automatizado)
Sabendo-se que o valor - D9ff – Identificar o fim de um
arquivo jpeg

$ hexdump /usr/share/pixmaps/faces/flower.jpg | tail -n 4


0000dc0 65e1 b2b4 319f fbc8 ae62 bd19 d133 5219
0000dd0 e6a3 7a3a 9183 a164 2b2a e603 854a afd2
0000de0 b06d c6b2 27e9 c413 cf1f 8f9f 9135 3b3f
0000df0 bf6e d9ff

12ª Conferencia Latino-americana de Software Livre


Foremost - File Car ving
(Automatizado)
Baseado nesse conceito de estrutura pré-definidas para
cabeçalhos de arquivos é o foremost realizar o processo de
Carving, segue exemplo da assinaturas para alguns tipos de
jpeg que contam no arquivo foremost.conf.

# jpg y 20000000 \xff\xd8\xff\xe0\x00\x10


\xff\xd9
# jpg y 20000000 \xff\xd8\xff\xe1 \xff\xd9
# jpg y 20000000 \xff\xd8 \xff\xd9

12ª Conferencia Latino-americana de Software Livre


Foremost - File Car ving
(Automatizado)
Caso não exista a assinatura correspondente para um
determinado tipo de arquivo, pode-se criar uma e adiciona-la
ao arquivo foremost.conf, considerando o cabeçãlho do arquivo
em questão:

Segue o cabeçalho de um arquivo ELF:

$ hexdump /bin//ls |head -n 3


0000000 457f 464c 0101 0001 0000 0000 0000 0000
0000010 0002 0003 0001 0000 9cd0 0804 0034 0000
0000020 b3c8 0001 0000 0000 0034 0020 0009 0028

12ª Conferencia Latino-americana de Software Livre


Foremost - File Car ving
(Automatizado)
Considerando que uma linha de assinatura do Foremost, precisa
que seja informado a extensão, se é “case sensitive” ou não,
tamanho, cabeçalho e o rodapé, consecutivamente. Sendo que o
rodapé e opcional dependendo qual o tipo de arquivo.

# ELF Binary
# jpg y 20000000 \x7f\x45\x4c\x46\x01\x01\x01\x00

12ª Conferencia Latino-americana de Software Livre


Scalpel - File Car ving
(Automatizado)
Outra forma automatizada de recuperar arquivos a partir dos
conceitos de assinaturas e rodapé é a ferramenta Scalpel. O
Scalpel surgir surgiu após do foremost, na época a versão do
Foremost era 0.69, tinha limitação de tamanho de 4GB
(gigabytes).

O Scalpel foi desenhando para ser capaz de recuperar arquivos


até 16EB (exabites) e com a capacidade de ler o arquivo de
configuração de assinaturas do foremost.

12ª Conferencia Latino-americana de Software Livre


Scalpel - File Car ving
(Automatizado)
Supostamente enquanto o Foremost manter o mesmo formato de
assinatura é possível importá-las para o arquivo de configuração
do Scapel, todavia a razão inversa não é totalmente verdadeira
pois o Scalpel traz opções a mais para criar uma assinatura.

Outro ponto positivo a favor do Scalpel é que a versão 2.0, além do


fato de ser multithreading, trouxe recursos importante como a
capacidade de usar GPU para otimizar operação de File Carving
de arquivos de o sistema tiver o Nvidia CUDA SDK instalado.

12ª Conferencia Latino-americana de Software Livre


File Car ving (Automatizado)

Exemplificação da utilização de ferramentas como Foremost


e scalpel que fazem o automatização do processo de file
carving:

# foremost -c /etc/foremost.conf -o report imagem_disco.dd –


T

# foremost -c /etc/foremost.conf dump_memoria.img

# scalpel -c /etc/scalpel/scalpel.conf /dev/loop7 -o


recuperacao

12ª Conferencia Latino-americana de Software Livre


File Car ving em tr afe go de
Rede
Todavia quando é demandado a recuperação de arquivos a partir
de uma captura de rede, é possível a partir de um arquivo PCAP,
cuja a captura foi realizada considerando a captura completa do
payload.

Exemplo de captura: 1518 bytes

# tcpdump -i eth0 -w trafego_de_rede.pcap -s 1518

# tcpxtract -c /etc/tcpxtract.conf -f trafego_de_rede.pcap

12ª Conferencia Latino-americana de Software Livre


File Car ving em tr afe go de
Rede
O perito pode e deve fazer uso de ferramentas clássicas para
recuperação de outros tipos de dados como, mensagens “instant
messages”, email. Um bom exemplo é o velho kit de ferramentas
do dsnif

# tcpdump -i eth0 -w trafego_de_rede.pcap -s 1518

# dsniff -p tcpxtract.conf
# msgsnarf -p trafego_de_rede.pcap
# mailsnarf -p trafego_de_rede.pcap
# urlsnarf -p trafego_de_rede.pcap

12ª Conferencia Latino-americana de Software Livre


ESTUDO DE
CASO 4
(Areas de folga)
Slackspace - recuper ação

Realizar a extração de dados nos “Slackspaces” , ou seja,


possiveis evidencias nas áreas de “folga” de bloco de dados de
arquivos. A recuperação de Slackspace é simples e na prática já
ocorre quando o Perito extrai todas as strings da imagem, mas
descriminar o que são strings oriundas de um Slackspace das
que foram extraídas do restante do disco é uma tarefa difícil.

Mas é recomendável que seja feita uma extração exclusiva,


lembrando que uma evidência computacional pode ser tão
pequena e ao mesmo tempo tão significativa como os 4 bytes de
um endereçamento IP.

12ª Conferencia Latino-americana de Software Livre


Slackspace - recuper ação

Com o comando dls blkls é possível extrair informação de um


arquivo de imagem dos Slackspaces:
# blkls -s imagem.img | slackspace.dls

Nas versões mais antigas do SleuthKit o comando


correspondente era o dls, segue exemplo de uso:
# dls -s imagem.img | slackspace.dls

Extraindo caracteres (strings) de slackspace:


# strings -a slackspace > slackspace.dls.strings

.
12ª Conferencia Latino-americana de Software Livre
Conclusão

A recuperação de dados e ações e File Carving são


necessárias e podem/devem ser aplicadas a quase
todas etapas de uma Pericia Forense (Post Mortem,
Forense de Rede e Forense de Memória).

Existem ferramentas FOSS suficientes para atender um


períto nessa emocionante tarefa.

12ª Conferencia Latino-americana de Software Livre


Dúvidas!

Por favor,
levante a
mão...
DEMO

Você também pode gostar