Andrey Escarião

Pesquisas, contos e ciência.

Análise Forense de Memória RAM com Volatility

·

·

5 min de leitura

Imagem somente ilustrativa.

Introdução

A análise forense de memória RAM é uma etapa essencial na investigação de incidentes de segurança cibernética. Diferente do armazenamento persistente ou armazenamento não volátil  (ou PMem), a RAM contém informações temporárias que podem revelar processos em execução, credenciais em uso, conexões de rede e artefatos maliciosos. O Volatility Framework é uma das principais ferramentas para extrair e analisar essas evidências. Neste guia, abordaremos a instalação, extração de imagens de memória e uso avançado do Volatility para investigações detalhadas.

Imagem somente ilustrativa.
Imagem somente ilustrativa.

1. Instalando o Volatility Framework1.1. Requisitos e Instalação

O Volatility é uma ferramenta de código aberto desenvolvida em Python. Antes de instalá-lo, é necessário garantir que os pré-requisitos estejam instalados no sistema.

Para sistemas baseados em Debian (Ubuntu/Kali Linux):

sudo apt update && sudo apt install python3 python3-pip git
pip3 install distorm3 yara pycrypto jsonschema

Para sistemas baseados em RHEL (CentOS, Fedora):

sudo yum install python3 python3-pip git
pip3 install distorm3 yara pycrypto jsonschema

Agora, clone o repositório do Volatility e instale a ferramenta:

git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
pip3 install -r requirements.txt

Verifique se a instalação foi concluída corretamente executando:

python3 vol.py -h

Isso exibirá a lista de comandos e plugins disponíveis.

2. Captura de Imagem de Memória RAM

2.1. Ferramentas para Extração de Memória

Para analisar a memória de um sistema, é necessário capturar sua imagem RAM. Algumas das ferramentas mais utilizadas para esse processo incluem:

  • DumpIt (Windows) → Simples e eficiente para capturar a RAM em máquinas Windows.
  • WinPMEM (Windows) → Gera imagens compatíveis com o Volatility.
  • LiME (Linux) → Cria dumps de memória no Linux sem interromper processos.

2.2. Extração de Memória no Windows com DumpIt

  1. Baixe o DumpIt:
  2. Execute o arquivo .exe com privilégios de administrador.
  3. O dump será salvo no diretório atual no formato .raw ou .dmp.

2.3. Extração de Memória no Linux com LiME

  1. Clone o repositório do LiME: git clone https://github.com/504ensicsLabs/LiME.git cd LiME/src make
  2. Carregue o módulo do kernel para iniciar a captura: sudo insmod lime.ko "path=/mnt/memoria.lime format=lime"

Agora que temos uma imagem de memória capturada, podemos analisá-la com o Volatility.

3. Identificação e Perfis de Memória

3.1. Descobrindo o Perfil do Sistema

O Volatility precisa identificar o perfil da imagem de memória antes da análise. Para listar os perfis disponíveis:

python3 vol.py -f memoria.raw windows.info

Se a imagem for do Linux:

python3 vol.py -f memoria.lime linux.pslist

Isso confirmará se a imagem é válida e qual o sistema operacional do dump.

4. Análise de Processos em Execução

4.1. Listagem de Processos

A análise de processos pode revelar malwares ocultos, executáveis suspeitos e atividades anômalas.

  • Para listar os processos no Windows: python3 vol.py -f memoria.raw windows.pslist
  • No Linux: python3 vol.py -f memoria.lime linux.pslist

Os processos legítimos costumam ter assinaturas conhecidas, enquanto malwares podem ter nomes genéricos ou IDs suspeitos.

4.2. Identificando Processos Ocultos

Além da listagem normal, processos podem estar ocultos. O comando psscan lista processos que não aparecem normalmente:

python3 vol.py -f memoria.raw windows.psscan

Se um processo aparece no psscan, mas não no pslist, ele pode estar oculto por um Rootkit.

5. Investigação de Conexões de Rede

5.1. Descobrindo Conexões Ativas

Ataques avançados podem manter conexões persistentes com servidores de comando e controle (C2). Para listar conexões de rede na memória RAM:

  • No Windows: python3 vol.py -f memoria.raw windows.netscan
  • No Linux: python3 vol.py -f memoria.lime linux.netstat

5.2. Identificação de Comunicação Maliciosa

Se um processo está se comunicando com um IP desconhecido ou uma porta incomum, pode ser um sinal de exfiltração de dados. Use grep para filtrar resultados suspeitos:

python3 vol.py -f memoria.raw windows.netscan | grep "ESTABLISHED"

6. Recuperação de Arquivos e Credenciais

6.1. Extração de Arquivos da Memória

Arquivos abertos recentemente podem ser recuperados:

python3 vol.py -f memoria.raw windows.filescan

6.2. Recuperação de Senhas em Texto Plano

Em alguns casos, credenciais ficam armazenadas na RAM:

python3 vol.py -f memoria.raw windows.hashdump

Se o sistema foi comprometido, esse comando pode revelar senhas que estavam na sessão do usuário.

Conclusão

A análise forense de memória RAM com o Volatility é uma técnica fundamental para investigações cibernéticas avançadas. A memória pode armazenar evidências valiosas, incluindo malwares ocultos, credenciais em uso e conexões maliciosas. Com um fluxo estruturado, desde a extração da RAM até a análise detalhada dos processos e rede, é possível reconstruir um ataque e coletar provas críticas para mitigação e resposta a incidentes.