Esecuzione XSL Malevola: XSL Script Processing (T1220)
La tecnica T1220 - XSL Script Processing appartiene alla tattica TA0005 (Defense Evasion) e sfrutta la capacità dei file Extensible Stylesheet Language di ospitare codice eseguibile in JScript o VBScript. Nata come funzionalità legittima per trasformare documenti XML complessi, questa caratteristica diventa un vettore ideale per aggirare i controlli applicativi.
Lo schema di abuso ruota attorno a due binari firmati Microsoft: msxsl.exe, utility a riga di comando non installata di default che l'attaccante spesso porta con sé, e wmic.exe, presente su ogni sistema Windows. Entrambi sono considerati Living-off-the-Land Binaries e godono di reputazione elevata presso soluzioni AppLocker, WDAC e antivirus tradizionali.
La variante nota come Squiblytwo sfrutta lo switch /FORMAT di WMIC per invocare fogli di stile XSL locali o remoti, ottenendo esecuzione arbitraria senza dropping di eseguibili sospetti. La flessibilità della sintassi permette di rinominare i file con estensioni innocue (.jpeg, .png) e di riferire risorse HTTP esterne, rendendo la tecnica utile sia in fasi iniziali di Initial Access sia in scenari di Execution persistente.
L'impatto è significativo: 2 gruppi APT documentati (Cobalt Group e Higaisa), il malware bancario brasiliano Astaroth e la campagna di cyber espionage Operation Dream Job attribuita a Lazarus Group testimoniano quanto la tecnica sia efficace nel bypassare difese enterprise mature.
Per riprodurre T1220 in un ambiente di laboratorio serve un host Windows 10/11 con msxsl.exe scaricato dal Microsoft Download Center (gratuito) e, opzionalmente, un web server locale come Python http.server (open source) per servire lo stylesheet remoto.
La costruzione minima prevede un file XSL contenente un blocco msxsl:script che dichiara linguaggio JScript o VBScript. All'interno del blocco si istanzia WScript.Shell tramite new ActiveXObject e si invoca il metodo Run con il comando desiderato. Il payload viene poi eseguito così:
msxsl.exe payload.xsl payload.xsl
La duplicazione dell'argomento sfrutta il fatto che un file XSL è XML valido, evitando di dover generare due file distinti. Per test di evasione delle policy basate su estensione, rinominare in image.jpeg funziona altrettanto bene poiché msxsl.exe non valida l'estensione.
La variante Squiblytwo non richiede binari aggiuntivi. Da un prompt utente standard:
wmic process list /FORMAT:evil.xsl
carica ed esegue lo stylesheet locale, mentre la sintassi con URL fra virgolette scarica ed esegue il codice remoto tramite BITS o WinHTTP a seconda della versione. Attenzione: da Windows 10 21H1 Microsoft ha deprecato wmic.exe e in build recenti potrebbe non essere presente di default; verificare prima dell'esercizio.
Per costruire payload strutturati, Nishang (open source) include moduli che generano stylesheet weaponizzati, mentre Koadic (open source) ha uno stager basato proprio su MSXSL. Per il tracciamento delle chiamate durante lo sviluppo del payload, Process Monitor (gratuito) e API Monitor (gratuito) permettono di verificare quali DLL vengono caricate (tipicamente jscript.dll o vbscript.dll) e quali chiamate di rete vengono emesse.
In un engagement red team, la tecnica funziona bene come secondo stadio dopo un dropper iniziale che deposita msxsl.exe e lo stylesheet in %APPDATA%. Combinandola con AMSI bypass noti (ad esempio patching di AmsiScanBuffer prima di invocare lo script) si riduce la superficie di detection per soluzioni EDR che ispezionano il contenuto script tramite Antimalware Scan Interface. Per lab-safety, isolare la VM da produzione e disabilitare uscita internet non necessaria.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo