Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Aprile! Scopri di più
L'HTML Smuggling è una tecnica di evasione difensiva — collocata nella tattica Defense Evasion (TA0005) — che consente a un avversario di recapitare payload malevoli direttamente sul disco della vittima senza che il file transiti in forma riconoscibile attraverso i controlli di rete. Il meccanismo sfrutta caratteristiche native di HTML5 e JavaScript: i dati del payload vengono codificati all'interno di un documento HTML apparentemente innocuo, sotto forma di JavaScript Blob (oggetti binari immutabili) o Data URL (media inline in base64). Quando la vittima apre il file — via browser o client di posta — il codice JavaScript ricostruisce il binario in memoria locale e lo scrive su disco, spesso invocando funzioni come msSaveBlob o generando un link con l'attributo HTML5 download.
Il risultato è che gateway e-mail, proxy web e sandbox di rete vedono transitare solo contenuto con MIME type benigno (text/plain, text/html), mentre il payload reale si materializza esclusivamente sull'endpoint. Questa asimmetria tra ciò che la rete osserva e ciò che il disco riceve rende la tecnica particolarmente insidiosa. Fra gli attori documentati figurano APT29, che ha incorporato file ISO in allegati HTML con trigger JavaScript, e malware come QakBot ed EnvyScout, che adottano HTML Smuggling come vettore di distribuzione primario.
La simulazione dell'HTML Smuggling in laboratorio è sorprendentemente accessibile: bastano un editor di testo, un browser moderno e qualche riga di JavaScript. L'obiettivo è dimostrare al blue team come un file HTML dall'aspetto inoffensivo possa generare un eseguibile su disco senza alcun download tradizionale.
Costruzione manuale del payload HTML. Il cuore della tecnica è un Blob JavaScript che contiene i byte del payload codificati in base64. In un file HTML crei un array di byte, lo avvolgi in un oggetto Blob, poi generi un URL temporaneo con URL.createObjectURL() e lo assegni a un elemento anchor con attributo download. Quando il browser renderizza la pagina, il file si scarica automaticamente. Per un lab sicuro, usa un payload inerte — ad esempio un file di testo rinominato con estensione .exe — così verifichi il flusso senza rischi.
Il tool Demiguise di NCC Group (open source) automatizza la generazione di file HTML contenenti payload smuggled con cifratura a chiave ambientale: il file si decodifica solo se aperto in un contesto specifico, rendendo l'analisi statica ancora più complessa. La sintassi base prevede di specificare il payload da incorporare, la chiave di cifratura e il file HTML di output.
Un'alternativa più recente è AutoSmuggle (open source), che wrappa automaticamente file come ISO, ZIP o IMG all'interno di HTML con Blob JavaScript. L'approccio è diretto: fornisci il file da incapsulare e ottieni un HTML pronto per il delivery.
Per emulare lo scenario APT29, prepara un file ISO contenente un LNK che punta a un eseguibile benigno, poi incorpora l'ISO in un HTML con tecnica Blob. Invia l'HTML come allegato e-mail tramite un server SMTP di lab. Sul lato difensivo, osserva se il gateway e-mail e l'EDR rilevano la catena.
Alcune verifiche complementari da eseguire nel test:
Zone.IdentifierLato Linux, puoi usare Python per generare un HTML equivalente senza dipendenze esterne: codifica il payload con il modulo base64, inseriscilo in un template HTML con JavaScript che invoca Blob() e URL.createObjectURL(), poi servi il file con un server HTTP locale (python3 -m http.server).
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo