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

quinta-feira, 31 de janeiro de 2008

Imagens Forenses II

Fazendo a aquisição das imagens


Há várias formas de se realizar a aquisição ou captura de uma imagem forense. Vamos falar um pouco de cada uma.

RAW

A imagem RAW é a mais comum, e a que possui mais ferramentas disponíveis para a sua aquisição. No entando, antes de falar diretamente da aquisição, vamos falar da diferença entre imagem física e imagem lógica.

Um dispositivo de armazenamento ou mídia (um HD, um disquete ou até mesmo um pendrive) possui uma tabela interna que indica como o dispositivo está dividido nas partições. Disquetes e pendrive, na maioria das vezes, possuem apenas uma partição. HDs, por outro lado, comumente são particionados de forma a organizar melhor o armazenamento de arquivos.

Uma imagem lógica é uma imagem forense de uma partição apenas. Uma imagem física contém todas as partições do dispositivo mais a tabela de partições. Por exemplo, se temos um HD com 3 partições em uma máquina com Linux, carregando esse HD como um device hda, teríamos:

Imagem física => /dev/hda

Imagem lógica => /dev/hda1, /dev/hda2 ou /dev/hda3


Através do Helix, temos opção de usar tanto a linha de comando quanto interface gráfica para realizar a aquisição raw.

A maneira mais simples de fazer uma aquisição é usando o utilitário DD:


dd if=/dev/hda of=imagem.dd conv=noerrors,sync bs=512

Essa linha de comando fará a imagem do HD (device) conectado como hda para o arquivo imagem.dd, no diretório corrente.

Apesar de ser a maneira mais simples, o utilitário dd não oferece algumas funcionalidades importantes. Por conta disso, criaram alguns "primos" muito bons desse utilitário.

O dd_rescue, presente no Helix, serve para realizar aquisições de mídias com problemas. Em algumas situações, mesmo assinalando a opção conv=noerrors, o dd é interrompido ao encontrar erros na mídia. Nesse caso, recomenda-se usar o dd_rescue.

O sdd, também presente no Helix, realiza aquisições mais rápido do que o dd, quando o tamanho de bloco dos devices de origem e destino são diferentes. Você pode usar o tamanho de bloco default de cada device, mas se quiser, pode determinar o tamanho com o comando sfdisk -l . Veja o exemplo:

sfdisk -l /dev/hda

O dcfldd é o primo mais ilustre e conhecido do dd. Ele tem implementado algumas rotinas específicas para aquisição de imagens forenses. Por exemplo, ele possui um log de toda a operação, faz divisão da imagem (split) e permite verificar diretamente a integridade da operação através de vários algoritmos de hash. Também está disponível no Helix. Esse é o mais indicado quando se trata de imagens raw em linha de comando.

O rdd foi desenvolvido pelo Netherlands Forensic Institute (NFI) e sua documentação indica que ele é bem robusto em relação a tratamento de erros, divisão de arquivos (split) e hash. Ele não está disponível no Helix. Além de poder incluí-lo usando a técnica comentada anteriormente nesse blog, ele está disponível no pacote forense FCCU.

As interfaces gráficas são, em sua maioria, formadas para deixar que o investigador indique as opções da aquisição, e em seguida essas opções são passadas para um dos utilitários em linha de comando.

O Adepto, presente no Helix, oferece log sobre toda a operação e a possibilidade de se escolher entre usar o dcfldd (formato raw) ou ainda o AFF, para o formato Advanced Forensic Format, comentado no artigo anterior. Na interface também indicamos qual algoritmo de hash será usado para validar a operação e se queremos dividir o arquivo da imagem em porções menores (split). Ele permite também fazer a aquisição tendo como destino um dispositivo montado (local), um dispositivo SMB (Samba ou mesmo um compartilhamento Windows) ou então via netcat.

O Air, presente no Helix, não é tão completo quanto o Adepto em termos de log, e oferece captar a imagem através do dd ou do dcfldd. É possível determinar o algoritmo de hash (md5 e SHA-1) e enviar a imagem capturada através da rede com netcat ou cryptcat (netcat criptografado).

A versão 12 do FCCU, recém liberada (vou comentar no próximo post) traz uma nova interface gráfica para aquisições de imagem forense: o GuyMager. Ainda não testei, mas sua documentação indica que foi concebido para tirar vantagem de máquinas com mais de um núcleo de processamento, muito comuns hoje, tais como o Core 2 duo da Intel.

EWF

O formato EWF (Expert Witness, ou E01) é o formato proprietário do EnCase. Ele pode ser obtido com a ferramenta Linen, presente no Helix, ou com o GuyMager, comentado acima, presente no FCCU. O FTK Imager também pode ser usado na aquisição, diretamente da parte Windows do Helix.

AFF

O formato AFF pode ser obtido através do aimage, um utilitário disponibilizado pela afflib, presente no Helix. Ele é semelhante ao dd, e em sua forma mais simples pode ser usado como no exemplo a seguir:

aimage /dev/hda imagem.aff

Conforme comentado acima, o Adepto é uma interface gráfica que permite selecionar o formato AFF como saída. Internamente, ele faz a chamada ao aimage, repassando os parâmetros selecionados.

SGZIP

Não há um utilitário de captura direta para o sgzip. Na verdade, o utilitário sgzip faz uma conversão do formato raw (dd) para o formato compactado sgzip. O que é feito normalmente, afim de evitar que seja gravado primeiro o formato raw, para depois ele ser convertido, é não indicar o parâmetro of (saída); dessa forma, a imagem vai para a saída padrão, e daí redirecionamos para a entrada do utilitário sgzip:

dd if=/dev/hda sgzip -v > imagem.sgz

Conversores

Existem várias formas de se converter um arquivo de imagem entre os formatos. Os mais comuns são:

sgzip: Converte formato raw (dd) para o formato sgz, que é um formato compactado. Disponibilizado pelo PyFlag. Também converte no sentido contrário, através do parâmetro -vd

afcat: Converte arquivos .aff para o formato raw (dd).

aimage: Pode ser usado para converter uma imagem raw (dd) em aff. Basta especificar o arquivo .dd como entrada, com a opção -E. Também é possível usar o utilitário afconverter para fazer essa operação diretamente.

ewfacquire: Permite converter uma imagem raw (dd) em um ewf (E01), ou também fazer a captura diretamente no formato ewf.

FTK Imager: Presente na parte Windows do Helix, tem menus com capacidade de converter imagens entre alguns formatos.

No próximo artigo, falaremos sobre como usar as imagens capturadas.

Até o próximo post !

Referências: Disk imaging

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