Memory dump

Un dump della memoria è un file contenente un’istantanea della memoria di sistema o di un’applicazione in un preciso momento. Viene utilizzato principalmente per il debug e la risoluzione dei problemi, fornendo a sviluppatori e tecnici informazioni preziose sull’esatto stato del sistema o del processo quando si è verificato un crash o un errore. 

In informatica forense, un dump di memoria è l’estrazione e la copia completa del contenuto volatile della memoria RAM (o memoria di sistema) di un dispositivo in un momento specifico, tipicamente in risposta a un malfunzionamento o durante un’indagine. Questo file dump contiene dati preziosi per l’analisi, come processi attivi, connessioni di rete, informazioni sulla memoria del sistema e artefatti di sistema, che possono essere analizzati con strumenti forensi come Volatility per identificare attività dannose o cause di errori. 

In DFIR la sequenza tipica è dump della RAM → triage veloce → imaging del disco:

  • lancia gli strumenti da supporto esterno (USB forense) e registra ogni comando;
  • scrivi su un disco esterno dedicato (/mnt/usb/CASE123/memory/);
  • calcola SUBITO l’hash del dump e salvalo accanto al file;
  • se puoi, spegni servizi rumorosi (sync cloud, AV invadenti) ma non disconnettere bruscamente la macchina se ti serve il contesto live (processi, rete).

WinPMem (open-source, RAW)

Esegui come amministratore dalla tua chiavetta:

# crea cartella caso
mkdir E:\CASE123\memory

# dump in RAW
E:\tools\winpmem\winpmem_mini_x64.exe E:\CASE123\memory\CASE123_mem.raw

# hash
CertUtil -hashfile E:\CASE123\memory\CASE123_mem.raw SHA256 > E:\CASE123\memory\CASE123_mem.sha256.txt

Note: winpmem_mini_x64.exe produce RAW ed auto-scarica il driver a fine acquisizione:

  • il programma winpmem_mini_x64.exe è la versione “minimal” del tool WinPmem, un’utility open source per l’acquisizione della memoria fisica (RAM) su sistemi Windows a 64 bit. La denominazione “mini” indica che questa versione genera esclusivamente immagini di memoria in formato RAW e non in formati più complessi come AFF4, che erano supportati da versioni precedenti;
  • per accedere alla memoria fisica, WinPmem richiede un driver in modalità kernel, necessario per leggere direttamente dallo spazio di memoria a basso livello. L’eseguibile winpmem_mini_x64.exe è autosufficiente: contiene internamente sia il codice dell’applicazione utente sia i driver sia a 32 che a 64 bit. Durante l’esecuzione, carica automaticamente il driver appropriato nel sistema.​ Al termine dell’acquisizione, il driver viene automaticamente scaricato (unloaded), liberando le risorse kernel e riducendo le tracce residue dell’operazione, come confermato nella documentazione ufficiale del progetto Velocidex e nelle guide tecniche di RedPacket Security.

DumpIt (Magnet Forensics, GUI/CLI rapidissima)

Esegui DumpIt.exe (x64/ARM64 disponibili) → produce un crash dump della RAM, velocissimo per incident response, è considerato uno dei tool di riferimento per la live acquisition forense della memoria RAM su Windows per la facilità d’uso, rapidità e compatibilità con i principali strumenti di analisi.

Caratteristiche principali

  • Semplicità d’uso: basta avviare il programma (ad esempio da una chiavetta USB); una finestra chiede conferma e acquisisce in automatico un’immagine (dump) della memoria fisica, salvandola nella stessa cartella dell’eseguibile oppure dove indicato tramite parametro CLI (/O percorso).​
  • Rapidità: può acquisire dump completi anche da macchine con molta RAM (una memoria da 32GB viene acquisita in circa 6 minuti, dati di test).​
  • Portabilità: non necessita di installazione né di software aggiuntivo; è eseguibile direttamente da dispositivi rimovibili—utile in scenari incident response e analisi su macchine compromesse.​
  • Compatibilità: genera dump compatibili con framework di analisi come Volatility, Rekall, Comae Platform e WinDbg.​
  • Affidabilità: evita di causare Blue Screen (BSOD) durante la cattura, conservando lo stato della macchina.​
  • Output: oltre al file .dmp della memoria, può generare un file di testo con dettagli come nome macchina, timestamp UTC e SHA256 del dump.

AVML (Microsoft) – zero build sul target

AVML (Azure Virtual Machine Local) è uno strumento open source sviluppato da Microsoft per l’acquisizione forense della memoria volatile (RAM) su sistemi Linux, con capacità di operare anche su macchine virtuali Azure e ambienti fisici o cloud. La memoria catturata include informazioni su processi, connessioni di rete, credenziali temporanee, chiavi di cifratura e codice eseguibile in RAM, rendendo AVML fondamentale per la memory forensics moderna.

sudo mkdir -p /mnt/usb/CASE123/memory
cd /mnt/usb/CASE123/memory

# dump completo
sudo /media/usb/tools/avml CASE123_mem.lime

# immagine compressa (snappy) – comoda se spazio limitato
sudo /media/usb/tools/avml --compress CASE123_mem.lime.compressed

# opzionale: converti a LiME non compresso per alcuni workflow
sudo /media/usb/tools/avml-convert CASE123_mem.lime.compressed CASE123_mem.lime

# hash
sha256sum CASE123_mem.lime* | tee CASE123_mem.sha256.txt

Caratteristiche principali

  • Open Source: distribuito pubblicamente da Microsoft su GitHub, accessibile e verificabile in ambiente forense.
  • Compatibilità: funziona su distribuzioni Linux a 64 bit, incluse macchine virtuali in Azure, server fisici e container.
  • Acquisizione sicura: utilizza API di basso livello del kernel per leggere la memoria fisica in maniera controllata, riducendo il rischio di crash del sistema o di modifiche alle evidenze.
  • Formato output: genera file di dump in formato LiME-compatible (Linux Memory Extractor) o RAW, permettendo l’analisi successiva in strumenti come Volatility o Rekall.
  • Uso flessibile: può essere eseguito localmente o da remoto nel contesto di investigazioni cloud attraverso script automatizzati o orchestrazioni Azure Monitor.

Note: AVML usa /dev/crash / /dev/mem / /proc/kcore automaticamente; supporta LiME come formato e fornisce avml-convert. Se è attivo kernel_lockdown l’acquisizione può fallire.

LiME (kernel module) – massima compatibilità

LiME (Linux Memory Extractor) è un modulo kernel caricabile (Loadable Kernel Module, LKM) progettato per l’acquisizione forense della memoria volatile su sistemi Linux e dispositivi basati su Linux, come Android.

sudo mkdir -p /mnt/usb/CASE123/memory
cd /path/to/LiME   # dove hai il lime.ko compilato per quel kernel

# dump completo
sudo insmod ./lime.ko "path=/mnt/usb/CASE123/memory/CASE123_mem.lime format=lime"

# hash
sha256sum /mnt/usb/CASE123/memory/CASE123_mem.lime | tee /mnt/usb/CASE123/memory/CASE123_mem.sha256.txt

# In alternativa, per il trasferimento remoto:
sudo insmod ./lime.ko "path=tcp:192.168.1.10:4444 format=lime"

Note:

  • installare i pacchetti kernel-headers e build-essential;
  • clonare il repository ufficiale:
git clone https://github.com/504ensicsLabs/LiME.git
cd LiME/src && make
  • parametri chiave: path=... e format=<raw|padded|lime> sono obbligatori; su alcune distro servono le virgolette.

Su Intel mac con impostazioni di sicurezza “allentate” si può usare OSXPMem/osxpmem (suite pmem) da supporto esterno.

Contesto tecnico

  • Intel Mac: ovvero Mac con processori Intel (non Apple Silicon), offrono una compatibilità più ampia con strumenti software tradizionali sviluppati per sistemi Unix-like o Windows, soprattutto per operazioni di forensics.
  • Impostazioni di sicurezza “allentate”: per eseguire tool come OSXPMem che devono accedere a risorse kernel o hardware, è necessario disabilitare alcune protezioni di sicurezza native di macOS (ad esempio: disattivazione di System Integrity Protection (SIP), permessi di accesso ai driver di basso livello, possibile disabilitazione protezioni come FileVault o protezioni firmware. Queste modifiche sono spesso necessarie per permettere la scrittura o il caricamento di driver esterni da supporto esterno – ad esempio una chiavetta USB – e l’accesso a memoria fisica in modo non standard.
  • Uso da supporto esterno: OSXPMem può essere eseguito da dispositivo esterno (es. USB/CD bootabile o recovery environment) senza obbligo di installarlo sul sistema host, riducendo l’impatto e possibilità di alterare dati.

Esempio (Intel, dove supportato):

sudo /Volumes/TOOLS/osxpmem --format raw /Volumes/CASE/CASE123/memory/CASE123_mem.raw
shasum -a 256 /Volumes/CASE/CASE123/memory/CASE123_mem.raw > /Volumes/CASE/CASE123/memory/CASE123_mem.sha256.txt

Su Mac con chip Apple T2 e Apple Silicon (M1, M2 e successivi), l’acquisizione diretta della memoria RAM è generalmente impossibile senza modifiche alle protezioni di sicurezza come SIP (System Integrity Protection) e AVB (Apple Verified Boot):

  • i chip T2 e Apple Silicon integrano un secure enclave e un sistema di avvio sicuro (AVB) che criptano e proteggono molte aree critiche della memoria e gestiscono il controllo dell’integrità del sistema operativo;
  • SIP è progettato per impedire il caricamento di driver non firmati o modifiche al kernel, bloccando tool forensi che tentano di accedere direttamente alla RAM;
  • AVB verifica la catena di avvio e blocca sistemi con firmware modificato, essendo un ulteriore livello che impedisce alterazioni e accessi non autorizzati alla memoria fisica.

Usa la working machine (non il target) per una verifica rapida.

Windows

vol -f CASE123_mem.raw windows.info
vol -f CASE123_mem.raw windows.pslist
vol -f CASE123_mem.raw windows.netscan
vol -f CASE123_mem.raw windows.malfind

Linux (LiME/AVML)

vol -f CASE123_mem.lime linux.pslist
vol -f CASE123_mem.lime linux.bash
vol -f CASE123_mem.lime linux.netstat

Volatility 3 legge AVML (anche compresso, via layer dedicato), oltre a LiME/RAW.

Nota: Pagefile/hiberfil? Se poi fai il full disk image, li avrai comunque. In attività live senza imaging completo puoi copiarli (con tool forense) e calcolarne l’hash a parte.