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

Атака на цепочку поставок NPM

В репозитории npm, крупнейшем менеджере пакетов для экосистемы JavaScript, выявлены два вредоносных пакета - bianira-ui и fluid-type-ui. Они маскируются под легитимные плагины для популярного CSS-фреймворка Tailwind CSS, однако внутри содержат троян удалённого доступа (RAT), позволяющий злоумышленникам полностью контролировать заражённое устройство. Главная особенность этой находки - новый способ связи с командным сервером: адрес сервера зашифрован в байтах адреса получателя обычной криптовалютной транзакции. Метод получил название NullReceiver. Исследователи подчёркивают, что они не запускали код пакетов, а изучали его статически, а также проверяли публичные данные блокчейна.

Описание

Принцип работы NullReceiver заметно отличается от привычных схем. Обычно вредоносное ПО либо хранит адрес командного сервера прямо в своём коде, либо маскирует его, например, в данных транзакции. В данном случае программа не содержит никаких жёстко прописанных IP-адресов или доменов. Вместо этого она обращается к публичному блокчейну Ethereum через общедоступные сервисы и находит кошелёк, принадлежащий злоумышленнику. Затем троян просматривает последний исходящий перевод с этого кошелька и читает адрес получателя. Однако этот адрес не является реальным пунктом назначения средств. Он сгенерирован таким образом, чтобы в его байтах был закодирован IP-адрес командного сервера. Сам перевод при этом проводится на нулевую сумму и не содержит никаких дополнительных данных, поэтому выглядит как обычный обмен между кошельками.

Как показало исследование, NullReceiver устраняет главную слабость предыдущей техники, известной как EtherHiding. Та использовала фиксированный "адрес сжигания" - специальный адрес, на который отправляют токены для их уничтожения. EtherHiding встраивала секретную информацию в поле данных транзакции, но постоянный адрес назначения позволял защитным системам легко выявлять аномальные операции. NullReceiver каждый раз создаёт новый одноразовый адрес, который нигде ранее не встречался. В результате у защитных решений нет постоянной "зацепки", по которой можно было бы отличить вредоносную транзакцию от обычного перевода. Правда, у нового метода есть ограничение: он способен передать лишь несколько байт информации - этого достаточно для IP-адреса, но не для полноценного скрипта, как в случае с EtherHiding.

Сами вредоносные пакеты связаны с кампанией "Contagious Interview", которую эксперты приписывают группировкам из Северной Кореи (DPRK). Эта кампания известна использованием фальшивых предложений о работе для доставки вредоносного ПО. Новый метод - не первое усовершенствование в арсенале злоумышленников: ранее они переходили от простых жёстко прописанных доменов к использованию блокчейна как "мёртвой точки" для получения команд. EtherHiding и NullReceiver вписываются в эту же цепочку эволюции. По мнению аналитиков, с высокой вероятностью NullReceiver станет стандартным способом связи для будущих операций северокорейских хакеров, постепенно вытесняя EtherHiding.

У NullReceiver есть и слабое место. Несмотря на одноразовые адреса получателей, кошелёк отправителя переиспользуется в рамках одной кампании. Один и тот же кошелёк фигурирует в обоих обнаруженных пакетах. Это означает, что после того как аналитикам удаётся идентифицировать вредоносный пакет и связанный с ним кошелёк, они могут отслеживать дальнейшие команды, как и в случае с фиксированным адресом в EtherHiding. Однако найти этот кошелёк гораздо сложнее: он не является публично известным ориентиром, как адрес сжигания, и не привлекает внимания до тех пор, пока не выявлен сам образец вредоносного кода. Разница в том, что адрес сжигания интересен любому инструменту мониторинга с первого дня, а обычный кошелёк становится заметен только после детального анализа.

Для организаций, использующих npm-пакеты, эта находка служит напоминанием о важности проверки зависимостей. Рекомендуется регулярно обновлять используемые библиотеки, внимательно изучать изменения в обновлениях и обращать внимание на свежеопубликованные пакеты, особенно если они имитируют популярные инструменты. Дополнительную защиту обеспечивает мониторинг исходящих сетевых соединений на предмет подозрительной активности, а также использование специализированных средств анализа цепочки поставок программного обеспечения. Не менее важно обучать разработчиков основам безопасности и прививать привычку проверять происхождение каждой новой зависимости перед её внедрением в проект.

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

IPv4 Port Combination

  • 166.88.134.62:443
  • 166.88.134.62:80

NullReceiver-Encoded Recipient Address

  • 0xa658863ea658863e68656c6c6f6970626f742121

Attacker Ethereum Wallet

  • 0xa322e5f3d311d3080e6f0121063e9adc2490ef1a

Malicious Packages

  • npm/bianira-ui@1.27.0
  • npm/fluid-type-ui@2.0.8

Комментарии: 0