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

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

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

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

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

Категории

Все категории
Loading categories
donut — Генерирует позиционно-независимый шелл-код для x86, x64 или AMD64+x86, который загружает сборки .NET, PE-файлы и другие полезные нагрузки Windows из памяти и запускает их с параметрами. | Kitploit
Инструменты/GitHubGitHub/thewover/donut
Криминалистика памятиГенерация полезной нагрузкиЭксплуатацияОбход IDS/IPSШелл-кодПост-эксплуатацияТестирование на ПроникновениеRed TeamingГенерация ШеллкодаРазработка Полезной НагрузкиТоп в Обход IDS/IPS №7
4.7k753421 год назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Топ в Разработка Полезной Нагрузки №1
Топ в Генерация полезной нагрузки №2
Топ в Шелл-код №1
Топ в Генерация Шеллкода №2
GitHubthewover/donut

donut

Генерирует позиционно-независимый шелл-код для x86, x64 или AMD64+x86, который загружает сборки .NET, PE-файлы и другие полезные нагрузки Windows из памяти и запускает их с параметрами.

Репозиторий

Issues Contributors Stars Forks License Chat Github All Releases Twitter URL

Alt text

Текущая версия: v1.1

Содержание

  1. Введение
  2. Как это работает
  3. Сборка
  4. Использование
  5. Подпроекты
  6. Разработка с Donut
  7. Вопросы и обсуждения
  8. Отказ от ответственности

1. Введение

Donut — это позиционно-независимый код, который позволяет выполнять в памяти VBScript, JScript, EXE, DLL и сборки .NET. Модуль, созданный Donut, может быть как загружен с HTTP-сервера, так и встроен непосредственно в загрузчик. Модуль опционально шифруется с помощью блочного шифра Chaskey и 128-битного случайно сгенерированного ключа. После загрузки и выполнения файла в памяти исходная ссылка стирается для затруднения работы сканеров памяти. Генератор и загрузчик поддерживают следующие возможности:

  • Сжатие входных файлов с помощью aPLib, LZNT1, Xpress, Xpress Huffman через RtlCompressBuffer.
  • Использование энтропии для хешей API и генерации строк.
  • 128-битное симметричное шифрование файлов.
  • Перезапись заголовков нативных PE.
  • Хранение нативных PE в памяти MEM_IMAGE.
  • Патч Antimalware Scan Interface (AMSI) и Windows Lockdown Policy (WLDP).
  • Патч Event Tracing for Windows (ETW).
  • Патч командной строки для EXE-файлов.
  • Патч API, связанных с выходом, чтобы избежать завершения хост-процесса.
  • Несколько выходных форматов: C, Ruby, Python, PowerShell, Base64, C#, Hex-строка, строка UUID.

Существуют динамические и статические библиотеки как для Linux, так и для Windows, которые можно интегрировать в ваши собственные проекты. Также есть модуль Python, о котором можно узнать больше в документации по сборке и использованию расширения Python.

2. Как это работает

Donut содержит отдельные загрузчики для каждого поддерживаемого типа файлов. Для сборок .NET EXE/DLL Donut использует Unmanaged CLR Hosting API для загрузки Common Language Runtime. После загрузки CLR в хост-процесс создаётся новый домен приложения (AppDomain) для возможности запуска сборок в disposable AppDomain. Когда AppDomain готов, сборка .NET загружается через метод AppDomain.Load_3. Наконец, вызывается точка входа для EXE или публичный метод для DLL, указанный пользователем, с любыми дополнительными параметрами. Обратитесь к MSDN за документацией по Unmanaged CLR Hosting API. Пример отдельного CLR Host см. в коде здесь.

Файлы VBScript и JScript выполняются с помощью интерфейса IActiveScript. Также есть минимальная поддержка некоторых методов, предоставляемых Windows Script Host (wscript/cscript). Пример отдельного решения см. в коде здесь. Более подробное описание читайте в: In-Memory Execution of JavaScript, VBScript, JScript and XSL

Неуправляемые (нативные) EXE/DLL-файлы выполняются с помощью пользовательского загрузчика PE с поддержкой отложенных импортов, TLS и патча командной строки. Поддерживаются только файлы с информацией о перемещениях. Подробнее читайте в In-Memory Execution of DLL.

Загрузчик может отключать AMSI и WLDP, чтобы помочь обойти обнаружение вредоносных файлов, выполняемых в памяти. Подробнее читайте в How Red Teams Bypass AMSI and WLDP for .NET Dynamic Code. Также он поддерживает декомпрессию файлов в памяти с помощью aPLib или API RtlDecompressBuffer. Подробнее читайте в Data Compression.

Начиная с версии v1.0 также осуществляется обход ETW. Как и для AMSI/WLDP, это модульная система, позволяющая заменить стандартный обход на свой собственный. Стандартный обход основан на исследовании XPN. Подробнее читайте в Hiding your .NET - ETW.

По умолчанию загрузчик перезаписывает заголовки PE неуправляемых PE (от базового адреса до `IMAGE_OPTIONAL_HEADER.SizeOfHeaders`). Если модуль-приманка не используется (module overloading), заголовки PE обнуляются. Если используется модуль-приманка, заголовки PE модуля-приманки используются для перезаписи заголовков полезной нагрузки. Это делается для затруднения обнаружения путём сравнения заголовков PE модулей в памяти с файлами на диске. Пользователь может запросить сохранение всех заголовков PE в исходном состоянии. Это полезно в сценариях, когда модулю полезной нагрузки требуется доступ к своим заголовкам PE, например, для поиска встроенных PE-ресурсов.

Подробное руководство по использованию генератора и влиянию Donut на тактику см. в Donut - Injecting .NET Assemblies as Shellcode. Дополнительную информацию о загрузчике см. в Loading .NET Assemblies From Memory.

Те, кто хочет узнать больше о внутреннем устройстве, должны обратиться к Заметкам разработчика.

3. Сборка

Существует два типа сборки. Если вы хотите отлаживать Donut, обратитесь к документации здесь. Если нет, продолжайте чтение для релизной сборки.

Клонирование

Из командной строки Windows или терминала Linux клонируйте репозиторий.

 
  git clone http://github.com/thewover/donut.git
Скачать инструмент