Киберпреступники, стоящие за масштабной операцией SERPENTINE#CLOUD, демонстрируют парадоксальный подход к разработке вредоносного ПО: они сохраняют неизменными основные шпионские программы (RAT) на протяжении полугода, но при этом непрерывно модернизируют и усложняют механизмы их доставки и сокрытия. Этот метод позволяет сохранять эффективность полезной нагрузки, одновременно обходя системы защиты за счёт постоянной ротации внешних оболочек. Эксперты Securonix, отслеживающие эту кампанию с июня 2025 года, завершили серию глубокого анализа, сосредоточив внимание на внешних слоях этой многоступенчатой атаки.
Описание
От скрипта до RAT: конвейер из пяти слоёв
Основная цепочка заражения оставалась неизменной в своей основе. Всё начинается с исполняемого пакетного файла (.bat), который загружает ZIP-архив через одноразовый туннель Cloudflare. Этот архив содержит среду выполнения Python и один или несколько загрузочных скриптов. Каждый скрипт расшифровывает встроенный шелл-код, который, в свою очередь, инициирует загрузку общеязыковой среды выполнения .NET (CLR) для запуска финальной вредоносной полезной нагрузки. За 176 дней наблюдения в рамках кампании было развёрнуто девять семейств RAT по шести параллельным цепочкам, при этом сами шпионские программы почти не менялись. Зато конвейер их поставки претерпел пять значительных эволюционных изменений.
Семь волн атаки: от простого XOR до полиморфного обфускатора
Аналитики выделили семь чётких волн атак, каждая из которых вносила улучшения в шифрование, метод внедрения или обфускацию кода.
- Волна 1 (5 октября): Использовала двойное XOR-шифрование или алгоритм RC4. Внедрение происходило либо через асинхронные вызовы процедур (APC) в процесс notepad.exe, либо напрямую в процесс Python.
- Волны 2-3 (10 ноября): Произошёл переход на более стойкий AES-256-CBC в комбинации с двойным XOR. Метод внедрения сменился на технику "Early Bird APC" в процесс explorer.exe, что менее заметно.
- Волны 4-5 (19 ноября): Наиболее радикальное изменение. Исходный код Python был заменён скомпилированным байт-кодом (.pyc), замаскированным под обычный .py-файл, и обфусцирован с помощью инструмента "Kramer". Этот обфускатор применяет многослойное декодирование (hex, сдвиг символов Unicode, ротация алфавита) и включает проверки на отладку, например, поиск строк "print" в исходном коде. Каждый образец использовал уникальную константу сдвига из области приватного использования Юникода (PUA), что делало файлы полиморфными для сигнатурных детекторов. Платой за скрытность стал колоссальный рост размера файлов: если простые загрузчики занимали около 1-2 МБ, то обфусцированные версии раздувались до 20 МБ при идентичной функциональности.
- Волны 6-7 (декабрь): Представляли собой смесь и повторное использование предыдущих методов, демонстрируя гибкость инфраструктуры злоумышленников.
Ключевой компонент: Donut как мост к .NET
Во всех волнах для связи между шелл-кодом Python и .NET-сборкой использовался фреймворк Donut. Он упаковывает управляемые сборки в позиционно-независимый шелл-код, который самостоятельно инициализирует CLR. Каждый экземпляр Donut применял лёгкий блочный шифр Chaskey в режиме CTR и, что критически важно, патчил функции безопасности Windows перед загрузкой .NET. В их число входили "AmsiScanBuffer" (обход сканирования AMSI) и "WldpQueryDynamicCodeTrust" (обход политик блокировки кода), что эффективно отключало встроенные механизмы защиты от скриптовых угроз.
Инфраструктура и тактики противодействия анализу
Начальные пакетные стагеры загружали архивы через девять различных одноразовых туннелей Cloudflare, а также использовали резервные серверы на доменах вроде "tammhdka.shop". Для обеспечения постоянного доступа скрипты прописывались в автозагрузку, а для поддержания активности сессии использовались VBS-скрипты, имитирующие нажатие клавиш (включая редко используемую F15) каждые 40-55 секунд. Со временем эволюционировали и методы анти-форензики: от простого убийства всех процессов "python.exe" злоумышленники перешли к целенаправленному поиску через WMI процессов "explorer.exe", родителем которых был Python, и завершению только этих родительских процессов.
Специалисты в своём отчёте подчёркивают, что кампания SERPENTINE#CLOUD является наглядным примером современной тенденции, когда усилия злоумышленников сосредотачиваются не на создании нового вредоносного ядра, а на построении сложной, адаптивной и многослойной системы доставки. Такой подход затрудняет детектирование на основе хешей или статических сигнатур, поскольку внешние оболочки меняются постоянно. Для защиты эксперты рекомендуют организациям уделять повышенное внимание мониторингу необычной активности скриптовых сред (особенно Python), отслеживать создание подозрительных дочерних процессов (например, "python.exe -> explorer.exe"), а также контролировать попытки модификации памяти или патчинга критических системных функций, связанных с AMSI и WLDP.
Индикаторы компрометации
Domains
- avoiding-ended-holiday-encyclopedia.trycloudflare.com
- blowing-paris-indoor-links.trycloudflare.com
- brochure-pot-tested-clubs.trycloudflare.com
- brunette-assembled-america-homepage.trycloudflare.com
- candidates-burlington-hugh-anymore.trycloudflare.com
- fsankmas.it.com
- fsankmas.xyz
- mustang-allowing-them-legislative.trycloudflare.com
- render-seen-sensor-urban.trycloudflare.com
- stomach-cite-personality-money.trycloudflare.com
- tammhdka.shop
- valuation-throws-sixth-disc.trycloudflare.com
MD5
- 29f3b9286beecd8ff405222e182c4226
- 2cd05753d1355e9e95c6001d7d2a64b7
- 4bf46fa39a5d9a9b94af8552d58bc974
- 55aa4cb824722e9dd8e64d0538bd932b
- 891490ccab1f9eaa16a11be3330d60ee
- 89713e3f754164d104ea5ae4ee6e17fc
- 8be09bb84bb3f2e8528862201420aa17
- 9277a1bd906839af54584d3ac6523caf
- a9c46ef1a21a5799f608742e1a26ff43
- aafd399291d36afb518d4cb22eceb616
- c8d885e9eb7a90228ebd5bf34afa49c6
- ee6a79204c207b366e645f62ea493407
- f2eccf363c89098a445d3ed8a047c697
- fd267fde4c228922c177fdda6e358b87
SHA256
- 97e71a0347439a169a3278ca85c11f28fe2098c42f7513e2621c0a3f3258b7f2
- c9dc14435857fd00e3f81e219c362c4dc235774dea08fb49fca874dfa108cdd2
- ced8796ae647584824c9907d0513f2d2f4b63f9b5bb9cf713e5a59a777335824