Исследования GReAT

Эволюция бэкдора PipeMagic: от инцидента с RansomExx до CVE-2025-29824

В апреле 2025 года Microsoft исправила 121 уязвимость в своих продуктах. Среди них, по данным компании, только одна использовалась в реальных атаках на момент выхода патча — CVE-2025-29824. Эксплойт к этой уязвимости запускало вредоносное ПО PipeMagic, которое мы впервые обнаружили в декабре 2022 года в кампании с применением вымогателя RansomExx. Позже мы увидели его снова в сентябре 2024 года в атаках на организации в Саудовской Аравии. Примечательно, что это была та же версия PipeMagic, что и в 2022 году. Мы продолжаем отслеживать активность зловреда. В частности, в 2025 году наши решения предотвратили заражение организаций в Бразилии и Саудовской Аравии.

Этот отчет стал результатом совместного исследования с руководителем группы исследования уязвимостей BI.ZONE, в рамках которого мы проследили развитие PipeMagic — от первого обнаружения в 2022 году до новых инцидентов в 2025 году — и выявили ключевые изменения в тактиках его операторов. Коллеги из BI.ZONE, в свою очередь, провели технический анализ самой уязвимости CVE-2025-29824.

Предыстория

PipeMagic — это бэкдор, который мы впервые обнаружили в декабре 2022 года при исследовании вредоносной кампании с участием RansomExx. Жертвами атаки стали промышленные компании в Юго-Восточной Азии. Для проникновения в инфраструктуру злоумышленники использовали уязвимость CVE-2017-0144. Загрузчик бэкдора представлял собой троянизированное приложение Rufus для форматирования USB-дисков, а сам PipeMagic поддерживал два режима работы — как полноценный бэкдор, предоставляющий удаленный доступ, и как сетевой шлюз — и обеспечивал исполнение широкого набора команд.

В октябре 2024 года организации в Саудовской Аравии столкнулись с новой волной атак PipeMagic. В этот раз для первоначального проникновения злоумышленники не эксплуатировали уязвимости, а использовали в качестве приманки поддельное приложение-клиент для ChatGPT. Оно было написано на Rust и использовало фреймворки Tauri для отрисовки графических приложений и Tokio для асинхронного выполнения задач. Однако никакой полезной функциональности в нем не оказалось, и при запуске оно просто показывало пользователю пустой экран.

MD5 60988c99fb58d346c9a6492b9f3a67f7
Название файла chatgpt.exe
Пустой экран поддельного приложения

Пустой экран поддельного приложения

Одновременно с этим приложение извлекало из своего кода зашифрованный по алгоритму AES массив размером 105 615 байт, расшифровывало и выполняло его. Результат представлял собой шелл-код, отвечающий за загрузку исполняемого файла. Для затруднения анализа злоумышленники использовали хэширование API-функций с помощью алгоритма FNV-1a, и шелл-код динамически разрешал их адреса через GetProcAddress. Далее происходило выделение памяти, релокация необходимых смещений в таблице импортов и, наконец, запуск точки входа бэкдора.

Одной из уникальных особенностей PipeMagic является генерация случайного массива длиной 16 байт, который используется для создания именованного канала в формате \\.\pipe\1.<hex string>. После этого запускается поток, который постоянно создает этот канал, пытается прочитать из него данные и уничтожает. Такой способ коммуникации нужен бэкдору для передачи зашифрованной полезной нагрузки и уведомлений. При этом для взаимодействия с именованным каналом используется стандартный сетевой интерфейс с IP-адресом 127.0.0.1:8082.
Для скачивания модулей (PipeMagic обычно задействует несколько плагинов, скачиваемых с C2-сервера) злоумышленники использовали домен, размещенный у облачного провайдера Microsoft Azure, со следующим именем: hxxp://aaaaabbbbbbb.eastus.cloudapp.azure[.]com.

PipeMagic в 2025 году

В январе 2025 года мы обнаружили новые заражения в Саудовской Аравии и Бразилии. При дальнейшем исследовании было замечено обращение к домену hxxp://aaaaabbbbbbb.eastus.cloudapp.azure[.]com, который навел нас на мысль о связи этой атаки с PipeMagic. Позже мы нашли и сам бэкдор.

Изначальный загрузчик

MD5 5DF8EE118C7253C3E27B1E427B56212C
Название файла metafile.mshi

В этой атаке в роли загрузчика выступал файл формата Microsoft Help Index File. Обычно в таких файлах находится код, который читает данные из файлов-контейнеров .mshc, содержащих справочные материалы Microsoft. В случае загрузчика при первом просмотре видно, что он содержит обфусцированный код на C# и очень длинную шестнадцатеричную строку. Пример запуска такой нагрузки:

Содержимое файла metafile.mshi

Содержимое файла metafile.mshi

Код на C# используется для двух целей — расшифровки и исполнения шелл-кода, который зашифрован с помощью поточного алгоритма RC4 с ключом 4829468622e6b82ff056e3c945dd99c94a1f0264d980774828aadda326b775e5 (шестнадцатеричная строка). После расшифровки полученный шелл-код исполняется при помощи WinAPI EnumDeviceMonitor. Первые два параметра функции содержат нули, а в качестве третьего передается указатель на функцию, в который подставляется указатель на расшифрованный шелл-код.

Внедренный шелл-код представляет собой исполняемый код для 32-битных систем Windows. Он загружает незашифрованный исполняемый файл, который находится внутри шелл-кода. Для динамического получения адресов системных API, как и в версии 2024 года, используется парсинг таблицы экспортов и хэширование FNV-1a.

Загрузчик (ChatGPT)

MD5 7E6BF818519BE0A20DBC9BCB9E5728C6
Название файла chatgpt.exe

В 2025 году были также обнаружены образцы загрузчика PipeMagic, имитирующие клиент ChatGPT. Это приложение похоже на то, которое злоумышленники применяли в атаках на организации в Саудовской Аравии в 2024 году. В нем тоже используются фреймворки Tokio и Tauri, причем, судя по строкам с информацией об авторских правах и метаданным заголовка PE, исполняемый файл был собран в 2024 году, хотя впервые его обнаружили в кампании 2025 года. Кроме того, в данном случае используется та же версия библиотеки libaes, что и в атаках годом ранее. По поведению и структуре образец также аналогичен приложению, которое мы видели в октябре 2024 года.

Расшифровка полезной нагрузки с помощью AES

Расшифровка полезной нагрузки с помощью AES

Загрузчик с использованием DLL Hijacking

MD5 E3C8480749404A45A61C39D9C3152251
Название файла googleupdate.dll

Помимо изначального метода исполнения при помощи файла .mshi, который запускается через msbuild, атакующие также использовали более популярный метод с расшифровыванием нагрузки и ее внедрением посредством исполняемого файла, который не нуждается во вспомогательных утилитах для запуска. При этом сам исполняемый файл был легитимным (в рамках данной кампании мы видели вариант с файлом обновления Google Chrome), а вредоносная логика была реализована при помощи библиотеки, которую он подгружает. Для этого на диске рядом с легитимным приложением размещалась вредоносная DLL, содержащая функцию, которую оно экспортирует (метод DLL Hijacking).

Стоит отметить, что в конкретном образце библиотеки экспортируемые функции не были вредоносными. Вредоносный код содержала функция инициализации (DllMain), которая всегда вызывается при загрузке DLL, так как инициализирует внутренние структуры, файловые дескрипторы и т. д.

В первую очередь загрузчик читает данные из зашифрованного файла, путь к которому злоумышленники передают ему через аргументы командной строки.

Чтение файла с нагрузкой

Чтение файла с нагрузкой

Далее содержимое файла расшифровывается с помощью симметричного шифра AES в режиме CBC, при этом ключ равен 9C 3B A5 B2 D3 22 2F E5 86 3C 14 D5 13 40 D7 F9, а вектор инициализации (IV) — 22 1B A5 09 15 04 20 98 AF 5F 8E E4 0E 55 59 C8.

Расшифрованный код библиотека внедряет в память и передает ему управление, а исходный файл впоследствии удаляется. В вариантах, обнаруженных во время анализа, полезной нагрузкой был шелл-код, аналогичный тому, что был обнаружен в 2024 году во время анализа вредоносной кампании с клиентом для ChatGPT.

Внедренный PE

MD5 1A119C23E8A71BF70C1E8EDF948D5181
Название файла

Во всех методах загрузки, описанных выше, полезной нагрузкой был исполняемый файл для 32-битных систем Windows. Любопытно, что во всех случаях этот файл поддерживал графический режим, хотя и не имел графического интерфейса. Этот исполняемый файл и есть бэкдор PipeMagic.

Образец первым делом генерирует 16 случайных байт для создания имени для канала (pipe), который он будет впоследствии использовать. Имя создается по тому же принципу, что и в оригинальном PipeMagic, который мы видели в 2024 и 2022 годах.

Создание канала (pipe) с заранее сгенерированным именем

Создание канала (pipe) с заранее сгенерированным именем

Сам образец не отличается от тех, что были замечены ранее, однако в нем появилась строка с заранее заданным путем канала \.\pipe\magic3301. При этом в самом бэкдоре она не используется в явном виде (то есть он не взаимодействует с каналом с таким именем).

Кроме того, аналогично образцам, найденным в 2022 и 2024 годах, в этой версии создается канал общения по адресу 127.0.0.1:8082.

Обнаруженные модули

В ходе исследования атак 2025 года мы обнаружили дополнительные плагины, используемые в данной вредоносной кампании. Всего было получено три модуля, реализующих различную функциональность, не присутствующую в основном бэкдоре. Все модули представляют собой исполняемые файлы для 32-битных систем Windows.

Модуль асинхронной коммуникации

Модуль реализует асинхронную модель ввода-вывода. Для этого используется механизм очереди ввода-вывода и портов завершения ввода-вывода (Completion Ports).

Обработка основных команд

Обработка основных команд

Сразу при входе в плагин происходит обработка команд. На данном этапе поддерживается пять команд:

Идентификатор команды Описание
0x1 Инициализация и создание потока, постоянно получающего изменения из очереди ввода-вывода
0x2 Завершение работы плагина
0x3 Обработка файлового ввода-вывода
0x4 Завершение файловой операции по идентификатору
0x5 Завершение всех файловых операций

Хотя изменения ввода-вывода через порты завершения обрабатываются в отдельном потоке, основной поток будет дожидаться завершения файловой операции — поэтому данную модель нельзя назвать по-настоящему асинхронной.

Получение статуса очереди I/O (ввода-вывода)

Получение статуса очереди I/O (ввода-вывода)

Если была выбрана команда с идентификатором 0x3 (обработка файлового ввода-вывода), управление переходит на внутренний обработчик. Для этой команды существует набор подкоманд, который описан ниже. Вместе с подкомандой эта команда имеет длину больше или равную 4 байтам.

Идентификатор команды Описание
0x1 Открытие файла в заданном режиме (чтение, запись, запись в конец файла и т. д.)
0x3 Запись в файл
0x4, 0x6 Чтение из файла
0x5 Изменение состояния флага
0x7 Запись в файл данных, полученных от другого плагина
0x9 Закрытие файла
0xB Дамп всех открытых файлов

Команда с идентификатором 0x5 предположительно реализована для выставления флага ошибки чтения. Если выставлен этот флаг, операция чтения невозможна. При этом модуль не поддерживает команды, снимающие флаг, то есть по факту эта команда просто блокирует чтение из файла.

Выставление флага ошибки чтения

Выставление флага ошибки чтения

Для управления открытыми файлами используемые файловые дескрипторы хранятся в двусвязном списке в глобальной памяти.

Загрузчик

Данный модуль, обнаруженный в одном из заражений, отвечает за внедрение дополнительной нагрузки в память и ее исполнение.

В первую очередь при запуске создается канал с названием \.\pipe\test_pipe20.%d, где в форматную строку подставляется уникальный идентификатор процесса, внутри которого находится внедренный код. Далее данные из этого канала в бесконечном цикле читаются и отправляются на обработчик команд.

Уникальный идентификатор команды содержится в первых четырех байтах данных и имеет следующие возможные значения.

Идентификатор команды Описание
0x1 Чтение данных из канала или отправка данных в канал
0x4 Инициирование нагрузки

Загружаемая нагрузка — это исполняемый файл для 64-битных систем Windows. Обработчик команд парсит этот файл и извлекает еще один исполняемый файл из секции ресурсов. В дальнейшем этот файл проходит все процедуры загрузки — получение адресов импортируемых функций, релоцирование и т. д. При этом для получения адресов системных методов используется не хэширование, а простое сравнение имен.

Исполняемый файл обязан экспортировать функцию под названием DllRegisterService. После загрузки вызывается его точка входа (для инициализации внутренних структур), а затем — эта функция. Она предоставляет интерфейс со следующими возможными командами:

Идентификатор команды Описание
0x1 Инициализация
0x2 Получение данных от модуля
0x3 Обратный вызов на получение данных от нагрузки

Инжектор

Данный модуль также представляет собой исполняемый файл для 32-битных систем Windows. Он отвечает за запуск полезной нагрузки — исполняемого файла, изначально написанного на C# (.NET).

Для этого сначала создается канал с именем \.\pipe\0104201.%d, где в форматную строку подставляется уникальный идентификатор процесса, в котором выполняется модуль.

Из канала образец считывает данные, в которых ищет приложение на .NET. Интересной особенностью является то, что, в отличие от других модулей, вычитывание происходит не в отдельном потоке, а однократно.

Перед загрузкой полученного приложения модуль делает еще один важный шаг. Чтобы нагрузка не была обнаружена через интерфейс AMSI, злоумышленники сначала загружают локальную копию библиотеки amsi. Далее они открывают для записи участок памяти, где содержатся функции AmsiScanString и AmsiScanBuffer, и патчат эти функции. Например, вместо изначального кода функции  AmsiScanString в памяти оказывается функция-пустышка, которая всегда возвращает 0 (то есть помечает файл как безопасный).

После этого образец подгружает библиотеку mscoree.dll. Поскольку злоумышленники не знают целевой версии библиотеки, они во время исполнения проверяют версию среды выполнения .NET, установленную на машине жертвы. Плагин поддерживает версии v4.0.30319 и v2.0.50727. Если на устройстве установлена одна из них, происходит запуск полезной нагрузки через интерфейc _Assembly, реализуемый в mscoree.dll.

Постэксплуатация

После компрометации выбранной машины перед атакующими открывается широкий спектр возможностей по горизонтальному перемещению и получению данных учетных записей. Например, мы обнаружили в телеметрии запущенную в одном из заражений команду:

Исполняемый файл dllhost является частью операционной системы Windows и не поддерживает флаги командной строки. Хотя на основании телеметрии невозможно однозначно определить способ подмены, набор флагов характерен для утилиты procdump.exe (входит в набор утилит Sysinternals). В данном случае утилита используется для дампа памяти процесса LSASS в файл, указанный в качестве последнего аргумента (в данном случае $appdata\FoMJoEqdWg).

В дальнейшем, имея дамп памяти процесса LSASS, злоумышленники могут получить учетные данные на скомпрометированном устройстве и, как следствие, применить различные векторы горизонтального перемещения по сети.

Стоит заметить, что в статье от Microsoft, посвященной атакам с использованием CVE-2025-29824, упоминается точно такой же метод получения памяти LSASS с использованием утилиты ProcDump.

Выводы

Повторное обнаружение PipeMagic в атаках на организации в Саудовской Аравии и появление его в Бразилии свидетельствуют о том, что вредоносное ПО по-прежнему активно и злоумышленники продолжают развивать его функциональность. В версиях, зафиксированных в 2025 году, наблюдаются усовершенствования относительно версии 2024 года, направленные на устойчивое закрепление в системах жертв и горизонтальное перемещение по внутренним сетям.

В атаках 2025 года злоумышленники использовали утилиту ProcDump для извлечения памяти процесса LSASS — аналогично методике, описанной Microsoft в контексте эксплуатации уязвимости CVE-2025-29824. Особенности этой уязвимости подробно проанализировали Bi.Zone во второй части нашего совместного исследования.

IoC

Домены
aaaaabbbbbbb.eastus.cloudapp.azure[.]com

Хэши
5df8ee118c7253c3e27b1e427b56212c        metafile.mshi
60988c99fb58d346c9a6492b9f3a67f7          chatgpt.exe
7e6bf818519be0a20dbc9bcb9e5728c6        chatgpt.exe
e3c8480749404a45a61c39d9c3152251       googleupdate.dll
1a119c23e8a71bf70c1e8edf948d5181
bddaf7fae2a7dac37f5120257c7c11ba

Pipe names
\.\pipe\0104201.%d
\.\pipe\1.<16-байтовая шестнадцатеричная строка>

Эволюция бэкдора PipeMagic: от инцидента с RansomExx до CVE-2025-29824

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Отчеты

ToddyCat — ваш скрытый почтовый ассистент. Часть 1

Эксперты «Лаборатории Касперского» разбирают атаки APT ToddyCat через корпоративную электронную почту. Изучаем новую версию TomBerBil, инструменты TCSectorCopy и XstReader, а также способы кражи токенов доступа из Outlook.

Криптоафера группы BlueNoroff: «призрачные» инвестиции и фиктивные рабочие предложения

Эксперты команды GReAT проанализировали кампании GhostCall и GhostHire APT-группы BlueNoroff: несколько цепочек вредоносного ПО для macOS, поддельные клиенты Zoom и Microsoft Teams, а также изображения, улучшенные с помощью ChatGPT.

Mem3nt0 mori – Hacking Team снова с нами!

Исследователи «Лаборатории Касперского» впервые обнаружили шпионское ПО Dante, разработанное Memento Labs (бывшей Hacking Team) в дикой природе и нашли его связь с APT ForumTroll.