Qualcuno ha eseguito un ransomware. I log di sistema dicono poco, gli eventi di Windows sono spariti. Il disco viene criptato, ma la RAM conserva ancora tutto: processi in esecuzione, connessioni di rete attive, comandi shell digitati pochi secondi prima. Senza un dump della memoria fisica, quella scena del crimine è persa per sempre.
Noi di Meteora Web lavoriamo quotidianamente con la sicurezza informatica delle PMI italiane. Lo vediamo: quando un attacco colpisce, la prima cosa che viene cancellata è la traccia volatile. Ecco perché l'analisi della RAM non è un lusso da laboratorio, ma una competenza essenziale in ogni incident response. In questa guida vediamo come usare Volatility 3 per estrarre evidenze dalla memoria di sistema, con comandi reali e scenari concreti.
Cos'è la Memory Forensics e Perché è Cruciale per l'Incident Response?
La memoria RAM contiene tutto ciò che è in esecuzione al momento del dump: processi, thread, handle, connessioni di rete, code DLL, dati decifrati in chiaro, password in testo, comandi PowerShell, frammenti di file. A differenza del disco, la RAM non persiste, ma se riesci a catturarla prima che il sistema si spenga, hai una fotografia istantanea dell'attacco.
Perché è fondamentale? Perché molti malware sono memory-resident (fileless). Non scrivono mai nulla sul disco. Un'analisi forense tradizionale del filesystem non li vedrebbe mai. Con la memory forensics puoi:
Sponsored Protocol
- Identificare processi malevoli nascosti (rootkit via DKOM).
- Recuperare payload iniettati in processi legittimi.
- Estrarre chiavi di cifratura usate dal ransomware.
- Ricostruire la sequenza di comandi eseguiti (cmdline, PowerShell).
Come Ottenere un Dump della RAM Affidabile?
Prima di poter analizzare, devi acquisire la memoria in modo forense. Sbagliare qui significa compromettere l'intera indagine. Ecco i metodi che usiamo noi:
Su Windows: Dumplt (o FTK Imager Lite)
Dumplt è un tool a riga di comando che produce un file .raw o .dmp. Viene eseguito con privilegi amministrativi. Comando base:
Dumplt.exe -o memory.dump
Avvertenze: Eseguilo da un supporto esterno (USB) per non alterare la memoria con i driver del sistema. Non installare nulla sul disco compromesso.
Su Linux: LiME
LiME (Linux Memory Extractor) si carica come modulo kernel. Compilarlo sulla macchina stessa è ideale, ma se non è possibile, usa un modulo precompilato per la stessa versione del kernel. Comando:
insmod lime.ko "path=./memory.lime format=lime"
Il formato LIME è supportato da Volatility 3 nativamente.
Su macOS: Osxpmem (di Google Rapid7)
Anche macOS, sebbene meno comune, può essere acquisito con il tool osxpmem. Produci un file .aff4 o .raw.
Cosa fare subito: Se sospetti un attacco in corso, non spegnere il sistema. Scarica un tool portatile su chiavetta, avvia il dump e poi analizza il file lontano dalla macchina infetta.
Sponsored Protocol
Volatility 3: Installazione e Primi Passi Pratici
Volatility 2 è ancora in uso, ma il futuro è Volatility 3 (scritto in Python 3). Non richiede più il profilo di sistema — lo rileva automaticamente. Installazione semplice:
git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
python3 vol.py -f memory.dump windows.info
Primo comando: windows.info (o linux.info, mac.info) mostra informazioni sul sistema: versione del kernel, numero di processori, tempo di attività, offset delle strutture. Verifica che il dump sia valido e che lo strumento lo riconosca.
Plugin Fondamentali da Conoscere
- windows.pslist: Elenca i processi attivi al momento del dump.
- windows.psscan: Scansiona la memoria alla ricerca di strutture EPROCESS (trova processi nascosti da rootkit).
- windows.netscan: Mostra connessioni TCP/UDP, socket, porte in ascolto.
- windows.cmdline: Estrae la riga di comando di ogni processo.
- windows.dlllist: Elenca le DLL caricate per ogni processo.
- windows.malfind: Cerca code iniettate (modifiche a pagine di memoria).
- windows.hashdump: Recupera gli hash degli utenti locali da SAM (se disponibile).
Esempio pratico: Dopo un dump, esegui:
python3 vol.py -f incident.raw windows.pslist
python3 vol.py -f incident.raw windows.psscan
python3 vol.py -f incident.raw windows.netscan
Confronta i PID di pslist e psscan. Qualsiasi processo in psscan ma non in pslist è probabilmente nascosto da un rootkit.
Sponsored Protocol
Come Analizzare un Processo Sospetto con Volatility?
Supponiamo di trovare un processo svchost.exe con PID 1234, ma con una riga di comando anomala o una DLL non firmata. Vuoi approfondire:
python3 vol.py -f incident.raw windows.cmdline --pid 1234
python3 vol.py -f incident.raw windows.dlllist --pid 1234
python3 vol.py -f incident.raw windows.malfind --pid 1234
python3 vol.py -f incident.raw windows.memmap --pid 1234 --dump
Il comando memmap --dump estrae l'intero spazio di memoria del processo. Puoi poi analizzare il file dump con strings o uno scanner YARA. Noi lo facciamo spesso per cercare indicatori di compromissione (IoC) come URL di C2, chiavi di registro o nomi di file.
Estrarre Payload dalla Heap
Se sospetti che un processo contenga codice malevolo iniettato, usa windows.vadinfo per vedere le regioni di memoria con permessi anomali (es. RWX). Poi usa windows.vaddump per estrarre quella porzione.
Come Rilevare Rootkit e Malware Fileless nella RAM?
I rootkit moderni modificano le strutture dati del kernel per nascondere processi, file o connessioni. Volatility ha plugin specifici:
- windows.rootkitscan: Rileva tecniche DKOM (Direct Kernel Object Manipulation).
- windows.ssdt: Mostra la System Service Descriptor Table. Se un indirizzo di sistema è stato reindirizzato a codice malevolo, lo vedi.
- windows.driverirp: Verifica le funzioni IRP dei driver; un driver malevolo spesso ne modifica il dispatch.
Esempio concreto: Un malware fileless come Meterpreter inietta il suo payload in un processo legittimo (es. explorer.exe). Con windows.malfind trovi regioni di memoria con flag MEM_COMMIT | MEM_RESERVE e protezione PAGE_EXECUTE_READWRITE. Estrai quella regione e analizzala con strings o un disassemblatore.
Sponsored Protocol
Case study reale: Un nostro cliente aveva un server colpito da Cobalt Strike. Il beacon era iniettato in rundll32.exe ma non appariva in pslist. Con psscan lo abbiamo trovato, estratto la configurazione (URL del teamserver, mutex) e bloccato la comunicazione dal firewall.
Come Recuperare Dati Criptati o Credenziali dalla RAM?
I ransomware spesso caricano in memoria la chiave simmetrica per cifrare i file, ma può rimanere in chiaro fino alla fine del processo. Volatility non ha un plugin magico, ma puoi:
- Dumpare la memoria del processo ransomware e cercare pattern di chiavi (es. stringhe lunghe 16/32 byte in hex).
- Usare
windows.modscanper trovare moduli kernel che potrebbero contenere dati crittografici. - Estrarre gli hash degli utenti con
windows.hashdumpper forzare offline le password.
Esempio: Per cercare una chiave AES, usa:
python3 vol.py -f incident.raw windows.memdump --pid 4567 --dir output/
strings output/pid.4567.dmp | grep -E '^[A-Fa-f0-9]{32,64}$'
Non è infallibile, ma in molti casi la chiave è in memoria prima della cifratura.
Sponsored Protocol
Automatizzare l'Analisi con Python e YARA
Volatility 3 è modulare: puoi scrivere plugin personalizzati. Ma un approccio pratico per chi non sviluppa è usare YARA rules integrate. Scarica una rule set come signature-base e lanciala su dump di processo:
python3 vol.py -f incident.raw windows.yarascan --yara-rules malware.yar
Noi di Meteora Web abbiamo automatizzato l'intero workflow in uno script che lancia i plugin principali e produce un report HTML. Lo usiamo per accelerare l'incident response nei clienti che non hanno un SOC interno.
Cosa Fare Adesso — Checklist Operativa per la Tua Azienda
1. Prepara un kit di acquisizione forense — chiavetta USB con Dumplt, Volatility portatile, script di avvio. Tienilo sempre a portata di mano.
2. Definisci una procedura di incident response — chi decide di fare il dump? Quando? Non aspettare che il sistema sia spento.
3. Fai pratica su un lab — crea una VM Windows/Linux, esegui un malware noto (es. Mimikatz), fai il dump e analizzalo con Volatility. Solo la pratica rende veloci.
4. Integra Volatility nel tuo workflow — per ogni alert grave, considera l'acquisizione della RAM come primo step.
5. Documenta tutto — catena di custodia, hash del dump, comandi eseguiti. Per eventuali azioni legali.
Per approfondire l'intero processo di incident response, leggi la nostra guida pillar su Incident Response e Forensics Digitale.