Обзор и происхождение
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 часто используется на этапе пост-эксплуатации после первичной компрометации через известные уязвимости или фишинг.
Что делать при подозрении на заражение
- Изолируйте скомпрометированный хост от сети, но не выключайте — сохраните состояние памяти и телеметрию.
- Зафиксируйте дамп памяти подозрительных процессов и соберите логи EDR/Windows Event Log до каких-либо изменений.
- Определите, какая полезная нагрузка была доставлена через donut_injector: проверьте дочерние процессы, сетевые соединения, созданные задачи и службы.
- Проверьте закрепление (задачи планировщика, службы, ключи Run, WMI-подписки) — Donut сам по себе не закрепляется, но доставленная нагрузка может.
- Смените учётные данные пользователей, работавших на хосте, и отзовите активные сессии/токены, если есть признаки кражи.
- Расширьте поиск по инфраструктуре: те же IOC-адреса и техники могут встречаться на других узлах.
- Если целостность системы не может быть подтверждена, выполните переустановку ОС; удаление отдельных артефактов в данном случае не гарантирует очистки.
Ограничения текущего анализа
Доступные источники (ThreatFox, Malpedia) подтверждают существование семейства и наличие свежего IOC типа url, связанного с доставкой полезной нагрузки, но не содержат детального разбора конкретных образцов. Описанные выше модули и техники опираются на общедоступную документацию самого инструмента Donut и устоявшиеся практики его злоупотребления; поведение конкретных артефактов (выбор процессов-жертв, конфигурация шифрования, наличие URL-загрузки в конкретной кампании) требует статического и динамического анализа актуальных образцов. Атрибуция по использованию Donut не представляется возможной — инструмент широко доступен и применяется множеством группировок.
Источники
История обновлений статьи
- 07.10.2026 — Опубликована первая версия материала.
