Quase sempre em um incidente cibernético, investigação ou análise de malware precisamos recorrer a memória volátil do computador.
Memória volátil como a memória RAM (Random Access Memory) perde as informações quando o sistema é desligado ou perde energia, por isso a importância da correta aquisição ser feita enquanto o sistema está em funcionamento. Importante lembrar, que não se limita a memória RAM quando falamos de memória volátil, pois pode haver o uso de outros componentes, como caches do processador, caches de disco, etc.
Aquisição da memória
O primeiro passo é a captura (coleta) da memória para analise. Isso pode até envolver a necessidade de uso de equipamentos especiais para isolar a máquina da rede ou de outros dispositivos. Mas no geral é simples a aquisição.
As ferramentas mais comuns incluem FTK Imager, WinPmem, LiME (Linux Memory Extractor) para Linux, e MacQuisition para sistemas macOS, o AVML – Acquire Volatile Memory for Linux, entre outras…
A ferramenta de aquisição lê o conteúdo completo da memória física do sistema e o grava em um arquivo (dump). Este arquivo pode e deve ser salvo em um disco externo.
Garanta a integridade do arquivo após a aquisição e a manipulação gerando hash, pode ser MD5 ou SHA1, se preferir algum hash maior (como SHA-256) não há problema, é até mais interessante. Entendendo o HASH (MD5 e SHA1)
Vale lembrar que é possível coletar os dumps de memória do Windows após uma falha do sistema no qual ele gera a tão famosa “tela azul” (BSOD). O padrão do dump é definido como automático, mas dependendo do que está acontecendo e em como irá acontecer a investigação é possível modificar para “despejo de memória completo”
Análise Forense
Agora é hora de fazer a análise forense em busca de evidencias de alguma ação maliciosa, dependendo do contexto.
🚨 Atenção – Quando você faz esse tipo de análise, você está lidando com possíveis amostras reais de malware, portanto não as exponha a redes internas ou à internet e use ambientes controlados (sandbox).
Verifique a integridade do DUMP de memória, conferindo se o hash é o mesmo do momento da aquisição.
Mantenha um registro detalhado da análise, incluindo todos comandos usados, descobertas e conclusões, pois isso vai ajudar no relatório final talvez seja necessário para fins legais a reprodução da sua análise pela outra parte.
Identifique o sistema operacional do dump de memória, pois os softwares de análise podem necessitar de recursos específicos e isso também determina quais comandos poder ser utilizados.
Escolha a ferramenta ideal para a análise, eu vou deixar aqui uma lista:
- Volatility: Uma das ferramentas mais populares para análise de memória, suporta uma ampla gama de sistemas operacionais.
- Rekall: Outra ferramenta poderosa, com funcionalidades semelhantes às do Volatility.
- Memoryze: Pode ser usado para análise de memória em sistemas Windows, incluindo a captura de dumps de memória.
- MemProcFS utiliza o conceito de representar a memória de um sistema como um sistema de arquivos montável.
Examinando o dump
Abaixo temos o que a SANS chama de “Metodologia Investigativa de Seis Etapas” para forense de memória.
- Examine os processos em execução no momento do dump, desconhecidos, suspeitos ou maliciosos.
- Verifique as conexões de rede para identificar comunicações suspeitas.
- Identifique e avalie binários e DLLs carregados na memória
- Procure por evidências de injeção de código
- Examine buscando indícios ou características que possam indicar a presença de um rootkit.
- Busque por IoCs conhecidos, hashes de arquivos maliciosos, strings específicas, ou padrões de comportamento anormal.
https://www.sans.org/posters/dfir-memory-forensics/
Se for usar por exemplo o Volatility 3 uma forma de executar essa listagem seria de modo simples:
Informações sobre processos:
- vol.py -f “/path/to/file” windows.pslist
- vol.py -f “/path/to/file” windows.psscan
- vol.py -f “/path/to/file” windows.pstree
Lista de comandos:
- vol.py -f “/path/to/file” windows.cmdline
Informações de rede:
- vol.py -f “/path/to/file” windows.netscan
- vol.py -f “/path/to/file” windows.netstat
Scan de arquivo:
- vol.py -f “/path/to/file” windows.filescan
Malfind:
- vol.py -f “/path/to/file” windows.malfind
Yara Scan:
- vol.py -f “/path/to/file” windows.vadyarascan ‑‑yara-rules <string>
- vol.py -f “/path/to/file” windows.vadyarascan ‑‑yara-file “/path/to/file.yar”
- vol.py -f “/path/to/file” yarascan.yarascan ‑‑yara-file “/path/to/file.yar”
Vale a pena conhecer o Cheat Sheet criado pela @onfvp – https://blog.onfvp.com/post/volatility-cheatsheet/
Existem muitas vias que podemos adotar para fazer essa analise.
Esse é um trabalho complexo e que exige um conhecimento técnico bem aprofundado, portanto vale a pena estudar o funcionamento dos sistemas operacionais e entender os TTPs e os tipos de IoC que estão sendo parte da hipótese da análise. Alguns serão tão novos que vocês será um dos primeiros a mapear as atividades maliciosas.
Baixe dumps de memória (infectados ou não)
Se o dump tiver senha geralmente contém malware e senha padrão é infected
💾 Volatility Memory-Samples
💾 OsForensics – Sample Memory Dumps
- Windows (Windows 11 64bit)Windows-11-Dump (1.22GB)
- Windows (Windows 10 64bit)Windows-10-Dump (1.6GB)
- Mac (Maverick 10.9.3 64bit):Mac-10-9-3-Dump (930MB)
- Linux (Ubuntu 16.04 64bit):Linux-16-04-Dump (256MB)
💾 Diversos
Referencias
- https://github.com/volatilityfoundation/volatility3
- Livro “The Art of Memory Forensics”
- https://www.null0x4d5a.com/2017/05/memory-analsyis-of-wannacry-ransomware.html
Seja o primeiro a comentar