
✉️ Generador y ofuscador de HTML Smuggling para tus operaciones de Red Team
HTMLSmuggler - Generador de payloads JS para evasión de IDS y entrega de payloads mediante contrabando HTML.
La explicación completa de qué es el contrabando HTML se puede encontrar aquí.
El objetivo principal del contrabando HTML es eludir los controles de seguridad de la red, como cortafuegos y sistemas de detección de intrusiones, disfrazando payloads maliciosos (por ejemplo, ejecutables/archivos/etc.) dentro de código HTML y JavaScript aparentemente inofensivo. Al explotar la naturaleza dinámica de las aplicaciones web, los atacantes pueden entregar contenido malicioso al navegador de un usuario sin desencadenar alertas de seguridad ni ser detectados por los mecanismos de seguridad tradicionales. Gracias a esta técnica, la descarga de un archivo malicioso no se muestra de ninguna manera en las soluciones IDS modernas.
El objetivo principal de la herramienta HTMLSmuggler es crear una biblioteca JavaScript independiente con un payload malicioso definido por el usuario incrustado. Esta biblioteca puede integrarse en sus sitios de phishing/archivos adjuntos de correo electrónico HTML/etc. para entregar el payload incrustado al sistema del usuario objetivo (evadiendo sistemas IDS e IPS). Un ejemplo de la biblioteca JavaScript creada se puede encontrar aquí.
Instale las dependencias:
yarn
Lea el mensaje de ayuda.
yarn build -h
Options:
-p, --payload <string> Ruta al archivo payload que desea contrabandear
-n, --name <string> Nombre del archivo que se descargará
-t, --type <string> Tipo de contenido del archivo descargado (por defecto: "application/octet-stream")
-f, --function <string> Nombre de la función exportada (por defecto: "download")
-c, --compress Habilita la compresión del payload (gzip)
-d, --delay <number> Retardo antes de la anti-detección de bots y descarga en ms (por defecto: 0)
-a, --antibot Habilita la detección de bots y bloquéalos (recomendado)
-h, --help Muestra la ayuda del comando
(Opcional) Modifique las opciones de javascript-obfuscator en obfuscator.js. Mi configuración predefinida es buena, pero muy lenta.
Compile su payload JavaScript:
⚠️ EVITE USAR PAYLOADS MAYORES DE 3 MiB (consulte FAQ)
yarn build -p /ruta/al/payload -n archivo.exe -t "application/octet-stream" -c -a -d 3000
Obtenga su payload de dist/payload.esm.js o dist/payload.umd.js. Luego, se puede insertar en su página y llamar con la función download() (o la personalizada especificada con la bandera -f).
payload.esm.jsse usa en importacionesimport { download } from 'payload.esm';(estándar ECMAScript).
payload.umd.jsse usa en la etiqueta script SRC de HTML y en importacionesrequire('payload.umd');(CommonJS, AMD y HTML puro).
Un ejemplo completo se puede encontrar aquí.
Realice los pasos de preparación.
Importe el script creado en el archivo HTML (o insértelo en línea):
<head>
<script src="payload.umd.js"></script>
</head>
Llame a la función download() desde el body:
<body>
<button onclick="download()">Botón de phishing</button>
</body>
¡Feliz phishing :)
Un ejemplo completo se puede encontrar aquí.
Realice los pasos de preparación.
Importe el script creado en el archivo Vue:
<script>
import { download } from './payload.esm';
</script>
Llame a la función download():
<template>
<button @click="download()">Botón de phishing</button>
</template>
¡Feliz phishing :)
P: Tengo el error RangeError: Maximum call stack size exceeded, ¿cómo resolverlo?
R: Este problema descrito aquí. Para solucionarlo, intente deshabilitar splitStrings en obfuscator.js o use un payload más pequeño (se recomienda usar payloads de hasta 2 MB debido a este problema).
P: ¿Por qué mi payload tarda tanto en compilarse?
R: Cuanto más grande sea el payload, más tiempo llevará crear el archivo JS. Para reducir el tiempo de compilación, intente deshabilitar splitStrings en obfuscator.js. A continuación se muestra una tabla con tiempos de compilación estimados usando el obfuscator.js predeterminado.
| Tamaño del payload | Tiempo de compilación |
|---|---|
| 525 KB | 53 s |
| 1.25 MB | 8 m |
| 3.59 MB | 25 m |