Обнаружена серия из 10 вредоносных пакетов npm с многоуровневым сбором учетных данных

information security

Исследователи компании Socket выявили десять вредоносных пакетов в репозитории npm, которые используют метод подмены названий (typosquatting) для маскировки под популярные библиотеки. Пакеты автоматически запускаются при установке, демонстрируют фиктивную CAPTCHA, проводят идентификацию по IP-адресу и развертывают комплексный сборщик учетных данных. Обнаруженные пакеты были опубликованы 4 июля 2025 года и оставались активными более четырех месяцев, суммарно набрав свыше 9900 загрузок.

Описание

Угроза представляет собой многоступенчатую операцию по хищению учетных данных, использующую четыре уровня обфускации для сокрытия полезной нагрузки. Вредоносное программное обеспечение отображает поддельную CAPTCHA для создания видимости легитимности, идентифицирует жертв по IP-адресу и загружает сборщик информации объемом 24 МБ, упакованный с помощью PyInstaller. Этот сборщик извлекает учетные данные из системных хранилищ ключей, браузеров и служб аутентификации в средах Windows, Linux и macOS.

Все десять пакетов были зарегистрированы злоумышленником под псевдонимом andrew_r1 с использованием адреса электронной почты parvlhonor@gmx[.]com. Пакеты использовали метод подмены названий для имитации легитимных библиотек: typescriptjs (имитирует TypeScript), deezcord.js, dizcordjs, dezcord.js (имитируют discord.js), etherdjs, ethesjs, ethetsjs (имитируют ethers.js), nodemonjs (имитирует nodemon), react-router-dom.js (имитирует react-router-dom) и zustand.js (имитирует zustand).

Вредоносные пакеты используют механизм postinstall в npm для автоматического выполнения сразу после установки. Конфигурация package.json обеспечивает немедленный запуск вредоносной нагрузки после установки зависимостей. Скрипт install.js определяет операционную систему жертвы и запускает обфусцированную нагрузку в новом окне терминала. Для Windows используется командная строка cmd, для Linux - gnome-terminal или x-terminal-emulator, для macOS - Terminal.app через AppleScript. Запуск в отдельном окне терминала позволяет вредоносной программе работать независимо от процесса установки npm.

Основная нагрузка скрыта за четырьмя уровнями обфускации. Первый уровень представляет собой самодекодирующую оболочку с немедленным выполнением функции, которая реконструирует и выполняет внутренние слои. Второй уровень использует XOR-шифрование с динамически генерируемым ключом на основе хеширования функции декодера. Третий уровень применяет кодирование URL, требующее декодирования перед XOR-дешифрованием. Четвертый уровень использует обфускацию потока управления с помощью автоматов состояний switch-case и арифметики в смешанных системах счисления.

После установки вредоносная программа демонстрирует фиктивную CAPTCHA с использованием интерфейса readline в Node.js. Эта CAPTCHA служит методом социальной инженерии, создавая видимость защиты от ботов и задерживая выполнение, чтобы снизить подозрения пользователей. Затем программа отображает сообщения, имитирующие установку легитимных пакетов, с реалистичными номерами версий и статистикой contributors.

На втором этапе вредоносная программа отправляет IP-адрес жертвы на сервер злоумышленника по адресу http://195[.]133[.]79[.]43/get_current_ip. Эта процедура служит для отслеживания жертв, возможной фильтрации по геолокации и подтверждения соответствия целевого профиля.

После ввода любого текста в поддельную CAPTCHA программа автоматически загружает и выполняет бинарный файл data_extracter. Этот файл представляет собой приложение Python, упакованное с помощью PyInstaller в исполняемый файл объемом 24 МБ. PyInstaller объединяет Python, необходимые библиотеки и вредоносный код в единый исполняемый файл, который работает без установленного Python на системе жертвы. Такой подход обеспечивает кроссплатформенность, отсутствие зависимостей и устойчивость к анализу.

Бинарный файл data_extracter выполняет комплексное сканирование файловой системы для извлечения учетных данных. Он анализирует профили Firefox, каталоги данных браузеров на основе Chromium, каталоги SSH-ключей, файлы конфигураций в домашнем каталоге и каталоги конфигураций приложений. Целевое извлечение файлов включает базы данных SQLite, файлы конфигураций JSON, обычные текстовые конфигурационные файлы и приватные SSH-ключи.

Сборщик нацелен на несколько механизмов хранения учетных данных во всех основных операционных системах. Он получает доступ к системным хранилищам ключей через platform-specific backend implementations: SecretService D-Bus API и libsecret для Linux, Keychain Services API для macOS, Windows Credential Manager для Windows. Эти хранилища содержат учетные данные для критически важных служб, включая клиенты электронной почты, инструменты синхронизации облачных хранилищ, VPN-подключения и менеджеры паролей.

Извлечение данных браузера включает cookies сеансов, сохраненные пароли из менеджеров паролей браузеров и данные cookie jar для перехвата сеансов. Cookies сеансов особенно ценны, поскольку содержат активные токены сеансов, позволяющие обходить многофакторную аутентификацию. Сборщик также включает специализированные библиотеки для извлечения современных токенов аутентификации, включая OAuth и JWT токены, которые обеспечивают программный доступ к репозиториям, облачной инфраструктуре и конвейерам CI/CD.

После сбора учетных данных вредоносная программа упаковывает их в ZIP-архив для эксфильтрации. Сжатие уменьшает использование пропускной способности и ускоряет передачу данных. Архивированные данные передаются обратно на сервер злоумышленника по адресу 195[.]133[.]79[.]43.

Организациям рекомендуется немедленно провести аудит зависимостей на предмет наличия десяти вредоносных пакетов. Любые системы, где были установлены эти пакеты, следует считать полностью скомпрометированными. Необходимо сбросить все учетные данные, хранящиеся в системных хранилищах ключей и менеджерах паролей, отозвать токены аутентификации для всех служб, включить многофакторную аутентификацию на всех учетных записях и выполнить ротацию SSH-ключей. Также следует провести аудит журналов доступа на предмет необычной активности, проверить историю браузеров на потенциальную кражу учетных данных и установить мониторинг несанкционированного доступа к репозиториям и облачным службам.

Компания Socket предлагает несколько инструментов для защиты от подобных атак цепочки поставок. Бесплатное приложение для GitHub сканирует pull requests на наличие вредоносных пакетов до их попадания в кодобазу, а Socket CLI проверяет зависимости во время установки для обнаружения аномалий. Расширение для браузера Socket предупреждает пользователей о подозрительных загрузках в реальном времени. Для корпоративных команд Socket Firewall обеспечивает защиту в реальном времени, блокируя вредоносные пакеты до их установки и применяя политики безопасности во всей цепочке зависимостей организации. Развертывание этих инструментов в рабочих процессах разработки значительно снижает угрозы цепочки поставок и защищает от сложных атак по хищению учетных данных.

Индикаторы компрометации

IPv4

  • 195.133.79.43

URLs

  • http://195.133.79.43/get_current_ip

SHA256

  • 80552ce00e5d271da870e96207541a4f82a782e7b7f4690baeca5d411ed71edb

Malicious npm Packages

  • deezcord.js
  • dezcord.js
  • dizcordjs
  • etherdjs
  • ethesjs
  • ethetsjs
  • nodemonjs
  • react-router-dom.js
  • typescriptjs
  • zustand.js
Комментарии: 0