Почти 800 npm-пакетов доставляли RAT и стилер для трёх ОС

Исследователь OpenSourceMalware Пол Маккарти обнаружил в реестре npm почти 800 вредоносных пакетов, распространявших кроссплатформенный RAT и инфостилер для Windows, macOS и Linux. Пакеты использовали имена, похожие на опечатки, либо автоматически сгенерированные названия, а загрузчик WEL1DROPPER подбирал полезную нагрузку под операционную систему и архитектуру процессора.
Импорт вместо установочного скрипта
Эта кампания отличается от многих атак на цепочку поставки npm: код не запускается через lifecycle-хуки preinstall или postinstall. README-файлы предлагают разработчику подключить пакет функцией require(), после чего начинается выполнение загрузчика.
WEL1DROPPER сначала определяет параметры хоста и запрашивает совместимый файл у одного из трёх узлов Cloudflare Workers. Если HTTPS-загрузка не удаётся, вредоносная программа переходит к резервной схеме: получает через DNS TXT-записи число фрагментов и сами фрагменты, объединяет их и декодирует из Base64. Для этого используется домен wel1.ru и отдельные поддомены для Linux x64, Linux ARM64, macOS и Windows.
На Linux и macOS финальный файл сохраняется во временной папке и запускается через /bin/sh, на Windows — через cmd.exe. Внутри пакетов также найден файл lib/telemetry.js: он выглядит как SDK телеметрии, но содержит ту же логику загрузчика. По оценке OpenSourceMalware, объёмная реализация телеметрии может создавать шум при поверхностной проверке и маскировать опасный код под штатную аналитику.
Механизмы закрепления и уклонения
Sonatype отслеживает кампанию под названием Flooding Dropper. На Windows её финальный этап запускается в отдельном процессе, проверяет песочницы и виртуальные среды, пытается изменить ETW и AMSI, создаёт закрепление через ключ Run в реестре и запланированную задачу. Затем он скачивает зашифрованный файл /pkg/update_win.exe и запускает его.
В macOS цепочка ищет отладчики и признаки анализа, загружает /pkg/beacon_mac.bin, а при неудаче использует доставку через DNS TXT. Для сохранения после перезагрузки создаётся LaunchAgent. Linux-образец представляет собой упакованный UPX ELF-файл, который получает дополнительные компоненты через Cloudflare Worker; в итоге развёртывается Sliver — открытый фреймворк командного управления.
В macOS-полезной нагрузке обнаружены домены tcsbank.ru и cloudpayments.ru, что может указывать на интерес операторов к российским финансовым организациям и мобильным платежам. OpenSourceMalware также допускает связь этой активности с кампанией Moika, в которой в апреле в npm разместили более 250 пакетов для сбора сведений об окружении и доставки следующего этапа с учётом ОС.
Что проверить командам разработки
Случай показывает, почему защита цепочки поставки не должна ограничиваться анализом установочных хуков. Контекст подобных атак раскрывает тактика злоупотребления заимствованным доверием и показывает, как доверие к знакомым инструментам становится точкой входа в инфраструктуру.
Бизнесу стоит проверять код новых и малоизвестных зависимостей, включая модули, подключаемые через require(), ограничивать сетевую активность сборочных сред и контролировать обращения к нетипичным доменам. Отдельного внимания требуют зависимости с имитацией телеметрии, а также изменения в пакетах с похожими на популярные названиями.

