10.4. Investigando o Incidente

Investigar uma infração de computador é como investigar a cena de um crime. Os detetives coletam evidências, anotam quaisquer pistas estranhas e fazem um inventário de perdas e danos. Uma análise do comprometimento dos computadores pode ser feita enquanto o ataque ocorre ou post-mortem (após o ataque).

Apesar de não ser recomendável confiar em nenhum arquivo de registro de um sistema que sofreu exploit, há outras utilidades forênsicas para auxiliar sua análise. O propósito e funções destas ferramentas variam, mas elas comumente criam pequenos 'arquivos-espelho' da mídia, relacionam eventos e processos, exibem informações simples do sistema de arquivo e recuperam arquivos apagados sempre que possível.

Também é recomendado registrar todas as ações investigativas de um sistema corrompido, usando o comando script, conforme o exemplo a seguir:

script -q <file-name>

Substitua <file-name> pelo nome do arquivo de registros do script. Sempre salve o arquivo de registros em outra mídia que não o disco rígido do sistema comprometido — um disquete é uma boa opção para este propósito.

Ao registrar todas as suas ações, cria-se um rastro de auditoria que pode ser valioso se o atacante for pego.

10.4.1. Coletando uma Imagem Evidencial

Criar um pequeno 'arquivo-espelho' da mídia é um primeiro passo razoável. Se estiver executando trabalho forênsico de dados, é um requerimento. É recomendado fazer duas cópias: uma para análise e investigação, e uma segunda para ser armazenada junto à original como evidência para quaisquer procedimentos legais.

Você pode usar o comando dd, que é parte do pacote fileutils do Red Hat Enterprise Linux, para criar uma imagem monolítica de um sistema que sofreu exploit como evidência em uma investigação, ou para comparação com imagens confiáveis. Suponha que haja um único disco rígido no sistema que você deseja criar a imagem. Anexe este disco como escravo ao sistema e então use o comando dd para criar o arquivo imagem, conforme mostramos a seguir:

dd if=/dev/hdd bs=1k conv=noerror,sync of=/home/evidence/image1

Este comando cria um único arquivo chamado image1 usando o tamanho de um bloco de 1k para velocidade. As opções conv=noerror,sync forçam o dd a continuar lendo e descarregando os dados mesmo se encontrar setores danificados no disco suspeito. Agora é possível estudar o arquivo imagem resultante ou até tentar recuperar arquivos apagados.

10.4.2. Coletando Informação Pós-Infração

O tópico forênsica e análise digital é bastante abrangente, mas as ferramentas são específicas para a arquitetura em sua maioria e não podem ser aplicadas genericamente. Entretanto, resposta a indicentes, análise e recuperação são tópicos muito importantes. Utilizando o conhecimento e a experiência apropriados, o Red Hat Enterprise Linux pode ser uma ótima plataforma para executar estes tipos de análises já que inclui diversas funcionalidades para realizar a resposta e restauração pós-infração.

Tabela 10-1 descreve alguns comandos para auditoria e gerenciamento de arquivos. Também lista alguns exemplos que podem ser usados para identificar apropriadamente arquivos e seus atributos (tais como permissões e datas de acesso) para que assim você possa coletar mais evidências ou ítens para análise. Estas ferramentas, quando combinadas com sistemas de detecção de intrusão, firewalls, serviços seguros e outras medidas de segurança, podem ajudar a reduzir os danos potenciais na ocorrência de um ataque.

NotaNota
 

Para informações detalhadas sobre cada ferramenta, consulte suas respectivas páginas man.

ComandoFunçãoExemplo
ddCria uma pequena cópia da imagem (ou disk dump) dos arquivos e partições. Combinado à verificação dos md5sums de cada imagem, administradores podem comparar uma imagem pré-infração de uma partição ou arquivo com um sistema que sofreu uma infração para verificar se as consistências coincidem. dd if=/bin/ls of=ls.dd |md5sum ls.dd >ls-sum.txt
grepEncontra trechos de informação (texto) úteis dentro de arquivos e diretórios, assim como revela permissões, alterações de script, atributos de arquivos e muito mais. Utilizado na maioria das vezes como um comando 'casado' (piped) com outro, como o ls, ps, ou o ifconfig.ps auxw |grep /bin
stringsImprime os trechos de caracteres imprimíveis em um arquivo. É mais útil para examinar anomalias em arquivos executáveis como comandos mail para endereços desconhecidos ou para registrar em arquivos de registro fora do padrão.strings /bin/ps |grep 'mail'
fileDetermina as características de arquivos baseado no formato, código, bibliotecas com as quais está ligado (se houver) e tipo de arquivo (binário, texto ou outros). É útil para determinar se um executável como /bin/ls foi modificado usando bibliotecas estáticas, o que é um sinal certeiro de que o executável foi substituído por outro instalado por um usuário maléfico.file /bin/ls
findBusca determinados arquivos em diretórios. É uma ferramenta útil para procurar na estrutura do diretório por palavra-chave, data e hora de acesso, permissões e outros critérios. Também pode ser útil para administradores que executam auditorias gerais do sistema em determinados arquivos ou diretórios. find -atime +12 -name *log* -perm u+rw
statExibe diversas informações sobre um arquivo, inclusive a hora do último acesso, permissões, configurações UID (ID do usuário) e GID (ID do grupo) e outras. Útil para verificar quando um executável, de um sistema que sofreu infração, foi utilizado ou modificado pela última vez.stat /bin/netstat
md5sumCalcula o checksum (verificação de consistência) de 128 bits usando o algoritmo md5 hash. Use este comando para criar um arquivo texto que lista todos os executáveis cruciais que são frequentemente modificados ou substituídos em um comprometimento da segurança. Redirecione as somas para um arquivo, a fim de criar um simples banco de dados de consistências, e então copie o arquivo para uma mídia somente-leitura como um CD-ROM.md5sum /usr/bin/gdm >>md5sum.txt

Tabela 10-1. Ferramentas de Auditoria de Arquivos