Mustang Panda прячет бэкдор прямо в ядре Windows — и антивирус его не видит, не трогает и не удаляет

Заражены госорганы четырёх стран, и наша - не исключение.


c8z2gvjqyupzx4w71pinea45d8mo4ncx.jpg

Группировка HoneyMyte, также известная как Mustang Panda , начала использовать обновлённую версию бэкдора CoolClient вместе с подписанным драйвером уровня ядра Windows. Драйвер прячет вредоносные процессы, файлы, разделы реестра и сведения о соединениях с командными серверами, а также мешает другим программам удалять или изменять защищённые компоненты. Заражённые системы обнаружили в Мьянме, Монголии, Пакистане и России, в том числе в государственных организациях. CoolClient в изученных атаках запускался после первоначального заражения через PlugX .

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

Драйвер устанавливается только при наличии достаточных привилегий. CoolClient проверяет полный доступ к диспетчеру управления службами Windows и наличие привилегии SeTcbPrivilege. Windows относит SeTcbPrivilege к чувствительным системным правам: процесс с таким разрешением может действовать как часть операционной системы. Если нужных полномочий нет, вредонос пропускает установку драйвера и сразу запускает конечный компонент бэкдора.

В одной из атак на организации в Мьянме злоумышленники сначала использовали PlugX. Через него в Microsoft Defender добавлялись исключения для поддельного каталога Windows Defender и переименованного исполняемого файла. После подготовки каталога туда копировались компоненты CoolClient.

Для запуска применялась легальная программа Sangfor, переименованная в defender.exe. Рядом злоумышленники размещали вредоносную библиотеку libngs.dll. При запуске программа Sangfor загружала библиотеку из собственного каталога, поэтому вместо штатного компонента выполнялся код атакующих. Такой приём называют подменной загрузкой DLL .

libngs.dll расшифровывает следующий компонент loadcert.ini и передаёт ему управление. Несмотря на расширение .ini, файл содержит исполняемый вредоносный код, а не обычные настройки программы. loadcert.ini закрепляет CoolClient в системе, меняет реестр, обходит контроль учётных записей Windows, внедряет код в другие процессы, устанавливает драйвер и запускает конечный компонент cert.ini. Последний отвечает за связь с командными серверами и основные функции бэкдора.

Для автоматического запуска loadcert.ini создаёт запись goopdate в разделе автозагрузки реестра. Вредонос также способен зарегистрировать службу Windows под именем media_updaten. Перед внедрением кода CoolClient пытается повысить свои привилегии и запустить себя в более подходящем системном контексте.

Для этого используется удалённый вызов процедур RPC вместе с подменой идентификатора родительского процесса, или PPID spoofing. Windows хранит сведения о том, какой процесс запустил другой процесс. CoolClient подменяет такие данные, чтобы новый процесс выглядел потомком другой программы. После запуска с повышенными правами вредонос внедряет код в процесс synchost.exe.

Если система предоставляет необходимые привилегии, loadcert.ini извлекает из своего тела драйвер ядра, сжатый алгоритмом LZMA. Файл сохраняется под именем msagent.sys. Затем CoolClient создаёт службу драйвера msagent и запускает её.

msagent.sys подписан цифровым сертификатом, выданным компании Nanjing Ranyi Technology Co., Ltd. Сертификат действовал с августа 2013 года по сентябрь 2014 года. С тем же сертификатом обнаружили несколько старых вредоносных драйверов, собранных примерно в 2013 году, однако прямой связи между прежними образцами и нынешними атаками CoolClient не нашли.

После загрузки драйвер принимает команды от пользовательской части CoolClient через запросы IOCTL. Windows использует IOCTL для обмена командами между обычными программами и драйверами. В изученном образце CoolClient во время штатной работы отправлял три запроса.

Запрос 0x222120 регистрирует текущий процесс CoolClient как доверенный. Драйвер после регистрации разрешает вредоносному процессу обращаться к файлам, разделам реестра и процессам, которые закрыты для остальных приложений. CoolClient благодаря этому сохраняет полный доступ к собственным компонентам, даже когда msagent.sys скрывает или защищает их.

Запрос 0x2221E0 передаёт драйверу IPv4-адрес командного сервера. msagent.sys использует адрес при фильтрации сетевой информации, которую Windows выдаёт программам пользовательского уровня.

Запрос 0x2220F0 сообщает пути к файлам и разделам реестра, которые нужно защищать. В изученной конфигурации CoolClient передавал каталог собственной установки и раздел реестра, связанный со службой вредоноса. После регистрации путей другие программы могут потерять возможность просматривать, изменять или удалять соответствующие объекты.

Настройки маскировки msagent.sys хранит в ветке реестра \REGISTRY\MACHINE\SYSTEM\RNG. Для каталогов, файлов, ключей и значений реестра, а также процессов предусмотрены отдельные параметры. Конфигурация указывает, какие объекты нужно скрывать, какие защищать, а какие исключать из обработки.

Для контроля за системой драйвер регистрирует обработчики файловой системы, реестра, процессов, объектов ядра и загрузки исполняемых образов. Когда Windows выполняет операцию с объектом из списка защиты, msagent.sys может изменить результат или полностью заблокировать действие.

При защите процессов драйвер ограничивает права, которые получает другая программа при открытии дескриптора защищённого процесса. Дескриптор нужен приложению, чтобы выполнять действия с чужим процессом. Если msagent.sys урежет разрешения, программа не сможет, например, завершить защищённый процесс или внедрить в него собственный код. В изученном заражении драйвер защищал synchost.exe, куда ранее был внедрён код CoolClient.

msagent.sys умеет и полностью скрывать процессы. Для этого драйвер удаляет выбранную запись из системного списка активных процессов Windows. Сам код продолжает работать, однако программы, которые получают перечень процессов через соответствующие системные структуры, могут не увидеть скрытую запись.

Файлы и каталоги защищает мини-фильтр файловой системы Windows. Мини-фильтр перехватывает обращения к выбранным объектам и при необходимости возвращает отказ в доступе. Пользователь или программа могут знать точный путь к вредоносному файлу, но операция чтения, изменения или удаления всё равно завершится ошибкой.

С реестром применяется похожая схема. Драйвер регистрирует обработчик, который вмешивается в запросы к защищённым ключам и значениям. При перечислении содержимого раздела msagent.sys удаляет нужные записи из выдачи, поэтому системная утилита или защитный продукт получает неполный список. Попытки изменить или удалить защищённые значения блокируются отдельно.

Для сокрытия соединений с командным сервером руткит вмешивается в работу драйвера Windows Nsiproxy. Через Nsiproxy приложения пользовательского уровня получают часть сведений о сетевых подключениях. msagent.sys фильтрует переданный ему IPv4-адрес командного сервера из результатов, поэтому некоторые инструменты мониторинга сети могут не показать соответствующее соединение.

Всего в msagent.sys обнаружено 33 обработчика IOCTL. Драйвер содержит функции для скрытия процессов и модулей ядра, изменения значений реестра и работы с системными уведомлениями ядра Windows. При обычном выполнении исследованного образца CoolClient использовал только три команды: регистрацию доверенного процесса, передачу IPv4-адреса командного сервера и настройку защищаемых путей. Использование остальных обработчиков в изученной атаке не зафиксировали.

Для проверки систем опубликованы индикаторы компрометации. Два обнаруженных образца msagent.sys имеют хеши 2d7c8780e97409770a9d4f31c66c9d63 и 9460E150E1981D5C165043520c5c12fe. Для libngs.dll указаны хеши 9717f005c5fb98e08d2ad983d88f94ee и F518D8E5FE70D9090F6280C68A95998F. В набор индикаторов также входят пути к вредоносным файлам и домены командных серверов.

HoneyMyte использовала руткиты уровня ядра и раньше. В январе 2026 года исследователи описали другую версию CoolClient, применявшуюся против целей в Пакистане и Мьянме и запускавшую ранее неизвестный драйвер. В декабре 2025 года группировка также задействовала отдельный руткит уровня ядра для загрузки бэкдора ToneShell.

Нынешний драйвер CoolClient устроен похоже на компонент, применявшийся вместе с ToneShell, но у msagent.sys есть собственный набор IOCTL-команд для прямого обмена с пользовательской частью бэкдора. CoolClient сам сообщает драйверу, какой процесс нужно считать доверенным, какие файлы и записи реестра закрыть от постороннего доступа и какой адрес командного сервера убрать из сетевой информации Windows.