Payload nel Browser: HTML Smuggling (T1027.006)

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:

  • Controlla il comportamento del browser con i Content Security Policy (CSP) header: aggiungi header restrittivi al server di test e verifica se bloccano la generazione del Blob
  • Testa con le Attack Surface Reduction (ASR) rules di Microsoft Defender abilitate, in particolare la regola che impedisce ai processi Office e browser di creare processi figli
  • Verifica se il file risultante mantiene il Mark-of-the-Web (MOTW) tramite l'Alternate Data Stream Zone.Identifier

Lato 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).


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.