quinta-feira, 17 de setembro de 2009

Blog da SANS troca de endereço

Aparentemente, andei cochilando quanto a isso. O endereço de um dos melhores blogs sobre Forense Computacional mudou e eu nem percebi, já que estou bastante atrasado nas minhas leituras diárias.

Bem, o link aqui do meu blog para o blog da SANS já foi atualizado. Se você consegue ler textos em inglês, esse blog é imperdível. Vale cada segundo lendo ...

Até o próximo post !

terça-feira, 15 de setembro de 2009

Vinho é um santo remédio !

As ferramentas que usamos em Forense Computacional são muito importantes para atingirmos o objetivo. Elas permitem que possamos avaliar e examinar vestígios de forma adequada. Uma situação bem comum é quando estamos realizando uma perícia e precisamos avaliar um vestígio, mas as ferramentas necessárias para isso não estão disponíveis no SO que estamos usando. Ou seja, quando estamos usando um Live CD baseado em Linux e nossa imagem e vestígios estão disponíveis, tudo está indo bem. No entanto, podemos topar com a necessidade de uma analise que requer uma ferramenta somente disponível em Windows. Aí o caldo começa a engrossar ...

Há algumas estratégias desenvolvidas para tratar isso. Todas tem prós e contras. Vou tentar resumir:

1) Podemos extrair os vestígios da imagem, salvando em uma partição FAT que depois será acessada pelo Windows e suas ferramentas.

2) Podemos extrair os vestígios da imagem ou mesmo montá-la, colocando os arquivos acessíveis em um compartilhamento (via Samba). Pelo Windows, mapearemos o compartilhamento e acessaremos os artefatos/vestígios, completando as análises.

3) Podemos extrair os vestígios para fora da imagem e depois acessar a partição Ext2/Ext3 usando utilitários Windows que conseguem ler e recuperar arquivos dessas partições.

Como já disse, cada uma dessas estratégias possui limitações e situações indesejadas. Elas precisam ser bem conhecidas para que o perito possa escolher qual usar quando for necessário. As estratégias que envolvem retirar os vestígios da imagem podem requerer grande quantidade de espaço em disco, seja na partição FAT ou na Ext2/Ext3. As estratégias que usam compartilhamento vão requerer que as estações forenses estejam em rede. Um problema a mais é que o Samba foi retirado das versões mais recentes do Helix e do Caine. O FCCU oferece dificuldades a mais em relação à rede.

Há outra alternativa para o problema e que não possui as características negativas acima: Vinho !

Vinho ???

Wine é o nome de um programa para Linux que, segundo documentações do site, compatibiliza o SO Linux, origem de nossos Live CDs de Forense, com as aplicações Windows. A documentação tenta ser bastante enfática no conceito, afirmando que o Wine não faz emulação de código, nem cria algum tipo de máquina virtual. O Wine cria condições para que um programa Windows possa rodar em Linux, numa boa. Ele é comparado a opção de executar um programa criado para o WinXP dentro do Vista. As opções de compatibilização fazem, por debaixo dos panos, o mesmo que o Wine faz, no Linux; Elas criam o mesmo ambiente básico que o programa espera encontrar para poder executar.

O que é necessário ?

Uma conexão de internet funcionando para o Live CD. Isso porque, como nenhum deles traz o Wine, será necessário atualizar o SO e baixar o Wine antes de poder usá-lo. Vamos a um passo a passo, que deve funcionar da mesma maneira em todos os Live CDs. Eu testei no Helix e no Caine:

1) Em um terminal root, execute apt-get update
O Live CD vai buscar algumas atualizações para o SO diretamente da internet.
2) Execute apt-get install wine
Esse demora um pouco mais e no final garante que o wine esteja completamente instalado no Live CD.

3) Execute qualquer utilitário Windows: wine UTILITARIO.EXE
O Wine monta um ambiente simulando um C:\ e executa o utilitário.

A página de download do Wine oferece outras formas de download e instalação do Wine. Clique aqui para ver. Use a linha do Ubuntu Hardy tanto para o Helix quanto para o Caine.

Essa é uma das melhores maneiras de reaproveitar ferramentas e resolver a questão que coloquei acima, quando não temos ferramenta para o vestígio que queremos investigar, nem no Live CD, nem fora, pelo menos em Perl ou Python. Eu testei algumas ferramentas:

- WFA: Funcionou perfeitamente e em todos os módulos;
- FastResolver e IPNetInfo: Não apresentaram todas as informações;
- HashCalc e Pre-Search, ambos do Deft: Funcionaram perfeitamente;

O site do Wine mantém um database com informações de programas que foram testados e podem ser considerados compatível. Embora eu não tenha testado, não tenho grandes expectativas de que programas do tipo filemon ou regmon funcionem no Wine. Imagino que, por eles usarem capacidades bastante elementares do Windows, não sejam facilmente portáveis.

Nem tudo são flores

Além da questão da compatibilidade, que descrevi acima, há outro detalhe: Estamos lidando com um Live CD. Todo o processo de instalação se perde quando a máquina é desligada. Isso pode fazer com que seja necessário repetir o processo de reinstalação toda nova sessão de investigação/perícia. Podemos evitar isso com:

- Um esquema para perpetuar a sessão. Não cheguei a pesquisar essa opção, mas havia essa possibilidade no Helix 1.9;
- Usar máquina virtual, e dar uma "pausa" na máquina quando ela não for mais necessária. Quando ela for utilizada novamente, o restore vai garantir que ela esteja com o Wine lá;
- Usar uma versão instalada do Helix ou do Caine. Nesse caso, o Wine não vai embora quando desligamos as luzes da sala ...

Gostaria de ouvir comentários de quem já usa essa ferramenta. Quais são os utilitários forenses que você tem usado com sucesso ? Que estratégia para manter o Wine você usa ?

Até o próximo post !

terça-feira, 1 de setembro de 2009

WTF e Timestamps

WTF não é um termo técnico, mas deve ser a expressão mais usada de 8 entre 10 Peritos e Investigadores em Forense Computacional. Li esse termo hoje em um artigo muito bom, que traduz a essência do que é ser Perito: Analisar bem os vestígios e saber como as ferramentas que temos nas mãos funciona.

A situação ocorre quando, por necessidade de uma ordem judicial, um micro é apreendido para ser investigado. O Perito já está de posse do depoimento do usuário/dono do micro, que entre outras coisas, diz que o micro é novinho em folha. Ele diz que tinha comprado um HD novo e decidiu instalar o Windows XP logo depois de um jogo na TV. Isso tinha acontecido no dia anterior ao micro ser apreendido.

De posse dessas informações, o perito anota no seu caderninho (é um cara bem antigo, não usa CaseNotes):

- Data da operação: Dia 1 de setembro.
- Data da instalação: Dia 31 de agosto, por volta de 18h30.

O Perito prossegue, analisando a imagem que foi feita da máquina, obviamente segundo o processo forense (ou seja, duplicação bit-a-bit). Ao analisar o Registry, encontra lá, dentro de muitas chaves, a que informa a hora exata da instalação do Sistema Operacional:
HKLM/Software/Microsoft/Windows NT/CurrentVersion/InstallDate: 31/08/2009 22h30. Como bom Perito, ele sabe que essa hora está no formato GMT e logo deduz que o vestígio encontrado indica que a instalação do SO ocorreu em 19h30 (Hora de Brasília).

- "Bem", ele pensa, "estamos indo conforme o depoimento, tudo ok até aqui". O próximo passo é olhar timestamps do NTFS, para montar seu timeline. Antes disso, passeando pelo Autopsy, ele decide verificar o timestamp dos objetos do NT ($MFT, $LogFile e outros). Ora, se tudo estiver correto, o timestamp deverá indicar por volta de 18h30, já que entre a criação do sistema de arquivos e a finalização da instalação do SO, temos por volta de uma hora. Ele anota a data/hora e, sabendo que todas estão em notação GMT, converte-as para o nosso fuso horário e tem o resultado: 31/08/2009 15h33.

WTF ???? (O artigo é em inglês, então faça um exercício de imaginação sobre essas siglas aí ...)

O que poderia estar acontecendo ??? Então o dono da máquina iniciou a instalação às 15h33, com a formatação do HD novo, e ela só foi terminada mais tarde, por volta das 19h30 ?? O que houve no meio do caminho ?? Ele teria mentido sobre o que aconteceu ????

A resposta é um sonoro não !

O caso é que, como a formatação é uma das primeiras coisas que acontecem na operação de instalação de um SO novo, no momento da criação dos objetos do NT, o programa de formatação não tem ainda a referencia ao fuso horário. Essa informação só fica estabelecida posteriormente. Por conta disso, ele pega a data da Bios e grava ela nos timestamps diretamente, sem nenhuma conversão. Quando a instalação é finalizada, ao escrever essa informação no Registry, o fuso já é conhecido. Portanto, o SO pega a hora da BIOS e converte para GMT, gravando-a em seguida.

Assim, mesmo que a regra geral seja de que os timestamps do NTFS estão todos em GMT, temos a exceção: Os timestamps dos objetos de NTFS criados em uma formatação antes da instalação do SO estarão em horário local.

Dessa forma, a hora que o Perito viu (18h33) não precisava ser convertida (no nosso caso, subtraindo 3 para usar como hora de Brasília) . 18h33 foi a data/hora correta de formatação do HD, conferindo com o depoimento.

Moral da História: Cuidado com conversões de timestamps, principalmente quando os utilitários as fazem automaticamente.

Pergunta de prova: O que aconteceria se, ao invés de uma instalação novíssima, do zero, estivesse sendo feita uma formatação completa para uma reinstalação ? Comente !

Até o próximo post !