Contrabbando HTML: HTML Smuggling (T1027.006)

La tecnica T1027.006 — HTML Smuggling rappresenta una delle metodologie di evasione più eleganti e diffuse nel panorama offensivo contemporaneo. Classificata sotto la tattica TA0005 (Defense Evasion), sfrutta caratteristiche legittime delle specifiche HTML5 — in particolare i JavaScript Blob, le Data URL e l'attributo download — per trasportare payload attraverso proxy, gateway di posta e web content filter che ispezionano il traffico basandosi sui MIME type dichiarati.

Il meccanismo è concettualmente semplice ma micidiale: un file HTML apparentemente innocuo, con MIME text/html, contiene al suo interno una rappresentazione codificata (spesso base64 o array di byte) del payload reale. Quando il browser della vittima renderizza la pagina, il codice JavaScript ricostruisce localmente il file binario tramite l'API Blob, invoca URL.createObjectURL e forza il salvataggio su disco tramite msSaveOrOpenBlob o un tag anchor con attributo download. Il payload non transita mai come binario sulla rete: viene assemblato client-side, aggirando qualsiasi ispezione perimetrale.

L'impatto operativo è significativo. Gruppi come APT29 hanno adottato questa tecnica per veicolare ISO cifrati attraverso allegati HTML in campagne di spear phishing, mentre famiglie malware come QakBot e loader dedicati come EnvyScout ne fanno un pilastro della fase di Initial Access. La tecnica si colloca a cavallo tra Initial Access e Defense Evasion nella kill chain, precedendo di norma tecniche di User Execution e Deobfuscate/Decode Files.

Per simulare HTML Smuggling in un contesto red team autorizzato, la prima scelta ricade su SharpHound-independent PoC basati su codice JavaScript custom. Il framework di riferimento pubblico più utilizzato è HTML Smuggler di Outflank (open source, disponibile sul repository GitHub del team), che genera pagine HTML con payload embedded via base64 e ricostruzione Blob lato client.

Un payload minimale funzionante prevede la lettura del file target, la conversione in array di byte, l'incapsulamento in un oggetto Blob con MIME application/octet-stream e il trigger del download. In JavaScript la sequenza tipica è:

const blob = new Blob([byteArray], {type: 'application/octet-stream'});

const url = URL.createObjectURL(blob);

seguito dalla creazione dinamica di un elemento con attributo download impostato sul nome file desiderato e invocazione programmatica di click(). Su Internet Explorer legacy o browser Edge in modalità compatibilità si usa navigator.msSaveOrOpenBlob(blob, filename).

Per laboratorio, la catena d'attacco realistica prevede:

  • Generazione del payload finale (per esempio un loader in C# compilato con Nim o Go per ridurre le firme AV)
  • Compressione in archivio ZIP o incapsulamento in ISO/IMG per bypassare Mark-of-the-Web (tecnica MOTW bypass sfruttata da APT29)
  • Encoding base64 e integrazione nel template HTML
  • Consegna via allegato email o link a pagina hostata

Strumenti utili in fase di sviluppo:

  • HTML Smuggler di Outflank (open source) — generatore di template
  • Nimcrypt2 (open source) — packer per payload finale
  • CyberChef (open source, self-hostable) — per manipolazione base64 e verifica encoding
  • Burp Suite Community (freemium) — per validare il transito attraverso proxy di test

Durante l'esecuzione lab, verificare che il payload venga effettivamente scritto in %USERPROFILE%\Downloads con la corretta Zone.Identifier ADS. Un test rilevante è confrontare il comportamento con e senza Attack Surface Reduction rules attive (in particolare Block JavaScript or VBScript from launching downloaded executable content, regola GUID D3E037E1-3EB8-44C8-A917-57927947596D).

Per aumentare il realismo dell'esercizio, combinare la tecnica con T1204.002 (User Execution: Malicious File) obbligando l'utente ad aprire l'archivio contenitore, e con T1140 (Deobfuscate/Decode Files) per la fase di decoding client-side. Documentare sempre nel report la percentuale di detection ottenuta su gateway mail e EDR di riferimento del cliente.

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

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.