Клъстер от близо 800 зловредни пакета е публикуван в регистъра npm като част от нова кампания, предназначена да доставя кросплатформен зловреден софтуер, насочен към системи с Windows, Mac и Linux.
„Тези пакети изглежда използват имена на пакети, генерирани чрез изкуствен интелект или произволно генерирани тайпоскуотинг имена, но всички те доставят мощен RAT и зловреден код за кражба на данни“, заяви изследователят от OpenSourceMalware Пол Маккарти.
За разлика от други атаки срещу веригата за доставки на софтуер в npm, които използват куки за жизнения цикъл (lifecycle hooks) като preinstall или postinstall, за да задействат изпълнението на зловреден код, новоидентифицираните пакети се доставят с README файл, който инструктира разработчиците да ги зареждат с require() – вградена функция за импортиране на модули, локални файлове и пакети от трети страни.
Атаката води до изпълнението на програма за изтегляне, наречена WEL1DROPPER, която при стартиране идентифицира операционната система на хоста и архитектурата на процесора и извлича съвместим зловреден код от един от трите хоста на Cloudflare Workers. Трите домейна на Cloudflare Workers са изброени по-долу:
- oob-worker.cf103-070.workers[.]dev
- oob-worker.cf102-baf.workers[.]dev
- oob-worker.cf99-9b3.workers[.]dev
Ако изтеглянето чрез HTTPS се провали, зловредният софтуер преминава към специфичен за платформата домейн и използва DNS TXT записи, за да получи следващия етап от домейна „wel1[.]ru“. Домейнът за доставка на зловредния код за всяка операционна система и архитектура на процесора е следният:
„Пакетът първо изисква TXT запис от c.<domain>“, обяснява Маккарти. „Той анализира отговора като брой части от зловредния код, като приема стойност между 1 и 2000. След това изисква номерирани TXT записи. Върнатите низове се съединяват и се деkodират с Base64 в двоичен буфер.“
В последната фаза зловредният код се записва в temporary папка и се изпълнява чрез „/bin/sh“ на Linux и macOS, или чрез „cmd.exe“ на Windows.
Sonatype, която също проследява кампанията под името Flooding Dropper, заяви, че последната фаза се стартира като отделен процес. Версията за Windows предприема стъпки за отстраняване на проследяването чрез коригиране на Event Tracing for Windows (ETW) и Antimalware Scan Interface (AMSI), проверява за изолирани среди и виртуални среди, установява персистентност чрез ключ в системния регистър (Registry Run) и планирана задача, след което изтегля криптиран зловреден код („/pkg/update_win.exe“) и го стартира.
Веригата на заразяване при macOS е подобна, като извършва идентичен набор от действия за търсене на дебъгери и артефакти за анализ, преди да извлече съвместим зловреден код („/pkg/beacon_mac.bin“) от отдалечен сървър. Ако това се провали, тя използва гореспоменатата доставка чрез DNS TXT, настройва персистентност с LaunchAgent и след това стартира изпълнимия файл в отделен процес.
От друга страна, примерът за Linux представлява ELF двоичен файл, компресиран с UPX, който е конфигуриран да изтегля спомагателен зловреден код от URL адрес на Cloudflare Worker („oob-worker[.]cf99-9b3.workers[.]dev“), което в крайна сметка води до внедряването на Sliver – рамка с отворен код за управление и контрол (C2).
Установено е също, че пакетите съдържат файл, наречен „lib/telemetry.js“, който внедрява на пръв поглед легитимен SDK за телеметрия, но съдържа и същата логика за изтегляне.
„Входната точка на пакета не импортира този файл и той не съдържа допълнителна твърдо кодирана инфраструктура“, казват от OpenSourceMalware. „Прекомерно голямото внедряване на телеметрия изглежда има за цел да създаде шум и да накара зловредното поведение да изглежда като вградена функционалност за профилиране или анализи при бърз преглед.“
Наличието на домейни като „tcsbank[.]ru“ и „cloudpayments[.]ru“ в зловредния код за macOS показва, че кампанията може да е насочена към руски финансови институции и мобилни плащания.
Също така се подозира, че това е еволюция на кампания за замяна на зависимости (dependency confusion), с кодово име Moika, която беше наблюдавана по-рано през април тази година и при която над 250 пакета бяха публикувани в регистъра npm с цел кражба на информация за средата и доставка на вторичен зловреден код, специфичен за операционната система.
Това развитие идва в момент, когато Palo Alto Networks Unit 42 документира множество кампании, насочени към npm и хранилището Python Package Index (PyPI):
- Набор от 10 npm пакета, които изтеглят скрит инструмент за кражба на криптовалута и троянец за отдалечен достъп от външен сървър. „След инсталирането пакетите експортират функция „getPlugin“, която изгражда URL адреса, от който се изтегля зловредният код под формата на обфускиран JavaScript код тип IIFE, вграден в JSON обект“, казват от Unit 42. „Зловредният код внедрява инструмент за кражба на криптовалута и троянец за отдалечен достъп (RAT), който позволява на атакуващия да изпълнява произволни команди на заразения хост.“
- Набор от зловредни пакети в npm и PyPI, представляващи множество различни злонамерени субекти, които са способни да ексфилтрират идентификационни данни за облачни услуги, да доставят C2 дропъри, базирани на EtherHiding блокчейн, да крадат ключове за портфейли на Solana криптовалута чрез Telegram, да ексфилтрират тайни от .env файлове, да изпълняват отдалечен код чрез социално инженерство с фалшиви CAPTCHA тестове, както и да крадат Discord токени и идентификационни данни за GitHub Actions CI/CD.