КИБЕРБЕЗОПАСНОСТЬ

Троянские npm-пакеты спрятали IP C2 в адресе получателя Ethereum-транзакции

Исследователи выявили новые троянские пакеты npm, использующие блокчейн для скрытия IP адресов C2, угрожая безопасности пользователей.

✍️ Редакция iTech News | 21.09.2025 | ⏱ 3 мин | Источник: The Hacker News
Обнаружены троянские пакеты npm, скрывающие IP C2

Два троянизированных пакета npm — bianira-ui и fluid-type-ui — вытаскивали IP-адрес командного сервера не из кода и не из смарт-контракта, а из адреса получателя пустой Ethereum-транзакции. Для разработчиков это плохая новость: блокчейн как закладка для C2 стал дешевле, тише и заметно менее удобным для мониторинга.

Пакеты сняли с npm после сотен загрузок

О находке написал The Hacker News со ссылкой на исследование OpenSourceMalware. Речь идет о версиях bianira-ui@1.27.0 и fluid-type-ui@2.0.8, опубликованных 28 июля 2026 года. До удаления с npm первый пакет успели скачать 109 раз, второй — 587 раз. Их опубликовали аккаунты npmuser1101 и npmuser3002.

OpenSourceMalware относит активность к северокорейской кампании Contagious Interview. Это важная деталь не ради геополитики, а ради практики: такие операции давно охотятся именно на разработчиков, потому что один зараженный ноутбук или один скомпрометированный сборочный контур CI могут открыть дорогу к токенам, приватным репозиториям и внутренним пакетным зеркалам.

NullReceiver кодирует C2 прямо в адресе перевода

Новая техника получила название NullReceiver. Логика такая: вредоносный пакет берет жестко заданный кошелек атакующего, находит его последнюю исходящую транзакцию, читает адрес получателя и превращает первые четыре байта этого адреса в IP. В исследовании так получили адрес 166.88.134[.]62.

Адрес получателя здесь не нужен как настоящий кошелек. Он работает как носитель данных. В разобранном примере адрес 0xa658863ea658863e68656c6c6f6970626f742121 давал не только IP, но и хвост helloipbot!! в ASCII. Сами исследователи называют эту схему «осознанным улучшением EtherHiding».

Главное отличие от EtherHiding

Предыдущие блокчейн-C2-схемы вроде EtherHiding обычно прятали указатель на сервер в данных транзакции или в смарт-контракте. У защитников оставался хотя бы стабильный ориентир: контракт, адрес сжигания или заметная полезная нагрузка в поле calldata. NullReceiver убирает и этот след.

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

У техники есть и ограничение: в адрес получателя много не упакуешь. Поэтому NullReceiver подходит скорее для короткого указателя вроде IP-адреса, а не для полного URL или скрипта. Но для первичного выхода на C2 этого уже достаточно.

Что это меняет для команд разработки

Для команд в России и СНГ вывод довольно приземленный: одного npm audit здесь мало, потому что речь не об известной уязвимости, а о заведомо вредоносной библиотеке. Если у компании есть внутренний npm-прокси, автоматические сборки и привычка быстро подтягивать малоизвестные библиотеки интерфейса, такой сценарий вполне рабочий и без громких ярлыков про госхакеров.

Практический минимум выглядит так: фиксировать версии зависимостей, ограничивать установку новых пакетов без проверки, следить за неожиданными обращениями сборочных машин к публичным Ethereum RPC-узлам вроде 1rpc.io и eth.drpc.org, а также отдельно разбирать любые зависимости с короткой историей загрузок и размытым описанием. В атаках на цепочку поставок ПО дешевый пакет-подделка до сих пор работает лучше, чем многие сложные эксплойты.

Источники: The Hacker News, OpenSourceMalware.

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

Поделиться: Telegram X LinkedIn