Дълготрайна кампания със зловреден софтуер в npm, наречена MALFEX, е насочена към разработчици за Windows с инструменти за отдалечен достъп, софтуер за кражба на данни и скрити модули за изтегляне.
Атаката използва осем злонамерени пакета и три отделни пътя за доставка, включително изпълним файл за Windows, маскиран като PNG, и криптирана програма, скрита след реалните данни на изображението.
Операторът публикува пакети от август 2023 г. В рамките на осемте злонамерени пакета npm регистрира 40 767 изтегляния до 1 октомври 2026 г., включително 3 017 през предходната седмица.
Тези числа показват обхвата на пакетите, а не потвърдени инфекции: изтеглянията могат да включват повторни инсталации, зависимости и системи, които не могат да изпълняват зловредния код за Windows.
Изследователи от Checkmarx идентифицираха кампанията в доклад от 5 октомври. Те свързаха дванадесет пакета с един вероятен оператор, като четири чисти пакета са използвани за прикритие.
Името MALFEX се появява в профилите на издателя, записите в хранилището и документацията на пакетите, като ключът за декриптиране на изображението също носи същото наименование.
MALFEX npm Malware Hides Executables in PNG Files
Първият път за доставка използва три пакета, които изпълняват скрити скриптове преди или след инсталацията. Тези скриптове извличат файл, доставен като image/png, запазват го като изпълним файл за Windows и го стартират.
Въпреки етикета за изображение, изтегленият файл е архив на Microsoft IExpress, а не нормално PNG изображение. В архива подписан интерпретатор на AutoIt изпълнява криптиран скрипт.
![postinstall[.]js (Source - Checkmarx)](/media/articles/4443/img-1.webp)
Няколко стъпки на декодиране, включително XOR, RC4 и LZNT1 компресия, разкриват Overlord RAT. Анализът на кода показва инструкции за инжектиране на RAT в подписан процес на Windows, като същевременно прави Explorer да изглежда като негов родителски процес. Изследователите не са наблюдавали това инжектиране по време на тестовете в реално време.
Вторият път работи по различен начин. Верига от три пакета извлича истинско PNG изображение с добавени криптирани данни на изпълним файл след неговия маркер за край.
Зловредният софтуер извлича тези данни и ги декриптира с помощта на AES. Модул за изтегляне на Go след това извлича movinlike, 64 MB софтуер за кражба на информация за Node.js, пакетиран като изпълним файл за Windows.
Тази верига се изпълнява при зареждане на пакета, а не чрез скрипт за инсталиране. Тази разлика е важна, тъй като деактивирането на скриптовете от жизнения цикъл на npm не я спира.
Cyber Security News по-рано отрази друга npm атака, криеща RAT в PNG изображения, въпреки че тази кампания съхраняваше зловредния код в пикселите на изображението, вместо да използва методите на MALFEX.
Remote Control, Account Theft, and Hidden Downloads
Overlord поддържа заснемане на екрана, запис на натиснатите клавиши, събиране на данни от клипборда, търсене на файлове, отдалечени команди и скрит работен плот.
Неговият модул за зареждане създава планирана задача (scheduled task), която се изпълнява на всеки пет минути и носи със със задна дата начална дата от 2020 г. Проверката само на ключовете за автостартиране в системния регистър би пропуснала този метод за запазване на присъствието (persistence).
RAT може да получава адреси на сървъри от криптирани бележки към трансакции в Solana. Анализираната извадка обаче нямаше конфигуриран Solana адрес или списък със сървъри и изследователите не видяха трафик към командни сървъри (command-and-control).
![index[.]js (Source - Checkmarx)](/media/articles/4443/img-2.webp)
Това е поддържана възможност, а не доказателство, че базираният на блокчейн контрол е бил активен в тестваната инфекция. Софтуерът за кражба movinlike е насочен към токени на Discord, бисквитки на браузъра и запазени пароли, сесии на Telegram и портфейли за криптовалута.
Той променя скриптовете за стартиране на Discord, събира подробности за профили и изпраща откраднати файлове към Discord webhook в компресирани части. Предишни доклади за многостепенната кражба на данни за достъп на StegaBin показват защо инсталациите на пакети от разработчици заслужават щателни проверки за сигурност.
Третият път крие модул за изтегляне в пакет с ASCII изкуство. Специфична стойност на шрифта задейства изтеглянето, докато дългите поредици от интервали избутват злонамерения код извън видимия прозорец на редактора.
Грешките при изтегляне се пренебрегват тихомълком. Последният анализиран зловреден код не беше наличен и Checkmarx не откри доказателства, свързващи този отделен модул за изтегляне с movinlike.
Три злонамерени пакета останаха достъпни за инсталиране в снимката на Checkmarx от 1 октомври. На два липсваха предупреждения за зловреден софтуер (malware advisories), докато друго предупреждение покриваше само две от четири злонамерени версии.
Екипите, разчитащи само на бюлетини с предупреждения, следователно биха могли да пропуснат известен зловреден код. Тези констатации описват проверките към датата на доклада, а не състояние на регистъра в реално време.
Разработчиците трябва да инспектират дърветата със зависимости, lockfile файловете, кешовете на пакетите и крайните точки за Windows. Ако е инсталиран засегнат пакет, изолирайте хоста, запазете доказателствата, премахнете механизмите за запазване на присъствието и променете изложените пароли от чиста система.
Прекратете сесиите в Telegram и преместете изложените средства в криптовалута към нови портфейли. Блокирайте всички осем злонамерени пакета и техните специфични пътища за изтегляне, без да блокирате напълно споделените хостинг услуги.
Самото премахване на пакетите не отменя откраднатите сесии или инсталирания зловреден софтуер. Свързаното отразяване на фалшиви съобщения при npm инсталация и компрометирани SAP npm пакети подсилва риска от сляпо доверие в процесите по инсталиране на пакети.
Анализът на пейзажа на заплахите в npm от Unit 42 предоставя по-широк контекст за тези рискове във веригата за доставки. Екипите по сигурност трябва също да прегледат активността в профилите и да премахнат злонамерените копия от вътрешните регистри, преди разработчиците да преинсталират засегнатите зависимости.
Indicators of compromise (IoCs):-
| Package | Malicious versions |
|---|---|
| function-flag | 1.7.3, 4.0.0, 3.0.0, 2.3.5–2.3.9 |
| function-color | 1.7.3, 1.0.0 |
| cdn-img-fetch | 1.0.0–1.0.3 |
| img-to-native | 1.0.0–1.0.3 |
| native-runner | 1.0.0–1.0.3 |
| tlxbnhd | 0.0.1 |
| tldriver | 0.0.1 |
| mxdriver | 0.0.1, 0.0.2 |
Тези диапазони от версии са изрично идентифицирани като злонамерени; Checkmarx посочва, че function-flag@2.3.4 не е злонамерен.
URLs and Hosts
| Индикатор от източника | Роля |
|---|---|
| hxxps[:]//api.imghippo.com/files/hOG8244hc.png | Overlord зареждаща програма, доставяна като PNG |
| www.image.com | Втори домейн за доставка на Overlord, свързан с mxdriver |
| hxxps[:]//raw.githubusercontent.com/cavecrew/proj/main/banner.png | Изображение от веригата за кражба на данни (stealer); използвано от cdn-img-fetch версии 1.0.0–1.0.2 |
| hxxps[:]//raw.githubusercontent.com/cavecrew/proj/main/banner.jpg | Зловреден код за cdn-img-fetch@1.0.3 |
| hxxp[:]//104.234.65.75:700/setup.exe | Изтегляне на movinlike |
| hxxp[:]//104.234.65.75/setup.exe | Алтернативен път за изтегляне на movinlike |
| hxxps[:]//cdnzona.discloud.app/node.exe | Зловреден код за function-flag@1.7.3 |
| hxxps[:]//apicdn.squareweb.app/attachments/1392577835742265576/1395570372077682768/svchost.exe | Зловреден код за function-flag@4.0.0 |
| hxxps[:]//bypasscdn.onrender.com/hxxps[:]//cdn[.]discordapp[.]com/attachments/1392577835742265576/139557037… | function-flag@3.0.0; незавършен в IoC таблицата на източника |
| hxxps[:]//45.89.30.194/attachments/1242231519943069778/1270557692171128915/nocry.exe | Зловреден код за function-flag@2.3.9 |
| hxxps[:]//45.89.30.194/attachments/1255944996503158885/1263421457598386237/malfex.exe | Зловреден код за function-flag@2.3.8 |
| hxxps[:]//191.96.81.101/attachments/1255944996503158885/1259416184265244682/malfex.exe | Зловреден код за function-flag@2.3.7 |
| hxxps[:]//apizona.onrender.com/attachments/1255944996503158885/1259416184265244682/malfex.exe | Зловреден код за function-flag@2.3.6 |
| hxxps[:]//51.137.158.178/download | Зловреден код за function-flag@2.3.5 |
| discord.com/api/webhooks/1553545982975811594/… | Уебхук на movinlike за кражба на данни; токенът е пропуснат от източника |
Таблицата с версии на зловредния код на Checkmarx използва hxxp[:] вместо hxxps[:] за двата пътя към 45.89.30.194, пътя към 191.96.81.101 и 51.137.158.178/download. Поради това и двата протоколни варианта са посочени от източника. Докладът също така предупреждава да не се блокират изцяло споделени домейни на услуги; използвайте конкретните зловредни пътища.
SHA-256 хешове
| Артефакт | SHA-256 |
|---|---|
| Зареждаща програма за Overlord RAT, доставяна като PNG | 9aba4685af072231aee049e1a5e294965580001b364d7d00152d84fcec1ce793 |
| Подписан AutoIt3.exe от архива | 5d69a932a077fee044b193c28e84564143f5c7e51079ab48e88fef74ab0b77b7 |
| Криптиран скрипт Oxygen.a3x / h.a3x | fd199d3977e1a2945b6031fc8696660a980e4f4617899baa045efe7ccbc8de67 |
| Декодиран Overlord RAT | 2989244eac2a4bc7a13a09dec003e5c05ef7c80b2afe0958ce25042d5b804210 |
| Текущ banner.png | 4f4f7d64139bde6d458a061c7fb7dd247f70f60a1ab47d87fd3634656586c106 |
| Програма за изтегляне от веригата за кражба на данни, 25 септември | 889e13e227bc2b762178b88c35c691db3256e72be64d92ff1f381d29a2789849 |
| Програма за изтегляне от веригата за кражба на данни, 25 септември | e7f86f6cc4380db66d333eaf6f7dfc2c12d232c2bcd526434681245dea25efa4 |
| Програма за изтегляне от веригата за кражба на данни, 25 септември | ff826d2778ea1d40ce8ebfd9d66ecc86d4c811f5654b8a466a7e220ebbbc6807 |
| Програма за изтегляне от веригата за кражба на данни, 26 септември | 2f268ca76ab27971d8b16bd4ded26e1f9cd3d4460b894af2d4bdf89f0ab7ec4b |
| tlxbnhd/scripts/postinstall.js | 7acf331117900179b483142f216fdcb22c671eb0b1971abd57f01bc036248a6e |
| movinlike | c9c374afba4658dff15f71801e88c4d199c91dd2622d72c7b0c55577c8f73437 |
| img-to-native@1.0.1/index.js | c7cf2323e4923428984297db7715d75fec5b964fe65c325b53e3fa360f3b8d86 |
| cdn-img-fetch@1.0.0/index.js и версия 1.0.1 | 430300450f5acbd69c29f02d8c2e243f7d1d6202d1826f6e4d7715f95c47299b |
| cdn-img-fetch@1.0.2/index.js | 4cba0c785e66d517eabd0164f34a9c2d04549da93b5ee3eebdce5558daa2f47c |
| cdn-img-fetch@1.0.3/index.js | 5c933aa533721fa293b284170dd4611a4d88f88cc89f2d9c28ea4e22305b1f75 |
| cdn-img-fetch@1.0.3 — banner.jpg | 8f7ed69fb5505b57f06e673826779d459f7735739756de73a6d3347a9c8ea0cc |
| function-flag@1.7.3/index.js | d54853d6be467567d9f22d7f22ac48214df52c1f9c7a503930e901286423044a |
| function-flag@1.7.3/example.js | 886b84f83a0f760e664046ba40d8c800b7d0cf72190e13ca031ee5cf50f45bee |
Всички хешове са възпроизведени така, както са публикувани. Checkmarx отбелязва, че movinlike може лесно да бъде прекомпилиран, така че специалистите по защита трябва да комбинират проверките на хешовете с доказателства от файлове, задачи и мрежова активност. Подписаният интерпретатор на AutoIt е легитимен софтуер; неговият хеш сам по себе си не доказва инфекция извън контекста на тази кампания.
Хост артефакти и персистентност
| Индикатор | Значение |
|---|---|
| %LOCALAPPDATA%\ScopeSmart Technologies Inc\ | Директория на зареждащата програма на Overlord |
| %LOCALAPPDATA%\ScopeSmart Technologies Inc\AutoIt3.exe | Интерпретатор, използван от зареждащата програма |
| %LOCALAPPDATA%\ScopeSmart Technologies Inc\h.a3x | Криптиран AutoIt скрипт |
| %LOCALAPPDATA%\ScopeSmart Technologies Inc\SmartScope.vbs | Свързан скрипт |
| Планирана задача \Maiden | Персистентност на Overlord |
| Команда на задачата „AutoIt3.exe“ „h.a3x“ | Планирано изпълнение |
| Интервал на задачата: на всеки пет минути, без краен час | Времеви параметри на персистентността |
| Начална дата на задачата: 1/1/2020 | Антидатирани метаданни на задачата |
| Автор на задачата: Welcome; коментар: Wichita | Свързани метаданни на задачата |
| <package dir>\gldriver_pre_core.exe | Пуснат зловреден код на Overlord, изтрит след стартиране |
| <package dir>\gldriver_pre_asset.exe | Пуснат зловреден код на Overlord, изтрит след стартиране |
| %APPDATA%\Microsoft\Windows\node_runtime_helper.exe | Декриптирана програма за изтегляне от веригата за кражба на данни |
| %TEMP%\._cif_data | Междинен файл от веригата за кражба на данни |
| %APPDATA%\node.exe | Зловреден код за function-flag@1.7.3 |
Тези пътища и подробности за задачите са документирани в секциите за хост артефакти и персистентност на източника.
Подкрепящи индикатори за атрибуция
| Индикатор | Контекст от източника |
|---|---|
| malfexkkj, malfex_user, malfexteste2, malfexteste3, malfexteste4 | Профили на издатели в npm |
| corpmalfex[@]gmail.com | Имейл адрес на Git автора на хранилището със зловреден код |
| malfexteam2027 | AES ключ за декриптиране във веригата за кражба на данни |
| Murizada | Име на собственика, посочено в README файла на пакета |
Забележка: IP адресите и домейните са нарочно неутрализирани (напр. [.]), за да се предотврати случайното им разпознаване или създаването на хипервръзки. Възстановете ги само в рамките на контролирани платформи за анализ на киберзаплахи като MISP, VirusTotal или вашата SIEM система.
Спира заплахите преди тяхното въздействие с 21 минути по-бързо средно време за отстраняване (MTTR). Интегрирайте изолираната среда (Sandbox) на ANYRUN във вашия SOC