Revista Do Linux
 


 
EDIÇÃO DO MÊS
 CD do Mês


 Capa
 Entrevista
 Estudo de Caso 1
 Estudo de Caso 2
 Desenvolvimento
 Programação
 Segurança
 REDES
 Comunidade
 Lançamento
 Internacional
 Mascote
 Corporativo
 Distro
assinantes
 

Computação Forense

Conheça as técnicas utilizadas para rastrear invasores

Este artigo, o primeiro de uma série, fará uma introdução sobre um assunto extremamente interessante e delicado dentro da área de segurança da informação. Trata-se da Computação Forense. A análise de sistemas comprometidos por intrusos ou a busca por provas digitais, que incriminem um determinado indivíduo por alguma atividade ilegal, tais como pornografia infantil e roubo de informações confidenciais de uma empresa, são tarefas comuns de um especialista em análise forense.

A computação forense está relacionada ao trabalho de investigação, em sistemas e/ou redes de computadores, em busca de evidências criminais que possam ser levadas a um tribunal ou que permitam reconstruir toda a seqüência de eventos de um ato criminoso, usando computador. Isto permite, entre outras coisas, que falhas de segurança sejam corrigidas e atacantes identificados.

Um perito em computação forense deve fazer um trabalho semelhante ao que é feito por policiais. A “cena do crime” deve ser preservada para a recuperação das pistas deixadas pelo criminoso, evitando laudos incorretos e a destruição de provas vitais. Em computação, isto é equivalente a dizer que a integridade das informações deve ser preservada. De fato, em diversos lugares do mundo, a polícia conta com subdivisões especializadas em computação forense. Um bom exemplo disto é o FBI, com o seu NIPC (National Infrastructure Protecion Center).

O trabalho investigativo deve ser feito com extremo cuidado para evitar que eventuais provas sejam destruídas acidentalmente, durante análise. Uma prática bastante utilizada, como será visto, é fazer uma cópia bit a bit do objeto a ser investigado (disquete, disco rígido, logs do sistema, etc.), montar a imagem resultante em um sistema perfeitamente controlado pelo investigador e usar as ferramentas de análise forense mais adequadas.

Uma analogia também pode ser feita com o trabalho de um médico legista. Uma “autópsia” é feita para verificar as causas da “morte” de um sistema, ou seja, quais vulnerabilidades foram exploradas para comprometer um sistema e quais as atividades realizadas pelo intruso. O perito forense não deve basear seu trabalho apenas no estado atual do sistema, mas, principalmente, na recuperação de informações pertencentes a estados anteriores, ainda existentes no mesmo. A recuperação de arquivos deletados e a verificação de regiões não utilizadas de um disco rígido (“slack space”), como exemplos, podem revelar informações bastante interessantes. Aliás, este é um dos aspectos mais fascinantes da análise forense; um trabalho de mineração, onde nem sempre o investigador sabe exatamente o que procurar.

Apesar da legislação brasileira estar engatinhando no que tange às leis contra crimes digitais, a jurisprudência corrente pode aceitar, como prova, informações obtidas em memórias de computador. Naturalmente, estes bytes somente poderão ser usados como prova se obtidos de maneira honesta, respeitando os direitos individuais de todo cidadão e com garantias de que não foram modificados. Entretanto, não é a finalidade (nem ousaríamos), nestes artigos, discutir as leis que tratam crimes digitais. Serão abordados apenas os detalhes técnicos envolvidos no processo.

O foco dos nossos artigos será a análise de sistemas Linux, usando um poderoso kit de utilitários, o “Coroner´s Toolkit” (TCT), desenvolvido por Dan Farmer e Wietse Venema, dois importantes membros da comunidade de segurança. Todavia, as idéias, técnicas e metodologias, aqui apresentadas, podem ser aplicadas perfeitamente aos demais sistemas operacionais. Obviamente, as ferramentas a serem utilizadas podem variar dependendo do sistema operacional.

A detecção de uma invasão

Está fora do escopo destes artigos tratar do assunto de detecção de intrusos. Supõe-se que exista um administrador de sistemas que verifique temporariamente os diversos logs do sistema, a integridade do sistema de arquivos e os logs do IDS (Intrusion Detection System). Desta forma, sempre partiremos da hipótese de que houve uma invasão e que esta já foi detectada.

Um IDS é uma solução de segurança complementar ao firewall, capaz de inspecionar todo tráfego de pacotes em busca de assinaturas de ataques conhecidos e anomalias (que permite tratar ataques ainda desconhecidos). Portanto, é um componente básico e obrigatório no projeto de qualquer rede segura. O sistema de detecção de intrusos mais usado em Linux é o Snort (www.snort.org).

Por onde começar a investigação

Como afirmado anteriormente, a “cena do crime” deve ser preservada para que provas não sejam acidentalmente modificadas ou perdidas. O ideal é simplesmente desligar o sistema, após verificar que ele foi comprometido. Entretanto, isto nem sempre é possível com uma máquina em produção. Além disto, pistas importantes e voláteis podem ser perdidas durante o shutdown do sistema operacional.

É muito importante que o analista forense recupere cuidadosamente todas as informações relevantes, com o sistema ainda em funcionamento: detalhes dos processos rodando na máquina, arquivos abertos por cada usuário, dados na memória ainda não escritos em disco, informações sobre as conexões de rede abertas, dados na área de swap, etc. Nesta etapa, pode-se contar com ferramentas disponíveis no próprio sistema. Possivelmente, muitas das informações obtidas não estarão corretas, visto que binários podem ter sido modificados pelo atacante. Contudo, esta tarefa deve sempre ser realizada. Os binários c, “netstat”, “who”, “ls”, “w”, “last”, “lsof”, “find” são muito importantes para obtenção de tais dados.

O perito não deve esquecer de analisar e fazer uma cópia dos diversos logs do sistema comprometido, do servidor centralizado de logs e do IDS. Nem sempre o especialista forense poderá contar com estes dois últimos. Entretanto, recomenda-se fortemente que estas soluções sejam implementadas de antemão para facilitar o tratamento de incidentes de segurança. Os logs do sistema operacional atacado nem sempre serão confiáveis, visto que uma das primeiras tarefas de um atacante mais sofisticado é alterá-los, para evitar que suas atividades sejam percebidas e rastreadas. O administrador de sistemas deve preparar o ambiente computacional para um melhor tratamento das tentativas de intrusão bem sucedidas. Além de oferecer mecanismos de prevenção, tais soluções permitem uma riqueza maior e redundância de informações para uma análise forense.

Analisando a imagem do sistema

Além das ações tomadas acima, o analista forense deve verificar a imagem do sistema vítima de uma intrusão. Para criar esta cópia do sistema, em Linux, o comando “dd” é uma excelente alternativa. Esta imagem pode ser montada em um outro sistema Linux, com binários confiáveis e com o kit TCT instalado.

Quando um arquivo é deletado, o kernel simplesmente atualiza algumas tabelas do sistema operacional, liberando, entre outras coisas, os blocos antes reservados ao arquivo. Todavia, os dados relacionados aos arquivos ainda permanecem no disco, até que os blocos sejam realocados para abrigar novos dados relativos a um novo arquivo. Além disto, nem sempre todas as informações são completamente sobrepostas e fragmentos importantes ainda podem ser recuperados. Para este processo, serão usadas principalmente as ferramentas “unrm” e “lazarus”, componentes do TCT.

Em Unix, os arquivos são representados por uma estrutura de dados chamada “i-node”. O i-node mantém os atributos relacionados ao arquivo: nome do arquivo, últimos acessos, permissões, owner, endereços dos blocos de dados, etc. Tais informações permanecem no i-node até que seja reutilizado e, portanto, muitos dados podem ser recuperados dos mesmos. O TCT oferece um par de ferramentas, “grave-robber” e “mactime”, capazes de recuperar informações dos i-nodes de um sistema. Isto permite, por exemplo, verificar a seqüência de atividades realizadas no ataque.

Vale ressaltar que muitas informações obtidas anteriormente serão confirmadas neste processo. É possível verificar se houve modificação de binários e quais deles foram modificados, se backdoors foram compiladas e instaladas no sistema, encontrar informações escondidas pelo atacante, etc.

Um problema: Informações escondidas

Um dos grandes problemas para investigar dados em um computador de um suspeito é a criptografia. Dependendo do algoritmo criptográfico e do tamanho da chave usada, o perito é incapaz de obter as informações desejadas. Esteganografia é uma técnica de esconder informação em informação. Pode-se, por exemplo, esconder um arquivo texto em uma figura. Uma investigação de roubo de informações e pornografia infantil, como exemplos, pode ser frustrada, caso o suspeito use estas técnicas mais sofisticadas.

A análise

No próximo artigo, será apresentada a investigação de um sistema Linux comprometido por um ataque de buffer overflow. Com o auxílio de um rootkit, o atacante instalará backdoors, criará uma conta de usuário e modificará logs e binários importantes do sistema, tais como “ps” e “netstat”. O leitor mais interessado poderá sempre obter mais informações, as ferramentas usadas, inclusive o TCT, e outras imagens de sistemas comprometidos no site www.securitybase.net.

Marcelo Barbosa Lima - mb_li@uol.com.br


A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux