Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Fritter — Генератор полиморфного shellcode для выполнения в памяти EXE, DLL, .NET, VBScript и JScript с рандомизацией для каждого вывода и каждой сборки для обхода обнаружения и устойчивости к сигнатурам. | Kitploit
Инструменты/GitHubGitHub/0xrootpls/fritter
Генерация полезной нагрузкиЭксплуатацияШелл-кодТестирование на ПроникновениеRed TeamingГенерация ШеллкодаРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHub0xrootpls/fritter

Fritter

Генератор полиморфного shellcode для выполнения в памяти EXE, DLL, .NET, VBScript и JScript с рандомизацией для каждого вывода и каждой сборки для обхода обнаружения и устойчивости к сигнатурам.

Репозиторий
2484017 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Fritter

Неуловимый кузен Donut.

Fritter — это сильно модифицированный форк генератора шеллкода Donut от TheWover и Odzhan. Он генерирует позиционно-независимый шеллкод для выполнения в памяти VBScript, JScript, EXE, DLL и .NET-сборок, с упором на обход средств защиты и устойчивость к сигнатурам. Кодовая база поддерживает только x64.

Что изменилось

Многое. Fritter удаляет функции, которые редко нужны, и заменяет внутренние компоненты, которые за годы обросли сигнатурами. Криптография, сжатие, хэширование и уровень разрешения API были переработаны наряду со многими другими областями.

Полиморфизм и обход средств защиты — главная цель дизайна. Каждый выходной файл уникален, и каждая сборка самого инструмента тоже уникальна. Есть два отдельных уровня:

Рандомизация на каждый выходной файл: применяется при каждом запуске fritter. Входной стаб, полиморфный декодер, ключи шифрования и многие структурные элементы внутри генерируемого шеллкода пересоздаются из новой энтропии при каждой сборке PIC.

Рандомизация на каждую сборку: применяется при каждой компиляции самого fritter. Константы ротации шифров и хэшей, структура таблицы разрешения API, запутывание строк на стороне шима, направления обхода PEB, паттерны затирания после выполнения и несколько структурных осей внутри лоадера и шима зашиваются на этапе компиляции.

В рантайме Fritter минимизирует исполняемый след лоадера. Лоадер разбит на отдельно шифруемые функции, каждая со своей PE-секцией, XOR-ключом и диспетчером. В любой момент времени только байты одной функции находятся в открытом виде. Прежняя модель VEH со скользящим окном заменена на эту модель диспетчеризации.

!! Настоятельно рекомендуется сборка из исходников !!

Это важно. Готовые бинарники, доступные для тестирования в releases, используют одни и те же пер-билд константы для всех пользователей этого бинарника.

Соберите свою копию. Пер-билд оси перерандомизируются при каждом вызове make:

root@kitploit:~
# Linux, static-musl ELF, no runtime libc dependency
# Requires: build-essential, mingw-w64, musl-tools
make -f Makefile.linux release

# Windows (MSVC), recommended on Windows
nmake -f Makefile.msvc

В Windows рекомендуется использовать цепочку инструментов MSVC. Она размещает каждую функцию лоадера в собственной PE-секции с выравниванием по страницам — именно это требуется модели диспетчеризации N>1 для каждой функции. mingw в настоящее время помещает всё в одну секцию .text и поэтому запускает одну точку входа, покрывающую весь лоадер с одним XOR-ключом (функционально идентично результату MSVC, но только с одним диспетчером полиморфизма вместо многих). Если у вас нет Visual Studio, собирайте в WSL с помощью Makefile.linux; он кросс-компилирует Windows-лоадер через mingw-w64.

Каждый запуск make выполняет tools/gen_poly для генерации свежих пер-билд констант и tools/gen_api_shuffle для перестановки таблицы разрешения API. Получившийся бинарник fritter сам по себе уникален: другие константы шифров, другие хэш-константы, другая структура таблицы API, другое запутывание строк на стороне шима и так далее. Каждый шеллкод, сгенерированный этим бинарником, будет использовать эти пер-билд константы, но различаться по пер-аутпут осям.

Использование

В комплект входит папка /test с calc.exe и inject_local64.exe для тестирования Fritter. Чтобы пересобрать тестовые хосты самостоятельно: nmake -f Makefile.msvc harness или make -f Makefile.linux harness в WSL.

root@kitploit:~
fritter [options] -i <EXE/DLL/VBS/JS>

  INPUT
    -i, --input  <path>       Input file to execute in-memory
    -p, --args   <args>       Parameters / command line for target
    -c, --class  <name>       Class name (required for .NET DLL)
    -m, --method <name>       Method or function for DLL
    -r, --runtime <ver>       CLR runtime version
    -w, --unicode             Pass command line as UNICODE
    -t, --thread              Run unmanaged EXE entrypoint as thread

  OUTPUT
    -o, --output <path>       Output file (default: loader.bin)
    -f, --format <1-8>        1=Bin 2=B64 3=C 4=Ruby 5=Py 6=PS 7=C# 8=Hex
    -x, --exit   <1-3>        1=Thread (default) 2=Process 3=Block
    -y, --fork   <offset>     Fork thread, continue at RVA offset

  LOADER
    -e, --entropy <1-3>       1=None 2=Random names 3=Names+Crypto (default)
    -k, --headers <1-2>       1=Overwrite (default) 2=Keep all
    -g, --chunked <0-1>       (deprecated; dispatch shim is always used)
    -d, --domain  <name>      AppDomain name for .NET
    -j, --decoy   <path>      Decoy module for Module Overloading

  STAGING
    -n, --modname <name>      Module name for HTTP staging
    -s, --server  <url>       Server URL (supports basic auth)

Примеры

root@kitploit:~
fritter -i payload.exe
fritter -i implant.dll -m RunMain -p "arg1 arg2"
fritter -i payload.exe -g 0 -k 2 -o out.bin

Архитектура (многие реализации здесь не перечислены)

Шеллкод-пейлоад Fritter построен как вложенные слои, каждый из которых расшифровывает или подготавливает следующий:

  1. Входной стаб. Рандомизированный мусорный префикс переменной длины, процедура выравнивания RSP, генерируемая для каждого выходного файла, и генеративный трамплин. Основано на дисциплине Shikata Ga Nai.

  2. Полиморфный XOR-декодер. Собирается в два прохода. Регистры выделяются из пула перемешиванием Фишера — Йетса. Длина ключа выбирается для каждого выходного файла. Между каждыми реальными инструкциями вставляется мусор. Подвижные группы инструкций в горячем цикле переупорядочиваются с соблюдением ограничений корректности.

  3. Диспетчерский шим. Заменяет прежний VEH-шим со скользящим окном. Переключает область лоадера из RW в RWX, затем передаёт управление точке входа лоадера. При диспетчеризации N>1 каждый вызов направляется через пер-функциональный thunk в диспетчер функции, который расшифровывает, выполняет и затирает при возврате. Структура опкодов каждого диспетчера меняется от сборки к сборке (см. CHANGELOG v1.3).

  4. Лоадер. In-memory маппер PE. Разрешает API по хэшу, отображает встроенный PE через API секций, применяет импорты / релокации / TLS-колбэки, вызывает точку входа и затем затирает. Направление обхода PEB, байт затирания после выполнения, места структурной соли в MainProc — всё рандомизируется для каждой сборки.

  5. Очистка. Затирает страницы лоадера байтовым паттерном, специфичным для сборки, стирает экземпляр и завершает работу через завершение потока или процесса в зависимости от -x. Никаких VEH-обработчиков или контекстных структур, которые нужно вычищать.

Остаточный след после выполнения — одна небольшая RWX-страница, где работал диспетчерский шим. В потоковом режиме отображённая PE-секция намеренно оставляется нетронутой, чтобы CRT-колбэки имели продолжения.

Благодарности

Fritter построен на основе работ TheWover и Odzhan, чей оригинальный проект Donut сделал генерацию позиционно-независимого шеллкода доступной и практичной. Их архитектура, дизайн лоадера и PIC-фреймворк — фундамент, на котором всё здесь построено. Пути маппинга PE, хостинга .NET и выполнения скриптов — по большей части их работа, сохранённая и уважаемая.

Лицензия

BSD 3-Clause. См. LICENSE.

Скачать инструмент