Коммерческий криптер PureCrypter: детальный разбор модуля загрузки из кампании SERPENTINE#CLOUD

ransomware

Специалисты по информационной безопасности продолжают отслеживать эволюцию сервисов вредоносного программного обеспечения, которые значительно упрощают для злоумышленников проведение сложных многоэтапных атак. В центре внимания оказался коммерческий криптер PureCrypter, входящий в экосистему PureCoder и используемый в рамках публично отслеживаемой кампании SERPENTINE#CLOUD. Недавно исследователям удалось восстановить и детально проанализировать несколько версий загрузчика, созданных этим инструментом. Анализ выявил чёткую архитектурную схему, методы обфускации и эволюцию функционала криптера между сентябрём и ноябрём 2025 года, что подчёркивает постоянное развитие угроз, исходящих от подобных платформ.

Описание

Восстановленные образцы представляют собой скомпилированные в .NET исполняемые файлы, подвергнутые обфускации с помощью инструмента ConfuserEx. Их единственная цель - извлечь, расшифровать и исполнить скрытую полезную нагрузку. Несмотря на агрессивное запутывание кода, внутренняя логика загрузчиков оказалась относительно простой и построенной по принципу последовательного конвейера событий. Основное различие между сентябрьской (Fviwknzr.exe) и ноябрьской (Erqcke.exe) версиями заключается в улучшении обработки ошибок, добавлении проверок безопасности и расширении поддерживаемых сценариев, что свидетельствует о развитии конструктора PureCrypter.

Архитектура загрузчика реализована как цепочка обработчиков событий. После запуска главный класс-оркестратор инициирует последовательность из пяти этапов. Сначала запрашивается расшифровка встроенного ресурса с использованием алгоритма 3DES в режиме CBC с заполнением PKCS7. Ключ и вектор инициализации жёстко заданы в коде в формате Base64. После успешной расшифровки срабатывает событие, запускающее распаковку данных с помощью GZip. Важно отметить, что перед сжатыми данными располагается 4-байтовый заголовок с ожидаемым размером распакованного содержимого, что позволяет выполнить дополнительную проверку целостности. На следующем этапе распакованный массив байтов, представляющий собой сборку .NET, загружается в память с помощью метода "Assembly.Load". Затем через механизм рефлексии находится и вызывается целевой метод из указанного класса. Вся цепочка сопровождается генерацией событий о смене этапа, а ошибки на любом шаге приводят к тихому завершению процесса без вывода сообщений, что является характерной чертой PureCrypter.

Исследователи отследившие эту активность, отмечают, что кампания использует перекрёстное повторение компонентов. Например, хэш загрузчика от октября 2025 года был повторно использован в ноябрьской волне атак без изменений. Что касается обнаружения, показатели на VirusTotal варьируются: сентябрьский образец детектируется 49 из 76 антивирусных движков, в то время как два ноябрьских - по 41 из 76. При этом в системе динамического анализа Tria.ge ноябрьские образцы получают низкие баллы угрозы, так как их статическая сигнатура ограничивается лишь фактом отсутствия цифровой подписи. Более высокий балл сентябрьской версии связан с тем, что в песочнице был активирован поведенческий код следующей стадии атаки.

Методы обфускации, применённые ConfuserEx, хотя и выглядят сложными, оказались предсказуемыми. Основной приём - уплощение потока управления, когда логика каждого метода разбивается на блоки внутри бесконечного цикла и оператора switch, что затрудняет статический анализ. Кроме того, повсеместно используются непрозрачные предикаты - сотни целочисленных полей в модуле, инициализированные выражениями, результат которых всегда равен нулю. Эти поля задействованы в условных переходах, которые никогда не выполняются, создавая "мёртвый" код для сбивания с толку автоматизированных средств анализа. Однако, как только исследователь понимает, что все эти поля равны нулю, реальная логика программы легко восстанавливается.

Эволюция конструктора PureCrypter между сборками хорошо заметна. Ноябрьская версия демонстрирует более зрелый подход: добавлены информативные сообщения об ошибках, реализовано затирание криптографических ключей в памяти после использования, введена проверка заголовка MZ у распакованных данных и жёсткое ограничение на максимальный размер распакованного контента. Также улучшена совместимость: вместо современного метода "CopyTo()" для распаковки GZip используется ручной цикл с буфером, что позволяет работать в среде .NET 3.5. Наконец, ноябрьский загрузчик научился вызывать как статические, так и экземплярные методы полезной нагрузки, а также передавать ей аргументы, что повышает гибкость для операторов вредоносов.

Конечной целью этих загрузчиков являются различные варианты вредоносной платформы PureLogs. Сентябрьский образец доставляет так называемый "толстый клиент" (fat client) - монолитную сборку с широким набором функций, включая кражу данных из криптокошельков, браузеров, мессенджеров и установление persistence. Ноябрьские же образцы несут облегчённый модуль-загрузчик плагинов, который после запуска ожидает получения дополнительных функциональных модулей от командного сервера. Это разделение демонстрирует тактическую гибкость злоумышленников, которые могут выбирать между мощным, но заметным инструментом и минималистичным, скрытным загрузчиком для долгосрочного присутствия в системе.

Данный случай наглядно иллюстрирует, как коммерциализация вредоносного ПО приводит к стандартизации даже сложных этапов атаки, таких как обфускация и загрузка. Криптеры вроде PureCrypter снижают порог входа для киберпреступников, предоставляя надёжные и развивающиеся инструменты. Для защитников понимание внутреннего устройства таких загрузчиков, их индикаторов компрометации, включая конкретные хэши, криптографические ключи и шаблоны поведения, критически важно для построения эффективной обороны. Особое внимание следует уделять детектированию процессов .NET, которые загружают и исполняют сборки прямо из памяти, используют подозрительные вызовы рефлексии и демонстрируют характерные паттерны обфускации, свойственные ConfuserEx.

Индикаторы компрометации

MD5

  • 3954ddd9e691ab0520e82f83d53579d4
  • 505a7b3074c5a769d85087b7f2e4bddd
  • e3d3cfdde5349c2728b1b7a0c9ccfdc1

SHA256

  • 046d0e83c1e6dcaf526127b81b962042e495f5ae3a748f3a9452be62f905acf8
  • 0ab09a4787ea9cb259cadd3f811a56f7bd0058287634bbaf0388b2cd40464505
  • b1c6659ee4ee35540f5ed043b611ac88a7fce9dc2f564168e7d47c43683163f6
  • cdf87d68885caa3e94713ded9dd5e51c39b7bc7ef9bf7d63a4ff5ab917a96b36
  • dcd22d338a0bc4cf615d126b84dfcda149a34cf18bc43b85f16142dfb019e608
Комментарии: 0