Специалисты Doctor Web обнаружили многоступенчатый троян, который превращает компьютеры разработчиков в точки распространения вредоносного кода. Он крадёт пароли и сеансы, подменяет криптовалютные адреса, устанавливает бэкдор, запускает майнеры и заражает файлы проектов C++ и C#.
Особенность кампании заключается в выборе целей. Вредонос меняет .vcxproj, .csproj, .suo, исполняемые файлы, заголовок Windows SDK и исходник популярной библиотеки Dear ImGui. Разработчик может очистить сам загрузчик, затем собрать приложение на уже заражённой машине и незаметно добавить троян в готовый продукт.
Первые образцы появились в четвёртом квартале 2025 года. Авторы продолжали дорабатывать цепочку как минимум до июля 2026-го. Масштаб кампании, количество жертв и личность операторов пока неизвестны. Исследователи не приводят статистику заражённых организаций и не связывают операцию с конкретной группировкой.
Первой стадией служит Trojan.DownLoader49.35384. Его код внедряется в обычный исполняемый файл Windows. При запуске заражённой программы загрузчик самостоятельно находит системные функции через структуру окружения процесса — PEB — и использует стандартный механизм initterm, который выполняет функции инициализации до перехода к основной логике приложения.
В таблицу указателей добавляется вредоносная функция. Она незаметно запускает PowerShell, загружает следующий компонент и передаёт ему управление. В отдельных версиях команда дополнительно шифруется, что усложняет поиск по статическим сигнатурам.
Другой вариант распространяется в Python-сценариях под именем Python.Downloader.255. Полезная нагрузка шифруется при помощи Fernet, а строка с вредоносным кодом отодвигается большим количеством пробелов. При беглом просмотре начало файла выглядит пустым или безобидным.
Обе цепочки доставляют Trojan.DownLoader49.35687 — вторую стадию атаки.
Второй загрузчик проверяет среду на признаки песочницы и создаёт объект синхронизации с именем Global\PFNMX. Он нужен для того, чтобы на одном компьютере не работало несколько одинаковых экземпляров.
Адрес управляющего сервера не всегда хранится внутри файла. Троян получает его из публичных репозиториев GitHub и профилей Steam.
Операторы размещают домен в описании профиля Steam открытым текстом либо публикуют на GitHub зашифрованный файл. Загрузчик последовательно применяет Base64, операцию XOR и дополнительное преобразование, после чего получает действующий адрес инфраструктуры.
Такая схема позволяет менять сервер без выпуска новой версии трояна. Защитная компания или провайдер может заблокировать старый домен, а операторы просто заменят строку в профиле или файле GitHub.
После соединения загрузчик внедряет код в один из 41 заранее выбранного процесса из каталога C:\Windows\System32. Идентификатор заражённой системы и рабочий адрес сервера передаются основной нагрузке через именованный канал pipe\VccFrameworkchannel.
Третья стадия определяется как BackDoor.Siggen2.5906. Она создаёт ещё один объект синхронизации — global\PFNX_side — и принимает параметры от загрузчика.
Для постоянного присутствия в системе бэкдор скачивает файл bungee.boo, внутри которого находится предыдущая стадия атаки. Полученным содержимым заменяются библиотеки DLL, загружаемые популярными программами и системными компонентами.
Среди целей указаны profapi.dll в каталоге Discord, библиотеки domain_actions.dll и well_known_domains.dll Microsoft Edge, а также системный файл C:\Windows\omadmapi.dll.
Используется принцип подмены DLL. Легитимная программа запускается обычным способом, ищет необходимую библиотеку и подхватывает вредоносный файл из доступного каталога. Пользователь видит знакомый Discord или Edge, а троян получает новый запуск вместе с доверенным процессом.
Ещё один вариант меняет реестр Windows так, чтобы вредоносный компонент запускался при открытии архива через WinRAR. Удаление первоначального заражённого файла поэтому не гарантирует очистку компьютера.
Для административных операций бэкдор применяет обход контроля учётных записей Windows — UAC.
Он создаёт сценарий Visual Basic в каталоге пользователя, меняет обработчик протокола ms-settings в разделе HKEY_CURRENT_USER и запускает системную программу ComputerDefaults.exe. Доверенный процесс обращается к подменённой записи и выполняет указанный сценарий с повышенными правами.
Такая техника не требует эксплуатации отдельной уязвимости памяти. Она злоупотребляет особенностями автоматического повышения прав у системных компонентов и пользовательскими ключами реестра.
После выполнения операции вредонос получает возможность менять защищённые файлы, отключать отдельные средства безопасности и внедряться в системные каталоги.
Основной модуль извлекает токены Discord, которые могут предоставить доступ к аккаунту без обычного ввода логина и пароля.
Из Chrome, Edge, Opera, Brave, «Яндекс Браузера» и других обозревателей собираются пароли, файлы cookie и сведения о действующих сеансах. Отдельный компонент внедряется в процесс браузера, перехватывает вводимые учётные данные и сохраняет их в текстовом виде.
В список целей также входят каталоги Telegram Desktop и данные криптовалютного кошелька Exodus.
Кражей файлов Exodus атака не ограничивается. Бэкдор заменяет архив приложения app.asar версией, загруженной с сервера злоумышленников. В подменённый JavaScript добавлена функция, перехватывающая исходную фразу восстановления кошелька.
Такая фраза позволяет импортировать кошелёк на другом устройстве и полностью распоряжаться активами. Смена пароля самого приложения после утечки уже не помогает.
Вредонос постоянно читает буфер обмена. Если пользователь копирует номер банковской карты, данные отправляются на сервер операторов.
Для криптовалют применяется подмена адреса. Троян распознаёт строку, похожую на адрес кошелька, и заменяет её реквизитами атакующих.
Пользователь копирует правильный адрес с биржи или из сообщения, вставляет его в форму перевода и видит уже другую последовательность символов. При невнимательной проверке средства уходят злоумышленникам.
Подмена особенно эффективна из-за длины криптовалютных адресов. Люди часто сравнивают лишь первые и последние символы, поэтому операторы могут подобрать визуально похожий вариант.
Командный сервер может приказать загрузить и запустить произвольный файл, выполнить команду через cmd.exe, получить содержимое выбранного файла или список каталогов.
Отдельная команда включает обратный прокси. Заражённый компьютер становится промежуточным сетевым узлом, через который операторы могут обращаться к внутренним ресурсам организации или скрывать источник другой активности.
В коде присутствует набор функций для издевательства над пользователем: резкое воспроизведение звука, отключение аудио, навязчивые ролики и пугающие изображения. Эти возможности не имеют практической ценности для кражи данных, но показывают, что проект создавался как универсальный вредоносный набор.
Компьютер также используется для добычи криптовалюты. Дополнительный компонент загружает открытые майнеры XMRig, T-Rex или TeamRedMiner.
Майнинг включается после периода бездействия пользователя. Такой режим уменьшает вероятность того, что владелец заметит резкое падение производительности во время работы.
На разработческой станции с мощным процессором или видеокартой добыча может оставаться активной ночью и в выходные. Организация получает повышенное энергопотребление, перегрев оборудования и снижение срока службы компонентов, а операторы — дополнительный источник дохода.
Троян сканирует доступные диски и ищет несколько типов файлов:
imgui_impl_win32.cpp, .suo, .exe, winnetwk.h, .vcxproj и .csproj.
Этот набор позволяет атаковать сразу три уровня: отдельные приложения, рабочие проекты и общие средства разработки.
В файл imgui_impl_win32.cpp добавляются две строки. Первая содержит нагрузку, вторая запускает скрытую команду PowerShell, которая скачивает исполняемый файл.
imgui_impl_win32.cpp входит в Dear ImGui — популярную библиотеку для создания графических интерфейсов на C++. Заражённая копия может оказаться в десятках проектов одного разработчика. При последующей компиляции вредоносная логика попадёт в созданные приложения.
Этот этап уже соответствует полноценной атаке на цепочку поставок. Жертвой становится не один программист. Заражённый продукт может получить цифровую подпись компании, пройти внутреннее тестирование и попасть к пользователям как официальный выпуск.
Ещё одна цель — winnetwk.h, системный заголовочный файл из Windows SDK. Он связан с сетевыми функциями Windows.
Троян находит каталог установленного комплекта разработки через реестр и добавляет в заголовок собственный код. Все проекты, которые подключат изменённый файл, рискуют получить загрузчик второй стадии.
Такой способ сложнее заметить, чем изменение конкретного репозитория. Исходный код проекта в Git остаётся чистым. Вредонос появляется только во время сборки на заражённой рабочей станции или сервере непрерывной интеграции.
Сравнение репозитория с удалённой веткой ничего не покажет. Проверять нужно локальный Windows SDK, образ сборочной машины и готовые бинарные файлы.
Удаление BackDoor.Siggen2.5906 из памяти решает только часть проблемы. На компьютере могут остаться подменённые DLL, заражённые проекты, изменённые исходники Dear ImGui, заголовки Windows SDK, исполняемые файлы и сценарии сборки.
После обычной очистки разработчик способен снова запустить заражённый проект и вернуть загрузчик в систему.
Проверка должна охватывать весь набор средств разработки. Локальные библиотеки следует сравнить с оригинальными версиями, Windows SDK — восстановить из доверенного установщика, а проекты — проверить по истории Git и чистой копии из независимого источника.
Готовые сборки, выпущенные с подозрительной машины, тоже требуют повторного анализа.
Защитным командам стоит искать объекты синхронизации Global\PFNMX и global\PFNX_side, неизвестные именованные каналы с VccFrameworkchannel, а также неожиданные обращения к GitHub Raw, Steam и YouTube из процессов сборки.
В .vcxproj и .csproj подозрительны новые элементы PreBuild, PreBuildEvent, Target, Exec, вызовы wscript.exe, cmd.exe, curl, iwr и скрытого PowerShell.
Особого внимания требуют изменения imgui_impl_win32.cpp и winnetwk.h, которые скачивают файлы из интернета или запускают оболочку. Легитимные заголовочные файлы библиотек обычно не должны выполнять PowerShell.
Нужно проверить DLL в каталогах Discord и Edge, системный omadmapi.dll, обработчик HKEY_CURRENT_USER\Software\Classes\ms-settings и неизвестные VBS-файлы в профиле пользователя.
Исходные фразы и пароли, доступные заражённому компьютеру, следует считать похищенными. Простая очистка машины не возвращает уже отправленные данные.
В Visual Studio 2022 и более новых версиях есть параметры доверия к файлам и папкам. Среда способна показывать предупреждение для материалов, загруженных из интернета, а также запрашивать отдельное решение при открытии каждого неизвестного проекта.
Microsoft рекомендует включать режим постоянного запроса доверия и запускать MSBuild только для полностью проверенных исходников. Компания отдельно предупреждает: логика проекта способна выполнить произвольный код в среде сборки.
Заражённую рабочую станцию нужно отключить от сети и исключить из сборочного конвейера. Анализ лучше проводить с сохранённого образа диска, чтобы не потерять следы внедрения и сетевой активности.
С доверенного устройства требуется отозвать токены GitHub, GitLab, npm, NuGet, облачных платформ, мессенджеров и реестров контейнеров. Ключи подписи и SSH также подлежат замене.
Пароли браузера, действующие cookie и исходные фразы криптокошельков нужно считать скомпрометированными. Активы Exodus безопаснее перевести на новый кошелёк с новой фразой, созданной на чистом устройстве.
Все проекты, собиравшиеся на заражённой машине, следует проверить заново. Выпуски, созданные после предполагаемой даты проникновения, могут потребовать отзыва и повторной публикации.
Есть новость? Станьте автором.
Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.