segunda-feira, 30 de julho de 2007

Nosso Amigo Hash - Parte III - Continuação

Hash aplicado na Forense Computacional - Prática

Quarto exemplo: Comprovando a integridade de uma imagem de um HD ou outra mídia

Comprovar a integridade de uma imagem através de hash é uso comum em dois momentos: quando se quer comprovar que a imagem é cópia exata da mídia original ou quando se quer comprovar que a manipulação aplicada sobre a imagem não introduziu qualquer mudança na mesma.

Neste exemplo, vamos trabalhar com algumas ferramentas fornecidas pelo live CD Helix.

Capturando imagem

A primeira situação, descrita acima, ocorre quando se faz a captura da imagem de uma mídia.
O procedimento de captura requer que a imagem obtida seja cópia fiel da mídia original (cópia bit a bit). Dessa forma, a análise da mídia, buscando evidências, garantidamente será feita sem prejuízo de sua integridade, como se fosse na própria mídia original.

É importante ressaltar que uma simples cópia ou uma imagem não-forense deixaria algumas partes da mídia original de fora (não seriam copiadas), e tais partes podem conter informações relevantes. Nesse tipo de imagem, a área não alocada da mídia não é copiada, por exemplo.

Somente com a comprovação da integridade da imagem podemos ter certeza de que o procedimento de captura não inseriu ou removeu artefatos que modificaram as conclusões.

Imagine:

1) Um caso onde um computador foi supostamente usado para cometer um crime. Imediatamente antes do computador ser confiscado, os arquivos (artefatos) que comprovariam o ocorrido são deletados. Se o procedimento de captura de imagem utilizado não for um procedimento forense, os dados contidos nas áreas não alocadas serão perdidos e não será possível comprovar a situação. Também podemos ter o contrário, onde os dados que refutariam a hipótese de participação (ou de culpabilidade) poderiam estar em arquivos recém apagados, prejudicando assim as conclusões.

2) Um caso onde um arquivo foi propositalmente adicionado à imagem para fraudulentamente indicar o envolvimento de alguém inocente em uma situação. Se o procedimento de captura utilizado incluir a verificação de integridade, essa manipulação fraudulenta será detectada.

Se fossemos fazer um paralelo da Forense Computacional com outras investigações não digitais, a captura de uma mídia através de procedimentos de imagem forense bit a bit é equivalente à exigência ao investigador de se usar luvas na cena de um crime para colher as impressões digitais.

dd

Existem várias formas de capturar uma imagem forense, mas sem dúvida a mais usada e difundida é o comando dd. Esse comando realiza a cópia exata (bit a bit) da origem para o destino. É possível, portanto, indicar como origem a path da mídia a ser capturada, e como destino um arquivo. Ao final da cópia, todo o conteúdo da mídia estará refletido nesse arquivo destino, incluindo ali seus espaços não alocados (arquivos deletados).

Ex: Para copiar um pendrive que está localizado em /dev/sda para um arquivo chamado imgblog.dd, usamos o seguinte:
dd if=/dev/sda of=/media/hda1/imagens/imgblog.dd conv=noerr bs=512

O comando acima criará a imagem, capturando-a de forma forense. Entretanto, ele está incompleto porque não faz a verificação de integridade. Essa verificação vai comprovar que a mídia não foi alterada durante o procedimento de cópia, e que o arquivo de saída (destino) é realmente a cópia exata da origem.

Para fazer a verificação de integridade, fazemos uso do utilitário de hash md5deep, que a semelhança do md5sum, computará o hash:

md5deep /dev/sda
dd if=/dev/sda of=/media/hda1/imagens/imgblog.dd conv=noerr bs=512
md5deep /media/hda1/imagens/imgblog.dd

Se o procedimento capturou a imagem corretamente, os valores de saída do primeiro md5deep, sobre a mídia, e do terceiro md5deep, sobre a imagem, serão idênticos e a integridade do procedimento está garantida.

Interface gráfica

Apesar de ser sempre interessante conhecer os pormenores das opções de linhas de comando, há boas interfaces gráficas para realizar a tarefa acima.

O utilitário Adepto, incluído no Helix, pode ser configurado para a captura através de uma tela amigável. O melhor disso é que o Adepto já traz opção para fazer a validação usando hash, sem necessidade de inserir comandos específicos. Basta um clique para acionar a opção e o hash da mídia será computado antes da captura e depois automaticamente comparado com o hash computado sobre a imagem. Uma mensagem de alerta será exibida no log caso os valores não coincidam. O log de utilização é bastante detalhado e traz detalhes da máquina onde o Adepto está sendo executado também.

Comprovando a integridade após a manipulação da imagem

Todo cuidado deve ser tomado durante a análise da imagem, para que a mesma não sofra qualquer tipo de alteração. Write-blockers são úteis, e para quem tem uma imagem a partir do dd, pode-se montá-la usando o loopback device com as opções de read-only.

Ainda assim, a comprovação de que a integridade da imagem continua preservada é feita através do cálculo do hash antes de montar a imagem, e imediatamente após. Os valores calculados precisam ser os mesmos se a imagem continua integra.

md5deep arquivoimagem.dd
mount arquivoimagem.dd /media/imagem -o ro,loop
... Faz as operações e análises ...
umount /media/imagem
md5deep arquivoimagem.dd

Uma advertência: O comando de montar imagem como read-only não previne alterações na imagem em caso de uso de sistemas de arquivo com journaling. O ext3, segundo li recentemente, tem esse recurso e introduz modificações na imagem mesmo quando montado com as opções read-only. Nesse caso, só mesmo um write-blocker.

Na próxima, vamos falar do uso prático de hashes na separação de arquivos conhecidos e desconhecidos.

Até o próximo post !

Nenhum comentário: