Вредоносные npm-пакеты атакуют Windows и WSL через PowerShell

В августе 2026 года оператор разместил 40 пакетов в npm, которые имитировали популярные библиотеки, включая chalk, axios, commander, lodash, react и typescript. Большинство названий содержали опечатки или использовали захваченные пространства имён.

Все пакеты имели версию 1.0.0 и автоматический hook scripts/postinstall.js. Скрипты профилировали хост и связывались с жёстко заданным сервером управления. Адрес назначения формировался во время выполнения из массивов, поэтому IP-адрес не хранился в открытом виде.

Атака была ориентирована на Windows и WSL

Пакеты впоследствии удалили, однако это не устранило инфраструктуру второго этапа. Установщик целенаправленно проверял нативную платформу и для Linux-систем выявлял Windows Subsystem for Linux (WSL) через переменные окружения и файлы /proc.

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

В WSL скрипт вызывал скрытый мост PowerShell, чтобы перейти из среды Linux на базовый хост Windows. В нативной Windows он применял HTTPS-клиент Node для загрузки main.exe в %TEMP% и запускал файл без видимого окна или консоли.

Полезная нагрузка была скрыта внутри PE-файла

Полезная нагрузка представляла собой исполняемый PE-файл на Rust размером 22 969 344 байта. Его SHA-256 имеет значение 6f088ade49456db2422c3edfbb9998f4a3e9cce7c4c00a7279fb45d672a82b7d.

Только около 265 КБ файла содержали исполняемый код. Приблизительно 98,7% занимал шестнадцатеричный текст, представлявший зашифрованную полезную нагрузку в секции .rdata.

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

PE-файл имел обнулённую метку времени. Он использовал графическую подсистему, загружал криптографические библиотеки Windows, DPAPI и сырые сокеты. Среды выполнения .NET при этом не загружались.

Какие данные пытались собрать

Распакованный этап определял жертву через api.ipify.org, после чего пытался загрузить собранные данные на upload.gofile.io.

Целевая информация включала:

  • 26 локаций криптокошельков для настольных ПК;
  • файлы Local State;
  • cookies, истории и Web Data браузеров семейства Chromium;
  • директории tdata Telegram Desktop.

Проверка TLS-сертификата предотвратила успешный перехват в лабораторных условиях. Подтверждённую эксфильтрацию обнаружить не удалось.

На что должна реагировать информационная безопасность

Кампания показывает, что одного отключения npm недостаточно, если инфраструктура доставки, хостинг полезной нагрузки и сервисы сбора данных остаются разделёнными.

Обнаружение следует сосредоточить на следующих признаках:

  • скрытый PowerShell, запускаемый из installation hooks;
  • выполнение WSL-to-Windows;
  • исполняемые файлы, записанные в %TEMP%;
  • PE-файлы, упакованные в hex;
  • быстрый доступ к сервисам публичного IP-адреса и сервисам загрузки файлов.

Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.

Ознакомиться подробнее с отчетом можно по ссылке.

Технологии киберугроз
Автор: Технологии киберугроз
Технологии киберугроз – технологическая компания, специализирующаяся на решениях по анализу угроз для предприятий любого размера. Мы собираем, нормализуем, обогащаем информацию о киберугрозах со всего мира. Нашими источниками являют более 260 открытых фидов, более 100 открытых поставщиков Threat Intelligence-отчетов, открытые online sandbox, социальные сети и репозитории GitHub. Мы также предоставляем ряд сервисов по: семантическом анализу Threat Intelligence-отчетов и приведения их в машиночитаемый формат STIX 2.1, проверки IoC на потенциальные ложноположительные сработки, а также получению WHOIS-записей для доменных имен.
Комментарии: