PT Expert Security Center

Ядовитый Марс, или как LuciDoor стучится в двери СНГ

Ядовитый Марс, или как LuciDoor стучится в двери СНГ

Александр Бадаев

Александр Бадаев

Специалист группы киберразведки TI-департамента, Positive Technologies

Максим Шаманов

Максим Шаманов

Младший специалист группы исследования сложных угроз TI-департамента, Positive Technologies

Ключевые моменты

  • Обнаружены атаки на телекоммуникационные компании Киргизии и Таджикистана.
  • По TTP и использованному инструментарию атакующая группировка похожа на восточноазиатскую UnsolicitedBooker.
  • В атаках злоумышленники использовали два разных бэкдора: LuciDoor и MarsSnake.
  • Группировка использовала несколько уникальных и редких инструментов китайского происхождения.
  • Используемое в атаках ВПО мимикрирует под легитимное ПО Microsoft.

Введение

Осенью 2025 года специалисты PT ESC обнаружили уникальные атаки на киргизские телекоммуникационные компании. Атаки привлекли внимание необычными документами, которые использовали сразу два редких инструмента китайского происхождения и уникальное ПО.

В процессе исследования мы обнаружили, что в атаках использовался бэкдор MarsSnake, который ранее был обнаружен исследователями ESET и упомянут в их квартальном отчете. Мы разобрали его функциональность и нашли дополнительные атаки, которые фокусировались на странах СНГ, а также на китайских компаниях.

Атаки на телекоммуникационные компании СНГ

Атаки на Киргизию

В конце сентября злоумышленники разослали письма в киргизские организации.

Рис. 1. Пример письма от злоумышленников
Рис. 1. Пример письма от злоумышленников

Все письма были отправлены якобы с целью узнать тарифные планы для мобильной связи. Единственное, что менялось, — это имена потенциальных «клиентов». Для писем злоумышленники использовали почтовые сервисы Microsoft: Hotmail и Outlook.

Ко всем обнаруженным письмам прикреплялся документ. Например, такой: «Тарифные пакеты SIM-карт мобильных телефонов.doc» (SHA-256: e6a28b3 833 384 018bad60 043c82bb4cfcce86a3418ece86ea0d71c7aac9ca22b).

При открытии документа показывалась картинка, которая побуждала жертву «включить содержимое». Интересно, что эта картинка уникальна в некоторых аспектах. Ниже мы расскажем, в каких именно.

Рис. 2. Картинка в документе, побуждающая жертву включить макрос
Рис. 2. Картинка в документе, побуждающая жертву включить макрос

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

Рис. 3. Содержимое документа
Рис. 3. Содержимое документа

Внутри документа есть OLE-объект NewMacros. Сам макрос сильно обфусцирован, но его основная функциональность довольно проста: он собирает полезную нагрузку из большого количества строк, хранящихся в hex-виде, после приводит ее к байтам, сохраняет в C:\ProgramData с именем Perfrom.exe и запускает. У самого файла .exe иконка OneDrive.

Рис. 4. Макрос в документе
Рис. 4. Макрос в документе

Perfrom.exe — это лоадер, который мы назвали LuciLoad из-за его связи со следующим стейджем — бэкдором LuciDoor.

При запуске лоадер:

1. Создает скрытое окно с заголовком OneDriveLauncher.

2. Расшифровывает RC4-алгоритмом конфигурацию.

Рис. 5. С2-домен в конфигурации
Рис. 5. С2-домен в конфигурации

Таблица 1. Структура конфигурации

СмещениеНазначение
0x00Флаг, определяющий необходимость создания задачи, запускающей LuciLoad при входе в систему
0x01Параметр для вычисления времени сна
0x05Временная метка (0926, 26 сентября), которая отправляется на C2-сервер и является идентификатором кампании
0x15Magic-значение, которое сравнивается с ответом С2-сервера (123, если совпадает, идет дальше)
0x35Адрес C2 (button.gdakdbysw.xyz: 443)

3. Извлекает из собственных ресурсов изображение, получает байты, которые впоследствии расшифровывает на ключе «microsoft», используя тот же алгоритм RC4.

4. Распаковывает данные алгоритмом LZNT1, используя функцию RtlDecompressBuffer.

5. Рефлективно загружает получившийся PE-модуль.

6. Вызывает у загруженного модуля экспортируемую им функцию, передавая в качестве аргумента расшифрованную конфигурацию.

Следующий стейдж (бэкдор), как и лоадер, написан на C++. Подробно рассмотрим его ниже.

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

Рис. 6. Вредоносный документ с макросом
Рис. 6. Вредоносный документ с макросом

Стоит отметить, что, как и в случае с предыдущими документами, атакующие хоть и подготавливали атаку, но сам текст фишинга не совпадал с атакуемыми компаниями и просто подходил под тему телекоммуникаций: атаковали компанию А, а фишинговый документ сделан под компанию Б.

Макрос, как и в предыдущих атаках, сильно обфусцирован. Он перемещал два файла в папку C:\Users\admin\AppData\Local\Microsoft\PlayReady\:

  • Plasrv.exe (SHA-256: 2d1c235ddc76d427c48c39c22e6dc50 141f09 734 270eaf01 778 713f987e99cc4) — легитимный файл Microsoft;
  • PDH.DLL (SHA-256: 01f28cefdcf3940c19efd7a0446aa0e56c56bc7c955 774c94d6d469fca627a4e) — вредоносная библиотека для DLL side-loading.

В отличие от предыдущих атак здесь использовался бэкдор MarsSnake. О нем мы расскажем в соответствующей главе.

Атаки на Таджикистан

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

В атаках 2025 года злоумышленники прикрепляли вредоносные документы к письмам. В 2026-м вместо этого они использовали ссылки в теле письма, например:

mail.ru.cdhgwnjjcw.xyz/downloadFile/54/66f4ef1f67499bfef117afa5380eced1


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

Рис. 7. Картинка в документе, побуждающая жертву включить макрос
Рис. 7. Картинка в документе, побуждающая жертву включить макрос
Рис. 8. Документ-приманка в атаке на Таджикистан
Рис. 8. Документ-приманка в атаке на Таджикистан

Эта атака была аналогична сентябрьской. В ней злоумышленники снова использовали бэкдор LuciDoor, загружаемый LuciLoad. Отличия заключались в том, что LuciLoad сохранялся под другим именем (explorer.exe) и имел измененную конфигурацию. Конечная полезная нагрузка была полностью идентична сентябрьской.

Как отмечалось ранее, расшифрованная конфигурация LuciLoad, помимо управляющего сервера и порта, содержит временную метку кампании.

Рис. 9. Конфигурация LuciLoad январской кампании
Рис. 9. Конфигурация LuciLoad январской кампании

В качестве С2-сервера LuciDoor использовал IP 93.157.106.75, который использовался MarsSnake в ноябрьской атаке.

LuciDoor

В первой атаке злоумышленники использовали бэкдор LuciDoor, получивший свое название из-за уникальной особенности настройки шрифта Lucida Console 11×18 для корректного отображения текста в терминале. Этот бэкдор отличается исключительной «настойчивостью» при установлении соединения с управляющим сервером. Сначала он пытается подключиться к C2-серверу напрямую, затем — через системный прокси с последовательным перебором различных механизмов проксирования. Если ни один из перечисленных способов не срабатывает, то в качестве прокси используются активные прокси-узлы пользователя. Обо всем этом, а также о функциях бэкдора мы расскажем дальше.

LuciDoor рефлективно загружается с помощью LuciLoad и имеет следующий алгоритм работы:

1. Если в переданной лоадером конфигурации установлен флаг для закрепления в системе, то тогда бэкдор:

  • проверяет, запущен ли текущий процесс из одного из допустимых мест в файловой системе (см. ниже);
  • определяет уровень целостности текущего процесса;
  • формирует файловый путь в зависимости от пользовательских прав:
    • обычный пользователь — %AppData%;
    • администратор — %ProgramData%\Microsoft OneDrive\setup\;
  • с помощью команды «cmd.exe /c move» перемещает текущий исполняемый файл в соответствующий пользовательским правам файловый путь, сохраняя его под именем OneDriveLauncher.exe;
  • создает задачу с именем OneDrive Launcher, запускающую LuciLoad при каждом входе пользователя в систему.
Рис. 10. Создаваемая LuciDoor задача
Рис. 10. Создаваемая LuciDoor задача

2. Предпринимает попытку установить соединение с C2-сервером посредством прямого TCP-подключения. При неудаче извлекает адрес прокси из параметра Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer и пробует установить соединение с использованием HTTP CONNECT, затем — SOCKS5 и, в случае неудачи, SOCKS4. Если прокси не был задан или ни один из способов не привел к успешному соединению, бэкдор извлекает информацию о текущих активных TCP-соединениях, выявляя среди них узлы, использующие типичные прокси-порты. Эти узлы рассматриваются как потенциальные прокси и последовательно используются для повторных попыток подключения теми же методами до установления соединения.

3. Собирает базовую информацию о системе, формируя отчет, передаваемый на управляющий сервер:

  • Полное DNS-имя компьютера;
  • Наименование операционной системы Windows (из ветки реестра SOFTWARE\Microsoft\Windows NT\CurrentVersion);
  • Имя текущего пользователя;
  • Тип архитектуры системы (1 — не x86, 0 — x86);
  • Системный языковой идентификатор (LCID);
  • Сетевой адрес и порт, используемые клиентом для текущего соединения, в формате <IP>:<PORT>;
  • Временная метка текущей кампании (значение из конфигурации);
  • Параметр расчета задержки (значение из конфигурации).

4. Формирует HTTP-заголовок для POST-запроса:

POST http://<hostname>/sys/index.jsp HTTP/1.1\r\n
Host: <hostname>\r\n
User-Agent: Mozilla/5.0 (compatible; Windows NT; rv:72.0) Gecko/20100101 Firefox\r\n
Cache-Control: no-cache, no-store, must-revalidate\r\n
Content-Type: application/octet-stream\r\n
Content-Length: <body_length_bytes>\r\n
Accept: */*\r\n
\r\n
<binary_body>


5. Выполняет побайтовое XOR-шифрование сформированного сообщения:

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

Рис. 11. Шифрование сформированного сообщения
Рис. 11. Шифрование сформированного сообщения

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

Таблица 2. Структура формируемого сообщения

СмещениеРазмерОписаниеПримечание
0x001 байтRandomSeedСлучайный байт
0x011 байтMsgTypeУправляющая команда
0x021 байтMsgMarkerЭтап выполнения
0x03N байтPayload

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

При корректной обработке сообщения поле MsgMarker принимает значение 0. Значение 1 используется для обозначения промежуточного этапа обработки (например, при поэтапной передаче или приеме данных, когда ожидается отправка или получение дополнительных блоков). В случае ошибки в MsgMarker устанавливается значение 2, а в полезной нагрузке передается соответствующий код ошибки.

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

Бэкдор имеет разнообразные функции, такие как: подготовка интерпретатора, выполнение удаленных команд, загрузка файлов, а также их эксфильтрация. Подробное описание представлено в таблице.

Таблица 3. Список команд LuciDoor

Управляющая командаНазначениеПараметры
12Запуск командной оболочки (cmd.exe)Отсутствуют
13Передача строки в стандартный ввод уже запущенной командной оболочки (эмуляция ввода с клавиатуры с автоматическим добавлением Enter)Строка команды для cmd.exe
14Завершение сеанса командной оболочки и очистка ресурсовОтсутствуют
15Инициализация эксфильтрации файлаПуть к файлу
16Запрос следующей части файла (при эксфильтрации больших файлов в несколько частей)Отсутствуют
17Инициализация приема и записи файла на стороне жертвыПуть к файлу
18Запись блока данных в файл, созданный командой 17Бинарный фрагмент файла
61Проверка и настройка консольного окружения (настраивает параметры консоли для корректного отображения текста: устанавливает шрифт Lucida Console с размером 11×18 и переключает кодовую страницу вывода на UTF-8)Отсутствуют

MarsSnake

В ноябрьской атаке злоумышленники использовали второй, не менее примечательный бэкдор, который ранее лишь упоминался в квартальном отчете. Как и в случае с LuciDoor, используемый группировкой бэкдор MarsSnake обладает характерной особенностью: его конфигурация может изменяться без пересборки исполняемого файла и имеет характерную метку. Для обновления параметров конфигурации злоумышленникам достаточно изменить встроенный блок, зашифрованный XOR.

В начале 2026 года в публичную песочницу был загружен файл, явно связанный с инфраструктурой сентябрьской атаки, — 5.181.1.153.

Рис. 12. Пересечение ВПО по IP на портале PT Fusion
Рис. 12. Пересечение ВПО по IP на портале PT Fusion

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

В частности, в семплах 2026 года появился характерный PDB-путь, который полностью отсутствовал во всех ноябрьских образцах:

D:\project\MarsSnake\bin_shellcode\load_http_64.pdb


Про похожий путь писали исследователи ESET в квартальном отчете:

D:\yu_project\MarsSnake\bin_shellcode\load_http_64.pdb


Как и в случае с LuciLoad и LuciDoor, MarsSnake — это конечная полезная нагрузка, которую загружает лоадер, названный нами MarsSnakeLoader.

При запуске лоадера бинарные данные сначала расшифровываются алгоритмом RC4 с жестко заданным ключом «qio1239djk123sd.a; 13,», а после распаковываются алгоритмом DEFLATE. Затем в адресном пространстве процесса выделяется исполняемая область памяти, в которую копируется получившаяся полезная нагрузка.

Перед тем как управление будет передано на точку входа бэкдора, MarsSnakeLoader проверяет наличие в нем строки «OOkupFunction*71N». Обнаружив ее, MarsSnakeLoader записывает по соответствующему адресу подготовленную конфигурацию, представляющую собой многократно повторяющуюся строку «OOkupFunction*71» и зашифрованную на ней c помощью XOR C2-конфигурацию, содержащую информацию о подключении (до трех записей).

Рис. 13.1. Конфигурация бэкдора до записи
Рис. 13.1. Конфигурация бэкдора до записи
Рис. 13.2. Конфигурация бэкдора после записи
Рис. 13.2. Конфигурация бэкдора после записи
Рис. 13.3. Конфигурация бэкдора после расшифрования
Рис. 13.3. Конфигурация бэкдора после расшифрования
Рис. 13.1. Конфигурация бэкдора до записи
Рис. 13.2. Конфигурация бэкдора после записи
Рис. 13.3. Конфигурация бэкдора после расшифрования

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

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

Загруженный в результате бэкдор MarsSnake расшифровывает полученную конфигурацию и собирает следующую информацию о системе:

  • локальный IPv4;
  • версия Windows;
  • имя пользователя;
  • NetBIOS-имя компьютера.

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

1. Формируется строка формата <comuter_name><local_ip><userame>, которая сначала искусственно «раздувается» — каждый байт дублируется парой:

  • оригинальный байт
  • оригинальный байт ⊕ 0×5A

2. По получившейся последовательности вычисляется хеш по формуле: hash = hash × 31 + byte.

3. Вычисленное значение используется при формировании строкового идентификатора системы, который записывается в GUID-подобном формате %08llx-%04llx-%04llx-%04llx-%012llx, где:

  • первые три поля формируются на основе рассчитанного хеш-значения (старшие и младшие разряды);
  • четвертое и пятое поля являются фиксированными константами — 0×8E7C и 0×49EEB6C29 776DE0F.

Перед тем как собранная информация будет передана на управляющий сервер, бэкдор устанавливает соединение с одним из указанных в конфигурации C2-серверов и передает ему с помощью HTTP-POST-запроса magic-значение «dsalsjd89w21dcx9cwad@». Полученный ответ также должен содержать magic-значение «asdas290e/cz/x213/.14», получив которое бэкдор отправляет данные о системе, ожидая получить в ответе команду для выполнения. Полный список поддерживаемых команд представлен в таблице.

Таблица 4. Перечень команд, поддерживаемых MarsSnake

Номер командыНазначение
1Выполнить одиночную команду в cmd.exe
2Запустить реверс-шелл (запускает cmd.exe с перенаправленными stdin/stdout)
3Получить от С2-сервера имя файла, создать или открыть его и записать переданные данные
4Получить от С2-сервера имя файла для выгрузки и передать его на С2-сервер
8Собрать список всех логических дисков системы с указанием их типа и передать его на C2-сервер
11Завершить соединение
12Передать на С2-сервер листинг запрошенной директории
13Heartbeat

Важной деталью сетевого взаимодействия является наличие специального magic-маркера «&@&DWJ@*&! @(@#&*(@$&^», который служит идентификатором завершения или прерывания выполнения команды и может быть использован как клиентом, так и сервером.

Все сообщения, отправляемые бэкдором, имеют фиксированную структуру. В качестве передаваемого параметра используется текущее время. Структура формируемых сообщений следующая:

POST /eg.js?t=<unix_time> HTTP/1.1\r\n
Accept: */*\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; ) AppleWebKit/537.36 (KHTML, Gecko) Chrome/137.0.0.0  Edg/137.0.0.0\r\n
Connection: Keep-Alive\r\n
Content-Type: application/octet-stream\r\n
Content-Length: %d\r\n
\r\n
data=<ENCRYPTED_BODY>


Тело запроса начинается с двух байт длины, за которыми следуют сами передаваемые данные. Сначала оба этих значения по отдельности обфусцируются операцией XOR с ключом rYB1oDHVMViTRnaGsFw1TbHJ1z1aZ. Затем получившийся буфер целиком шифруется алгоритмом AES-128 в режиме ECB без использования вектора инициализации с применением того же ключа.

В процессе исследования мы нашли еще несколько семплов MarsSnake, которые назывались так же, как в атаках на Киргизию, — PDH.DLL.

Как и во всех предыдущих случаях, найденные библиотеки мимикрировали под легитимный Windows Performance Data Helper.

Рис. 14. Метаданные LuciLoad
Рис. 14. Метаданные LuciLoad

Один из найденных семплов использовал IP-адрес 5.181.1.153. Этот IP-адрес ранее разрешался на домен button.gdakdbysw.xyz — управляющий сервер LuciDoor в сентябрьской атаке на Киргизию.

Кроме того, были обнаружены семплы MarsSnake, использованные в атаке на Китай. Подробнее об этом ниже.

Особенности атак и атрибуция

Языки в документах

Исследователи из ESET отнесли атаки, связанные с MarsSnake, к группировке, которую назвали UnsolicitedBooker. По мнению ESET, эта группировка пересекается с группой Space Pirates и была замечена в атаках на Саудовскую Аравию.

Интересно, что текст документов содержал русский язык, но при этом в полях Declared Languages и Language Guesses были указаны три другие: арабский (Саудовская Аравия), английский и китайский.

Рис. 15. Поля Declared Languages и Language Guesses в документах
Рис. 15. Поля Declared Languages и Language Guesses в документах

В самих документах (word/settings.xml) присутствует поле eastAsia="zh-CN", хотя китайский язык нигде не используется.

Рис. 16. Фрагмент word/settings.xml документа
Рис. 16. Фрагмент word/settings.xml документа

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

Картинки, сделанные с помощью Snipaste

Злоумышленники использовали картинки, которые побуждали пользователя включить макрос. Для создания этих картинок использовался китайский инструмент Snipaste. В строках всех документов из-за этого есть уникальная строка Generated by Snipaste.

Рис. 17. Строка в Generated by Snipaste в документе
Рис. 17. Строка в Generated by Snipaste в документе
Рис. 18. Метаданные картинки
Рис. 18. Метаданные картинки

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

Важно отметить, что такие метаданные присутствовали только в атаках 2025 года. В 2026-м злоумышленники использовали уже другую картинку (Рис. 7). Интересно, что эта картинка использовалась во вредоносном документе группировкой Vicious Panda в атаке на Израиль в 2023 году. Злоумышленники тогда применяли бэкдор Chinoxy. При этом других пересечений между группировками UnsolicitedBooker и Vicious Panda мы не заметили.

Использование взломанных устройств в качестве С2-сервера

По крайней мере в одном случае мы заметили, что группировка использовала TLS-стек с характерным отпечатком устаревшей библиотеки PolarSSL. Это показалось странным, и мы начали дальнейшее изучение.

В 2015 году PolarSSL был переименован и развит в Mbed TLS. В MikroTik RouterOS при включении www-ssl по умолчанию генерируется сертификат, подписанный встроенным тестовым CA из библиотеки Mbed TLS (ex-PolarSSL). На данный момент самостоятельно использовать именно PolarSSL нет смысла: это устаревший проект и его кодовая база развивается под новым именем. Более того, в исследуемом C2-сервере этот TLS-стек работал на стандартном порту 443, а не на каком-то нестандартном.

В ходе дальнейшего исследования мы убедились, что характерный отпечаток PolarSSL появляется именно по этой причине: хакеры взломали роутер MikroTik и использовали его в качестве C2-сервера для своих атак.

Атаки на Китай и использование FTPlnk_phishing

В процессе поиска дополнительных индикаторов, связанных с атаками, мы обнаружили идентичные семплы MarsSnake, загруженные из Китая. Одним из таких семплов был PDH.DLL (SHA-256: a3f223 350e03fb7ae6ac4ddf170a94d40da0a525 375b764d361a033af5ea15e8), находящийся внутри архива (SHA-256: 3c9e76eee8c813e2de16 640 504 118 550b18b21e4f951df47ef8914bb5b7a031b).

Структура архива была такой.

Рис. 19. Структура фишингового архива в атаке на Китай
Рис. 19. Структура фишингового архива в атаке на Китай

Папка .init скрытая. По умолчанию при открытии доступен .lnk-файл c китайским названием, связанным со стоимостью счетчиков воды в Чунцине.

Техника с .lnk-файлом и множеством скрытых подпапок часто встречалась у группировки Mustang Panda (например, см. исследование BlackBerry), но сама полезная нагрузка существенно отличается.

LNK-файл содержит команду, которая запускает version.txt, являющийся BAT-скриптом.

Рис. 20. Метаданные LNK-файла с командой
Рис. 20. Метаданные LNK-файла с командой

Этот скрипт переносит файл help.log в c:\programdata с именем help.vbs и запускает его.

Рис. 21. Содержимое version.txt
Рис. 21. Содержимое version.txt

Скрипт help.vbs создает папку C:\ProgramData\Oracle\Java\installcache\ и переносит туда файл plasrv.log, который переименовывает в plasrv.exe и запускает. Попутно скрипт удаляет оригинальный LNK, скрытую папку и в конце удаляет сам себя.

Рис. 22. Содержимое файла help.log
Рис. 22. Содержимое файла help.log

Файл plasrv.log/plasrv.exe идентичен MarsSnake, который мы видели в атаках на Киргизию с С2-сервером 81.70.28.71. Единственное отличие заключалось в том, что он поставлялся без MarsSnakeLoader.

Как мы уже говорили, MarsSnake — это довольно уникальный инструмент. Раньше мы не видели его упоминаний нигде, кроме квартального отчета ESET, поэтому на данный момент мы считаем его уникальным для этой группировки. Мы считаем, что это или пентест, или же UnsolicitedBooker —это киберпреступная группировка, которая также атакует Китай.

В ходе исследования мы обратили внимание на уникальную дату создания LNK: 2019:12:07 09:09:51+00:00, а также на Machine ID: desktop-s2c6iad. Про этот Machine ID писали StrikeReady Labs в 2024 году в контексте атаки на таможню Китая.

Рис. 23. Пост StrikeReady Labs в соцсети X
Рис. 23. Пост StrikeReady Labs в соцсети X

Исследуя файлы с таким же временем создания и Machine ID, мы обнаружили около 40 разных вредоносных файлов. Большая часть была на китайском, многие файлы были из таких регионов и стран, как Гонконг, КНР, Тайвань, Южная Корея.

Одним из таких файлов был «ด่วนมาก เชิญเข้าร่วมโครงการความร่วมมือฝึกอบรมหลักสูตร FBI.docx.lnk» (SHA-256: 2f52aa02ccc45e5a4f5a8045aeb42f8428b48a5 814 435ffb8d75d41a7 735 811c), использованный Mustang Panda в атаке на полицию Таиланда. В этом LNK был другой Machine ID, но дата создания была такая же: 2019:12:07 09:09:51.

Далее было обнаружено, что время и Machine ID идентичны LNK из репозитория https://github.com/Pizz33/FTPlnk_phishing, который является китайским инструментом для пентеста с предупреждением о легальном использовании.

Рис. 24. Репозиторий FTPlnk_phishing на GitHub
Рис. 24. Репозиторий FTPlnk_phishing на GitHub
Рис. 25. Метаданные phishing.docx.lnk из репозитория FTPlnk_phishing
Рис. 25. Метаданные phishing.docx.lnk из репозитория FTPlnk_phishing

Таким образом, можно сказать, что как минимум две группировки, Mustang Panda и UnsolicitedBooker, использовали FTPlnk_phishing в своих атаках.

Выводы

Ранее группировка UnsolicitedBooker, по заявлению исследователей ESET, атаковала Саудовскую Аравию. Следы этого можно до сих пор наблюдать в их фишинговых документах, как было показано в нашем исследовании. При этом осенью 2025-го группировка активно переключилась на телекоммуникационные компании СНГ и продолжила свои атаки в 2026 году.

В своих атаках группировка использовала редкие инструменты китайского происхождения. Интересно, что в самом начале группа использовала бэкдор, который мы назвали LuciDoor, но впоследствии переключилась на бэкдор MarsSnake. При этом в 2026 году группа сделала разворот и снова начала использовать LuciDoor.

Помимо этого, как минимум в одном случае мы видели, что злоумышленники использовали взломанный роутер в качестве С2-сервера, а также что их инфраструктура в части атак мимикрировала под российскую.

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

Файловые индикаторы компрометации

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

Матрица MITRE ATT&CK

Вердикты продуктов Positive Technologies

PT Sandbox

Правила PT ESC

  • PTESC_apt_win_CN_UnsolicitedBooker__Backdoor__LuciDoor
  • PTESC_apt_win_CN_UnsolicitedBooker__Dropper__LuciLoad
  • PTESC_apt_win_CN_UnsolicitedBooker__Backdoor__MarsSnake
  • PTESC_apt_win_CN_UnsolicitedBooker__Dropper__
    MarsSnakeLoader

Поведенческие правила

  • Trojan.Win32.Generic.a

PT AV

  • Trojan.LuciDoor
  • Trojan.LuciLoad
  • BScope.Trojan.LuciLoad
  • Trojan.Win64.MarsSnake

Сетевые вердикты

  • REMOTE [PTsecurity] MarsSnake Checkin sid: 10 016 190
  • REMOTE [PTsecurity] LuciDoor C2 Communication sid: 10 016 281