Рынок инструментов для кражи данных переживает качественный сдвиг. Исследователи из группы Howler Cell обнаружили и задокументировали активную кампанию по распространению загрузчика OnionDrop - многоступенчатого дроппера, который с конца февраля по конец мая 2026 года распространял сотни вариантов вредоносных DLL. Речь идёт не об очередном примитивном стилере, а о профессионально сконструированном фреймворке для доставки программ-похитителей, чья глубина технической защиты сопоставима с инструментарием, применяемым в целевых атаках государственного уровня. При этом загрузчик не привязан к конкретной жертве: он может быть направлен против любого пользователя или организации.
Описание
Общая картина атаки начинается с ZIP-архива, внутри которого находится легитимный исполняемый файл, подписанный сертификатом Adobe, и вредоносная библиотека sqlite.dll. Именно этот подписанный установщик запускает процесс через DLL-подгрузку: он загружает подставную sqlite.dll, которая, в свою очередь, динамически подключает основную вредоносную библиотеку codecstore384d.dll. Файл data.bin размером около 100 мегабайт, заполненный случайными байтами, служит приманкой для увеличения размера архива и затруднения его анализа.
Первый этап развёртывания включает обход статического анализа. Программа конструирует строки не в виде готовых констант, а посимвольно - прямо на стеке. Это так называемая техника stack-string: каждый символ записывается отдельно, что не позволяет антивирусным движкам обнаружить подозрительные строки простым поиском. Все вызовы критических API выполняются не через традиционные функции, а через динамическое разрешение с помощью LdrGetProcedureAddress, что обходит хуки, установленные на более популярные LoadLibrary и GetProcAddress.
Особого внимания заслуживает механизм создания потоков. Вместо того чтобы выполнять длительные операции непосредственно внутри DllMain, что привело бы к взаимоблокировке из-за блокировки загрузчика (Loader Lock), злоумышленники создают отдельный поток через NtCreateThreadEx. Это позволяет библиотеке успешно загрузиться и немедленно вернуть управление системе, в то время как основной вредоносный код уже запущен в фоновом потоке.
Перед тем как перейти к расшифровке полезной нагрузки, загрузчик проводит антианалитическую проверку. Он опрашивает имя подключённого дисплея через EnumDisplayDevicesA и сравнивает его со списком реальных названий графических процессоров - Intel, AMD, Radeon, GeForce и других. Если система использует эмулированный видеоадаптер, характерный для песочниц и виртуальных машин, выполнение останавливается. Таким образом OnionDrop отсеивает исследовательские среды.
Сам процесс распаковки состоит из четырёх чётко разделённых этапов. На первом этапе применяется пользовательское декодирование пар байтов: специальная таблица подстановки преобразует два входных байта в один выходной, восстанавливая исходные данные. На втором этапе используется стандартный алгоритм сжатия Xpress Huffman, вызываемый через RtlDecompressBufferEx. После этого декодированные данные снова проходят через ту же таблицу подстановки, но уже с шагом в три байта. Третий этап - дешифрование алгоритмом AES-256-CBC, причём ключ длиной 32 байта собирается не в одном месте бинарного файла, а фрагментарно, с помощью побитовых операций в рантайме. Это делает статический поиск ключа практически бесполезным.
Финальный, четвёртый этап - загрузка шелл-кода, который оказывается сгенерированным с помощью фреймворка Donut. Интересна техника его выполнения: вредоносный код не создаёт новый поток традиционным способом. Вместо этого он использует механизм пула потоков Windows. Вызов TpAllocWork регистрирует шелл-код как рабочий элемент, TpPostWork ставит его в очередь, а TpReleaseWork освобождает объект. Таким образом, исполнение происходит в контексте системного потока из пула, что обходит стандартные средства мониторинга создания потоков.
После того как шелл-код запущен, он динамически разрешает все необходимые функции через хэши CRC32, затем разжимает в памяти полезную нагрузку с помощью LZNT1 и подготавливает её к работе. Финальная стадия - связь с командным сервером через WinHTTP. Исследователи [зафиксировали] использование адреса gainmsg[.]com в качестве C2 (центр управления и контроля). ЛегионЛоадер, также известный как CurlyGate, отправляет на этот сервер зашифрованные RC4 запросы с использованием пользовательского агента, маскирующегося под браузер Vivaldi.
Кампания оказалась не единичным эпизодом. За 80 дней YARA-правило, разработанное командой Howler Cell, выявило более 645 уникальных DLL-образцов OnionDrop. Самая ранняя версия датируется 28 февраля, самая поздняя - 20 мая 2026 года, причём рассылка продолжалась на момент публикации отчёта. Загрузчик не привязан к одному типу похитителя: в разных волнах он доставлял CGrabber Infostealer, LegionLoader и Vidar Stealer. Более того, в случае с Vidar цепочка включала ещё один промежуточный загрузчик Direct-sys Loader, который использует технику внедрения APC (асинхронные процедуры). Таким образом, от начала атаки до работы стилера может проходить до пяти отдельных этапов распаковки и загрузки.
Такая архитектура делает OnionDrop идеальным инструментом для "загрузчика как услуги": злоумышленники могут использовать один и тот же дроппер для доставки разных вредоносных программ, не внося изменений в его основной код. Команда Howler Cell проследила эволюцию этого оператора, начиная с кампании CGrabber, затем через Direct-sys Loader и до OnionDrop. Семейство продолжает развиваться, и интенсивность атак не снижается.
Для обычных пользователей и бизнеса главная угроза заключается в том, что OnionDrop способен незаметно доставить стилер, который украдёт пароли, банковские данные, сессионные куки и другую конфиденциальную информацию. Методы обхода песочниц и статического анализа делают его обнаружение сложным даже для современных антивирусных продуктов, если те не используют поведенческий анализ на уровне ядра. И главное - такой загрузчик не требует специальной подготовки жертвы: он атакует всех подряд в рамках массовых рассылок фишинговых писем с ZIP-архивами.
Индикаторы компрометации
URLs
- https://gainmsg.com/nfront.php
SHA256
- 070a97bf5bcba13c41266a79357e2a5b8d6f4e353db7427bd8ccabceee5c96e3
- 0a8914b4f794ebc8ea1ce08dd4b5da918cd9697443007622100b0ba0731d428c
- 18bb95789e8727be0d98d9a5fce027f0f514e74192c7736b3afa297d2ee4a8fb
- 8559e535128805f1e31fa7a15b33d25ae498915c7b88ea5142cf38858d551a53
- 892f1bd9663c7e14855a0238e0fbb5b2396000b3396ceda79947374a3da78912
- c9b96846c9a49ddbed9e143b098972e1d7880654f763bb504d2f7b5d2ab1dafb
- f09be48aab38dc85b7ad46efb98897617af66014ded44a7cf1bddaab59d9dad2
- f6e5f7445b9ea717513a04d04acfa343025ca35302d025de33935e176a83f6ae
- fb31df58549031f0ea24b250b214cbab9eafa39adaa715c675f328f7370904c7