Бэкдор в расширении VS Code маскировался под инструмент для Jupyter
Расширение VS Code ByteBinTools.jupyter-powerdev-2026.6.8.vsix, выявленное 8 июня 2026 года, содержало многоэтапный бэкдор. Он маскировался под инструмент повышения продуктивности для Jupyter и после активации устанавливал скрытое взаимодействие с инфраструктурой злоумышленников.
Скрытый запуск команд
JavaScript-компонент расширения без видимого взаимодействия с пользователем запускал опрос C2. Он регистрировал команды VS Code, которые выглядели безобидно, и одновременно внедрял зашифрованные строки и платформенные агенты выполнения.
monitor-agent.exeдля Windows;handler-agent.pyдля Linux и macOS.
JavaScript взаимодействовал с агентами через стандартные потоки ввода и вывода. Такой механизм позволял маршрутизировать команды, переданные злоумышленником, для выполнения на устройстве жертвы.
Выполнение произвольного кода в Windows
Windows-бинарный файл использовал Microsoft.CodeAnalysis.CSharp.Scripting версии 4.12.0.0 для компиляции и выполнения произвольного кода C# в памяти через движок Roslyn scripting.
Это позволяло красть учетные данные, осуществлять перемещение внутри компании и развертывать дополнительные полезные нагрузки без создания нового процесса и записи промежуточных сборок на диск.
Расширение также поддерживало широкий набор действий с системой:
- обнаружение файловой системы;
- изменение текущих каталогов;
- чтение и запись файлов;
- произвольную загрузку и выполнение команд непосредственно из JavaScript.
SharePoint использовался для управления имплантом
Трафик C2 маршрутизировался через брокерские домены, размещенные в Azure. Они возвращали токены доступа Microsoft Graph API. Затем имплант использовал SharePoint как очередь команд, реестр жертв и хранилище ответов.
Для этого применялись списки с именами AppComms_Clients, AppComms_Commands и AppComms_Responses. Heartbeat выполнялся каждые 30 секунд.
Сообщения сжимались с помощью GZIP и шифровались алгоритмом AES-256-CBC. Для каждого сообщения генерировался случайный вектор инициализации, IV. Ключ был жестко закодирован в расширении, его значение указано как 3e1c9a72f5b84d06e2a97c5310fb8e4d.
В релевантную инфраструктуру брокера входили домены investment-gateway.azurewebsites.net и equity-core.azurewebsites.net.
Эксфильтрация и доставка файлов
Для передачи крупных файлов применялась многоэтапная обработка. Данные XOR-кодировались с использованием строки hostname:username жертвы, затем сжимались, кодировались в Base64 и реверсировались на уровне байтов.
После этого файлы загружались частями на URL, контролируемый злоумышленником. Обратный процесс позволял размещать на устройстве жертвы файлы и дополнительные инструменты из Azure Blob Storage.
Связь с активностью DPRK
В отчете отмечаются архитектурные сходства этой кампании с деятельностью DPRK, связанной с Contagious Interview и DreamLoader. Среди общих особенностей упоминаются разделение на JavaScript и Python, а также дизайн C2 на основе Graph API и SharePoint.
При этом прямые пересечения индикаторов, которые подтверждали бы атрибуцию, в отчете не приводятся.
Возможности обнаружения
Для выявления активности рекомендуется отслеживать следующие признаки:
- необычную активность Graph, связанную со списками SharePoint
AppComms_Clients,AppComms_CommandsиAppComms_Responses; - обращения к доменам-посредникам, включая
investment-gateway.azurewebsites.netиequity-core.azurewebsites.net; - неподписанные бинарные файлы, импортирующие только
mscoree.dll; - секции с высокой энтропией;
- поддельные временные метки PE, указывающие на 2040 год.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



