В сфере информационной безопасности обнаружение вредоносного образца, который изначально не детектируется ни одним антивирусным движком на VirusTotal, всегда является тревожным сигналом. Это указывает на использование продвинутых техник обфускации и принципиально новых архитектурных подходов. Именно такой случай произошел с компонентом PureLogs (внутреннее название «Plog»), частью экосистемы вредоносного ПО как услуги (MaaS) PureCoder, который был выявлен в ходе расследования многоэтапного внедрения. На момент обнаружения образец не имел ни одного срабатывания из 72 доступных движков, а также отсутствовал в публичных отчетах разведки угроз (OSINT). Последующее исследование связало его с кампанией, публично отслеживаемой аналитиками Securonix под кодовым именем SERPENTINE#CLOUD, с дополнительными отчетами от Check Point Research, Fortinet и eSentire.
Описание
Образец, получивший внутреннее имя Mvfsxog.dll, представляет собой сборку .NET, защищенную обфускатором ConfuserEx. Его ключевая особенность - модульная, плагиновая архитектура, превращающая его не в автономную вредоносную программу, а в «загрузчик» (stager). Сам по себе этот DLL-файл не обладает какими-либо наступательными возможностями: в нем нет кейлоггера, снятия скриншотов, управления файлами или функций сбора учетных данных. Вместо этого он выполняет четыре четкие задачи: уклонение от анализа, сбор отпечатка системы, установление зашифрованного канала связи с командным сервером (C2) и, что наиболее важно, прием и выполнение скомпилированных сборок .NET прямо в памяти оперативной памяти. Все вредоносные функции доставляются сервером C2 в реальном времени в виде плагинов, которые загружаются с помощью "Assembly.Load(byte[])", выполняются через рефлексию и никогда не сохраняются на диск. Именно поэтому на этапе обнаружения у бинарного файла было нулевое количество детектов - сигнатурным движкам просто нечего было сопоставить.
Перед установкой соединения загрузчик проводит комплексную проверку на наличие анализаторских сред. Он ищет артефакты виртуальных машин и песочниц, такие как характерные DLL-библиотеки (SbieDll.dll, cuckoomon.dll), выполняет WMI-запросы к компонентам Win32_VideoController и Win32_DiskDrive для обнаружения строк «VMware» или «VIRTUAL», анализирует разрешение экрана и проверяет имя пользователя против черного списка, включающего стандартные имена вроде «john» или «anna». При обнаружении признаков анализа программа тихо завершает работу. Для усложнения статического анализа применяются методы контроля потока выполнения (control flow flattening), шифрование строк и антиотладочный механизм с использованием хука на этап JIT-компиляции.
Протокол взаимодействия с C2-сервером (ydspwie.duckdns.org:9045) построен поверх обычного TCP-сокета с шифрованием на уровне приложения с использованием AES-256-CBC. После установки соединения и простого обмена однобайтовым handshake (0x04) начинается цикл получения команд. Полезная нагрузка передается в виде сообщения Protocol Buffers, содержащего скомпилированные байты сборки .NET. Загрузчик расшифровывает их, распаковывает и исполняет в памяти, предоставляя плагину сериализованный контекст. Интересно, что конфигурация самого загрузчика также содержит поле для встроенного начального плагина, который выполняется автоматически при первом подключении.
Параллельно аналитиками был изучен другой вариант той же угрозы - так называемый «толстый клиент» от 5 октября (Qdjlj.dll). В отличие от минималистичного загрузчика, эта версия является монолитной и содержит весь функционал, скомпилированный внутрь. Он ориентирован в первую очередь на кражу криптовалюты, осуществляя поиск данных более чем 50 браузерных расширений для кошельков (MetaMask, Phantom и др.) и 10+ десктопных приложений. Также в его арсенале имеются функции кражи данных Telegram и Foxmail, внедрение кода в процессы, снятие скриншотов и установление персистентности через планировщик задач PowerShell. Для связи эта версия использует TLS 1.0 с самоподписанным сертификатом. Инфраструктура C2 у этой версии значительно шире - 10 доменов и 5 портов, часть из которых резолвится на тот же IP-адрес (45.58.143.254), что и сервер для загрузчика, что подтверждает их принадлежность к одной кампании.
Сравнение двух вариантов наглядно демонстрирует эволюцию угрозы в сторону большей скрытности. «Толстый клиент» оставляет на диске множество артефактов и сигнатур, в то время как архитектура на основе плагинов сводит следы к минимуму. Переход от монолитного исполняемого файла к загрузчику, динамически получающему функционал, серьезно затрудняет традиционный сигнатурный анализ и защиту на основе файловых хэшей. Специалистам по безопасности необходимо уделять повышенное внимание поведенческому анализу, мониторингу необычной сетевой активности (сырые TCP-соединения с последующим шифрованием AES) и подозрительной загрузке сборок .NET в память, особенно из неподтвержденных источников. Обнаружение подобных образцов с нулевым уровнем детектирования подчеркивает важность проактивных методов расследования и обмена индикаторами компрометации (IoC) внутри профессионального сообщества.
Индикаторы компрометации
IPv4
- 45.58.143.254
- 85.208.84.113
Domains
- nhvncpure.click
- nhvncpure.duckdns.org
- nhvncpure.sbs
- nhvncpure.shop
- nhvncpure.twilightparadox.com
- nhvncpure1.strangled.net
- nhvncpure2.mooo.com
- nhvncpurekfl.duckdns.org
- nhvncpureybs.duckdns.org
- nhvncpureybv.duckdns.org
- vijdklet.duckdns.org
- ydspwie.duckdns.org
MD5
- 27c8f921a28bea1f8ee73aaae49b8ddf
SHA256
- 046d0e83c1e6dcaf526127b81b962042e495f5ae3a748f3a9452be62f905acf8
- b1474a16875185cc69f41c8b545f591f4bc8a1c7cbdd1cb08924424d825cb6c0
- cdf87d68885caa3e94713ded9dd5e51c39b7bc7ef9bf7d63a4ff5ab917a96b36
- dcd22d338a0bc4cf615d126b84dfcda149a34cf18bc43b85f16142dfb019e608