- Были обнаружены атаки группировки CapFix, ориентированные на российские организации из промышленной и авиастроительной отраслей.
- Злоумышленники использовали легитимную взломанную инфраструктуру, доступ к которой, вероятно, был получен путем эксплуатации критически опасной уязвимости.
- Злоумышленники использовали модифицированную версию CapDoor, который используется для загрузки следующих стадий, например скачивания SectopRAT.
- Были зафиксированы разные версии CapDoor, которые мы разобрали и показали их отличие от ранее описанных.
- Мы зафиксировали ранние атаки на ряд стран, в ходе которых тематика криптовалют использовалась в качестве приманки для доставки CapDoor. Кроме того, были обнаружены фишинговые сайты, маскирующиеся под страницы бронирования отелей и использующие технику ClickFix.
Авторы
Александр Бадаев
Специалист группы киберразведки TI-департамента, Positive Technologies
Максим Шаманов
Младший специалист группы исследования сложных угроз TI-департамента, Positive Technologies
Ключевые моменты
Введение
В конце 2025 года специалисты отдела исследования угроз экспертного центра безопасности Positive Technologies (PT ESC) выявили необычные атаки на российские организации. В атаках злоумышленники использовали легитимную инфраструктуру, которую, по нашему предположению, взломали непосредственно перед активными действиями, в конце осени.
В процессе исследования мы выяснили, что за этим стоит группировка CapFix. Ранее она атаковала пользователей с помощью техники ClickFix, а также использовала фишинговые файлы, связанные с темами криптовалюты и бронирования отелей.
В общей сложности большинство атак происходили по следующей схеме.

C начала 2026 года мы следили за инфраструктурой злоумышленников и обнаружили, что они возобновили свои атаки в марте, модифицировав свои инструменты.
Атаки в конце декабря 2025 года
В конце декабря мы заметили ряд PDF-документов, которые содержали в себе ссылки на скачивание RAR-архивов. Каждый такой документ побуждал пользователя скачать его заново — якобы он поврежден.

При нажатии пользователь скачивал архив со взломанного легитимного ресурса.
Внутри архивов находился скрипт 2025130002313.chm, который скачивал файл с легитимного взломанного домена a.gif, переименовывал его в dmitry_medvedev.msi, а также открывал легитимный PDF-документ:
- https://regulhub.***.ru/upload/iblock/2b6/rw2lul4zdfmj6w2f7w70fp5tcfhnrjdt.pdf

Сам файл .msi подписан QILING Tech и маскируется под приложение QILING Disk Master. При запуске он создавал папку Disk Master в C:\Users\admin\AppData\Local\ и выгружал в нее множество различных DLL, а также легитимный исполняемый файл MetadataConvert.exe, уязвимый к технике DLL sideloading. В процессе выполнения он подключался к скомпрометированному легитимному IP-адресу, который он использовал в качестве С2-сервера. Подключение происходило через следующие запросы:
- hxxp://*ip_adress*//bitrix24/?login= [a‑z]{30}
Файлы a.gif/dmitry_medvedev.msi, как было ранее указано, загружались с легитимного домена через поддомен mail. A-запись этого поддомена указывала на IP-адрес, который использовался как Shared IP для размещения нескольких других поддоменов mail.

На конец декабря и ранее, когда злоумышленники проводили атаки, этот узел был уязвим к CVE-2025-49113 — критически опасной уязвимости (оценка 9,9) в популярном почтовом веб-клиенте Roundcube Webmail. Поэтому мы предполагаем, что именно так они завладели инфраструктурой.
Ранние атаки группировки и инфраструктура
В ходе дальнейшего исследования мы выяснили, что злоумышленники использовали несколько поддоменов mail, которые размещались на этом IP-адресе. Таким образом мы смогли обнаружить признаки ранних атак, например PDF-документ SHA-256: 23f693029d8e00999a1c0e68d72884fd55f874582780afb94dbb1d3f8fb07f38.

При нажатии кнопки «CHM оснастка» в PDF-документе скачивался архив sankcionnui-MO-RF.rar со взломанного легитимного сайта.
По общим метаданным мы нашли множество PDF-файлов, которые действовали аналогичным образом, со следующими названиями: «Инструкция_минная_угроза_ВСУ_10.11.2025.pdf» и «Перечень_документов_для_отчета_по_тренингу_ИБ_ФСБ (56).pdf». Про эти атаки писали исследователи из F6 в контексте атаки финансово-мотивированной группы CapFix.
В процессе анализа самих семплов мы выяснили, что вредоносное ПО, которое применяли злоумышленники, — это ПО, которое специалисты F6 назвали CapDoor. Ниже в соответствующем разделе — подробный разбор этого ВПО и обнаруженных цепочек.
Во время исследования атаки, связанной с файлом dmitry_medvedev.msi, мы также заметили, что злоумышленники, помимо легитимных IP-адресов, в качестве С2-сервера для CapDoor использовали собственный домен:
- https://windowsextupdates.com/bitrix24/?login=[a‑z]{30}
В качестве имейла для этого DNS-имени преступники использовали почту на onionmail.org — virrtasuin93@onionmail.org. Мы обнаружили всего три таких домена, связанных с этим адресом и маскирующихся под обновления Windows:
- microsoftpathes.com,
- windowsextupdates.com,
- securityswindows.com.

Дополнительного исследовав инфраструктуру, мы обнаружили еще ряд доменов, связанных с этим злоумышленником. Они также относились к onionmail, но уже другому адресу — salasunion@onionmail.org. Среди этих доменов также были два, описанных ранее, — documents-sed.com и sed-documents.com.

Кроме того, в ранних ноябрьских атаках группировка использовала PDF-файл с названием «Приказ № ФСБ-1412025 и подробности о досудебной претензии (57).pdf».

Имя документа и его содержание не совпадают. В этом случае по клику скачивался RAR-архив с домена support-archiver.com, в котором был MSI с дальнейшей установкой CapDoor.
Исследуя атаки, связанные с этим доменом, мы обнаружили PDF-файлы и письма, которые злоумышленник посылал в различные организации. Среди последних — две, связанные с авиастроением, четыре — с промышленностью и одна — образовательная.

Письма отправлялись с домена ddmmitriypetrovv.ru. По связанным доменам мы нашли еще два, связанных с ним и с самим злоумышленником, — они тоже включают в себя сочетание имени и фамилии. При этом конкретных атак с них мы не зафиксировали:
- leonidkalatov.ru,
- andreiushakov.ru.

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

Дополнительно при открытии вредоносного HTML-файла загружались соответствующие картинки и лого организаций с легитимных сайтов.
Атаки в марте 2026 года
В начале марта мы обратили внимание на новые PDF-документы от этой группировки. Они мимикрировали, как и раньше, под официальные российские структуры.

При нажатии кнопки «Скачать», как и в старых атаках, загружался вредоносный архив. Отличие в том, что в марте 2026-го злоумышленники решили использовать свою инфраструктуру, которую ранее использовали только в качестве С2-сервера для CapDoor. Так, архив скачивался по следующей ссылке:
- https://windowsextupdates.com/updates/latest/q/Document.rar
Интересно, что злоумышленники настроили редирект на домене, и пользователь всегда перенаправлялся на ya.ru. Кроме того, они использовали обновленный бэкдор CapDoor с расширенной функциональностью.

Далее — о самом CapDoor: подробно расскажем о функциях и изменениях, которые мы обнаружили в атаках 2025–2026 годов, и о том, с каким ПО он совместно применялся.
CapDoor: не то загрузчик, не то бэкдор
Цепочка загрузки через DLL sideloading
При запуске установочный MSI-файл создает в каталоге %LOCALAPPDATA% директорию с названием устанавливаемого якобы легитимного программного обеспечения, в которой размещает большое количество динамических библиотек и прочих файлов, необходимых для дальнейшей работы.
Рис. 14.1, 14.2, 14.3. Примеры содержимого создаваемых директорий
Примечательно, что названия создаваемых директорий и устанавливаемого программного обеспечения не совпадают с именами поставляемых установочных файлов.
Ключевой особенностью исследуемых образцов является многоступенчатая цепочка DLL sideloading, посредством которой осуществляется запуск полезной нагрузки. Вместо прямого внедрения злоумышленники используют несколько взаимосвязанных библиотек, каждая из которых выполняет определенную роль в общей схеме установки. В рамках этой цепочки можно выделить следующие компоненты:
- DLL-оркестратор, управляющая процессом установки;
- DLL-watchdog, отвечающая за скрытие окон текущего процесса;
- DLL-inject, экспортируемые функции которой используются для размещения и запуска полезной нагрузки.
После сохранения файлов в созданной директории запускается легитимный исполняемый файл, имеющий действительную цифровую подпись. Его выполнение приводит в действие описанную выше цепочку DLL sideloading, обеспечивающую загрузку CapDoor в адресное пространство легитимного процесса.

Как видно из схемы, легитимный исполняемый файл посредством механизма sideloading загружает первую динамическую библиотеку. Эта библиотека не содержит вредоносной функциональности и выполняет единственную задачу — в процессе инициализации загружает через sideloading основной DLL-файл, выступающий оркестратором дальнейшей установки. Алгоритм его работы сводится к следующим действиям:
1. Загрузить при инициализации, также через механизм sideloading, динамическую библиотеку с экспортируемыми функциями, которые впоследствии используются для запуска шеллкода (DLL-inject).
2. Используя sideloading, загрузить DLL-watchdog, расположенный в созданной директории. Этот модуль отвечает за скрытие окон текущего процесса.
При анализе множества образцов в одном случае было выявлено характерное имя переменной, использовавшейся злоумышленниками для хранения названия данной библиотеки, — windowshider_dll_name (что дословно переводится как «имя библиотеки для скрытия окон»). Не менее показательным является и название функции данного модуля, использованной в том же образце, — From_Detect.

3. Расшифровать полезную нагрузку, хранящуюся во внешнем файле. В большинстве случаев зашифрованная полезная нагрузка поставлялась WAV-файлах и находилась по определенному смещению внутри него. При этом мы также обнаружили атаки, в которых шеллкод хранился в файле с расширением .dat. Примеры имен файлов, содержащих полезную нагрузку:
- systemstatdrawing.wav;
- thumbsactivation.wav;
- updatecommunity.wav;
- Common.wav;
- Library.wav;
- Apartment.dat.
Любопытно, что при прослушивании WAV-файлов можно услышать полноценную мелодию будильника, длящуюся несколько секунд.
4. Запустить полученный в результате расшифрования шеллкод с использованием экспортируемых функций DLL-inject, загруженной ранее (на шаге 1):
- Первая функция с помощью VirtualAlloc () выделяет в адресном пространстве легитимного процесса область памяти с правами на чтение и запись. Затем при помощи BCryptGenRandom () выделенный буфер заполняется случайными данными, после чего функция возвращает указатель на участок внутри этой области с некоторым смещением. В дальнейшем именно по этому адресу размещается полезная нагрузка, что затрудняет ее обнаружение и анализ;

- Вторая функция с помощью VirtualProtect () изменяет атрибуты защиты ранее выделенной области памяти, делая ее исполняемой, после чего передает управление размещенному в ней шеллкоду. Для его запуска используется функция EnumSystemCodePagesW (), которой передается адрес шеллкода.

Отдельного внимания заслуживает тот факт, что в ходе исследования были обнаружены версии основных компонентов, реализованные как на C++, так и на C#. При этом независимо от языка реализации для них была характерна одна общая особенность — обфускация большим количеством мусорных инструкций с использованием функций GDI.

Загрузочный шеллкод
Загруженный шеллкод использует хеш-функцию FNV-1 для динамического разрешения адресов функций, а также алгоритм LCG для расшифрования строк. После запуска он просматривает содержимое директории в поисках файла с одним из следующих расширений: .bak, .db, .bin, .dat, .raw, .pak. Обнаружив такой файл, шеллкод расшифровывает его содержимое и передает управление получившейся полезной нагрузке, представляющей собой бэкдор CapDoor, реализованный в виде шеллкода.
Для закрепления в системе выполняется изменение параметров автозапуска в реестре: легитимный исполняемый файл установленного программного обеспечения добавляется в ключ автозагрузки HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run.
Бэкдор CapDoor
После запуска CapDoor использует для динамического разрешения адресов функций хеш-функцию MurmurHash3. Во всех исследованных нами образцах в качестве начального значения для алгоритма использовалась нестандартная константа 0xE5BBB.
Затем выполняется попытка создать или открыть файл lockfile в каталоге %PROGRAMDATA% и захватить на нем файловую блокировку. Этот файл используется для межпроцессной синхронизации. В случае успеха CapDoor с помощью функции CoCreateGuid () генерирует уникальный GUID в формате %08lx-%04x-%04x-%04x-%04x%08lx, после чего собирает информацию о системе, формируя следующую структуру.
struct COLLECTED_DATA {
DWORD msgType; // = 1
DWORD guidLen;
BYTE guid[guidLen];
DWORD computerFqdnLen;
BYTE computerFqdn[computerFqdnLen];
DWORD envUserNameLen;
BYTE envUsername[envUserNameLen];
DWORD logonDomainLen;
BYTE logonDomain[logonDomainLen];
DWORD osMajor;
DWORD osMinor;
DWORD osBuild;
BYTE isServer;
BYTE is64Bit;
DWORD exeNameSize;
BYTE exeName[exeNameSize];
BYTE isElevated;
};
Рис. 20. Структура сообщения с системной информацией
Сформированное сообщение шифруется алгоритмом ChaCha20 и отправляется на управляющий сервер. Если сообщение было отправлено успешно, сгенерированный GUID записывается в файл %PROGRAMDATA%\lockfile, чтобы при последующих запусках не происходила его повторная генерация. После этого CapDoor повторно отправляет сообщение, указывая в его теле только GUID, ожидая в ответ получить управляющую команду.
В ответ на переданный GUID сервер отправляет сообщение следующего формата.
struct C2_REPLY
{
BYTE key[32];
BYTE nonce[12];
BYTE ciphertext[];
};
Рис. 21. Структура сообщения, получаемого от управляющего сервера
Расшифровав полученное сообщение, CapDoor приступает к его обработке. Следует отметить, что интервал взаимодействия с управляющим сервером составляет две минуты. Сообщение может содержать как одно конкретное задание для выполнения (например, запуск команды, скачивание и запуск полезной нагрузки или снятие снимка экрана), так и произвольную комбинацию таких заданий: одно, два или все сразу. Дополнительно каждое задание представлено в виде связного списка и содержит указатель на следующее задание при его наличии.
struct С2_REPLY {
int64 unknown;
struct POWERSHELL_TASK *PowerShellTaskList;
struct DOWNLOAD_TASK *DownloadTaskList;
struct SCREENSHOT_TASK *ScreenshotTaskList;
};
struct POWERSHELL_TASK {
struct POWERSHELL_TASK *Next;
uint16_t *TaskId;
uint16_t *PowershellCommand;
};
struct DOWNLOAD_TASK {
struct DOWNLOAD_TASK *Next;
uint16_t *TaskId;
uint16_t *DownloadUrl;
int64 InstallType;
uint16_t *OptionalParam; // e.g. dllExportName
};
struct SCREENSHOT_TASK {
struct SCREENSHOT_TASK *Next;
uint16_t *TaskId;
};
Рис. 22. Структура заданий от управляющего сервера
Ниже приведен полный список поддерживаемых CapDoor задач.
| Тип задачи | Подтип задачи | Действие | Механизм запуска | Описание |
|---|---|---|---|---|
| POWERSHELL_TASK | — | Выполнение произвольной PowerShell-команды | %WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NoProfile -Command - | Запускает PowerShell-скрипт, настроенный на чтение команды из stdin. Команда передается через стандартный ввод; после ее выполнения в stdin записывается «\r\nexit\r\n», что приводит к завершению процесса |
| DOWNLOAD_TASK | 1 | Запуск исполняемого файла | ShellExecuteW(NULL, L"open", L"%TEMP%\\[a-z]{20}.exe", NULL, NULL, 0) | Исполняемый файл загружается с управляющего сервера, сохраняется во временный каталог и запускается через ShellExecuteW () |
| DOWNLOAD_TASK | 2 | Запуск DLL через rundll32 | ShellExecuteW(NULL, L"open", L"%WINDIR%\\System32\\rundll32.exe", L"\"%TEMP%\\[a-z]{20}.dll\", <ExportName>", NULL, 0) | DLL-файл загружается с управляющего сервера, сохраняется во временный каталог, затем запускается через rundll32 с указанием экспортируемой функции <ExportName> |
| DOWNLOAD_TASK | 3 | Регистрация DLL через regsvr32 | ShellExecuteW(NULL, L"open", L"%WINDIR%\\System32\\regsvr32.exe", L"/s \"%TEMP%\\[a-z]{20}.dll\"", NULL, 0) | DLL-файл загружается с управляющего сервера, сохраняется во временный каталог и «бесшумно» (/s) регистрируется через regsvr32 |
| DOWNLOAD_TASK | 5 | Установка MSI-файла | MsiInstallProductW(L"%TEMP%\\[a-z]{20}.msi", NULL) | Загруженный с управляющего сервера MSI-файл сохраняется во временный каталог и устанавливается через Windows Installer API |
| SCREENSHOT_TASK | — | Снятие скриншота экрана | — | Выполняет захват изображения основного экрана, кодирует его в PNG, после чего разбивает полученный буфер на фрагменты по 200 КБ и последовательно передает их на управляющий сервер |
CapDoor последовательно проверяет наличие задач из списка и, обнаружив их, выполняет одну за другой.

Результат выполнения отправляется на управляющий сервер и имеет следующую структуру.
struct TASK_REPORT_PACKET {
DWORD msgType; // = 3
DWORD GuidLen;
BYTE Guid[GuidLen]
DWORD TaskIdLen;
BYTE TaskId[TaskIdLen];
DWORD DataLen;
BYTE Data[DataLen];
};
Рис. 24. Структура сообщения с результатом
Проанализировав большое количество различных версий бэкдора CapDoor и используемых цепочек его поставки, мы установили, что инструмент активно развивается и регулярно обновляется. Например, предыдущие версии имели следующие отличия:
- Вместо цепочки из DLL sideloading для загрузки CapDoor злоумышленники использовали загрузчик GHOSTPULSE (IDATLOADER или HIJACKLOADER).
- В ранних версиях CapDoor распространялся в виде исполняемого файла, тогда как в новых атаках он представлен в виде шеллкода.
- Для запуска CapDoor применялась техника Process Hollowing.
- Ранние версии CapDoor не позволяли делать скриншоты экрана, эта функциональность появилась в более поздних версиях.
- Для запуска MSI-файлов, загруженных по команде управляющего сервера, ранее использовался вызов ShellExecuteW(NULL, L"open", L"msiexec.exe", L"/i \"%TEMP%\\[a-z]{20}.msi\"", NULL, 0). В актуальных версиях для этого используется MsiInstallProductW().
- В ранних версиях CapDoor поддерживалась загрузка и выполнение шеллкода в рамках обработки задачи DOWNLOAD_TASK, однако в последних версиях эта возможность отсутствует.
Дополнительная информация
Группировка CapFix рассматривается исследователями как финансово мотивированная, хотя ее недавняя активность по тематике фишинговых инструментов и выбору целей ближе к атакам уровня APT или хактивистов. Ранее CapFix уже проводила атаки на российские компании с использованием механизма капчи (ClickFIX). В этих инцидентах CapDoor был обозначен как «неклассифицированный троян удаленного доступа (RAT)».
Во время исследования CapDoor мы обнаружили ранние семплы, которые злоумышленники использовали в атаках. Так, мы видели несколько семплов, которые использовали изображение яйца со значком биткоина в качестве иконки и при запуске. Например, SHA-256: d67d1628ff5ea924c25c8056446a8143e1171fab7e30dddb24aca3255dad8817 в процессе запуска показывал следующее изображение:

Мы нашли более 10 подобных семплов, которые загружались в публичные песочницы из разных локаций (среди стран — Голландия, Мексика, США, Франция). Все они были загружены в ноябре 2025 года. Сами иконки и изображение при запуске напоминают логотип и графику нишевого сервиса BitcoinIRA.
Среди них были обнаружены семплы, использовавшие CapDoor со следующими запросами на С2-сервера:
- http://85.192.49.81/search/?text=[a‑z]{30}
- http://94.156.232.113/search/?text=[a‑z]{30}
В качестве финальной полезной нагрузки в этих семплах мы видели SectopRAT или ArechClient2.
Интересно, что за месяц до этого, в сентябре и октябре 2025-го, С2-сервер CapDoor 85.192.49.81 использовался в качестве управляющего для AsyncRAT в атаках ClickFix. Так, например в октябре злоумышленники использовали домен booking.l-extranet.com с применением техники ClickFix.

В этих атаках группировка использовала страницы GitHub, которые перенаправляли жертв на вредоносные домены. Например, страница bedrewiews.github.io/reservasboolikng.com/ перенаправляла пользователя на booking.fleps-extranet.com.


Поскольку в атаках злоумышленники использовали AsyncRAT, а не CapDoor, их нельзя однозначно связать с активностью группировки CapFix. Однако учитывая все данные (не только инструментарий), мы считаем, что за этими атаками тоже стоят они.
Как мы рассказывали ранее, злоумышленники в осенних атаках использовали несколько PDF-файлов, которые побуждали жертву скачать дополнительную нагрузку. В одном из таких документов мы обратили внимание на формулировки.

Злоумышленники допустили несколько ошибок — как языковых, так и фактических:
- Упоминание «ЦИБ МО РФ» — такой структуры не существует.
- Во фразе «Нажмите кнопку ниже, для установки» допущена пунктуационная ошибка (лишняя запятая).
- Термин «CHM оснастка» и прочие формы этого слова. В документации Microsoft «оснастка» — это перевод «snap in», однако в данном контексте такое сочетание («CHM Snap-In») выглядит неестественно и является ошибочной интерпретацией.
- В статье мы также указывали, что в некоторых случаях названия файлов и содержание фишинговых документов не совпадали.
Выводы
CapFix продолжает совершенствовать CapDoor и вредоносные сценарии для проведения более успешных атак. Ранее группировка активно применяла фишинговые рассылки с документами, использующими финансовую тематику в качестве приманки (тему криптовалюты и все, что связано с темой денег), однако теперь она все чаще маскирует письма под официальные сообщения от государственных структур.
Злоумышленники используют скомпрометированную легитимную инфраструктуру, что усложняет анализ и детектирование атак. В марте 2026 года CapFix начала использовать домены, которые мы заметили еще в конце 2025 — начале 2026 года. Мы считаем, что группировка планировала использовать еще два домена, которые на данный момент связаны с ней, но неактивны.
Индикаторы компрометации
Файловые индикаторы компрометации
Сетевые индикаторы компрометации
Матрица MITRE ATT&CK
Вердикты продуктов Positive Technologies
PT Sandbox
PT ESC
| Вердикт |
|---|
| PTESC_apt_win_ZZ_CapFix__Backdoor__CapDoor__mainModule__PeVersion |
| PTESC_apt_win_ZZ_CapFix__Dropper__CapDoor__decryptStage |
| PTESC_apt_win_ZZ_CapFix__Dropper__CapDoor__decryptStage__NetVersion |
| PTESC_apt_win_ZZ_CapFix__Trojan__CapDoor__PrepareAndInject__NetVersion |
| PTESC_apt_win_ZZ_CapFix__Trojan__CapDoor__hideWindow |
Поведенческие правила
| Вердикт |
|---|
| Trojan.Win32.Generic.a |
| Exploit.Win32.DirectIo32.a |
| Trojan.Win32.Inject.a |
| Trojan-Dropper.Win32.Generic.i |
PT AV
| Вердикт |
|---|
| Trojan.Win64.CapFix |
Сетевые вердикты
| Вердикт |
|---|
| LOADER [PTsecurity] CapDoor Checkin (APT CapFIX) sid: 10015625, 10016787 |
| REMOTE [PTsecurity] SectopRAT sid: 10012587 |
PT EDR
Поведенческие правила
| Вердикт |
|---|
| Suspicious_Create_Process_DLLSideLoading_Evasion |
| Suspicious_Create_File_Extension_LibraryMS |
| Windows_Autorun_Modification |
PT AV
| Вердикт |
|---|
| Trojan.Win64.CapFix |


