Analisi Malware: come capire cosa hai trovato senza fartelo scappare
Hai trovato un file sospetto. Forse durante un’attività di Threat Hunting, forse te lo ha segnalato l’EDR, forse l’hai recuperato da un endpoint compromesso. La domanda che ti fai immediatamente è sempre la stessa:
“Cosa diavolo è questo?”
Aprirlo e cliccare due volte sarebbe la risposta sbagliata. Mandarlo subito su VirusTotal senza pensarci potrebbe bruciare un indicatore prezioso. Analizzarlo male ti farebbe perdere informazioni critiche.
In questo articolo ti mostro come approcciare l’analisi malware in modo metodico, partendo da zero.
Il principio base: non eseguire MAI su un sistema reale
Prima di tutto: isola tutto. L’analisi malware si fa sempre in un ambiente controllato e sacrificabile — una VM senza connessione alla rete reale, o una sandbox dedicata.
Il malware moderno ha spesso meccanismi anti-analisi: controlla se è in una VM, verifica la presenza di tool di debugging, guarda il numero di processi in esecuzione. Ma questo è un problema di livello avanzato — per ora l’importante è non analizzare mai su un sistema di produzione.
Fase 1: Analisi Statica
L’analisi statica consiste nell’esaminare il file senza eseguirlo. È il punto di partenza: veloce, sicuro, e spesso sufficiente per farsi un’idea.
Calcola gli hash
Il primo passo è identificare il file univocamente tramite i suoi hash:
# Su Linux/Mac
sha256sum suspicious_file.exe
md5sum suspicious_file.exe
# Su Windows (PowerShell)
Get-FileHash suspicious_file.exe -Algorithm SHA256
Get-FileHash suspicious_file.exe -Algorithm MD5
Con l’hash SHA256 puoi cercarlo su VirusTotal, MalwareBazaar o any.run per vedere se è già noto.
Analizza le stringhe
Le stringhe leggibili all’interno di un binario sono una miniera d’oro: URL, IP, messaggi di errore, nomi di chiavi di registro, percorsi di file:
# Estrai stringhe leggibili (minimo 6 caratteri)
strings -n 6 suspicious_file.exe
# Filtra solo URL
strings suspicious_file.exe | grep -E "https?://"
# Filtra IP
strings suspicious_file.exe | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}"
Su Windows puoi usare Strings di Sysinternals:
strings.exe suspicious_file.exe | findstr "http"
Esamina le intestazioni PE
I file eseguibili Windows hanno una struttura chiamata PE (Portable Executable). Strumenti come PE-bear o pestudio ti mostrano:
- Le DLL importate (se importa
VirtualAlloc,WriteProcessMemory,CreateRemoteThread→ campanello d’allarme) - Le sezioni del file e la loro entropia (alta entropia = possibile packing/cifratura)
- I metadati del compilatore
Con Python e la libreria pefile:
import pefile
pe = pefile.PE("suspicious_file.exe")
print("[*] Import delle DLL:")
for entry in pe.DIRECTORY_ENTRY_IMPORT:
print(f" {entry.dll.decode()}")
for imp in entry.imports:
if imp.name:
print(f" -> {imp.name.decode()}")
Fase 2: Analisi Dinamica
L’analisi dinamica significa eseguire il malware in un ambiente controllato e osservare cosa fa. Qui vedi il comportamento reale: file creati, chiavi di registro modificate, connessioni di rete effettuate.
Preparazione dell’ambiente
Prima di eseguire il sample:
- Snapshot della VM — così puoi tornare allo stato iniziale
- Strumenti di monitoring attivi — Process Monitor, Wireshark, Regshot
- Connessione di rete simulata — usa INetSim o FakeNet-NG per simulare DNS e HTTP senza traffico reale
# Installa FakeNet-NG su Linux
pip install flare-fakenet-ng
fakenet
Cosa monitorare
Processi:
# Su Linux, monitora i processi creati in tempo reale
watch -n 1 "ps aux | grep -v grep"
# Oppure con auditd
auditctl -a always,exit -F arch=b64 -S execve -k process_exec
ausearch -k process_exec | tail -50
File system:
# Monitora modifiche ai file in tempo reale (Linux)
inotifywait -m -r /tmp /var /home --format '%T %w%f %e' --timefmt '%H:%M:%S'
Rete:
# Cattura tutto il traffico durante l'esecuzione
tcpdump -i eth0 -w malware_traffic.pcap
Fase 3: Sandbox automatizzate
Se non hai ancora l’esperienza o il tempo per fare analisi manuale, le sandbox online sono il tuo migliore amico:
| Sandbox | URL | Note |
|---|---|---|
| Any.run | any.run | Interattiva, gratuita con limiti |
| Joe Sandbox | joesandbox.com | Report dettagliati |
| Triage | tria.ge | Veloce, buon supporto Linux |
| Cuckoo | Self-hosted | Open source, il più flessibile |
Attenzione: non caricare mai su sandbox pubbliche file che contengono dati sensibili o credenziali. Il sample viene reso disponibile a tutti.
Indicatori da cercare
Durante l’analisi, documentate tutto ciò che trovate. Questi diventano i vostri IoC (Indicators of Compromise):
# Esempio di report IoC in formato YAML
sample:
sha256: "a1b2c3d4e5f6..."
nome: "update_installer.exe"
tipo: "PE32 executable"
network:
ip_contattati:
- "185.220.101.47"
domini:
- "cdn-update.evil-domain.com"
protocolli: ["HTTP", "DNS"]
filesystem:
file_creati:
- "C:\\Users\\Public\\svchost32.exe"
- "C:\\Windows\\Temp\\data.bin"
chiavi_registro:
- "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\Updater"
comportamento:
- "Injetta codice in explorer.exe"
- "Modifica il file hosts"
- "Disabilita Windows Defender tramite chiave registro"
Un caso reale semplificato
Qualche tempo fa mi è capitato di analizzare un file chiamato fattura_marzo.pdf.exe (sì, doppia estensione — classico). L’analisi statica ha rivelato:
- Importava
URLDownloadToFile→ scaricava qualcosa da internet - Una stringa in chiaro:
http://185.x.x.x/stage2.bin - Entropia della sezione
.textaltissima → packed
Nell’analisi dinamica: si è connesso all’IP, ha scaricato un secondo file, lo ha iniettato in notepad.exe tramite process hollowing, poi ha iniziato a contattare un C2.
Tutto questo senza mai aprire il file su un sistema reale.
Conclusione
L’analisi malware è una disciplina che si impara sul campo. Ogni sample è diverso, ogni attaccante ha il suo stile. Ma il metodo è sempre lo stesso: statica prima, dinamica dopo, documenta tutto.
Non devi diventare un reverse engineer da zero — anche solo le fasi base che ti ho mostrato ti permettono di capire con buona approssimazione cosa hai davanti, e di produrre IoC utili per il resto del team.
Nel prossimo articolo cambieremo prospettiva e parleremo di phishing: come riconoscerlo e come risponderci — perché la maggior parte del malware che analizzerai è arrivato proprio via mail. 📧