Parsing da MFT

Opa, e aí galera.

Tudo bem?
Neste post falamos sobre como extrair a MFT de uma imagem forense. Hoje, nós vamos mostrar algumas ferramentas para fazer o parsing da mft extraída, e assim, poder analisá-la.

Vamos falar de 2 ferramentas para fazer o parsing da MFT: log2timeline e analyzemft.py. Existem outras ferramentas, mas vamos falar sobre essas 2. Se vocês quiserem ver outras ferramentas, podem acessar este link aqui.

1) Log2timeline
Esta ferramenta foi criada por Kristinn Gudjónsson como paper final para a certificação GCFA Gold. Ele criou esta ferramenta com o intuito de se criar uma super timeline do sistema a ser investigado. Isto traria uma melhor compreensão e uma visão holística dos eventos de um sistema a ser investigado. Super timeline significa ter um timeline de várias fontes de informação e artefatos do sistema operacional (e.g. histórico do I.E., timeline de informações do squid, apache, IIS, prefetch, evt, setupapi.log, userassist, etc); ou seja, podemos juntar todos os timelines de todos esses artefatos em um grande arquivo, e, assim, teremos um melhor contexto necessário para ter uma melhor visão do que realmente aconteceu no sistema comprometido.
O log2timeline funciona usando módulos. Cada módulo trabalha em cima de um tipo de artefato. Por exemplo, o módulo prefetch vai trabalhar em cima de artefatos do prefetch, o módulo IIS vai trabalhar em cima de artefatos do IIS, o módulo squid vai trabalhar em cima de artefatos do squid, o módulo mft vai trabalhar em cima de artefatos da MFT, e assim por diante.

"Versão 0.x do log2timeline tem sido extremamente útil, mas foi escrito em Perl e tem limitações de desempenho. Está em curso um grande esforço para reescrevê-la em Python, chamada Plaso. Alguns lançamentos alfa desta ferramenta forma liberados." (tradução livre, fonte: aqui).

Se você quiser instalar o plaso, pode seguir as instruções desta página. Mas, se você estiver tendo algum tipo de problema na instalação, pode seguir as instruções desta página.
Aqui neste post, nós não vamos falar do plaso; nós vamos falar do log2timeline mesmo. E vamos focar na análise da MFT. Se alguém quiser ver algum outro uso do log2timeline, você pode entrar aqui, aqui e aqui.

Podemos usar o log2timeline em um arquivo de imagem forense ou podemos montar a imagem forense e depois usar o log2timeline.
Para usar o log2timeline em um arquivo de imagem forense é bem simples. Nosso arquivo de imagem forense aqui se chama image.001. Eu vou ter como parâmetros o -f que indica qual módulo eu vou trabalhar. Neste caso, como eu vou analisar a mft, então eu vou usar o módulo para se trabalhar com a mft; este módulo, por curiosidade, se chama mft :). Por último, eu vou usar o parâmetro -w que vai me indicar qual será o outuput de escrita, ou seja, o parâmetro -w me indica qual arquivo ele vai armazenar o resultado depois de realizar o parsing. No nosso caso, a ferramenta log2timeline vai armazenar o resultado no arquivo timeline.csv. Assim, eu posso abrir o calc e analisar o resultado em uma planilha.

Se eu quiser, eu posso usar o parâmetro -z local. Assim, o timezone que ele vai analisar não será o UTC, e sim o timezone usado na máquina invadida (máquina esta à qual o log de eventos pertence), o que facilita a interpretação e contextualização dos acontecimentos.

A figura a seguir mostra o resultado do log2timeline. Como o resultado foi um arquivo do tipo .csv, eu abri o arquivo no calc.


2) Analyzemft.py
Outra ferramenta para analisar a MFT é um script em python, o analyzemft. O link para baixar a ferramenta é este aqui. Esta ferramenta é bem simples de trabalhar.
Vale lembrar que ela já vem instalada na SIFT.

O comando funciona assim: python analyzeMFT.py -f [mft extraída] -o [arquivo onde os resultados serão armazenados]
No meu exemplo a mft etraída se chama mft.raw e eu vou escrever os resultados no arquivo mftanalyzed.csv.
Portanto, a linha de comando fica assim: python analyzeMFT.py -f mft.raw -o mftanalyzed.csv
Essa é a linha de comando normal. Só que no meu caso, eu estou usando a SIFT 3.0, vai dar um erro:

Esse erro aconteceu porque eu preciso passar o caminho completo do script analyzemft. Então, a linha de comando correta é: python /usr/bin/analyzeMFT.py -f mft.raw -o mftanalyzed.csv.
Pronto, agora vai tudo normal como mostra a imagem a seguir:

O arquivo de output é do tipo .csv. Isso significa que podemos abrir e analisar o arquivo em um software de planilha, por exemplo, o calc ou o excel.
Quando abrirmos o arquivo no calc, vai aparecer a seguinte tela:

Esta tela mostra como o calc vai interpretar as informações. Nós vamos falar para o calc separar os dados através da vírgula. Assim, cada coluna (campo) será um tipo de dado.
Os campos são:

  • Record Number: MFT Entry
  • Good: se a entrada é válida
  • Active: se a entrada é ativa
  • Record type: mostra o tipo de registro
  • Sequence Number: o número de sequência do registro
  • Parent file record number
  • Parent file record sequence number: número de sequência de registro de arquivo pai
  • Filename: nome do arquivo/diretório
  • Algumas informações do Atributo Standard Information: mactimes referentes ao atributo Standard Information
  • Algumas informações do Atributo File_Name: mactimes referentes ao atributo File_Name
  • Object ID
  • Birth Volume ID
  • Birth Object ID
  • Birth Domain ID
  • e outros;
Podemos usar as teclas CTRL+F para procurar por um arquivo.
Na imagem a seguir, eu procurei pelo arquivo "satriani". Ele me encontrou o arquivo "satriani.jpg", cujo record number (MFT record) é 45931; assim, eu posso usar o icat para extrair o conteúdo referente a esta entrada MFT, ou qualquer outra entrada que eu queira.


Bom, é isso galera.
Mostramos um pouquinho sobre as 2 ferramentas. É claro que elas fazem muito mais do que isso, eu só quis "dar um empurrão". :)
Um abraço!






Referências Bibliográficas:

Nenhum comentário:

Postar um comentário