HTML Smuggling: Contrabbando di Malware nelle Pagine Web (T1027.006)
L'HTML Smuggling rappresenta una tecnica sofisticata per aggirare i controlli di sicurezza nascondendo payload maligni all'interno di file HTML apparentemente innocui. Questa metodologia sfrutta le funzionalità native di JavaScript e HTML5 per ricostruire dinamicamente file eseguibili direttamente sul sistema della vittima.
La tecnica si posiziona nella tattica TA0005 (Defense Evasion) della kill chain, permettendo agli attaccanti di bypassare filtri web e sistemi di content inspection. I payload vengono codificati come JavaScript Blobs o Data URL all'interno dell'HTML, per poi essere decodificati e salvati su disco quando raggiungono il target.
L'efficacia di questa tecnica risiede nel fatto che i controlli di sicurezza analizzano file con MIME type benigni come text/plain o text/html, senza rilevare il contenuto maligno nascosto. 1 gruppo APT documentato ha utilizzato questa tecnica, insieme a 2 famiglie di malware note per sfruttarla attivamente.
Per comprendere questa tecnica, iniziamo creando un semplice HTML smuggler che nasconde un eseguibile. Il JavaScript utilizza la funzione Blob per ricostruire il file dal payload base64 codificato:
<html>
<body>
<script>
var data = "TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQA..."; // Base64 del payload
var bytes = atob(data);
var ab = new ArrayBuffer(bytes.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < bytes.length; i++) {
ia[i] = bytes.charCodeAt(i);
}
var blob = new Blob([ab], {type: 'application/octet-stream'});
var fileName = 'payload.exe';
Il meccanismo di download può essere attivato attraverso l'attributo HTML5 download o la funzione msSaveBlob per Internet Explorer. Quest'ultima è particolarmente interessante perché bypassava molti controlli legacy.
Per testare la tecnica con EnvyScout, il malware documentato che utilizza questa metodologia, si può analizzare come estrae il blob codificato dal body HTML e lo scrive su disco. La catena d'attacco tipica prevede l'invio di un'email con allegato HTML che, una volta aperto, rilascia silenziosamente il payload.
QakBot invece viene distribuito in archivi ZIP generati dinamicamente attraverso HTML smuggling. Il JavaScript crea l'archivio in memoria e lo presenta all'utente come download legittimo dal browser.
Un esempio avanzato utilizzato da APT29 prevede l'embedding di un file ISO all'interno dell'attachment HTML. Il JavaScript non solo estrae l'ISO ma può anche montarlo automaticamente su sistemi Windows moderni, creando una catena d'infezione particolarmente subdola.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo