NeoShadow: Новый игрок на арене атак на цепочку поставок npm использует блокчейн и MSBuild для скрытой доставки вредоносного ПО

information security

В конце декабря 2023 года в реестре пакетов npm появилась серия подозрительных публикаций, которые привлекли внимание специалистов по кибербезопасности. Пакеты "viem-js", "cyrpto", "tailwin" и "supabase-js", выпущенные пользователем "cjh97123", представляли собой классические примеры типсквоттинга, когда злоумышленники регистрируют имена, похожие на популярные библиотеки. Однако анализ их содержимого выявил сложную многоэтапную атаку на цепочку поставок, получившую название NeoShadow по внутреннему идентификатору в её основном вредоносном коде (полезной нагрузке, payload).

Описание

Кампания примечательна использованием нестандартных техник для обхода защиты и сокрытия командного центра. Вредоносный скрипт "setup.js", присутствующий во всех пакетах, активируется только на системах Windows и включает несколько ступеней защиты от анализа. Прежде всего, он проверяет активность системы, подсчитывая записи в журнале событий Windows, чтобы отличить реальную машину от песочницы. Затем скрипт обращается к смарт-контракту в сети Ethereum через публичный API Etherscan, чтобы получить актуальный URL командного центра, динамически хранящийся в блокчейне. Этот подход усложняет блокировку инфраструктуры злоумышленников.

Получив адрес, загрузчик извлекает основную вредоносную полезную нагрузку, замаскированную под файл аналитики "analytics.min.js". Ключевой код спрятан внутри блочного комментария в виде строки Base64. Для его выполнения зловред использует легитимный системный инструмент MSBuild, встраивая в проект на C# код для расшифровки и запуска. Этот метод, известный как Living-off-the-Land (LotL), позволяет избежать создания подозрительных исполняемых файлов на диске.

Расшифровка выполняется алгоритмом RC4 с ключом, который получается путём применения XOR-маски к первым 16 байтам полезной нагрузки. Затем дешифрованный шелл-код внедряется в легитимный процесс "RuntimeBroker.exe" с помощью техники APC-инъекции. Вторая стадия атаки подразумевает загрузку более функционального backdoor (бэкдора) через файл конфигурации, который сохраняется по пути "%APPDATA%\Microsoft\CLR\config.proj" для обеспечения устойчивости (persistence).

Финальный бэкдор представляет собой компактный Remote Access Trojan (RAT), предназначенный для долгосрочного контроля. Он устанавливает зашифрованное соединение с командным центром по протоколу HTTPS, используя для шифрования алгоритм ChaCha20 с ключами на основе Curve25519. Для маскировки трафика бэкдор случайным образом выбирает пути запросов, имитируя легитимный веб-трафик. Его функционал включает корректировку интервалов опроса, загрузку и исполнение дополнительных модулей прямо в памяти, а также инъекцию шелл-кода, полученного прямо из команд.

Особый интерес представляют дополнительные механизмы скрытности. Перед началом активности вредоносное ПО патчит низкоуровневую функцию "NtTraceEvent" в "ntdll.dll", что фактически отключает систему Event Tracing for Windows (ETW). Это значительно снижает видимость событий для средств защиты, построенных на этой телеметрии. Кроме того, сам командный центр "metrics-flow[.]com" использует технику маскировки, выдавая при каждом обращении случайный контент, имитирующий легитимный сайт, что затрудняет его автоматическое обнаружение.

2 января 2024 года злоумышленники обновили пакеты, добавив в них скомпилированный исполняемый файл "analytics.node", который на момент публикации не детектировался антивирусами на VirusTotal. Усовершенствованная обфускация JavaScript-кода и путь к файлу отладки ("NeoShadow\core\loader\...") подтверждают, что кампания активно развивается.

Атака NeoShadow демонстрирует растущую изощрённость угроз, нацеленных на экосистему open-source. Сочетание типсквоттинга, использования доверенных системных утилит, динамической конфигурации через блокчейн и продвинутых техник уклонения от обнаружения делает эту кампанию значимым событием. Она подчёркивает критическую важность проверки зависимостей и использования инструментов для мониторинга цепочки поставок в жизненном цикле разработки программного обеспечения.

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

IPv4

  • 80.78.22.206

Domains

  • metrics-flow.com

SHA256

  • 012dfb89ebabcb8918efb0952f4a91515048fd3b87558e90fa45a7ded6656c07

Ethereum Address

  • 0x13660FD7Edc862377e799b0Caf68f99a2939B5cC

Mutex name

  • Global\NSV2_8e4b1d

NPM Packages

  • viem-js
  • cyrpto
  • tailwin
  • supabase-js
Комментарии: 0