Análise Estática Básica: Técnicas e Ferramentas

1. Antivírus Scanning (VirusTotal)

  • Uso do VirusTotal para consultar bancos de dados de assinaturas.
  • Análise do hash do arquivo para verificar se já é conhecido como malicioso.
  • Além de hashes, o VirusTotal permite consultar URLs, IPs e domínios.

2. Encontrando Strings

  • Strings revelam mensagens, URLs, nomes de arquivos e comandos legíveis dentro do binário.
  • ASCII: 1 byte por caractere.
  • Unicode: 2 bytes por caractere.
  • Ambas terminam com um NULL terminator (00) para indicar o fim da string.
  • Comando: strings <arquivo>

3. Packed e Obfuscated (Empacotamento e Ofuscação)

  • Ofuscado: O autor tenta esconder a lógica de execução.
  • Packed: Subtipo de ofuscação onde o malware é comprimido. Ao ser executado, um small wrapper (descompactador) descomprime o programa real na memória.
  • Programas legítimos costumam ter muitas strings; malwares empacotados têm pouquíssimas strings visíveis.
  • Ferramenta para detecção: PEiD (detecta packers como UPX).

Portable Executable (PE) File Format

O PE é o “molde” padrão para executáveis no Windows (.exe, .dll). É uma estrutura de dados que informa ao loader do Windows como carregar o código.

Estrutura Básica do PE:

  1. DOS Header
  2. DOS Stub
  3. PE Header (NT Header)
  4. Section Header (Section Table)
  5. Sections:
    • .text: Instruções para a CPU (onde o código reside).
    • .rdata: Importações e exportações. Dados apenas de leitura.
    • .data: Dados globais acessíveis em qualquer lugar.
    • .rsrc: Recursos não executáveis (ícones, imagens, strings de menus).

Analisando Headers com PEView

  • Virtual Size: Tamanho da seção na memória.
  • Size of Raw Data: Tamanho da seção no disco.
  • Dica de Análise: Se o Virtual Size for muito maior que o Size of Raw Data, há grandes chances de o programa estar Packed.

Bibliotecas e Funções (Imports)

Listar os imports é valioso para entender a funcionalidade do programa.

Tipos de Linking:

  • Static Linking: Comum em UNIX. O código da biblioteca é copiado para o executável (aumenta o tamanho do arquivo).
  • Runtime Linking: Comum em malwares (especialmente os packed). Conecta-se às bibliotecas apenas quando as funções são chamadas.
  • Dynamic Linking: O loader carrega as bibliotecas necessárias quando o programa inicia (armazenadas no cabeçalho PE). É o mais comum.

DLLs Comuns no Windows:

DLLDescrição
Kernel32.dllCore functionality (memória, arquivos, hardware).
Advapi32.dllComponentes avançados (Service Manager, Registry).
User32.dllElementos de interface (botões, scroll bars).
Gdi32.dllFunções gráficas.
Ntdll.dllInterface com o Kernel do Windows (importada indiretamente).
WSock32.dll / Ws2_32.dllNetworking (Rede).
Wininet.dllFunções de rede de alto nível (HTTP, FTP, NTP).

Ferramentas: Dependency Walker (Windows), readelf (Linux), otool (MacOS).