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

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

MACtimes em Sistema de Arquivos NTFS

Opa, e aí galera

Tudo bem?
Hoje nós vamos falar sobre mactimes (que são os timestamps de um sistema de arquivos). Segundo a wikipedia "mactimes são os campos de metadados do sistema de arquivos que registram o último instante em que ocorreram certos eventos pertinentes a um dado arquivo."

Ainda, segundo a wikipedia, estes eventos são a modificação (modification time), o acesso (access-time) e alteração de metadados (change-time) . O termo MAC é um acrônimo derivado dos termos "mtime", "atime" e "ctime", estruturas mantidas no sistema de arquivos Unix.

Os MACtimes são extremamente utilizados na computação forense. Veremos mais adiante alguns exemplos onde eles podem ser usados. Este termo "mactime" foi originalmente usado por Dan Farmer, pesquisador importante na área que escreveu um ótimo livro sobre computação forense. Já de antemão, existem algumas diferenças entre os mactimes de sistemas Unix e Windows. A principal diferença está no "ctime". Em sistemas de arquivos NTFS, o "ctime" registra o último instante que o conteúdo de metadados da MFT foram atualizados (MFT foi modificada). Essa atualização (modificação da MFT) ocorre quando por exemplo o tamanho de um arquivo é alterado, ou então as permissões de segurança de um arquivo são alteradas, ou até mesmo quando o dono de um arquivo é atualizado.

Segundo o projeto LINUX-NTFS do sourceforge, em filesystems NTFS existem 4 timestamps: MACB (acrônimo de 4 termos)

  • M (Modification-time): registra quando o conteúdo do arquivo foi modificado pela última vez.
  • A (Accessed-time): registra o tempo aproximado em que o conteúdo do arquivo/diretório foi acessado pela última vez. Para arquivos ou diretórios, este último acesso engloba escrita ou leitura; no caso de executáveis, este último acesso vale para a última execução.
  • C (Change in metadata): registra a última modificação no metadado do arquivo. Assim, a MFT será modificada.
  • B (Birth-time/Born): registra o momento em que o arquivo foi criado.
Cabe ressaltar que o NTFS determina os MACtimes com base no UTC. Os timestamps (mactimes) são valores de 64 bits que representam a quantidade de 100 nanosegundos desde 1º de Janeiro de 1601 UTC.

O Rob Lee, criou uma tabela que resume muito bem o assunto deste post. Segue a tabela:



Nota: existem algumas divergências sobre o significado de cada timestamp. Por uma questão de "ficar com boas referências", eu escolhi ficar com o Brian Carrier e LINUX-NTFS. Alguns livros vão divergir no significado do "mtime", ou do "ctime", ou do "atime", e alguns outros livros nem vão trazer a existência do "birth-time". Mas como eu disse, eu quis ficar com uma boa referência bibliográfica.

Bom, então é isso.
Um abraço!





Referências Bibliográficas: