Злоумышленники используют среду выполнения JavaScript Bun для распространения NWHStealer

| 6 мая 2026 г.
Злоумышленники используют среду выполнения JavaScript Bun для распространения NWHStealer

В ходе нашегопредыдущего исследования мы проанализировали Windows , которую мы отслеживаем под названиемNWHStealer. Злоумышленники, стоящие за этой программой, постоянно ищут новые способы её распространения. В ходе наших операций по выявлению угроз мы заметили, что злоумышленники используют среду выполнения JavaScript под названием Bun для её распространения.

Bun — это надежный, быстрый и универсальный набор инструментов для работы с JavaScript и TypeScript, разработанный в качестве современной и высокопроизводительной альтернативы Node.js. Он создан с нуля с целью упростить современную веб-разработку за счет объединения нескольких важнейших инструментов в одном исполняемом файле. 

Его относительная новизна также делает его привлекательным для злоумышленников. Bun пока не широко используется в вредоносных кампаниях, и это позволяет им встраивать вредоносный код в более крупные исполняемые файлы, которые могут быть сложнее обнаружить. 

Что такое NWHStealer и на что он способен? 

NWHStealer — этопрограмма-крадец, написанная на языке Rustи распространяемая с помощью различных приманок и способов доставки. К ним относятся скрипты Node.js, установщики MSI, а в последнее время — также загрузчики JavaScript, созданные с использованием среды выполнения Bun.  

Часто он размещается на легальных платформах, таких как GitHub, GitLab, MediaFire, Itch.io и SourceForge, что позволяет ему выглядеть как обычное программное обеспечение и повышает вероятность того, что пользователи его скачают. Злоумышленники продолжают создавать новые профили и приманки для распространения этого программного обеспечения-крадеца. 

После установки на ваш компьютер программа NWHStealer может: 

  • Сбор системной информации, включая данные об операционной системе, аппаратном обеспечении, программном обеспечении безопасности, пользовательских данных и подключенных устройствах. 
  • Похищать данные из браузеров, расширений и криптовалютных кошельков. 
  • Похищает данные из различных приложений, в том числе из FTP-клиентов, таких как FileZilla и CoreFTP, а также из мессенджеров, таких как Steam и Discord. 
  • Внедрять вредоносный код в процессы браузера и запускать дополнительные вредоносные модули (например, XMRig).
  • Попытка обойти систему контроля учетных записей пользователей (UAC). 
  • Обеспечьте постоянство работы с помощью запланированных задач. 
  • Получите новые адреса системы управления (C2) в Telegram. 

Как оставаться в безопасности 

Злоумышленники постоянно совершенствуют свои методы, и использование таких новых инструментов, как Bun, свидетельствует о том, как они пытаются опередить системы обнаружения. 

NWHStealer вызывает особую озабоченность из-за масштабов его распространения и типов данных, на которые он нацелен. Похищенные данные браузера, сохраненные пароли и информация о криптовалютных кошельках могут быстро привести к взлому учетных записей, финансовым потерям и дальнейшим угрозам безопасности. 

Вот несколько простых способов обеспечить свою безопасность: 

  • Скачивайте программы только с официальных сайтов. 
  • Будьте осторожны при загрузке файлов с таких платформ, как GitHub, SourceForge или файлообменников, если вы не уверены в надежности источника. 
  • Злоумышленники продолжают создавать новые профили для распространения этого программы-крадец данных на различных платформах. При загрузке файлов с файлообменников или блогов обращайте внимание на профиль разработчика или издателя, его репутацию и то, как давно он был создан. 
  • Проверьте структуру архивов: убедитесь, что содержимое, изображения и текстовые файлы соответствуют тому, что вы скачали. Также обратите внимание на название архива — обычно оно имеет характерную структуру. 
  • Перед запуском файла проверьте его издателя и цифровую подпись. 


Совет от профессионала: Установите Malwarebytes Browser Guard , чтобы блокировать вредоносные сайты до их загрузки. 


Технический анализ

Новый метод распространения: Bun JavaScript Runtime 

Согласно информации на официальном сайте, Bun — это универсальный набор инструментов для работы с JavaScript, TypeScript и JSX. Он полностью разработан на языке Zig и основан на движке JavaScriptCore от Apple, при этом особое внимание уделяется быстрой загрузке и низкому потреблению памяти.

Бун состоит из четырёх основных компонентов: 

  • Среда выполнения JavaScript:среда выполнения JavaScript, разработанная в качестве готовой замены Node.js. 
  • Package Manager:быстрая альтернатива npm. 
  • Test Runner:встроенный модульзапуска тестов, совместимый с Jest, который выполняет тесты значительно быстрее, чем стандартные модули запуска. 
  • Bundler: заменяеттакие инструменты, как Webpack, Vite или esbuild, для упаковки кода. 

В ходе недавних кампаний мы обнаружили, что вредоносная программа NWHStealer распространяется с помощью пакета Bun JavaScript Runtime.  

Как показали результаты наших предыдущих исследований, для запуска цепочки заражения используются приманки в виде игрового и другого программного обеспечения. Среди названий ZIP-файлов, обнаруженных в ходе этих недавних кампаний, можно выделить следующие: 

  • Программное обеспечение для игр и читы, такие как: 
    • MOUSE_PI_Trainer_v1.0.zip
    • FiveM Mod.zip
    • VampireCrawlers_Trainer_v1.0.zip
    • MagicalPrincess_Trainer_v1.0.zip 
    • TerraTechLegion_Trainer_v1.0.zip 
  • Другие программы, такие как: 
    • TradingView-Activation-Script-0.9.zip 
    • AutoTune 2026.zip
    • Metatune by Slate Digital 2026.zip
    • GoGoTv_Plus.zipAutodesk.zip

В случае, рассматриваемом в данной статье, цепочка заражения начинается с архива, содержащего Installer.exe, в который встроен код JavaScript, входящий в состав среды выполнения Bun. 

В папке «DW» находится еще один загрузчик, называемый dw.exe. Этот загрузчик для самоинъекции похож на рассмотренный ранее, но отличается алгоритмом дешифрования. Данный загрузчик присутствует не во всех проанализированных ZIP-файлах. 

Вредоносный ZIP-файл содержит два загрузчика
Вредоносный ZIP-файл содержит два загрузчика 

Сайт Readme.txt файл предлагает пользователю запустить программу вручную dw.exe если основной .exe файл не запускается должным образом. Это дает злоумышленнику два способа распространения программы-крадец данных, если сервер управления (C2) основного загрузчика Bun находится в автономном режиме. Загрузчик в dw.exe работает независимо от загрузчика Bun JavaScript. 

Файл Readme, находящийся в ZIP-архиве
Файл Readme, находящийся в ZIP-архиве
Поддельная настройка Build Tools, отображаемая при запуске dw.exe
Отображается поддельная настройка Build Tools, если dw.exe запускается

В этой статье мы не анализируем dw.exe, поскольку это вариант предыдущих загрузчиков. Вместо этого мы сосредоточимся на загрузчике JavaScript, выполняемом в среде выполнения Bun JavaScript. 

Анализ загрузчика JavaScript  

Код JavaScript, выполняемый средой выполнения Bun JavaScript, находится внутри .bun разделе и зашифрована.  

Раздел .bun с зашифрованным кодом JavaScript
Сайт .bun раздел с зашифрованным кодом JavaScript 

Вредоносный код реализован в двух частях кода: 

  • sysreq.js: выполняет проверки на виртуализацию с использованием системы баллов. 
  • memload.js: взаимодействует с сервером C2, осуществляет дешифрование и загружает следующий модуль. 
Точка входа загрузчика JavaScript

Загрузчик выполняет ряд команд PowerShell CIM (Common Information Model) и WMI (Windows Instrumentation) для обнаружения виртуальных сред. Существуют различные критерии, связанные с количеством процессоров, дисковым пространством, разрешением экрана, USB-устройствами, производителями и моделями оборудования, количеством установленного ПО, наличием определенных папок (например, папок браузера), количеством запущенных процессов и именем пользователя. Реализована система оценки, и на основе полученного балла загрузчик решает, продолжать ли заражение или прекратить его.

Для обнаружения виртуальной среды загрузчик выполняет более 10 команд PowerShell, например: 

  • Get-CimInstance -ClassName Win32_DiskDrive | Select-Object Model  
  • Get-CimInstance -ClassName Win32_PhysicalMemory | Select-Object Manufacturer,Speed  
  • Get-CimInstance -ClassName Win32_BIOS | Select-Object Manufacturer  
  • Get-CimInstance -ClassName Win32_BaseBoard | Select-Object Manufacturer,Product  
  • Get-CimInstance -ClassName Win32_DiskDrive | Select-Object PNPDeviceID 
  • (Get-Process -ErrorAction SilentlyContinue).Count 

Результаты сравниваются с различными строками, например:

  • Показатели виртуализации: qemu, seabios, bochs, vbox, vmware, virtualbox, kvm, xen, parallels, virtio, vmbus, Red Hat, EDK II
  • Имя пользователя в тестовой среде: sandbox, malware, virus, sample, vmuser, wdagutilityaccount, defaultuser0
  • MAC с виртуальными средами

Строки расшифровываются с помощью операции XOR и декодирования Base64; имеются массивы кортежей, каждый из которых содержит зашифрованные строки и ключ, используемый для расшифровки с помощью операции XOR. 

Данные, зашифрованные с помощью ключей XOR
Данные, зашифрованные с помощью ключей XOR 

Расшифровкой строк занимаются несколько функций, в том числе одна, которая расшифровывает конфигурацию, используемую при связи с C2. Фрагмент конфигурации: 

C2 server: https://silent-harvester.cc
BUILD_ID: 0ddbfec60307
C2 Path: /api/status, /api/update

Загрузчик получает и отправляет начальный запрос на конечный пункт https://C2-server/api/report содержащие зашифрованные данные о скомпрометированной системе: 

  • Публичный IP-адрес получен посредством запроса к api.ipify.org. 
  • Информация о системе 
  • Результат проверки на наличие виртуальных машин 
  • Скриншот, закодированный в формате Base-64 
  • Время 

Затем он отправляет два HTTP-запроса GET: 

  • https://C2-server/api/status?v={BUILD_ID}, чтобы получить начальные данные, используемые для вывода ключа AES. 
  • https://C2-server/api/update?v={BUILD_ID}, чтобы получить зашифрованные данные с нонсом AES и тегом аутентификации. 

Следующий этап расшифровывается с помощью алгоритма AES-256-CBC, при этом данные AES, возвращаемые сервером C2, загружаются с помощью самовстраивающегося загрузчика с использованием следующих API: 

  • VirtualAlloc 
  • VirtualProtect 
  • LoadLibraryA 
  • GetProcAddress 
  • RtlAddFunctionTable
  • CreateThread 
  • SearchPathA 

Эти API-интерфейсы Win32 выполняются через модуль Bun bun:ffi, что позволяет JavaScript вызывать нативные библиотеки. 

По итогам этого процесса в рассматриваемых случаях был установлен NWHStealer. 

Индикаторы компромисса (ИКС) 

Домены 

whale-ether[.]pro: C2-сервер NWH Stealer 

cosmic-nebula[.]cc: C2-сервер NWH Stealer 

silent-harvester[.]cc: Сервер Bun Loader C2 

silent-orbit[.]cc: Сервер Bun Loader C2 

support-onion[.]club: Сервер Bun Loader C2 

Хеш 

d3a896f450561b2546b418b469a8e10949c7320212eb1c72b48e2b1e37c34ba5 

96fe4ddfe256dc9d2c6faea7c18e2583cd9d9c0099a4ad2cf082f569ee8379f4 

3710fb27d2032ef1eb1252ebf5c4dd516d2b2c0a83fb82c664c89e504b990fa9 

33d07aa24b217f27df6a483295c817da198e12511a6989bcc6b917feaf8e491d 

5427b4cefb329ed0e9585b3ce58a2788baf87e3b0c7221373f9bbd5f32c85b62 

308da9f49ffa1d1744e428b567792ab22712159974e9da8d8e0414ecd81de93e 

021838f30a43026084978bce187c165c6b640d8d474ec009d48078d21ec62025 

c8e96b55f13435c4b43b7209d2403f1a0e0f9deb05edc50e0f777430be693b07 

0614c4cc6375ab6bdcdd2dfa913a67d32c3e8be9b95a4a2aa09bb131b98191c8 

0020999b2e3e4d1b2cfb69e4df9440d3ce05d508573889fdc12b724ce75a0cd8 

0fa42df08cc467ec52b2d388b5575114a8ec067d13f6b1a653ec33fe879f88ca 

15f79980650393d182f81cd6e389210568aa1f5f875e515efe6cb9485d64b7fb 

20454ba58d509300fd694ae6159db4efa1b7ff965f98c29e7d087e20f96578c1 


Награда «Выбор редакции CNET» 2026 года

По данным CNET.Прочитать их обзор


Об авторе

Габриэле — инженер-исследователь в области вредоносного ПО, который обожает бороться с вредоносными программами. В свободное от работы время он любит наслаждаться природой, искусством и общением с животными.