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 > MFT

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

Conversão de Imagens

Opa, e aí galera.

Tudo bem?
Hoje nós vamos falar sobre conversão entre alguns formatos de imagens forense. Lembrando que temos basicamente 3 tipos de formato forense: raw (dd), ewf/e01 e AFF. Existem outros, mas esses são os mais usados.
Então, a intensão deste post é falar sobre como fazer a conversão de um formato para outro formato.
Resumindo, o que nós vamos fazer nesse post é a conversão dos seguintes formatos:

1) Conversão do formato EWF/E01 para o formato RAW
Bom, falamos sobre o formato ewf/e01 aqui. Mostramos, inclusive, sobre como criar uma imagem forense nesse formato. Agora, nós vamos mostrar como eu posso converter uma imagem forense "ewf" para o formato "raw".
Mas você pode estar se perguntando: por que eu quero converter de e01 para raw? Qual o benefício disso? A minha resposta é: a partir do formato RAW, eu posso realizar várias técnicas como o file carving visando a recuperação de arquivos, eu posso usar ferramentas para analisar o timeline (e.g. log2timeline), eu posso fazer exame de evidências em geral (analisar o registro do Windows, analisar o histórico do browser, etc) fazendo uso de várias ferramentas forense (até mesmo ferramentas open source). Tudo isso eu consigo fazer quando analiso uma imagem no formato RAW.
E se eu não converter para RAW? Se eu quiser analisar a imagem no formato EWF mesmo? Quais ferramentas eu vou usar para analisar uma imagem no formato EWF? A minha resposta é: basicamente, você vai usar o EnCase, que é uma ferramenta paga/proprietária.

Bom, então vamos lá.
O que eu quero, neste momento, é converter uma imagem do formato ewf para o formato raw. Pra isso, eu preciso ter uma imagem no formato ewf, não é mesmo? :)
E aí vem a pergunta: Onde eu vou conseguir uma imagem .E01/EWF? Resposta: eu vou usar uma imagem forense criada para um exercício do Lance Mueller, o forensics_practical_3. Pra baixar a imagem referente a este exercício, basta ir neste link. No fim deste post, ele coloca o link para baixar a imagem forense.

Existem 2 maneiras de realizar a conversão do formato ewf para o formato raw:
  1. Usando o utilitário ewfexport (que faz parte da libewf)
  2. Usando o utilitário img_cat (que faz parte da suíte do sleuthkit)
Vamos mostrar as 2 opções.
A primeira opção que vou mostrar é usando o utilitário ewfexport.


O utilitário vai fazer algumas perguntas básicas. Vamos analisá-las:
  • na primeira pergunta, ele quer saber qual o formato depois da conversão. No caso, eu escolhi que após a conversão, a imagem vai ser no formato raw
  • na segunda pergunta, ele quer saber o caminho completo do diretório onde a imagem no formato raw será armazenada. Nisso, ele pede pra ser incluído o nome da imagem no formato raw (sem usar nenhuma extensão no nome). No exemplo aqui eu disse que a imagem no formato raw vai se chamar imagem (ele vai adicionar a extensão automaticamente). O path completo (caminho do diretório) onde a imagem será armazenada vai ser em /home/sansforensics/Desktop/cases/Forensics_practical. Lá dentro, vai ter um arquivo chamado imagem.raw.
  • na terceira pergunta, o tamanho do segmento. Esse segmento é quando queremos trabalhar com o chamado split image. E o que é isso? É quando queremos dividir o nosso arquivo de imagem forense em vários pedaços/segmentos. Aí então, se quiséssemos uma split image no formato raw, iríamos indicar qual o tamanho de cada segmento. Como eu não quero que a imagem no formato raw não seja "repartida" em segmentos, eu escolhi o valor zero (0). Isso significa que eu não vou querer "splitar" a imagem forense; eu vou querer somente um arquivo, mesmo que seja grande, para ser a minha imagem forense no formato raw.
  • na quarta pergunta, ele quer saber qual o primeiro byte que será exportado/convertido. Podemos notar que ele mostra um intervalo que vai de 0 até 7.9 EiB. Nesse caso eu indiquei que o primeiro byte a ser exportado/convertido é o byte 0, justamente porque eu quero converter toda imagem no formato ewf, desde o início. Como o início é no byte 0, então eu indiquei que ele vai começar a exportar/converter desde o início :). Isso parece até um pouco óbvio :)
  • na quinta pergunta, ele quer saber o número de bytes a ser exportado/convertido. Como eu quero converter toda a imagem forense, então eu optei por converter o número máximo de bytes da imagem, assim significa que eu vou exportar/converter o arquivo inteiro.
OBS: vale a pena observar que ele mostra os valores defaults entre colchetes. Se você quiser os valores default, é só apertar a tecla Enter.
Como dissemos no post anterior, o formato EWF permite a compressão de dados. Então, a imagem no formato EWF será bem menor do que a mesma imagem no formato RAW.

Outra alternativa que nós temos é usar o utilitário img_cat, que faz parte da suíte de utilitários do sleuthkit. O comando é: img_cat -v -i ewf "imagem.e01" > "imagem.dd"

Podemos notar alguns parâmetros na linha de comando. O primeiro parâmetro (-v) significa que ele vai jogar para o stderr uma saída detalhada de erros; o parâmetro (-i) indica qual é o tipo da minha imagem antes de ser convertida. Neste caso, eu disse que antes da conversão, a minha imagem original é do tipo/formato ewf. Por fim, eu tenho um redirecionamento para um arquivo de imagem forense do tipo raw (imagem.dd).

Podemos notar também a compressão de dados do formato EWF. A imagem no formato EWF é bem menor do que a imagem no formato RAW.


2) Conversão do formato RAW para o formato EWF/E01
E se eu tenho uma imagem forense no formato RAW e quero convertê-la para o formato EWF. Como eu faço isso? Resposta, eu posso usar um utilitário que faz parte da libewf, o ewfacquire.
No post sobre imagens ewf, eu comentei sobre esse utilitário (este utilitário serve para se criar uma imagem forense no formato ewf). Só que eu também posso usar este utilitário para converter uma imagem raw para uma imagem ewf/e01.
Como eu faço isso? Basta digitar: ewfacquire "nome da imagem no formato raw".
Para exemplificar, eu tenho uma imagem no formato raw chamada: imagem.raw. Se eu quiser convertê-la para o formato ewf/e01, basta digitar o comando: ewfacquire imagem.raw. Assim, eu vou converter o arquivo imagem.raw para o formato ewf/e01 (tornando assim imagem.e01).


Vocês podem notar que ele vai me pedir para responder algumas questões básicas. Essas questões são os metadados referentes à imagem no formato EWF (lembram que esse tipo de formato permite armazenar metadados?). Pois é, são algumas perguntas básicas, coisa rápida (nós já vimos sobre o ewfacquire aqui).
Lembrando que para responder as perguntas com as opções default, basta apertar a tecla "enter". Depois de responder essas perguntas, ele começa o processo de conversão. Ao fim, ele mostra quanto tempo durou essa conversão e o hash da nova imagem forense (imagem esta que está no formato ewf).
Agora, uma pergunta: o ewfacquire mostra o hash da nova imagem. Se eu digitar "md5sum imagem.E01", porque esse novo hash vai ser diferente do hash apresentado pelo ewfacquire? Resposta: o hash mostrado pelo utilitário ewfacquire é calculado somente em cima dos dados (isso significa que o hash não leva em conta os metadados da imagem.E01). Portanto, o hash mostrado pelo ewfacquire vai ser igual ao hash do arquivo imagem.raw

3) Conversão do formato AFF para RAW
Já falamos sobre imagens AFF aqui. Se alguém tiver alguma dúvida, basta acessar o link para ver como o aff funciona.
Agora, nós vamos falar sobre a conversão do formato aff para raw.
Eu tenho uma imagem física de uma pendrive. Esta imagem física está no formato AFF? Como eu faço para convertê-la para o formato Raw? Resposta: eu uso o utilitário affconvert (lembrando que nós falamos sobre o affconvert aqui).

E como o affconvert funciona para converter de um formato para o outro? Como ele funciona para converter uma imagem no formato AFF para RAW? É simples. O comando é: affconvert -r "imagem.aff". Neste exemplo, a minha imagem no formato AFF se chama "image.aff". Então, neste exemplo, a linha de comando fica assim: affconvert -r image.aff.

Podemos ver que usei o parâmetro -r. Ele serve para falar que após a conversão, a nova imagem será no formato RAW (-r vem de raw).
Simples, né? :)


4) Conversão do formato RAW para AFF
E se eu quiser converter do formato raw para aff? Qual ferramenta eu posso usar? Resposta: o próprio affconvert. O comando é: affconvert "imagem no formato raw". Como eu vou converter um arquivo de imagem que se chama "imagem.raw", a linha de comando fica assim: affconvert imagem.raw.

Notem que eu não tenho nenhum parâmetro na linha de comando.


5) Conversão do formato AFF para AFF
Agora que nós já falamos de algumas conversões, vamos falar sobre conversão do formato AFF para AFF. Mas como assim? Conversão de um formato para o mesmo formato? Não; o que eu quis dizer é que agora nós vamos falar sobre a conversão entre os vários formatos do container AFF. Lembra que no post passado, sobre imagens AFF, eu comentei que existem 3 métodos/formatos para o container AFF? Esses 3 métodos/formatos são o próprio AFF, o AFD e o AFM.
Então, o que nós vamos fazer agora é pegar uma imagem em um destes 3 formatos e converter para outro formato.

5.1) Conversão do formato AFF para o AFM
A primeira conversão será do formato AFF (armazena tanto os metadados quanto os dados em um único arquivo) para o formato AFM (os metadados são armazenados no arquivo .afm e os dados são armazenados no arquivo splitraw).

Notem que,depois do processo de conversão, eu vou ter 3 arquivos. O arquivo image.000 é o meu arquivo de imagem splitraw. O arquivo image.aff era a minha imagem original, antes da conversão. O arquivo image.afm é o arquivo que contém os metadados referentes a imagem splitraw.
Resumindo, em grosso modo, bem simplista, o que fiz foi o seguinte: eu peguei a imagem aff (arquivo image.aff, que contém os metadados e os dados juntamente em um único arquivo) e separei os metadados dos dados em si; os metadados foi para um novo arquivo (imagem.afm) e os dados foram para o arquivo image.000.
Se eu quiser acessar os metadados, basta digitar o comando "affinfo image.afm. Se eu quiser ver a geometria do disco da minha imagem, basta digitar "mmls image.000" ou "mmls image.aff", vai dar no mesmo.

5.2) Conversão do formato AFF para o AFD
Agora, nós vamos fazer a conversão da imagem no formato AFF para o formato AFD. Lembrando que no formato AFF a imagem e os metadados estão contidos em um único arquivo; e, no formato AFD, os metadados estão armazenados na própria imagem forense, porém, quebra-se a imagem forense em alguns "pedaços".

O nome da imagem forense no formato AFF é: image.aff.
Depois do processo de conversão, será criado um diretório para os arquivos AFD (o diretório recebe o nome da imagem com extensão AFD - image.afd). Nesse diretório estarão os arquivos da imagem splitraw. No meu exemplo, dentro do diretório image.afd, eu vou ter o arquivo file_000.aff (que é um arquivo AFF - img_stat file_000.aff). Se eu quiser, eu posso até montar o arquivo file_000.aff usando o utilitário affuse; já vimos esse procedimento aqui.

5.3) Conversão do formato AFD para o AFM
O processo é o mesmo. Eu vou usar o utilitário affconvert com o parâmetro -a.

Depois do processo de conversão, eu vou ter 4 arquivos:
  • image000: a imagem forense em si. Ela é do tipo splitraw.
  • image.afd: era a minha imagem no formato AFD antes da conversão
  • image.aff: é somente uma imagem no formato AFF, que não participou em nada no processo de conversão
  • image.afm: arquivo que contém os metadados referentes à imagem splitraw - metadados referentes ao arquivo de imagem image.000
5.4) Conversão do formato AFM para o AFD
O processo não é diferente. Vamos usar novamente o utilitário affconvert com o parâmetro -a.

Se eu quiser, eu posso até entrar no diretório "image.afd", que eu vou ver um arquivo de imagem AFF lá dentro. No meu exemplo aqui, a imagem AFF que vai estar dentro do diretório image.afd é o arquivo: file_000.aff.
Eu posso fazer o que quiser com o arquivo file_000.aff; eu posso montá-lo, e posso também exibir algumas informações (metadados) referentes à imagem forense, usando o utilitário affinfo file_000.aff

5.5) Conversão do formato AFM para o AFF
O processo para conversão do formato AFM para o formato AFF é o mesmo das outras conversões. Eu vou usar o utilitário affconvert com o parâmetro -a

5.6) Conversão do formato AFD para o AFF
Por fim, nós temos a conversão do formato AFD para o formato AFF. Novamente, eu vou usar o utilitário affconvert com o parâmetro -a.


Bom, é isso galera.
Espero que esse post tenha alguma importância para você, leitor.

Um abraço!





Referências:

Imagens AFF

Opa, e aí galera.

Tudo bem?
Nós já falamos sobre imagens no formato EWF/E01 aqui. Agora, nesse post, nós vamos falar sobre um outro tipo de formato de imagens forense: o formato AFF.

1) História
Pra começo de história, este formato foi idealizado pelo cientista Simson Garfinkel e a empresa Basis Technology. AFF significa Advanced Forensics Format. A versão mais recente do AFF foi implementado pela sua biblioteca, a AFFLIBv3, que pode ser encontrado em seu github. Não vamos confundir o formato AFF com o AFFv4. Este último foi um "redesenho" do formato AFF, ou seja, é um novo formato (Fonte: AFF4).

2) AFFLIBv3
Como já dissemos, para ter suporte ao formato AFF precisamos ter instalado sua biblioteca, a AFFLIBv3. Essa biblioteca permite ter suporte a algumas ferramentas que iremos falar mais adiante. Mas vamos falar primeiro sobre o AFF.

O formato AFF foi criado para ser um formato extensível e aberto para o armazenamento de imagens de disco e de seus metadados. Quando eu digo aberto, é porque qualquer um pode "integrar/acoplar" os utilitários da AFFLIB em seus próprios softwares, sejam eles abertos ou proprietários. Quando eu digo extensível, é porque novas características podem ser adicionadas mantendo, ainda assim, a compatibilidade (Fonte: aqui). Além disso, o formato AFF é livre de patentes.

Segundo o Luiz Rabelo, "AFF suporta dois algoritmos de compressão: zlib, que é rápido e razoavelmente eficiente, e LZMA, que é mais lento, mas muito mais eficiente. O zlib é o mesmo algoritmo de compactação usado pelo EnCase. Como resultado, arquivos AFF compactados com zlib são aproximadamente do mesmo tamanho que o arquivo  equivalente no formato EnCase. A grande vantagem é que arquivos AFF  podem ser "re-compactados" (!) utilizando o algoritmo LZMA. Esses arquivos tem um tamanho aproximado de 1/2 a 1/10 do tamanho do original AFF / arquivo EnCase."

As imagens no formato AFF podem ser armazenadas em um destes 3 métodos/formatos:
  • AFF: formato padrão. Neste método, um único arquivo de imagem forense contém os dados forense (que é a imagem forense em si) e os metadados embarcados.
  • AFD: Neste método, o metadado está armazenado na imagem forense. Porém, "quebra-se" a imagem forense em tamanhos fixos.
  • AFM: Neste método a imagem é armazenada no formato raw e os metadados são armazenados em um outro arquivo.

A biblioteca AFFLIBv3 possui algumas ferramentas que permite trabalharmos com imagens no formato AFF. Algumas dessas ferramentas são:
  • affconvert: permite converter imagens em todos os formatos suportados pelo formato AFF (RAW --> AFF; AFF --> RAW; AFF-->AFF). 
  • affuse: permite que os arquivos de imagens AFF (imagens AFF) apareçam como arquivos/imagens no formato RAW. Assim, o affuse permite que as imagens de disco sejam montadas.
  • affinfo: exibe algumas informações sobre a imagem AFF
  • affxml: exibe algumas informações sobre a imagem AFF como XML



3) Criando uma Imagem Forense AFF
Já fizemos uma introdução sobre o formato AFF, agora vamos ver como criar uma imagem forense no formato AFF. 

Para criar uma imagem forense no formato AFF podemos usar o software FTK Imager. Ele permite tanto criar uma imagem física quanto uma imagem lógica. Como dissemos no post sobre imagens ewf, o FTK Imager serve tanto para criar imagens de dispositivos atachados na minha estação forense (HDs, pendrives, etc) quanto também serve para criar imagens forense de uma máquina virtual (se eu tenho uma máquina virtual qualquer e quero criar uma imagem forense desta máquina, eu posso usar o FTK Imager pra isso) (Fonte: aqui).
OBS: Vale lembrar que para se criar uma imagem forense de uma máquina virtual no VMWare (considerando que esta máquina virtual está ligada e funcionando), precisamos primeiro suspender esta máquina virtual pra depois começar o processo de criação da imagem forense.

Se alguém tiver alguma dúvida de como se criar uma imagem forense utilizando o FTK Imager, pode entrar neste link.


4) Montando Imagens AFF
Agora que já temos nossa imagem no formato AFF, vamos montá-la. É um processo simples.
Precisamos primeiro ter o diretório para o ponto de montagem. Vamos montar a imagem no formato AFF no diretório /mnt/aff. Como a SIFT vem com esse diretório criado por default, não precisamos criá-lo. O próximo passo é usar o utilitário affuse para podermos montar a imagem no formato AFF no diretório /mnt/aff. Depois de usar o affuse e montando a imagem no formato AFF, vamos ver que ele é, na verdade, um container, e que carrega lá dentro dele uma imagem no formato raw. Então, se entrarmos no diretório /mnt/aff vamos ver que existe uma imagem no formato raw lá dentro. Depois disso, podemos montar a imagem no formato raw normalmente, utilizando o comando mount.

A imagem que eu montei foi uma imagem de uma pendrive, que não tinha nada armazenado lá dentro. Por isso que depois de montada, não apareceu nenhum arquivo com o comando "ls".

No post sobre imagens ewf, comentamos sobre o parâmetro offset. Se alguém tiver alguma dúvida, pode ir lá e ver a explicação sobre este parâmetro. Naquele post também comentamos a necessidade de se desmontar a imagem depois de analisá-la. O processo de desmontagem de imagens no formato AFF é o mesmo processo de desmontagem de imagens ewf (acontece em 2 passos).


Bom, é isso.
Um abração!





Referências:



Imagens E01/EWF

Opa, e aí galera?

Tudo bem?
Hoje nós vamos falar sobre imagens EWF/E01. Mas, primeiramente, vamos falar um pouco sobre a história de como surgiu esse tipo de imagem.

1) História
Bom, em 1998, a empresa Guidance criou um software inovador que viria a ser o líder de mercado na área de forense computacional. Na época, ou seja, em 1998, este software se chamava Expert Witness. Então, uma empresa chamada ASR Data, que já detinha a marca "expert witness" registrada, entrou com um processo contra a Guidance com o intuito de proibí-la a usar a marca "expert witness". No fim das contas, a Guidance mudou a marca para EnCase. E é por isso que o formato da imagem gerada pelo software EnCase se chama EWF (Expert Witness Format).

Acontece que este formato começou a ser também chamado de E01. Isso significa que o formato EWF pode ser também chamado de E01.

2) LibEWF
Uma das primeiras coisas a se falar é que para se manipular imagens no formato ewf/e01 (ler e escrever), precisamos de uma biblioteca chamada libewf. É ela quem permite fazer leitura e escrita no formato ewf/e01.
Os formatos suportados para leitura e escrita são:
  • SMART .s01 (EWS-S01), 
  • EnCase .E01 (EWF-E01) e Ex01 (EWF2-Ex01); 

Os formatos suportados somente para leitura são:
  • LEF (Logical Evidence File), .L01 (EWF-L01) e o formato Lx01 (EWF2-Lx01)

A biblioteca libewf possui algumas ferramentas que permite trabalharmos com as imagens forense. As principais ferramentas são:
  • ewfacquire: utilitário que cria uma imagem forense de algum dispositivo. Essa imagem será no formato EWF.
  • ewfinfo: utilitário que mostra os metadados da imagem. Estes metadados foram criados no momento da criação da imagem forense.
  • ewfverify: utilitário que verifica a integridade de cada pedaço da imagem forense. 
  • ewfexport: utilitário que exporta a imagem do formato EWF para o formato RAW
Existem outros utilitários que fazem parte do pacote libewf, mas creio que estes sejam os principais.


3) Características
O formato ewf/e01 é um formato interessante. Ele permite comprimir os dados da imagem forense, Assim, quando analisamos um arquivo de imagem do tipo "raw" (criado através da ferramenta DD) e o comparamos com a sua versão no formato ewf/e01, podemos notar que a imagem no formato do encase é bem menor. Ou seja: o formato do encase permite a compressão de dados.
A imagem a seguir mostra a diferença entre a imagem no formato e01 (comprimida) e a mesma imagem em formato raw (não comprimida):

Uma outra característica interessante é que agente pode dividir a imagem forense de um HD ou de uma partição em pedaços. Cada um desses pedaços serão renomeados da seguinte forma: imagem.Exx. Portanto, se eu tenho um HD de 20 gigas, e quero ter 2 pedaços no formato ewf, os meus arquivos de imagem forense ficam desta forma: imagem.E01 e imagem .E02. Se eu quero ter 3 pedaços no formato ewf, os meus arquivos de imagem forense ficam desta forma: imagem.E01, imagem.E02 e imagem.E03. Resumindo a história é que eu posso ter múltiplos pedaços que formam a imagem forense do meu disco/partição


4) Criando uma Imagem Forense E01
Já falamos sobre a história do formato ewf/e01, já falamos sobre a libewf, já falamos sobre algumas características do formato ewf/e01; agora é mão na massa. Nós vamos falar agora sobre como criar uma imagem forense no formato ewf/e01.

Uma das formas de criar uma imagem forense no formato ewf/e01 é usando o FTK Imager. E essa opção é boa se eu tenho, por exemplo, uma máquina virtual e quero criar uma imagem forense dessa máquina virtual. Basta carregar o FTK Imager e no momento de escolher qual o alvo, eu indico o disco virtual da máquina virtual em questão. Maiores explicações sobre como realizar uma imagem forense com o FTK Imager podem entrar neste link: http://periciadigitaldf.blogspot.com.br/2012/12/criando-imagens-forense-com-ftk-imager.html

Uma outra forma de criar uma imagem forense no formato ewf/e01 é usando distribuições linux voltadas para forense computacional. Como exemplo, nós temos as distribuições Helix, Caine, SIFT, e até mesmo a Kali Linux, etc.
Neste exemplo aqui, eu vou fazer uma imagem forense de um pendrive.
OBS: Se você tiver alguma dúvida persistente, existem alguns vídeos no youtube mostrando o processo. Um exemplo de vídeo é este aqui.

Bom, vamos para o primeiro passo: eu vou atachar o pendrive no SIFT. Depois eu digito o comando "fdisk -l" para ver se o pendrive foi reconhecido. Após isso, eu já posso começar a fazer a imagem da minha pendrive. O comando é: ewfacquire (dispositivo alvo que eu quero criar a imagem). Como no meu exemplo a pendrive foi reconhecida como o dispositivo /dev/sdc, a linha de comando fica assim: ewfacquire /dev/sdc.


Pode-se notar que o utilitário pergunta algumas informações. Basta responder; é muito tranquilo. Algumas perguntas ele já até coloca a opção entre colchetes; neste caso basta apertar a tecla "enter", ele já escolhe a opção default. Antes de iniciar o processo de realizar a imagem, ele mostra um resumo com as opções que você escolheu.



Quando ele terminar todo o processo de realização da imagem forense, ele mostra o hash e informa se o processo foi realizado com sucesso


Neste momento, em que todo o processo foi realizado com sucesso, eu posso ainda usar a ferramenta ewfinfo para ver algumas informações sobre a minha imagem forense. Estas informações são os metadados que nós informamos no momento que estávamos iniciando o processo dei magem forense (com a ferramenta ewfacquire). O comando é: ewfinfo (imagem.E01). No nosso exemplo aqui, a linha de comando fica assim: ewfinfo USB.E01


Outro utilitário que também posso usar neste momento é o ewfverify. O comando é: ewfverify (imagem.E01). No nosso exemplo aqui, a linha de comando fica assim: ewfverify USB.E01


5) Montando Imagens EWF
Um fato interessante é que quando temos imagens .e01, vamos notar que depois de montá-la, vamos ver que lá dentro dela existe uma imagem RAW. Ou seja: imagens .e01 funcionam como se fosse contêineres.

Agora, vamos partir para o próximo passo: montar as imagens.
Nesse momento eu não vou usar a imagem do pendrive; eu vou usar as imagens da digital corpora. O cenário que vou usar como exemplo é o M57-Jean. São dois arquivos no formato E01; estes arquivos são o "nps-2008-jean.E01" e "nps-2008-jean.E02".
OBS 1: sempre que temos uma imagem forense no formato EWF com mais de um arquivo (.e01, .e02, .e03 ...), é preciso que todos eles estejam no mesmo diretório. No nosso exemplo aqui, é necessário ter no mesmo diretório os arquivos "nps-2008-jean.E01" e o "nps-2008-jean.E02".
OBS 2: na hora de montar, eu não preciso montar os arquivos com extensão .e02, .e03, .e04, etc. Basta montar o arquivo com extensão .e01. Então, aqui no nosso exemplo, eu só vou montar o arquivo "nps-2008-jean.e01".

Eu vou usar 2 scripts para montar imagens no formato EWF: mount_ewf.py e ewfmount. Mas por que eu vou mostrar exemplos com esses 2 scripts? Porque na hora de montar a imagem, pode ser que um dê algum tipo de problema; então nós temos a outra opção. Além dessas 2, existem outras opções de scripts para se montar uma imagem; o xmount é uma dessas opções (eu não vou mostrar o xmount nesse post).

Para montar as imagens no formato EWF, precisamos realizar 2 passos (sequencialmente):
  1. O diretório /mnt/ewf é onde vai ficar a minha imagem RAW. Então primeiro eu vou montar a imagem .e01 usando o comando mount_ewf.py (ou ewfmount)
  2. O segundo passo é rodar o comando mount em cima da imagem RAW (e vou montar a imagem RAW no diretório /mnt/windows_mount).
5.1) Montando uma imagem usando o script mount_ewf.py
No exemplo a seguir, a imagem "nps-2008-jean.e01" está no diretório /home/sansforensics/Desktop/cases/Corpora/nps-jean-2008.e01.
Então, a linha de comando fica assim:
# mount_ewf.py /home/sansforensics/Desktop/cases/Corpora/nps-jean-2008.e01 /mnt/ewf


O que chama a atenção neste último comando (comando mount) é o parâmetro offset. Este parâmetro indica o offset da partição que vamos analisar dentro do disco virtual (lembrando que esta imagem é uma imagem do HD, ou seja, uma imagem física).
Toda vez que temos uma imagem de um disco virtual (e não de uma partição), precisamos usar este parâmetro offset e indicar justamente o offset do início da partição, que neste caso o offset é o setor 63. Como os setores são de 512 bytes, basta multiplicar o offset pelo tamanho do setor (63 setores * 512 bytes por setor = 32256). Ou seja, para montar partição com o filesystem NTFS, eu preciso passar o parâmetro offset=32256.
E se ao invés de 63, estivesse aparecendo 2048? Aí bastaria fazer o seguinte: 2048 * 512, que seria igual a 1048576. Assim, o parâmetro offset=1048576. Fácil, né? :)

Para desmontar a imagem, é preciso fazer 3 coisas.
  1. Sair do diretório /mnt/ (e consequentemente sair também dos seus subdiretórios). Por exemplo, eu fui para o diretório /home/sansforensics
  2. umount /mnt/windows_mount
  3. Por fim, o comando: umount /mnt/ewf



Se eu desmontasse somente o diretório /mnt/windows_mount, o diretório /mnt/ewf ainda estaria montado. Por isso é necessário desmontar os dois diretórios.

5.2) Montando uma imagem usando o script ewfmount
Este script tem a linha de comando igual ao mount_ewf.py. A diferença entre os dois é que o script ewfmount é produto de uma atualização do outro script. Isso significa que o ewfmount é mais atual que o mount_ewf.py. Mas os dois funcionam do mesmo jeito.
A linha de comando é:
# ewfmount /home/sansforensics/Desktop/cases/Corpora/nps-jean-2008.e01 /mnt/ewf


Para Desmontar, vamos fazer do mesmo jeito que fizemos com o mout_ewf.py: desmontamos primeiro o diretório /mnt/windows_mount (umount /mnt/windows_mount) e depois desmontamos o diretório /mnt/ewf (umount /mnt/ewf)

Bom, é isso galera
Um abração!



Referências Bibliográficas:

Cinco Tecnologias de Espionagem Que Não Podem Ser Interrompidas Mesmo no Modo Offline

Opa, e aí galera?

Tudo bem?
Dando uma olhadinha em alguns blogs, achei uma matéria interessante no blog da kaspersky. Nessa matéria, o autor mostra 5 maneiras de espionar sistemas offline. São técnicas bem interessantes para quem trabalha com segurança nacional e/ou sistemas críticos de infraestrutura nacional, ou até mesmo, em empresas de grande porte como alguns bancos.

As 5 maneiras de espionar um sistema offline são:

  1. Espionagem eletromagnética - método de interceptação de sinais eletromagnéticos
  2. Cuidado com o laser - Registro das vibrações e dos impulsos que correspondem às teclas digitadas em um teclado ou smartphone (este é um método de keylogging).
  3. Ouvir o rádio - método que modula a radiação eletromagnética no hardware do PC. Segundo a wikipédia, modulação é o processo no qual a informação a transmitir numa comunicação é adicionada à ondas eletromagnéticas.
  4. Quente, mais quente! Arde! - Roubo de dados por meio das emissões de calor.
  5. Toc, toc. Quem está aí? - Uso do ultra-som em equipamentos de espionagem para vazar dados.
O link para o post é este: https://blog.kaspersky.com.br/when-going-offline-doesnt-help/5443/

Bom, é isso
Um abração!

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:


Guia com todos os Comandos do CMD do Windows

Opa, e aí galera

Tudo bem?
Achei um post interessante em um blog.
Esse post mostra um guia com todos os comandos do CMD do Windows.
Vale a pena dar uma olhada.

O link para o post é: guia com todos os comandos do CMD do Windows

Bom, é isso.
Um abraço!

Guia com mais de 500 Comandos GNU/Linux Explicados

Opa, e aí galera

Tudo bem?
Achei um post interessante em um blog.
Esse post mostra 500 comandos do GNU/Linux explicados
Vale a pena dar uma olhada.

OBS: alguns destes comandos são muito utilizados na computação forense, como o DD (e o DCFLDD), o LS, o CD, TAIL, GREP, etc.

O link para o post é: 500 comandos Linux

Bom, é isso.
Um abraço!

Guia com mais de 500 Comandos GNU/Linux Explicados

Opa, e aí galera

Tudo bem?
Achei um post interessante em um blog.
Esse post mostra 500 comandos do GNU/Linux explicados
Vale a pena dar uma olhada.

OBS: alguns destes comandos são muito utilizados na computação forense, como o DD (e o DCFLDD), o LS, o CD, TAIL, GREP, etc.

O link para o post é: 500 comandos Linux

Bom, é isso.
Um abraço!

Como descobrir a ProductKey (chave de registro) do windows?

Opa, tudo bem galera?

Em alguns casos é necessário descobrir qual a chave de registro (product key) instalada no windows. Então, como eu faço para descobrí-la?
Podemos usar o seguinte comando: wmic path softwarelicensingservice get OA3xOriginalProductKey

OBS: Lembrando que é necessário estar logado como administrador no prompt de comando para rodá-lo.




Um outro modo é usar um programa da Nirsoft. Este programa se chama: ProductKey
Existem 2 versões: 32 bits e 64 bits.

Pesquisando na internet vocês vão encontrar outras possibilidades - usando outros softwares - para esta mesma funcionalidade.


Bom, é isso.
Um abraço!

O que é Handle?

Opa, tudo bem?

Normalmente, em treinamentos, as pessoas me perguntam o que é handle. Bom, no blog de forense do SANS existe um post interessante sobre um tópico referente a análise de malware. E nesse post, o autor cita um site da Microsoft, mais especificamente o MSDN, no qual eles explicam o que é um handle.

Eu vou colocar o link do post do SANS, e lá tem a referência para o link da Microsoft explicando o que é um handle. Mas por que eu vou colocar o post do SANS? Porque é uma matéria interessante que vale a pena a leitura. Fica aqui a minha dica :)

O link para o post do SANS onde o autor cita a Microsoft é: http://digital-forensics.sans.org/blog/2015/04/03/identifying-and-disrupting-crypto-ransomware-and-destructive-malware

Bom, é isso.
Um abraço!

Spoofing de SMTP

Opa, e aí galera

Tudo bem?
Encontrei um site bem interessante.
Claro que todos nós temos corações puros e não vamos prejudicar ninguém.
É um site que faz spoofing de SMTP

O link para o site é: emkei.cz

É isso aí!
Abração!

Links de IOC (Indicators Of Compromise)

Opa, e aí galera

Tudo bem?
Uma boa ferramenta pra se trabalhar com IOC é a Redline.
"Fundamentalmente, Redline é uma ferramenta criada pela empresa Mandiant, cujo o propósito é a aquisição e análise forense de dados de hosts suspeitos de estarem comprometidos." (Redline UserGuide - tradução livre)

E o que é IOC (Indicators Of Compromise - Indicadores de Comprometimento)?
"São artefatos forense que identificam uma invasão em um host ou em uma rede de computadores. Os IOCs incluem conjuntos de termos descritivos logicamente agrupados, fazendo referência a algum tipo de ameaça específica." (Redline UserGuide - tradução livre)

Apresento a vocês alguns links sobre IOC:



Bom, é isso galera.

Um abração!

Trabalhando com Autopsy

Opa, e aí galera.

Tudo bem?
Semana passada, nós mostramos como instalar o sleuthkit e autopsy no debian.
Muito bem. Agora, nós vamos ver como trabalhar com o autopsy, adicionando uma imagem e analisando essa imagem forense.

O que é o autopsy?
É uma interface gráfica para as ferramentas em linhas de comando do sleuthkit. O propósito do autopsy é analisar um file system de uma imagem forense.

Neste post, estaremos usando a distribuição SIFT (SANS Investigative Forensic Toolkit).
É uma distribuição voltada para forense computacional, que possui várias ferramentas com este propósito. A SIFT é baseada no Ubuntu. No entanto, podemos usar outras distribuições como a BackTrack (Kali), Caine, DEFT, etc.
Nós vamos analisar uma imagem física do Windows Vista
OBS: no fim deste post existe um link de referência. Nesta referência, a análise foi feita usando uma imagem lógica de uma partição do Windows

Para iniciar o autopsy, digite: autopsy.
Depois, selecione com o mouse o link que a ferramenta irá te passar, clique com o botão direito do mouse e escolha a opção: Open Link


Seção 1 - Criando um novo Caso no Autopsy                                                                                 
1.1) Criando um novo caso:
     1.1.1) Clique no botão: New Case











1.2) Criando um novo caso:
     1.2.1) Case Name: Analisando-Windows
     1.2.2) Description: Procurando arquivos deletados
     1.2.3) Investigator Names: aqui vai o seu nome. No meu caso, vou colocar Anderson
     1.2.4) Clique no botão: New Case












1.3) Adicionando Host
     1.3.1) Clique no botão: Add Host











1.4) Adicionando Host
     1.4.1) Host Name: host1
     1.4.2) Clique no botão: Add Host











1.5) Adicionando Imagem
     1.5.1) Clique no botão: Add Image











1.6) Adicionando Imagem
     1.6.1) Neste momento, vou informar o diretório onde a imagem está armazenada: ls $PWD/vis*
     1.6.2) Selecione com o mouse e copie o path completo da imagem










1.7) Adicionando Imagem
     1.7.1) Clique no botão: Add Image File











1.8) Adicionando Imagem
     1.8.1) Cole o path completo da imagem
     1.8.2) Type: no meu caso, eu vou escolher a opção Partition
     1.8.3) Import Method: no meu caso, eu vou escolher a opção Symlink
     1.8.4) Clique no botão: Next











1.9) Adicionando Imagem
     1.9.1) Na opção Data Integrity, seleciona a opção: Ignore...
     1.9.2) Clique no botão: Add











1.10) Adicionando Imagem
     1.10.1) Clique no botão: Ok











1.11) Calculando a integridade da imagem com o algoritmo MD5
     1.11.1) Clique no botão: Image Integrity



1.12) Calculando a integridade da imagem com o algoritmo MD5
     1.12.1) Clique no botão: Calculate











1.13) Visualizando o Check Sum MD5
     1.13.1) O resultado será mostrado logo abaixo.
     1.13.2) Clique no botão: Close















Referência: http://computersecuritystudent.com/FORENSICS/AUTOPSY/lesson1/

Instalando o DCFLDD

Opa, e aí galera

Tudo bem?
Nós já falamos aqui sobre o DCFLDD que é uma ferramenta semelhante ao DD. O Eriberto até comenta sobre esta ferramenta em seu novo livro (Descobrindo o Linux - 3ª Edição).
Pois bem, algumas pessoas já me perguntaram como eu faço pra instalar essa ferramenta. Então agora eu vou mostrar esse procedimento, que é bem simples.

A primeira coisa que vamos fazer é entrar no site: http://dcfldd.sourceforge.net/#download
Vamos fazer o download do arquivo "source code" que é o código fonte da ferramenta. E depois vamos compilar e instalar no sistema.
O sistema que estou usando é o Debian 7.
Existem algumas distribuições voltadas para forense que já vem com esta ferramenta pré-instalada, como é o caso da CAINE, DEFT, Backtrack (que agora o projeto se chama Kali), SIFT, etc.

Estou baixando o arquivo que é o código-fonte da ferramenta. Neste momento, a versão mais atual do dcfldd é a 1.3.4
Depois de baixar a ferramenta, eu vou descompactá-la: tar -xzvf dcfldd-1.3.4.tar.gz


Depois eu vou entrar no diretório que foi criado para a ferramenta


Neste momento, estou pronto para compilar a ferramenta. Então, vou usar o comando ./configure para configurar o meu ambiente


O próximo passo é digitar o comando: make


Por fim, basta digitar o comando: make install


Pronto. Instalamos a ferramenta.
Para ter certeza qual a versão que foi instalada, basta digitarmos: dcfldd --version

Bom, é isso galera.
Espero que esse post seja interessante.

Um abração!