sábado, 26 de janeiro de 2008

Imagens Forenses

Fazer a aquisição de uma imagem forense de um HD é, em muitos casos, o ponto de partida de uma investigação. A técnica conhecida como "dead analysis" determina que o HD a ser analisado deve ser clonado bit a bit e qualquer análise deve ser feita nessa cópia, de forma a manter o HD íntegro. Chamamos a cópia de imagem forense porque ela deve copiar todos os dados do HD, incluindo as partes não utilizadas.

Existem diversos utilitários para fazer uma imagem forense. A maioria deles implementa o mesmo formato, conhecido como raw. Esse é, literalmente, uma cópia fiel do HD, e é o formato gerado pelo utilitário dd. Entretanto, ele não é o único formato disponível.

Neste artigo, vamos falar um pouco dos formatos mais conhecidos e realizar uma breve comparação entre eles.

RAW

Como eu disse acima, esse ainda é o formato mais comum. É uma imagem literal do HD, cópia exata, bit a bit. É o formato de saída de vários utilitários, como o dd, o dcfldd e o sdd. Há também alguns utilitários GUI para Linux, que nada mais fazem do que usar a interface gráfica para que o usuário indique os parâmetros com os quais o utilitário de imagem vai ser executado. Como arquivos gerados podem ser muito grandes, alguns utilitário permitem que a imagem seja quebrada (split) em vários arquivos de tamanhos fixos.

Prós:

- Formato facilmente montado
Pode ser montado com comando mount usando loopback.

- Independe de ferramentas específicas
Na pior das situações, no mínimo o comando dd vai estar disponível.

- Muitas ferramentas disponíveis, tanto para linha de comando (CLI) quanto para interface gráfica (GUI).
dd, dcfldd e sdd são as ferramentas CLI mais comuns.
Adepto e AIR são muito usados como GUI.

- Há algumas formas de montagem do arquivo de imagem em sistemas Windows
É possível montar imagens raw de HDs no WIndows usando produtos free, permitindo uma série de análises específicas através de utilitários que só existem em Windows. Também é muito útil em análises de malware.

- Disponível em utilitários tanto para Linux quanto para Windows.
Além dos utilitários comentados acima, o dd está disponível para Windows no CD do Helix.

Contras:

- Não possui compactação
Os arquivos raw são muito grandes e não possuem nenhum tipo de compactação. Caso sejam compactados por algum utilitário de compactação (zip, gzip, tar, etc), eles não poderão ser montados dessa forma, requerendo que sejam descompactados antes de serem montados e usados.

- Não grava metadados
Não há uma previsão para se juntar dados da investigação ao arquivo raw. Todas as informações relativas ao caso ou ao arquivo devem ser armazenadas a parte, em outros arquivos.
- Não trata erros
Se o arquivo for corrompido, só saberemos se um hash for comparado ao resultado do hash tirao antes do arquivo ser corrompido. Ele não mantém internamente nenhum CRC ou outro esquema de recuperação em caso de ser corrompido.

- Não monta facilmente se estiver quebrado em pedaços.
Para se montar uma imagem de 80Gb dividida em 10 pedaços de 8Gb, os pedaços precisam ser concatenados antes e somente após isso podem ser montados via comando mount. Além de necessitar de uma grande quantidade de espaço livre disponível, não é incomum ver essa operação de concatenação corromper o arquivo. Apesar disso, existem utilitários que permitem montar os arquivos sem concatenar.

- Algumas operações são mais lentas devido ao grande tamanho.
Como o arquivo não é compactado, ele costuma ser muito grande e operações triviais de cópia costumam demorar muito.

Para endereçar alguns dos problemas acima, outros formatos acabaram surgindo.

Expert Witness (E01)

É o formato proprietário do EnCase, um dos melhores programas de Forense Computacional que existe. Infelizmente, o EnCase não é free. Apesar disso, existem utilitários free que fazem a aquisição forense de um HD já no formato E01. O Linen, por exemplo, é oferecido no Helix.

Prós:

- É compactado
O esquema de compactação dele foge do usual. Os setores é que são compactados, e de forma tal que se consiga acesso fácil aos dados.

- Metadados
É possível armazenar informações relativas ao caso, ao HD, ao investigador, etc, dentro do arquivo de imagem.

- Arquivos divididos (split) podem ser usados mais facilmente
Os arquivos divididos podem ser usados (montados) sem antes terem de ser concatenados.

Contras:

- Tratamento de Erros
Não é muito eficiente, segundo alguns pesquisadores.

- É proprietário
Apesar de ser lido por algumas das ferramentas mais conhecidas, a compatibilidade ainda não é total, já que o formato é proprietário e o fabricante tem a liberdade de modificá-lo a cada nova versão. Necessita de bibliotecas específicas para ser montado no Linux, felizmente já disponíveis no Helix.

- Tamanho de arquivos
Limite de tamanho de arquivo = 2 Gb. Arquivo maiores exigem quebra.

- Metadados fixos
O conjunto de metadados que esse formato usa é fixo, e não pode ser modificado ou customizado.


SGZIP

O sgzip é um formato compactado usado pelo pyFlag. É baseado no gzip, mas com capacidade para ser montado e pesquisado. O utilitário sgzip, no pacote do pyFlag, é o responsável por converter entre imagens raw (dd) e o formato sgzip.

Prós:

- Boa taxa de compactação
Usa algoritmos de compactação com boa taxa final de compressão.

- Bom esquema de tratamento de erros
Problemas de arquivo corrompido não invalidam o arquivo inteiro.

- Não tem limite de tamanho de arquivos
Não possui o limite de 2 Gb do formato E01.

- Código aberto
Os fontes estão disponíveis aqui

Contras:

- Não permite metadados
Esse formato é, em resumo, um raw com compactação. Não possui especificação para metadados nele, até porque ele foi criado para o pyFlag, que armazena suas informações sobre os casos (Case Management) em sua base MySQL.

- Necessita de utilitários específicos para ser montado
Não é possível montá-lo sem um utilitário específico disponibilizado pelo pyFlag.

- Pouco difundido
Como é um formato que atende a um programa específico, ele não é tão conhecido como o raw (dd) ou o Expert Witness (E01). Também não tem suporte a ele nas principais ferramentas de Forense Computacional disponíveis, como o Sleuth Kit. Essa limitação foi quebrada por um utilitário do pyFlag, mas seria bem melhor se o suporte fosse nativo.

- Não monta em Windows
Para ser montado em Windows, teria que ser convertido em raw primeiro.

Advanced Forensic Format (AFF)

O formato AFF é, por assim dizer, o primeiro formato pensado em termos de padronizar o mercado, oferecendo uma solução de estrutura de arquivo de imagem que enderece vários problemas antigos. Ele é um formato novo, mas vem sendo amplamente aceito e eu apostaria dizer que é o formato que vai predominar daqui a alguns anos.

Prós:

- Compactação
Ele usa um algoritmo chamado LZMA, que oferece taxas de compactação superiores aos outros formatos

- Tratamento de Erros
Possui dispositivos que permitem isolar um erro, caso o arquivo de imagem seja corrompido, e recuperá-lo (mapas de paridade).

- Disponibilidade
Algumas das ferramentas mais usadas já estão aceitando o formato. Os autores também disponibilizaram bibliotecas e tutoriais para que a adaptação seja simplificada ao máximo.

- Metadados
Além de oferecer a capacidade de regitrar metadados, eles são configuráveis, ou seja, você pode colocar os metadados que quiser lá. Ele controla, inclusive, a cadeia de custódia da imagem diretamente pelos metadados. Outro ponto interessante é que ele já regitra hashes, para comparação e manutenção da integridade, em dois algoritmos diferentes. Há a possibilidade de serem assinados digitalmente também.

- Código aberto
O código dele e seu formato está todo aqui

- Sem limites de tamanho
Não tem a limitação de tamanho máximo de arquivos. Ainda por cima, oferece a possibilidade de fazer a divisão dos arquivos (split) e usá-los sem precisar concatenar antes.

- Suporte
O projeto partiu de alguns monstros da Forense Computação mundial, incluindo Brian Carrier e Simson Garfunkel.

Contras

- Formato muito jovem
É, sendo um formato novo, algumas vezes podemos ter surpresas desagradáveis. Ainda assim, eu diria que é um formato a se apostar.

O TESTE

Resolvi criar imagens usando os formatos acima e realizar comparações simples. A bem da verdade, comparei apenas em termos de espaço utilizado.

Como os algoritmos de compactação utilizados exploram principalmente as semelhanças nos setores, usei dois pen-drives para a captação das imagens forenses:
- um Kingston que eu já usava há bastante tempo e que por vezes já teve seu espaço livre esgotado e apagado (sem formatar novamente), e;
- um Sandisk recem comprado, com vários Mbs livres e nunca escritos.

Obviamente, o tamanho do arquivo raw mostra a capacidade de cada um. Os resultados foram obtidos usando as opções defaults das ferramentas. Em vermelho, você pode acompanhar a taxa de compactação obtida.


Tipo de imagemKingstonSandisk
raw (dd)836Mb974Mb
Expert Witness (EnCase E01)767Mb (8,25%)214Mb (78,03%)
sgzip (pyFlag sgz)760Mb (9,09%)213Mb (78,13%)
AFF (aff)755Mb (9,69%)210Mb (78,44%)


Podemos concluir, pelos resultados da tabela:

- A taxa de compactação será maior, de acordo com a área não utilizada do disco. Isso não significa que discos com mais espaço disponível compactarão melhor, pois se eles possuírem grandes quantidades de arquivos não alocados, o algoritmo de compactação não vai conseguir ser tão eficaz.

- O Advanced Forensic Format sem dúvida é o que alcançou as melhores taxas de compactação.

No próximo post, vamos conversar sobre como fazer a aquisição de uma imagem nos formatos acima.

Até o próximo post !

Seguem algumas referências:

Survey of Disk Image Storage Formats

ADVANCED FORENSIC FORMAT: AN OPEN, EXTENSIBLE FORMAT FOR DISK IMAGING

Acessing Forensic Imagens

4 comentários:

Cris disse...

Preciso de uma ajuda, no encase 3 facilmente adicionava uma imagem RAW no caso. Já na versão 4.20 tento adicionar uma imagem RAW no caso, é colocado a imagem, mas não mostra a estrutura de diretórios. Alguma idéia?

Tony Rodrigues disse...

Cris,
Não tenho nem uso o Encase, por conta disso não sei se consigo ajudá-lo. Posso apenas supor que, como com certeza o Encase aceita imagens Raw, ou vc executou os procedimentos de inclusão da imagem de forma errada ou a imagem está corrompida. Para concluir sobre o que está acontecendo, eu faria uma imagem pequena, de um pendrive, por exemplo, e usaria essa imagem como teste para validar as ações.

[]s
Tony

Cris disse...

Agradeço a sua ajuda.
A imagem nao esta corrompida, a mesam imagem abre na versao 3 e nao funciona na 4. Talvez nao saiba usar a versao 4 corretamente. Sou muita grata pelo palpite.

Fernandes Macedo disse...

Tony..olha eu aqui novamente...sobre o seu comentario sobre o dd fazer cópia bit a bit. o Eriberto e o Garfinkel descreve que é bloco a bloco. O Eriberto é bem convincente em http://eriberto.pro.br/blog/?p=57.