File Carving com o Foremost

Opa, e aí galera.

Tudo bem?
Uma técnica muito importante para o perito é a chamada "carving". o termo Carving de arquivos (File Carving) consiste em acessar um arquivo independentemente da sua tabela de endereçamento (alocação). Nós podemos entender melhor essa técnica acessando este POST do Tony Rodrigues.

Existe um programa de file carving chamado Foremost.
O Foremost é um programa que roda em console (terminal) voltado para recuperação de arquivos baseando-se em seus headers, footers e suas estruturas de dados. Os headers são assinaturas ou "impressões" cujo propósito é identificar um formato de arquivo específico. Ou seja, os headers são metadados armazenados na própria estrutura interna do arquivo e são escritos em locais específicos dentro do mesmo. Como o lugar mais fácil para armazenar estes metadados são justamente os primeiros bytes do arquivo, o termo file header é usado quando os metadados possuem mais do que alguns bytes de tamanho; ou então é usado o termo magic numbers quando são somente alguns bytes de tamanho.

Para ilustrar como são visualizados os headers de arquivos, eu criei um PDF e o renomiei como teste.pdf. O conteúdo deste arquivo é o meu nome: anderson. Agora vamos abrir o arquivo teste.pdf em um editor hexadecimal e assim veremos que os primeiros bytes são a confirmação de que o arquivo teste.pdf se trata realmente de arquivo cuja extensão é .PDF:




Notem que na imagem acima o meu offset é 0000, ou seja, eu estou analisando o início do arquivo.


Porque é necessário que o perito realize essa investigação a nível de bytes? Os criminosos normalmente mudam a extensão de um arquivo com o intuito de atrapalhar a detecção de arquivos maliciosos no sistema. Por exemplo, um criminoso de posse de uma imagem pedófila cujo nome seja menininha.jpg. Ele pode então renomear para win23.dll, e assim, esconder pistas de que seja uma imagem comprometedora, dificultando a detecção de crime de exploração sexual de menores. Neste exemplo, o perito poderia utilizar técnicas de data carving para examinar e verificar que o arquivo win32.dll é na verdade uma imagem e não um arquivo interno do sistema operacional Windows, e assim poderia recuperá-la, chegando à conclusão de que se trata de um caso envolvendo exploração sexual de menores. Com esta técnica é mais difícil criminosos esconder seus rastros em sistemas computacionais.



Portanto, File Carving é o processo de analisar headers e footers de arquivos para depois extraí-los e recuperá-los.



Como eu disse anteriormente, o Foremost é um exemplo de software que se utiliza de técnicas de file carving podendo rodar diretamente em uma imagem de disco, por exemplo, as imagens geradas pelo DCFLDD. Além disso, pode ser usado para recuperar arquivos em imagens do EnCase, ou então, pode ser usado diretamente em um drive.

Para instalar o Foremost no Debian ou Ubuntu, pode-se digitar:
# apt-get install foremost

Podemos especificar os headers e footers editando o seu arquivo de configuração (/etc/foremost.conf). Ou então, podemos usar alguns parâmetros na linha de comando para especificar quais dados queremos recuperar.

Para visualizar o help do foremost basta digitar no terminal:
# foremost -h

No primeiro exemplo, eu tenho uma imagem de uma pendrive (imagem.dd). Eu rodei o foremost contra essa imagem digitando o comando (Figura 1):
# foremost imagem.dd -o /home/anderson/Desktop/recuperado











No exemplo acima eu consegui recuperar arquivos de várias extensões. Isso acontece porque não especifiquei nenhum header, então ele recupera tudo o que encontrar. A opção -o especifica qual será o meu diretório de saída, onde vou armazenar os arquivos recuperados. Neste exemplo, eu vou armazenar os arquivos de saída no diretório "recuperado".

OBS: Vale ressaltar aqui que o foremost se baseia em assinaturas de arquivos, denominadas "magic numbers".

No segundo exemplo, eu usei a opção "-T" (Figura 2):











Essa opção vai criar um diretório cujo nome vai ser o horário exato, o dia e o mês (Time Stamp) em que o foremost está sendo utilizado. Por exemplo, se eu rodar o foremost nesse momento com a opção "-T", eu vou ter uma pasta nom eu desktop renomeada como: output_Thu_Apr_28_10_44_54_2011. Isso significa que eu rodei o foremost numa Quinta-feira, do mês de Abril, 28, às 10:44:54, do ano de 2011.

Um site onde vocês podem adquirir maiores informações é a matéria Data Carving with Foremost. Se vocês quiserem aprofundar um pouco mais no assunto, podem acessar os sites Magic Number e File Format.




Outro site que pode ser útil é um site aonde encontramos as assinaturas de arquivos (File Signatures).

Bom, é isso galera.
Abração!

8 comentários:

  1. E se eu possuir arquivos de imagens que foram corrompidas porque perderam justamente os headers? Será que consigo reescrever os cabeçalhos utilizando desse programa ou teria que efetuar isso manualmente?

    ResponderExcluir
    Respostas
    1. Aí vc tem que editar os headers com algum editor hexadecimal

      Qualquer dúvida, estou por aqui
      Um abraço!

      Excluir
  2. Rapaz, tenho o mesmo problema do amigo acima. Se possível, esclareça-nos por favor. Parabéns e boa sorte!

    ResponderExcluir
    Respostas
    1. É só usar um editor hexadecimal pra poder editar os headers

      Um abraço!

      Excluir
  3. Preciso adicionar uma extensão no foremost.conf. É possível?

    ResponderExcluir
    Respostas
    1. Sim, é perfeitamente possível. O arquivo foremost.conf é um arquivo de texto

      Abração!

      Excluir