Análise forense de memória RAM com Volatility
Introdução
A análise da memória RAM (Random Access Memory) é uma etapa crítica em investigações de malware: revela processos em execução, conexões de rede ativas, módulos carregados e vestígios de injeção de código que não aparecem no disco. Este artigo descreve o uso do framework open source Volatility para examinar dumps de memória (raw) em sistemas Windows, demonstrando a identificação de processos suspeitos, extração de DLLs e verificação com serviços externos.
Definição rápida: Volatility — framework em Python para análise de memória volátil que suporta Windows, Linux, macOS e Android.
Intenção do artigo
- Mostrar um fluxo prático para analisar um dump de memória Windows com Volatility.
- Demonstrar plugins úteis: imageinfo, pslist, pstree, malfind, cmdscan, netscan.
- Fornecer heurísticas, checklist e passos de confirmação usando antivírus e serviços online.
Importante: Este documento foca em análise forense de memória adquirida previamente (imagem), não em captura de memória ao vivo.
Suporte de formatos de memória
O Volatility atual aceita vários formatos comuns de memória, entre os quais:
- Memória física raw/padded
- FireWire (IEEE 1394)
- Expert Witness (EWF)
- Dumps de crash do Windows 32/64 bits
- Arquivos de hibernação Windows 32/64 bits
- Mach-O 32/64 bits
- Core dumps do VirtualBox
- VMware Saved State (.vmss) e Snapshot (.vmsn)
- Formato HPAK (FastDump)
- Dumps do QEMU
Esses formatos cobrem a maior parte dos cenários de aquisição de memória utilizados em lab e investigações práticas.
Instalação
No Ubuntu 16.04 LTS, o Volatility pode ser instalado com:
apt-get install volatility
Observação: existem builds standalone para Windows e macOS. Em ambiente Windows pode-se usar o executável independente, como mostrado nas amostras de linha de comando abaixo.
Preparação e verificação da integridade
Antes de iniciar a análise, verifique hash da imagem para garantir que o arquivo não foi alterado desde a aquisição. No exemplo do caso investigado, o MD5 calculado foi:
MD5: ee043142485a83f4d49a3a7899408500
Importante: guarde artefatos de verificação (hashes, logs de transferência) como prova de cadeia de custódia.
Fluxo de análise com Volatility — visão geral
Passos principais que seguiremos:
- Identificar perfis compatíveis com imageinfo.
- Listar processos com pslist e visualizar hierarquia com pstree.
- Executar malfind para detectar regiões suspeitas (injeção/execução de código) e extrair dumps.
- Verificar histórico de comandos com cmdscan.
- Analisar conexões de rede com netscan.
- Validar artefatos extraídos com antivírus e serviços online (VirusTotal, Hybrid Analysis).
Identificar perfil do dump
Use imageinfo para obter sugestões de perfil (arquivo e arquitetura):
"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" imageinfo -f memdump3.raw
A saída sugere perfis compatíveis, por exemplo: Win7SP0x86, Win7SP1x86. Escolha o perfil que melhor corresponde às sugestões do imageinfo.
Listar processos e hierarquia
Obtenha a lista de processos em execução com pslist:
"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 pslist -f memdump3.raw
Continuação:
Para entender relações pai/filho (PID/PPID), use pstree:
"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 pstree -f memdump3.raw
Heurística: processos com nomes semelhantes a processos legítimos (por ex., iexplore.exe vs iexplorer.exe) ou executáveis com nomes aleatórios (0KqEC12.exe) são prioritários para investigação.
Detectar injeção e extrair módulos suspeitos (malfind)
O plugin malfind detecta regiões de memória que parecem conter código executável injetado ou módulos não mapeados normais. Para extrair artefatos de um PID identificado, execute:
E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 malfind -D E:\output/pid-1120 -p 1120 -f memdump3.raw
Saída exemplo quando nada é encontrado:
Outro exemplo (PID 1788) sem resultados:
Quando o malfind encontra regiões suspeitas, ele salva arquivos na pasta indicada. Exemplo de execução para um PID com extrações:
E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 malfind -D E:\output/pid-2104 -p 2104 -f memdump3.raw
O dump resultante pode conter DLLs extraídas e blocos de código injetado:
Exemplos adicionais de PIDs suspeitos e seus dumps:
Observação técnica: artefatos extraídos devem ser tratados como evidência — não execute binários sem isolamento adequado. Use um ambiente controlado (sandbox/VM isolada) para análise dinâmica.
Verificação e validação com antivírus e serviços online
Após extrair DLLs e blobs suspeitos, valide com motores de detecção. No caso analisado, o Windows Defender reportou:
Resumo do comportamento relatado para EyeStye: keylogging, monitoramento de atividade web, roubo de credenciais, possível uso de rootkit e injeção de código para ocultar presença. A análise mostrou injeção no processo explorer.exe — comum para persistência/ocultamento.
O MalwareBytes também identificou as DLLs extraídas como maliciosas:
Regra prática: usar múltiplas fontes (AV local, VirusTotal, Hybrid Analysis) e correlacionar sinais (nome do arquivo, strings internas, conexões de rede, comportamento em sandbox).
Histórico de comandos (cmdscan)
O plugin cmdscan recupera histórico do prompt de comando presente na memória (quando disponível):
E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 cmdscan -f memdump3.raw
No exemplo, o atacante executou binários com nomes distintos, incluindo variantes de iexplore.exe/ieplorer.exe e referências a arquivos como _lt112.spn. A presença disso no histórico é uma forte pista de atividade manual ou automatizada por atacante.
Pesquisas online mostraram referências ao ficheiro _lt112.spn em plataformas de análise de malware:
Conexões de rede (netscan)
Use netscan para recuperar sockets e conexões ativas encontradas na memória:
E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 netscan -f memdump3.raw
No caso exibido, processos com nome iexplore estavam estabelecendo conexões externas pela porta 80 — comportamento consistente com exfiltração HTTP ou comunicação com C2.
Interpretação e correlação de evidências
A correlação dos resultados indica:
- Processos disfarçados (nomes parecidos com legítimos).
- Injeção de código detectada em explorer.exe (malfind) e em múltiplos processos aparentes de navegador.
- Históricos de comando que executam binários suspeitos.
- Conexões de rede ativas em portas HTTP (porta 80) por processos suspeitos.
- Assinaturas de antivírus identificando trojans do tipo keylogger/stealer.
Conclusão técnica: o sistema foi comprometido por um malware com capacidades de injeção e exfiltração, rodando sob processos legítimos comprometidos para ocultação.
Checklist rápido para investigação (role-based)
Investigador (Triage):
- Verificar integridade do dump (MD5/SHA256).
- Executar imageinfo para obter perfil.
- Rodar pslist/pstree para localizar processos suspeitos.
Analista (Artefatos):
- Executar malfind para PIDs suspeitos; extrair dumps com -D para análise offline.
- Submeter artefatos a serviços como VirusTotal / Hybrid Analysis.
Resposta a incidente (IR):
- Conter comunicação da máquina comprometida.
- Coletar logs adicionais (firewall, proxy) correlacionando IPs remotos.
- Planejar limpeza ou reconstrução (reimagem) dependendo do nível de comprometimento.
Observação jurídica: preserve cópias forenses e documentos de cadeia de custódia.
Mini-metodologia reproducível
- Validar hash da imagem.
- imageinfo -> escolher –profile.
- pslist/pstree -> mapear processos.
- malfind -p
-D -> extrair artefatos. - cmdscan -> revisar comandos recentes.
- netscan -> listar conexões e mapear IPs remotos.
- Submeter binários a antivírus/sandbox.
- Documentar e recomendar mitigação.
Fluxo de decisão rápido (Mermaid):
flowchart TD
A[Começar: imagem de memória] --> B{Perfil detectado?}
B -- Sim --> C[pslist/pstree]
B -- Não --> Z[Faltam dados: reavaliar aquisição]
C --> D{Processos suspeitos?}
D -- Sim --> E[Executar malfind e extrair DLLs]
D -- Não --> F[Revisar netscan/cmdscan]
E --> G[Submeter artefatos a AV/sandbox]
G --> H{Confirmação positiva?}
H -- Sim --> I[Notificar IR e conter]
H -- Não --> F
F --> I
Quando a técnica falha — limitações e contraexemplos
- Memória parcialmente adquirida ou corrompida pode levar a false negatives no malfind.
- Técnicas avançadas de ofuscação e encriptação em tempo de execução podem impedir a extração direta de payloads legíveis.
- Processos injetados que limpam sinais na memória antes da aquisição podem escapar da detecção.
Mitigação: combinar análise de disco, logs de rede e dispositivos de rede para compensar limitações de memória.
Boas práticas e segurança operacional
- Nunca execute artefatos extraídos em hosts de produção.
- Utilize sandboxes isoladas e snapshots para análise dinâmica.
- Documente cada comando e salve resultados brutos (stdout/stderr).
- Mantenha ferramentas (Volatility) atualizadas e acompanhe perfis oficiais ao migrar entre versões do OS.
Glossário (uma linha cada)
- Dump: cópia do conteúdo da memória RAM em um arquivo.
- Perfil (profile): configuração que corresponde à versão do sistema operacional usada pelo Volatility para interpretar estruturas em memória.
- Malfind: plugin do Volatility que identifica regiões suspeitas de código/injeção.
- Cmdscan: plugin que lê histórico do prompt de comando na memória.
- Netscan: plugin que captura sockets e conexões da tabela de rede encontrada na memória.
Conclusão
A análise forense com Volatility provê visibilidade valiosa do estado em execução do sistema comprometido. No caso estudado, a correlação entre processos suspeitos, dumps de DLLs com injeção, histórico de comandos e conexões de rede confirmou a presença de um Trojan com características de keylogger/stealer (EyeStye/Trojan.Grabber). Use a metodologia aqui descrita como base de triagem e aprofundamento, adaptando a investigação conforme evidências adicionais surgirem.
Resumo das ações recomendadas:
- Isolar a máquina comprometida da rede.
- Preservar evidências e hashes.
- Remover/limpar somente após plano de contenção e validação.
- Reimagem quando houver sinais de rootkit ou comprometimento profundo.
Referências
Materiais semelhantes

Monitoramento Apache Tomcat — contadores e regras

Como se Proteger do Clickjacking

Papéis de parede distintos por tela no Android

Como remover seus dados de corretores de dados

Papéis de parede por tela no Android
