Эксперты Trellix Advanced Research Center обнаружили высокотехнологичную кампанию Advanced Persistent Threat (APT), получившую название OneClik, которая целенаправленно атакует критическую инфраструктуру энергетической, нефтяной и газовой отраслей. Злоумышленники используют фишинговые рассылки и эксплуатируют уязвимости в технологии Microsoft ClickOnce для скрытного внедрения вредоносного ПО. Кампания демонстрирует тактики, характерные для китайских хакерских группировок, хотя окончательная атрибуция требует осторожности. Ключевая особенность OneClik - стратегия «living off the land», маскирующая зловредные операции под легитимные облачные и корпоративные инструменты, что сводит на нет эффективность традиционных систем защиты.
Описание
Атака разворачивается в трех вариантах (v1a, BPI-MDM и v1d), каждый из которых использует .NET-лоадер OneClikNet для развертывания изощренного бэкдора RunnerBeacon, написанного на языке Go. Последний устанавливает связь с инфраструктурой злоумышленников, замаскированной под сервисы AWS - CloudFront, API Gateway и Lambda. Это делает сетевое обнаружение практически невозможным без расшифровки трафика или глубокого поведенческого анализа. Эволюция кампании прослеживается в усложнении методов уклонения от детектирования: от злоупотребления ClickOnce для прокси-выполнения кода до раннего внедрения через подмену .NET AppDomainManager и внедрения антиотладочных механизмов.
Техника атаки: Как Работает OneClik
ClickOnce, технология развертывания приложений .NET, стала основным вектором атаки. Злоумышленники рассылают письма с ссылками на поддельные сайты «анализа оборудования», где жертве предлагается загрузить .application-файл (манифест ClickOnce), замаскированный под легитимный инструмент. После запуска файл инициирует цепочку заражения: легитимный процесс Deployment Service (dfsvc.exe) загружает вредоносный код через подмену конфигурации .NET. Техника AppDomainManager Hijacking (T1574.014) позволяет заставить .NET-приложение (например, ZSATray.exe) загружать удаленную вредоносную DLL вместо штатных зависимостей. Это обеспечивает выполнение кода в доверенном процессе, сливаясь с нормальной активностью ClickOnce.
Цепочка заражения включает несколько этапов. В варианте v1a фишинговый переход ведет к загрузке файла Hardware_Analysis_Tool.application, который запускает исполняемый файл под dfsvc.exe. Далее через подмену конфигурации загружается .NET DLL и зашифрованный шелл-код, который в памяти расшифровывается в бэкдор RunnerBeacon. Лоадер OneClikNet использует модульный подход: идентификатор жертвы генерируется через SHA-256-хэширование имени компьютера или загрузку с C2-сервера, а полезная нагрузка (шелл-код) извлекается из локальных файлов, C2 или встроенных ресурсов. Для усложнения анализа применяется предварительная обработка данных - замена символов в base64-строках и брутфорс-подбор AES-ключей.
Уклонение от Обнаружения: От ETW до Облака
OneClik внедряет многоуровневые антианалитические меры. В v1a лоадер перемещает в памяти системные библиотеки (ntdll.dll, kernel32.dll), патчит ETW (Event Tracing for Windows), подменяя функции EtwEventWrite на пустые операции (xor rax, rax; retn), и скрывает окна консоли. Вариант BPI-MDM добавляет постоянную проверку отладчиков: отдельный поток мониторит Debugger.IsAttached, CheckRemoteDebuggerPresent и NtQueryInformationProcess, завершая работу при обнаружении анализа. В v1d внедрена проверка окружения: вредоносный код определяет, присоединена ли машина к домену или Azure AD (через NetGetJoinInformation/NetGetAadJoinInformation), и проверяет объем оперативной памяти (менее 8 ГБ считается признаком песочницы). После загрузки конфигурационные файлы удаляются, что затрудняет цифровую криминалистику.
RunnerBeacon: Мощный Бэкдор на Golang
Основная нагрузка - бэкдор RunnerBeacon - реализован на Go и шифрует трафик RC4 с сериализацией данных через MessagePack. Каждое сообщение содержит заголовок (длина и тип) и зашифрованное тело. Бэкдор поддерживает модульную систему команд: от выполнения shell-инструкций (через CreateProcessW) до сканирования портов, операций с файлами и создания SOCKS5-туннелей. Расширенные функции включают инъекцию кода в удаленные процессы, манипуляции токенами и эскалацию привилегий. Протокол поддерживает 16 типов сообщений (0x0–0xF), включая сжатые данные и асинхронные прокси-запросы. Интересная деталь - наличие строки «runneradmin» в отладочных символах, что и дало имя бэкдору. Сходство с Cobalt Strike (Geacon) указывает на возможную модификацию известных инструментов.
Инфраструктура: Маскировка в AWS
C2-серверы OneClik используют AWS-сервисы для обфускации. В v1a трафик направлялся через CloudFront (dyydej4wei7fq.cloudfront[.]net) и API Gateway (b2zei88b61.execute-api.eu-west-2[.]amazonaws.com), имитируя легитимный облачный трафик. В v1d злоумышленники перешли на Lambda-функции (.lambda-url.us-east-1.on.aws), полностью скрываясь за доверенными AWS-доменами. Это позволяет обходить сигнатурные системы: блокировка потребует запрета целых облачных платформ или декодирования SSL, что не всегда реализуемо.
Эволюция Угрозы и Рекомендации
Сравнение вариантов показывает прогрессирующую сложность: от статических AES-ключей в v1a до многофакторных проверок окружения в v1d. Тренд ясен: минимизация следов, усиление обфускации и эксплуатация облачных сервисов. Для защиты Trellix рекомендует:
- Блокировать недоверенные ClickOnce-приложения через групповые политики.
- Внедрять поведенческий анализ для выявления аномалий в процессах .NET.
- Мониторить необычную активность в AWS-сервисах, особенно Lambda и CloudFront.
- Обновлять системы для устранения уязвимостей в .NET и ClickOnce.
- Обучать сотрудников распознаванию фишинговых атак, нацеленных на ИТ-персонал.
Кампания OneClik демонстрирует опасный синтез «бесшумных» техник и облачной инфраструктуры. Ее обнаружение подчеркивает необходимость перехода от сигнатурных методов к AI-ориентированной защите, способной анализировать контекст и аномальное поведение в режиме реального времени. Энергетический сектор, как критическая инфраструктура, должен стать приоритетом для таких решений.
Индикаторы компрометации
URLs
- https://[v1a-victim].blob.core.windows.net/myit/analysis.html
- https://[v1d]support.blob.core.windows.net/check/systemcheck.application
- https://[v1d]support.blob.core.windows.net/xpayload/checkimage1.png
- https://[v1d]support.blob.core.windows.net/xpayload/ied.exe.config
- https://[v1d]support.blob.core.windows.net/xpayload/ied.manifest
- https://7dqtdjxfycaqhjvc2qmx5js4aq0juygw.lambda-url.us-east-1.on.aws
- https://b2zei88b61.execute-api.eu-west-2.amazonaws.com
- https://d1ismqgtp337lz.cloudfront.net
- https://dyydej4wei7fq.cloudfront.net
- https://dzxwmpi8xepml.cloudfront.net
SHA256
- 0192212b4784ee4e483d162959daf89674cb98aaa6d065e1621a5d26e66a77f3
- 048ffb71a1e5abfd6b905b7a4a5171eabe560948963a8c0d6aa14a40d0f6b255
- 0b61707d1fc8821a95c899de0304a55d549c7252ca24d5978f0989f9593a79c2
- 18f498b78b02050cbb80c75de035e1985adf8bc838665f0f8a22d3ed3304f73d
- 296030c3a5c7422884d0fda4fbcef7d6cbb2270747190833692315977f7f3c7d
- 2a07875fca7a9c15aa54e82a91800899effadda919e5548513c13586f2c3d7fc
- 4007350e16856cb9bb1fc1ca6e359e00b0776a5d1229f83f54e730e1d67ddbce
- 403e7effd2ac31ebcf9181fb4851b309a4448079bd117a90d1e670ac235989de
- 4272b9bfc559d60c967fc5e8d17a61ab33aea14522fbfda1341f3953d7d1fb19
- 83f21a03db7cd2c621da3af0b40f6d39e2562af10b59cedfbc46868b054ffac7
- 86f6d5ebaeb5ea5ac3b952e38951658e716f6065ce5f689ab5cf62fd738525e9
- 8facceb0b15bbf061ae9ebcb3b97980d90d774c035ece434e4653299afc7babc
- 949c3c79877ce6e4963131e0888c3de4b256bac1de28601c6b01bbfcce7865e0
- af8864bde7e2a3b6ff198939c8350c42cea51556b1bb8be6476650ae86c2e669
- b06b1a5ea83d7f0883f9388c83359a738bc90e092f21f458232e2f98ed9810b6
- b3dd3b9e8c999fe0e1273a52288af65e1f0997a587f3aa2f13e2a0e6f4383f22
- bea96cbf485f32fff1cf5cd9106ada542b978094f524f052f0391c3b916846df
- c045503e0cb85588097c6e2484a49c52251ed5e46e9bfc6c73574440534123c9
- d830f27b1dfc75ac50f89a9353fd8aa90103e9a53562475ab69e12d5969b70b2
- e61d6e88f1f0068288bb0df226b433915ae295f040475d85f0960f1db0b43ca8
- ea38f13b9ef3ce8351f64ad3685d5fa5fb35e507c71002560f12b24b8c8b546b
- f2c6a9eed870d312be3b7c51998c5326fab17e999d0004931ff84b25233bc9b1