terça-feira, 1 de janeiro de 2008

Projeto Sem Nome

Nada como começar o ano falando de desafios.

Forense Computacional é algo caro. Na maior parte das vezes, é realmente muito mais fácil usar um software totalmente desenvolvido para esse fim, com milhares de características úteis, e tudo junto e interligado. Apesar do que Harlan Carvey costuma dizer muito no seu blog, de que a Era Nintendo de Computação Forense acabou, ainda assim esses softwares ajudam um bocado.

Só que são caros. Muito caros. Entre outras coisas, porque logo na largada o software no Brasil é algo realmente caro. Além disso, é um investimento que assusta a quem quer começar, e isso ainda vai se somar a outras coisas, como um bloqueador de escrita no HD e um notebook bem de processador para fazer as análises.

A opção para os softwares caros é contar com o software livre. Eu tenho partido por essa linha e ela tem se provado adequada. Lógico, não é a mesma coisa, mas consigo chegar lá. Isso, aliás, é importantíssimo, porque em matéria de Forense Computacional, você PRECISA chegar aos mesmos resultados se usar diferentes ferramentas. É mandatório. Não obstante, dá muito mais trabalho.

Estive observando essa dificuldade, e somado ao fato de que:
i. As conclusões são baseadas em itens diversos e depois de muitos detalhes analisados.
ii. Cada detalhe analisado pode ser a saída, um relatório gigante, de uma ferramenta qualquer.
iii. Haverá vários desses relatórios para se avaliar e tirar conclusões.
iv. O processo leva MUITO tempo, em geral, e depende do tamanho das imagens sendo analisadas.

Onde eu quero chegar ? Bem, com tudo disposto acima, imagino o quanto não é dispendioso em termos de tempo ficar executando ferramenta após ferramenta, perseguindo o objetivo. Pensei que poderia ser interessante criar uma ferramenta baseada em software livre que fizesse uso de banco de dados para registrar os resultados e facilitar a nossa vida. Rodaria em Linux, lógico.

Minha primeira idéia é reunir pessoas que estariam dispostas a trabalhar nesse projeto. A proposta é criar um projeto no sourceforge, e conversarmos via e-mail sobre a estrutura e o que se poderia implementar. Minha idéia é bem simples, nada muito rebuscado. Lembra da famosa frase "O ótimo é inimigo do bom" ?

É isso. Aguardo adesões e dúvidas nos comentários.

Até o próximo post !

6 comentários:

Unknown disse...

Ola Tony, poderia me mandar alguns detalhes do que estah pensando em fazer pra ver se eu consequiria te ajudar uma vez q minha experiencia na area nao eh muito vasta, mas ja fiz algumas coisas.
Abraco
MC

pedrocesar disse...

Tenho muito interesse porem nenhuma experiencia no assunto, se puder ser util... avisa ai, estarei acompanhando as postagens...

Abraço

Tony Rodrigues disse...

Obrigado a todos pelo interesse.

Deixe-me detalhar um pouco mais a idéia.

Em geral, quando fazemos uma análise post-mortem de uma máquina (análise da imagem do HD, obtida com o computador desligado), estamos em duas situações distintas:

1) Você sabe exatamente o que busca, porque houve algum tipo de denúncia, ou outras investigações prévias.

É o caso quando você está analisarndo um vazamento de informações sigilosas de uma empresa. Você foi chamado para periciar a máquina, mas a direção já sabe o que procura porque o funcionário que fez o vazamento falou demais quando bebeu na festa de fim de ano.

2) Você não sabe o que busca, só sabe que "desse mato pode sair cachorro", ou então, apesar de saber o que busca, tem a impressão que pode achar mais coisas.
É quando você, um agente da polícia, apreendeu uma máquina e vai vasculhá-la para encontrar qualquer coisa suspeita. Ou então, usando o exemplo anterior, apesar de você saber que o arquivo foi enviado pelo e-mail do funcionário, ao invés de ir direto na caixa de correio dele, você vasculha a máquina, porque ele pode ter feito outras, e seria mais um ponto a favor em uma Demissão por Justa Causa, por exemplo.

Em ambos os casos, nas análises, você faz o seguinte:
1) Inicia uma rotina com objetivo de averiguar um (ou vários) itens
2) Quando ela acaba, horas depois, você avalia o relatório de resposta e, de acordo com o que está lá, decide retornar ao passo 1 com outro utilitário, aprofundando-se na hipótese ou buscando novas.

Esse processo é muito lento, principalmente para o caso 2 lá em cima, onde o investigador está em busca de algo ruim, mas ele mesmo não sabe o quê. Minha solução, quando observei isso, foi fazer o seguinte:
- Criei scripts para uso de diversas ferramentas. Esses scripts rodam em sequencia, gerando reports que são avaliados no final, depois deles serem executados. Configuro para rodar os scripts específicos para o caso; por exemplo, se o caso fala de roubo de informações privilegiadas em um doc, a primeira passada ignora tudo referente à imagens. Só as incluo se não achar nada, pois o suspeito pode encapsular o doc em uma imagem usando esteganografia.
- Coloco esse script a noite e de manhã já tenho diversos relatórios para correlacionar.

Problema 1: Buscar pelas informações sem nenhuma ajuda ou automação do conhecimento. Isso é complicado, principalmente em análises de Registry.

Problema 2: As ferramentas não estão todas disponíveis no Linux. Algumas, muito boas, só no Windows. Isso faz com que parte do processo tenha que ser feita nesse ambiente.

Requisitos para solucionar isso:

- Criar uma ferramenta em Linux
- usar bancos de dados
- Banco de dados montável e acessível em Windows e Linux (a mesma base)
- Facilidade de executar ferramentas externas e captar seus resultados para o banco.
- Modelo de implementação que facilite a inclusão de novas ferramentas e novas regras de correlação.
- Case Management
- Use formatos de imagem raw (dd) e compactados (sgzip, aff).

O modelo que tenho em mente é o do PyFLAG. O único problema dele é que ele não analisa tudo, e não é tão simples com a parte de Windows.

Imagino que a experiência necessária para desenvolver um projeto desse seria programar em C para Linux, interfaceando com o SQLite ou MySQL (conhecendo os pormenores desses bancos tb).

O que acham ?

Abração,

Unknown disse...

Ola Tony,
Entao acho que eu posso ajudar. Eu ja automatizei algumas coisas basicas em Windows como por exemplo recuperar emails deletados de arquivos PST utilizando a script language AutoIT.
Tambem ja fiz algumas coisas em Python e acho que esse seria o caminho a seguir pois roda tanto em Linux quanto Windows. Ja ouvi dizer do PyFLAG mas nao olhei a fundo, vou dar uma olhada e te retorno. me mande um email com mais detalhes. Abraco MC

Fábio Ramos, CISSP, CISM, CIFI disse...

Grande Tony, parabens pela iniciativa! Abraço do seu fã!

Unknown disse...

Caros, será necessário mapear a saida de todas as ferramentas existentes e que sejam incluidas no escopo do projeto, criando-se interfaces de integração, com o fim de migrar estes dados de um formato especifica para um comum, no caso fornecer dados que alimentem o DB da ferramenta proposta para desenvolvimento.
Sugestão de linguagens de uso comum para facilitar o desenvolvimento e colaboração, como PHP e PERL, aproveitando o que existe de melhor em cada uma delas.

Possui 20 anos de experiência em desenvolvimento de software e segurança da informação, desde a época do DOS 2.2 e já havia pensado em algo neste sentido, mas para o sucesso de algo desta magnetude, se torna necessária ajuda de diversos colaboradores.

Ricardo Tavares
www.tavarespericias.com