donut_injector: технический профиль семейства

Обзор и происхождение​


Donut (в каталогах фигурирует как donut_injector) — это не классический бот или стилер, а инструмент преобразования полезной нагрузки в позиционно-независимый shellcode с последующей инъекцией в память процессов Windows. Первоначально проект был опубликован как open-source (автор — TheWover, совместно с ODCCicada), и с тех пор активно используется злоумышленниками как промежуточное звено доставки: он позволяет «спрятать» .NET-сборки, нативные PE-файлы или скрипты внутри зашифрованного шеллкода, минуя типичные сигнатурные проверки. Malpedia содержит страницу для данного семейства (win.donut_injector), а ThreatFox фиксирует свежие IOC-записи, связанные с доставкой полезной нагрузки, что говорит о продолжающейся, а не исторической активности.

Основная задача donut_injector в инфраструктуре атакующего — этап пост-эксплуатации: после первичной компрометации (фишинг, эксплойт, доступ через загрузчик) инструмент используется для запуска произвольного кода — от beacon'ов C2-фреймворков до кейлоггеров и стилеров — в контексте легитимного процесса. Целевая среда — рабочие станции и серверы Windows; наибольший ущерб наблюдается в корпоративном секторе, где инъекция в доверенный процесс позволяет обойти политики AppLocker/WDAC и затруднить работу EDR.

Важно различать: сам Donut — легально опубликованный инструмент с открытым кодом, а «семейство» в базах IOC объединяет вредоносные артефакты, созданные с его помощью. Это классический случай, когда один и тот же набор техник встречается у множества группировок, поэтому атрибуция по факту использования donut_injector практически невозможна.

Функциональные модули​


  • Генератор PIC-шеллкода. Преобразует управляемые (.NET) и нативные PE-файлы в позиционно-независимый код, пригодный для выполнения в произвольном процессе без загрузчика PE на диске.
  • Модуль шифрования и обфускации. Применяет симметричное шифрование (AES, RC4, XOR) и сжатие (например, LZMA/APLib) к полезной нагрузке; ключ и конфигурация могут дополнительно шифроваться, что затрудняет статический разбор.
  • Загрузчик/распаковщик в памяти. Расшифровывает payload во время выполнения, вручную резолвит импорты и передаёт управление — без создания подозрительных секций на диске.
  • Механизм обхода AMSI и ETW. В конфигурации Donut доступна патчинг-логика для отключения AMSI-интерцепции и ETW-телеметрии внутри хост-процесса, что снижает видимость для EDR.
  • Инъекция в удалённый процесс. Поддерживает выполнение как в текущем, так и в стороннем процессе (например, через создание удалённого потока или APC-очередь).
  • Модуль обратного вызова/URL-загрузки. В ряде конфигураций shellcode может дополнительно подтягивать полезную нагрузку по сети, что объясняет появление IOC типа url в базах индикаторов.

Техники и API​


С точки зрения защиты стоит отслеживать следующие техники, характерные для артефактов, созданных Donut:

  • Выделение памяти с правами RWX/RW→RX через VirtualAlloc/VirtualProtect, запись шеллкода и последующее исполнение (CreateThread, NtCreateThreadEx, QueueUserApc, RtlCreateUserThread).
  • Инъекция в легитимные процессы (svchost.exe, explorer.exe, RuntimeBroker.exe и др.) через OpenProcess + WriteProcessMemory.
  • Ручной разбор PEB для поиска загруженных библиотек (GetProcAddress/LoadLibrary через собственные реализации), что обходит стандартные хуки.
  • Патчинг AMSI (amsi!AmsiScanBuffer) и ETW (ntdll!EtwEventWrite) в памяти процесса.
  • Использование сжатия и шифрования полезной нагрузки, что приводит к высокой энтропии секций в дампах памяти.

Для SOC-аналитиков ключевой сигнал — не конкретный API, а последовательность: выделение памяти → запись → смена прав на исполнение → создание потока в чужом процессе.

IOC и индикаторы​


ThreatFox на момент подготовки профиля содержит 1 свежую IOC-запись типа url, категоризированную как payload_delivery — то есть индикатор указывает на сервер распространения полезной нагрузки. Конкретные значения (адреса, домены) в публичный текст не включаются; актуальные индикаторы доступны через MalwareBazaar и ThreatFox по тегу семейства. Сырые хеши и URL намеренно опущены — используйте официальные каналы abuse.ch для получения текущего списка. Карты образцов, если они привязаны к записи, рендерятся ниже в скрытом блоке форума.

Обнаружение​


  • Поведенческое (EDR): алерты на VirtualAlloc + WriteProcessMemory + CreateThread в чужом процессе; создание потоков в процессах с неподписанным кодом; патчинг AMSI/ETW.
  • Память: сканирование на высокую энтропию в частных выделениях памяти (MEM_PRIVATE) с исполняемыми правами; YARA-правила на сигнатуры Donut-загрузчика (характерные строки-маркеры, структура расшифровщика).
  • Сеть: мониторинг обращений к URL, помеченным в ThreatFox как payload_delivery; аномальные исходящие запросы от процессов, которые обычно не работают с сетью.
  • Файловая система: Donut-артефакты часто не оставляют файлов на диске — приоритет отдайте телеметрии процессов и памяти, а не файловым сигнатурам.

Защита и снижение риска​


  • Включите политику Block credential stealing / Attack Surface Reduction (ASR) правила в Microsoft Defender, в частности блокировку создания процессов из PSExec/WMI и инъекций в доверенные процессы.
  • Используйте AppLocker/WDAC для ограничения запуска неподписанного кода и скриптовых интерпретаторов.
  • Обеспечьте работу EDR в режиме блокировки, а не только аудита; убедитесь, что включена защита от подмены (tamper protection).
  • Ограничьте права пользователей: инъекция в чужой процесс требует соответствующих привилегий — минимизация прав снижает радиус поражения.
  • Настройте сегментацию сети и прокси-фильтрацию для блокировки доступа к известным payload_delivery-адресам из баз abuse.ch.
  • Регулярно обновляйте Windows и стороннее ПО: Donut часто используется на этапе пост-эксплуатации после первичной компрометации через известные уязвимости или фишинг.

Что делать при подозрении на заражение​


  1. Изолируйте скомпрометированный хост от сети, но не выключайте — сохраните состояние памяти и телеметрию.
  2. Зафиксируйте дамп памяти подозрительных процессов и соберите логи EDR/Windows Event Log до каких-либо изменений.
  3. Определите, какая полезная нагрузка была доставлена через donut_injector: проверьте дочерние процессы, сетевые соединения, созданные задачи и службы.
  4. Проверьте закрепление (задачи планировщика, службы, ключи Run, WMI-подписки) — Donut сам по себе не закрепляется, но доставленная нагрузка может.
  5. Смените учётные данные пользователей, работавших на хосте, и отзовите активные сессии/токены, если есть признаки кражи.
  6. Расширьте поиск по инфраструктуре: те же IOC-адреса и техники могут встречаться на других узлах.
  7. Если целостность системы не может быть подтверждена, выполните переустановку ОС; удаление отдельных артефактов в данном случае не гарантирует очистки.

Ограничения текущего анализа​


Доступные источники (ThreatFox, Malpedia) подтверждают существование семейства и наличие свежего IOC типа url, связанного с доставкой полезной нагрузки, но не содержат детального разбора конкретных образцов. Описанные выше модули и техники опираются на общедоступную документацию самого инструмента Donut и устоявшиеся практики его злоупотребления; поведение конкретных артефактов (выбор процессов-жертв, конфигурация шифрования, наличие URL-загрузки в конкретной кампании) требует статического и динамического анализа актуальных образцов. Атрибуция по использованию Donut не представляется возможной — инструмент широко доступен и применяется множеством группировок.

Источники​


  1. ThreatFox — IOC donut_injector
  2. Malpedia — donut_injector

История обновлений статьи​


  • 07.10.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ