Em muitos casos, uma amostra pode ditar os parâmetros do ambiente do laboratório de malware, particularmente se o código exige diversos servidores para funcionar plenamente, ou pior, emprega código anti-virtualização para bloquear os esforços do investigador em observar o código em uma máquina virtual.
Usar virtualização é particularmente útil, principalmente durante a análise comportamental de uma amostra de códigos maliciosos, posto que a análise muitas vezes exige frequentes paradas e recomeços do programa malicioso em um esforço de observar as nuances do comportamento do mesmo.
Ao analisar um exemplar suspeito, podemos utilizar hosts no Virtual Box para criar a emulação de um sistema "infectado", um "servidor" e um "cliente" para fornecer todos os serviços de servidores e cliente necessários pelo malware, um sistema de "monitoramento" e de detecção de intrusão, para monitorar o tráfego da rede e do sistema vítima.
Idealmente, seremos capazes de controlar o sistema infectado localmente para reduzir a nossa necessidade de controlar múltiplos sistemas durante uma sessão de análise, mas amostras de malware na maioria das vezes são "consciente de segurança" e usam técnicas anti-forense, tais como a varredura dos nomes dos processos para identificar e finalizar as ferramentas de segurança conhecidas, como sniffers de rede, firewalls, software anti-vírus e outros aplicativos.
Antes de iniciarmos nossa análise da amostra de código malicioso, precisamos ter um "snapshot" do sistema que será usado como "vítima" na qual a amostra de código malicioso será executada. Da mesma forma, precisamos implementar uma ferramenta que nos permite comparar o estado do sistema após o código ser executado com o snapshot original do sistema.
Análise de arquivos suspeitos
Ao analisar um programa suspeito, há uma série de perguntas que o pesquisador deve considerar:
- Qual é a natureza e a finalidade do programa?
- Como funciona o programa para cumprir a sua finalidade?
- Como funciona o programa ao interagir com o sistema vítima?
- Como o programa interage com a rede?
- O que o programa sugere sobre o nível de sofisticação do atacante?
- Há um vetor de ataque identificável que o programa usa para infectar um hospedeiro?
- Qual é a extensão da infecção ou comprometimento do sistema ou rede?
Em muitos casos, é difícil responder a todas estas perguntas, posto que peças-chave para o enigma, como arquivos ou recursos adicionais de rede utilizados pelo programa não estão mais disponíveis para o investigador. Entretanto, a metodologia, muitas vezes prepara o caminho para uma melhor compreensão global sobre o programa suspeito.
Ao trabalhar com este material, lembre-se que a "engenharia reversa" caem dentro das prescrições de determinadas leis internacionais, federais, estaduais ou locais. Da mesma forma, lembre-se também, que alguns dos instrumentos mencionados podem ser considerados "ferramentas hacker" em algumas jurisdições e estão sujeitas a regulamentações jurídicas semelhantes ou restrição de uso.
Diretrizes de exame de um programa malicioso
A metodologia utilizada neste capítulo é uma diretriz geral para fornecer um sentido mais claro das ferramentas e técnicas que podem ser usadas para examinar um binário malicioso no ambiente
Linux. No entanto, com o número aparentemente interminável de amostras de códigos maliciosos sendo gerados por atacantes - muitas vezes com diferentes funções e finalidades - flexibilidade e adaptação da metodologia para atender as necessidades de cada caso, certamente será necessário.
Alguns dos preceitos básicos que vamos explorar incluem:
- Estabelecer a linha de base do ambiente
- Preparação pré-execução: monitoramento do sistema e da rede
- Execução do binário suspeito
- Observação do processo: monitoramento de bibliotecas e system calls
- Avaliação do processo: análise dos processos em execução
- Análise das portas abertas e conexões de rede
- Análise de arquivos abertos e sockets
- Exploração do diretório /proc
- Quebra de ofuscação: remoção da proteção do malware
- Ajustes de ambiente
- Ganhando controle do malware
- Interagindo e manipulando o malware
- Explorando e verificando as funcionalidades do malware
- Reconstrução de eventos: capturar tráfego de rede, integridade de arquivos e logs de IDS
- Varredura de portas/vulnerabilidades do host comprometido
- Verificação de rootkits