segunda-feira, 18 de abril de 2011

Data Carving: a busca por arquivos deletados

* Por Luiz Sales Rabelo


Uma notícia que chocou e revoltou todos os Brasileiros recentemente foi o caso do massacre do Realengo, onde o atirador Wellington Menezes de Oliveira abriu fogo contra crianças dentro de uma escola pública.

Para minha surpresa, esta semana fui agraciado por uma reportagem do jornal Extra/OGlobo, que circula no Rio de Janeiro, com a seguinte nota:






Para mim foi muito satisfatório ler este trecho em específico. Mesmo que indiretamente e de forma diminuta, estamos colaborando com a solução dos mistérios que ainda envolvem este caso.

Para este artigo, resolvi falar sobre as técnicas utilizadas para recuperação de arquivos apagados, chamada de Data Carving. Basicamente, Data Carving é um processo que localiza arquivos e objetos que foram deletados ou que estão "inseridos" em outros arquivos.







Os arquivos são "esculpidos" a partir do espaço alocado (ou não) baseando-se no "header" (cabeçalho) do tipo de arquivo e nos "footers" (rodapés). As estruturas do sistema de arquivos (FAT, MFT, inode table) não são utilizadas durante o processo. Para demonstrar este recurso, vou utilizar o FTK, da AccessData.

Após criado o caso, o FTK nos solicita adicionar os arquivos de evidência e permite configurar o processamento destas evidências. Um click no botão "Refinement Options" abre a seguinte tela:







Observe que um dos últimos itens da lista à esquerda chama-se Data Carve, que vem desmarcado por padrão. Marcando esta opção, habilita-se o botão Carving Options, que nos exibe a seguinte tela:






Nesta tela, podemos verificar os tipos mais comuns de arquivos que o FTK consegue "esculpir" a partir do arquivo de evidência:



  • AOL Bag Files
  • BMP Files
  • EMF Files
  • GIF Files
  • HTML Files
  • JPEG Files
  • LNK Files
  • OLE Files (Office Documents)
  • PDF Files
  • PNG File

Vou tomar como exemplo um formato de arquivo muito popular, o JPEG, utilizado para arquivos de imagens. Praticamente todas as imagens que você vê na internet e também neste blog estão em formato JPEG. Na prática, o que um "data carve" faz é procurar uma sequência em hexadecimal 0xFF D8, que representa o início de um arquivo JPEG, e procurar depois o final deste arquivo, representado pelo 0xFF D9. Feito isso, tudo o que estiver entre estes dois blocos de imagem forma um arquivo de imagem JPEG:









No primeiro exemplo deste post há um arquivo de imagem "dentro" de um documento do Word. O princípio de funcionamento é o mesmo: imagina este documento do Word gravado no disco. O conjunto de dados que representa esta imagem está lá, o FTK só precisa "abrir" este documento do Word para conseguir achar o 0xFF D8 ...... 0xFF D9!

O mesmo princípio se aplica também a um arquivo de imagem JPEG, dentro de um arquivo do Word, compactado em um arquivo ZIP e enviado por e-mail. (!!!)








O FTK consegue abrir todos estes arquivos até chegar aos JPEG que estamos buscando.


Os mais atentos perceberam que o último item da tela do "Carving Options" não está presente na lista: Microsoft Outlook Personal Folder, ou simplesmente PST. Isso, por que esta não é uma entrada padrão do sistema, este é um "carve" customizado, disponível através do botão "Custom Carvers":






Observe que é informado o "header" do arquivo PST (representado por 0x21 42 44 4E) e o tamanho máximo do arquivo (em bytes). É possível até mesmo categorizar o arquivo através da seleção de algum item na árvore File Category. Ao contrário dos arquivos JPEG, um arquivo PST é extenso, e pode sofrer mais com a fragmentação dos dados no disco. Já existem algumas técnicas que tentam recuperar os fragmentos de um mesmo arquivo espalhado pelo disco após a perda da referência (delete arquivo, wipe MFT free space, por exemplo), e os resultados são animadores!

Claro que, se você utiliza o FTK, não precisa se preocupar em saber headers e footers dos arquivos, a AccessData disponibiliza em seu site, quase 300 tipos de arquivos já pré-definidos, bastando importá-los para o seu FTK. Estes arquivos estão disponíveis em http://accessdata.com/support/custom-carvers e estão categorizados em formatos de arquivos para Windows, para Linux e para MacOS.


Leia mais sobre o formato JPEG aqui.

Leia mais sobre data carving em um excelente estudo da SANS sobre o tema aqui.

Leia mais sobre o processo de data carving no FTK através do manual do sistema, disponível aqui.




* Luiz Sales Rabelo é analista de Segurança e consultor em computação forense da Techbiz Forense Digital. Desde outubro de 2010, é instrutor autorizado pela AccessData a transmitir os conhecimentos sobre a ferramenta FTK 3. É MCP (Microsoft Certified Professional) e ACE (AccessData Certified Examiner).Autor do blog: http://forensics.luizrabelo.com.br/