Mostrando postagens com marcador log2timeline. Mostrar todas as postagens
Mostrando postagens com marcador log2timeline. Mostrar todas as postagens

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:

Extraindo a MFT de uma Imagem Forense

Opa, e aí galera

Tudo bem?
Hoje, nós vamos falar sobre como extrair a MFT de uma imagem forense. Obviamente que a MFT é um recurso do Windows. Então, nesse post aqui, nós estaremos analisando uma imagem forense do windows.

1) Introdução
Mas qual a importância da MFT para a análise forense de uma imagem? A MFT é o principal arquivo no NTFS. Nela estão armazenadas referências de todos os arquivos e diretórios do sistema operacional. A MFT armazena os timestamps de cada arquivo, o tamanho, o dono dos arquivos/diretórios, permissões de segurança do arquivo/diretório, etc.
Todas essas informações são armazenadas no que chamamos de MFT Entry.
Cada arquivo/diretório possui uma mft entry (entrada mft). Essa entrada mft (mft entry) é como se fosse um ponteiro, similar ao inode no mundo UNIX.
Portanto, a mft entry contém informações (metadados) sobre o arquivo ao qual ela aponta.

Normalmente, cada entrada mft (mft entry) possui 1024 KB de tamanho. Se olharmos cada entrada mft em um editor hexadecimal, vamos ver que ela começa com a string "file0" ou "file", seguida de informações específicas.
As primeiras 16 entradas da MFT são reservadas para arquivos do NTFS, por exemplo, $BitMap e $Log.

Para o NTFS, tudo é arquivo, inclusive a MFT (que contém informações sobre os arquivos). Portanto, a MFT possui uma entrada pra ela mesma. Este é o primeiro arquivo de toda MFT: uma entrada pra ela mesma, que é representada por $MFT (mft entry 0). O segundo arquivo da MFT é o arquivo $MFTMirr (mft entry 1). O objetivo de existir o $MFTMirr é se ocorrer algum tipo de problema com as primeiras entradas reservadas da mft, eu tenho o $MFTMirr. Ou seja: o $MFTMirr é um backup das 16 entradas reservadas da MFT.

2) Extraindo a MFT de uma Imagem Forense
Eu já vou partir do pressuposto de que vocês já tenham uma imagem forense de um Windows qualquer. E aí, como eu faço para extrair a MFT da imagem forense? Resposta: eu vou mostrar 2 maneiras de extrair a MFT de uma imagem forense:
  1. usando o FTK Imager
  2. usando ferramentas do sleuthkit
2.1) Extraindo com o FTK Imager
Uma maneira simples de se extrair a MFT de uma imagem forense é usar a ferramenta FTK Imager. A figura a seguir mostra um exemplo:

Depois de exportar a MFT, eu vou gerar um arquivo dela. Assim, eu posso escolher qualquer ferramenta que faça o parsing da MFT e analisá-la.
Muito simples, né? :)

2.2) Extraindo a MFT com o Sleuthkit
Uma outra forma de extrair a MFT é fazendo uso do sleuthkit.
Cabe ressaltar que o arquivo $MFT ocupa a primeira posição (posição 0) na MFT. Como eu sei disso? Basta digitar o comando fls "imagem". Assim, a linha de comando é: fls image.001

Neste exemplo, a minha imagem forense se chama image.001.
O utilitário fls lista os arquivos e os diretórios de uma imagem forense.
OBS: a imagem não está montada, por isso eu usei o fls. Se ela estivesse montada, eu poderia usar o comando ls com os parâmetros -lhi.

Depois de usar o utilitário fls, eu vou usar o utilitário icat. O icat serve para copiar um determinado arquivo da imagem forense, tendo como base um determinado inode/mft entry. Isso significa que temos que passar um endereço (número do inode/mft entry) correspondente ao arquivo que queremos copiar da imagem forense.
No nosso exemplo, eu vou copiar a MFT da imagem forense. Como o inode da MFT é 0 (zero), eu vou passar esse endereço na linha de comando do icat.
Portanto, a linha de comando do icat fica assim:
icat -i raw -f ntfs image.001 0 > MFT.raw

Que parâmetros são esses?
É simples. O parâmetro -i indica que a imagem original de onde vamos extrair a mft é uma imagem forense do tipo/formato raw. O parâmetro -f indica que o sistema de arquivos da imagem forense é NTFS. E esse parâmetro 0 (zero), como já dissemos anteriormente, é o endereço da entrada mft da própria mft. No caso, a mft possui como entrada o endereço 0 (zero). Ou seja, a mft entry da própria mft é 0 (zero).

OBS: Existem outras ferramentas que fazem esse trabalho de extrair a MFT de uma imagem forense. Como exemplo, vocês podem ver aqui.

Pronto, agora extraímos a MFT da imagem forense. Qual o próximo passo? É analisar a mft extraída.
Mas isso fica para os próximos capítulos. :)

Bom, é isso galera
Espero que seja útil para o estudo e trabalho de vocês
Um abraço!




Referências:
http://sysforensics.org/2012/01/sift-workstation-video-4-extracting-mft-using-mmls-icat-and-log2timeline/
https://whereismydata.wordpress.com/2009/06/05/forensics-what-is-the-mft/
https://whereismydata.wordpress.com/2008/08/22/file-system-mft-entries-basic/
http://www.cse.scu.edu/~tschwarz/coen252_07Fall/Lectures/NTFS.html
http://grayscale-research.org/new/pdfs/NTFS%20forensics.pdf
https://en.wikipedia.org/wiki/NTFS

Atualizando Log2timeline na distribuição SIFT Workstation

Opa, e aí galera. Tudo bem?

Achei uma matéria bem legal. O autor da ferramenta Log2timeline ensina como fazer para atualizá-la na distribuição SIFT Workstation (distribuição forense do SANS Institute).

O link é: http://blog.kiddaland.net/2010/11/updating_sift_to_use_apt/

Abração em todos vocês!

Tutorial de como Instalar o Log2Timeline

Opa, e aí galera?
Tudo beleza?

Hoje eu vou passar um tutorial de como instalar essa ferramenta muito interessante.

O Tutorial é:
  1. Entre no site: http://log2timeline.net
  2. Entre no diretório "/etc/apt/sources.list" e acrescente a linha: deb http://log2timeline.net/pub karmic mais
  3. Acesse o site http://log2timeline.net/gpg.asc
  4. Copie o conteúdo para um arquivo de texto e salve com qualquer nome, mas que tenha extensão ".asc". Nesse tutorial eu salvei com o nome "gpg.asc"
  5. Digite o comando apt-key add . No meu caso foi o comando: apt-key add /home/anderson/Desktop/gpg.asc
  6. Em seguida, digite o comando: apt-get update
  7. Depois, digite o comando: apt-get install log2timeline-perl

Pronto, galera. Depois disso o programa Log2timeline está instalado. Agora é só usá-lo.

Qualquer coisa, me deixa recado aqui ou me manda email.

Abração!