Fondamenti di Test di Sicurezza Etico con Python: Una Guida Pratica per Principianti
Capitolo 9 di 11 · aggiornato 08 lug 2026
Meccanismi dei Malware: Comprendere Senza Eseguire Codice Pericoloso
Meccanismi del Malware: Capire Senza Eseguire Codice Pericoloso
In Lab Wintermute, abbiamo dedicato il nostro tempo a mappare la rete tra Kali (192.0.2.10), Metasploitable2 (192.0.2.20) e DVWA (192.0.2.30), sondando le debolezze che siamo autorizzati a trovare. Ma cosa succede quando la minaccia non è un servizio in ascolto su una porta, ma un file che arriva mascherato da qualcosa di innocuo? Il malware è il payload che spesso segue l'accesso iniziale che abbiamo mappato nelle ricognizioni precedenti. Questa pagina ti insegna a dissezionare quel payload senza mai lasciarlo eseguire.
Cosa Significa Effettivamente "Malware": Una Tassonomia Strutturale
Gli studenti spesso usano "virus" come termine generico. Non lo è. Ogni categoria differisce per come si muove, cosa fa e come lo rilevi.
| Tipo | Propagazione | Meccanismo | Focus Difensivo |
|---|---|---|---|
| Virus | Richiede file host o settore di boot | Inserisce codice malevolo in programmi legittimi; si diffonde quando il file infetto viene eseguito | Controllo integrità, controllo applicazioni |
| Worm | Autoreplicazione attraverso la rete | Sfrutta vulnerabilità o credenziali deboli per copiarsi su nuovi host | Patching, segmentazione di rete |
| Trojan | Ingegneria sociale, software in bundle | Si maschera da legittimo; non si autoreplica | Formazione utenti, policy di esecuzione |
| Ransomware | Spesso con consegna worm-like o trojan | Cifra file, richiede pagamento; può esfiltrare prima | Backup, blocco comportamentale |
| Spyware | In bundle, download drive-by | Raccoglie keystroke, schermate, credenziali senza danno evidente | EDR (Endpoint Detection and Response, software che monitora il comportamento degli endpoint per minacce), privilegio minimo |
| Rootkit | Spesso installato dopo compromissione | Modifica kernel OS o processo di boot per nascondere la presenza | Secure boot, monitoraggio integrità |
Un virus ha bisogno che tu esegua un programma infetto. Un worm ha bisogno di un percorso di rete. Un trojan ha bisogno della tua fiducia. Il ransomware ha bisogno dei tuoi dati. Lo spyware ha bisogno dei tuoi segreti. Un rootkit ha bisogno della tua cecità.
In termini semplici: Pensa a un virus come un parassita che ha bisogno di un host, a un worm come qualcosa che si scava attraverso i muri da solo, a un trojan come un regalo con una bomba dentro, e a un rootkit come qualcuno che si introduce in casa tua e poi cambia tutte le serrature così non puoi vedere che ci sono.
Perché l'Analisi Statica Viene Prima
Prima che qualsiasi malware venga eseguito in una sandbox, lo esamini a freddo. L'analisi statica (ispezione di un file senza eseguirlo) è la tua prima linea di difesa e il tuo primo strumento didattico. In Lab Wintermute, non faremo mai detonare malware live. Invece, usiamo Python per leggere la struttura.
La libreria pefile analizza i file Portable Executable — il formato standard per eseguibili Windows, DLL e driver. È autonoma, gira in Python 3, e processa centinaia di migliaia di file quotidianamente in pipeline di produzione.
# Installa pefile nel tuo ambiente Kali
pip install pefile
Perché questo è importante:
pefilelegge intestazioni, sezioni, importazioni e entropia senza eseguire una singola istruzione. Vedi ciò che il file dichiara di essere e ciò che dichiara di avere bisogno, il che spesso contraddice.
Ecco come inizi a ispezionare un campione sospetto consegnato alla tua stazione di analisi Lab Wintermute. Il file suspicious_sample.exe è un artefatto di training deliberatamente benigno — imita i pattern strutturali del malware packed senza contenere codice effettivamente malevolo.
#!/usr/bin/env python3
# malware_structural_inspector.py
# Lab Wintermute — script di training per analisi statica
# NON eseguire mai eseguibili sconosciuti; questo script legge solo metadati import pefile
import sys def inspect_pe(filepath): try: pe = pefile.PE(filepath) print(f"{'='*50}") print(f"FILE: {filepath}") print(f"{'='*50}") # Informazioni base dell'intestazione print(f"\n[+] Machine type: {hex(pe.FILE_HEADER.Machine)}") print(f"[+] Number of sections: {pe.FILE_HEADER.NumberOfSections}") print(f"[+] Timestamp: {pe.FILE_HEADER.TimeDateStamp}") # output illustrativo — verifica sul tuo target # L'interpretazione del timestamp varia; controlla rispetto alle date di build legittime # Analisi sezioni — nomi, dimensioni, indicatori di entropia print(f"\n[+] Sections:") for section in pe.sections: name = section.Name.decode('utf-8', errors='replace').strip('\x00') print(f" {name}: {section.Misc_VirtualSize} bytes virtual, " f"{section.SizeOfRawData} bytes raw") # DLL e funzioni importate — cosa dichiara di avere bisogno questo file? print(f"\n[+] Imports (cosa il file chiede all'OS):") if hasattr(pe, 'DIRECTORY_ENTRY_IMPORT'): for entry in pe.DIRECTORY_ENTRY_IMPORT: dll = entry.dll.decode('utf-8', errors='replace') functions = [imp.name.decode('utf-8', errors='replace') if imp.name else f"ordinal_{imp.ordinal}" for imp in entry.imports] print(f" {dll}: {functions[:3]}{'...' if len(functions)>3 else ''}") else: print(" No imports visible — possible packed/encrypted code") pe.close() except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": if len(sys.argv) != 2: print("Usage: python3 malware_structural_inspector.py <file>") sys.exit(1) inspect_pe(sys.argv[1])
⚠️ Solo uso autorizzato e difensivo. Questo script è solo per artefatti di training in Lab Wintermute. Non scaricare mai malware live su sistemi personali.
Eseguilo contro il tuo campione di training:
python3 malware_structural_inspector.py /lab/samples/suspicious_sample.exe
Cosa stai cercando: importazioni di CreateRemoteThread, VirtualAllocEx o WriteProcessMemory suggeriscono capacità di process injection. Importazioni di WinExec o ShellExecuteA suggeriscono esecuzione arbitraria di comandi. Nessuna importazione, o solo LoadLibrary e GetProcAddress, suggeriscono packing — il codice è compresso o cifrato, rivelandosi solo al runtime. I packer non sono intrinsecamente malevoli (software legittimo li usa per ridurre le dimensioni), ma sono sproporzionatamente comuni nel malware perché frustrano l'analisi statica.
Intuizione acquisita: In produzione, ho visto file con entropia superiore a 7.5 attraverso la sezione
.textche si sono rivelati installer di giochi packed, e file con entropia completamente normale che una volta unpackati rivelavano Cobalt Strike. L'entropia è un segnale, non un verdetto. La tabella delle importazioni — o la sua assenza deliberata — ti dice più sull'intento che la casualità non farà mai.
Indicatori Comportamentali: Cosa Fa il Malware Quando Viene Eseguito
L'analisi statica ti dice cosa un file trasporta. Gli indicatori comportamentali ti dicono cosa fa. In Lab Wintermute, studiamo questi concettualmente, mappandoli al framework MITRE ATT&CK — la knowledge base globalmente accessibile di tattiche e tecniche avversarie basata su osservazioni del mondo reale.
| Tattica ATT&CK | Comportamento Comune del Malware | Opportunità di Rilevamento |
|---|---|---|
| Initial Access | Allegato phishing, vulnerabilità sfruttata | Filtraggio email, sandboxing allegati |
| Execution | Deposita ed esegue file secondario | Monitoraggio creazione processi |
| Persistence | Chiavi di esecuzione del registro, task schedulati, servizi | Monitoraggio registro, ispezione autoruns |
| Privilege Escalation | Sfruttamento di permessi deboli, furto di token | Alert UAC, operazioni anomale su token |
| Defense Evasion | Process injection, timestomping, nascondimento rootkit | Regole comportamentali EDR, controlli integrità |
| Credential Access | Keylogging, lettura memoria LSASS | Protected Users, Credential Guard |
| Discovery | Enumerazione sistema/rete | Pattern anomali di query |
| Collection | Cattura schermo, compressione file | Trigger DLP (Data Loss Prevention) |
| Command and Control | Callback a server esterno | Monitoraggio rete, anomalie DNS |
| Exfiltration | Trasferimento dati a host esterno | Filtraggio in uscita, DLP |
In termini semplici: Il malware non si limita a "infettare." Atterra, esegue, resta nascosto, eleva il suo potere, ruba password, si guarda intorno, impacchetta ciò che trova, telefona a casa e spedisce dati fuori. Ogni passo è un'occasione per beccarlo.
Il process injection merita attenzione speciale perché è il modo in cui il malware si nasconde dentro processi legittimi. Concettualmente: invece di eseguirsi come proprio eseguibile sospetto, il malware alloca memoria dentro explorer.exe o svchost.exe, scrive il suo codice lì, e avvia un thread remoto. Per l'osservatore casuale, sta solo girando un processo Windows fidato. Gli strumenti EDR rilevano questo monitorando chiamate a VirtualAllocEx e WriteProcessMemory in processi che non hanno creato, o confrontando l'immagine su disco di un processo con il suo codice in memoria.
Osservazione Sicura: Detonazione in Sandbox
Quando l'analisi statica è esaurita e devi vedere il comportamento, usi un ambiente isolato e strumentato che registra tutto. Cuckoo Sandbox è software open source per questo scopo, documentato alla versione 2.0.7, installabile tramite:
pip install -U cuckoo
Attenzione: La versione di sviluppo non è raccomandata per uso in produzione. Secondo la documentazione attuale, una riscrittura completa è in corso e le issue aperte potrebbero non essere processate. Verifica la stabilità attuale prima del deploy.
Cuckoo esegue file sospetti in una macchina virtuale, registrando cambi al file system, modifiche al registro, traffico di rete e chiamate API. Produce un report dettagliato di ciò che il file ha fatto senza rischiare la tua rete di produzione. In Lab Wintermute, faresti il deploy di Cuckoo su un host dedicato all'analisi senza rotta verso le tue VM operative.
Per studenti senza infrastruttura Cuckoo locale, le sandbox cloud forniscono osservazione equivalente. Documenta ciò che vedi: file creati, chiavi di registro modificate, query DNS, callback HTTP. Questi sono i tuoi Indicatori di Compromissione (IOC) — le briciole che ti permettono di cercare nel tuo ambiente reale minacce simili.
Lo Stack Difensivo: Stratificare le Protezioni
Nessun singolo controllo ferma il malware. L'architettura conta.
| Livello | Controllo | Fase di Malware Indirizzata |
|---|---|---|
| Perimetro | Filtraggio email, web proxy | Initial Access |
| Endpoint | Controllo applicazioni (whitelisting), EDR | Execution, Persistence, Defense Evasion |
| Identità | Privilegio minimo, Credential Guard | Privilege Escalation, Credential Access |
| Rete | Segmentazione, filtraggio in uscita | Discovery, Command and Control, Exfiltration |
| Recupero | Backup immutabili, piano di risposta agli incidenti | Impact (ransomware) |
Il controllo applicazioni è sottovalutato. Se un utente non può eseguire eseguibili arbitrari da %TEMP% o %APPDATA%, la maggior parte dei trojan e dei dropper fallisce immediatamente. L'EDR aggiunge osservazione comportamentale: anche le applicazioni permesse sono sorvegliate per pattern di injection, processi figli insoliti, o cifratura massiva di file.
La segmentazione di rete limita la propagazione dei worm. In Lab Wintermute, la nostra rete NAT è isolata per design. In produzione, VLAN e microsegmentazione assicurano che una workstation compromessa non possa raggiungere direttamente controller di dominio o server di backup.
Esercizio di Lab: Documentazione IOC da Struttura Sospetta Benigna
Il tuo compito in Lab Wintermute: ricevi l'artefatto di training suspicious_sample.exe, esegui l'inspector pefile sopra, e documenta gli IOC senza esecuzione.
Checklist per il tuo report:
- [ ] Hash del file (SHA-256) per identificazione
- [ ] Timestamp PE e nomi sezioni (confronta contro software legittimo noto)
- [ ] Analisi tabella importazioni: quali capacità dichiara il file?
- [ ] Indicatori di packing: entropia alta, importazioni scarse, nomi sezioni insoliti (
.vmp0,.upx) - [ ] Tattiche ATT&CK ipotizzate basate su evidenza strutturale
- [ ] Controlli difensivi che rileverebbero o preverrebbero ciascun comportamento ipotizzato
- [ ] Piano di deploy Cuckoo o sandbox equivalente per conferma dinamica sicura
Intuizione acquisita: Ho visto analisti junior ossessionarsi nel trovare "la" firma che identifica il male. L'approccio migliore: documenta cosa fa diversamente questo file rispetto alla tua baseline. Un
.exesenza nome aziendale, senza info versione, compilato ieri, che importa sia API crittografiche che funzioni socket, non è automaticamente malware — ma è automaticamente interessante. Il tuo lavoro è spiegare perché, con evidenza, e lasciare che il difensore decida.
Dalla Struttura alla Difesa
L'analisi del malware non è rimanere impressionati dalla scaltrezza dell'attaccante. È restringere le opzioni dell'attaccante finché il suo codice, per quanto sofisticato, non trova presa. L'analisi statica con pefile ti dà il vocabolario per descrivere ciò che affronti. MITRE ATT&CK ti dà la grammatica per collocarlo in contesto. Le sandbox ti danno osservazione sicura. Le difese stratificate ti danno resilienza.
In Lab Wintermute, pratichiamo tutto questo contro artefatti che insegnano senza mettere in pericolo. Le competenze si trasferiscono direttamente: lo stesso script pefile che legge un campione di training legge un alert di produzione. La stessa checklist IOC che documenta una struttura sospetta benigna documenta un incidente reale. La differenza è l'autorizzazione, l'isolamento, e lo scope scritto che rende il nostro lavoro legale e finalizzato.
Prossimamente, consolidiamo tutto — ricognizione, debolezze web, attacchi di rete, vettori wireless e social, e questo fondamento di malware — nella simulazione completa di assessment Wintermute.