ТЛ; ДР
Један npm издавач, deadcode09284814, водио је кампању са грешкама у типографији против легитимних axios chalk-template пакети од средине маја 2026.
Кампања је почела као конвенционална крађа акредитива и новчаника, извлачећи податке у Сервео HTTPS тунел.
On 2026-05-17, Са axois-utils:1.0.9, оператор је у потпуности заменио корисни терет: исти троструки инсталациони скелет, исти издавач, исто име пакета.
Али инсталациони скрипт је сада регрут за DDoS ботнет на више платформи.
Носивост говори о localhost.run тунел и прихвата команде за поплаву, претварајући заражена окружења у део ботнета способног за DDoS.
Оператор је чак и послао Бинарни код C2 сервера унутар тарбола, што показује јасну ескалацију од крађе акредитива до активне ботнет инфраструктуре.
Два пакета, четири верзије су и даље активне у регистру и један оператер сада покреће оба модула паралелно.
Озбиљност: висока.
Напад: Како функционише
Кампања је изграђена на намерно досадној скели за испоруку: два погрешна имена пакета, једно слово другачија од пакета са стотинама милиона недељних преузимања (акиос, шаблон за креду) и троструку инсталацију hooks који гарантују извршење. Занимљиво је шта скела носи — и чињеница да је оператер променио терет без икаквих других промена.
Заједничка скела
Свака објављена верзија оба пакета декларише иста три животна циклуса hooks in пацкаге.јсон:
"scripts": { "preinstall": "node <payload>.js", "install": "node <payload>.js", "postinstall": "node <payload>.js" } Навођење корисног терета под сва три hooks претерује се — након инсталације сам би се покренуо у подразумеваном режиму нпм инсталлИзбор је важан: npm инсталација –игноришите-скрипте прескаче скрипте, али неколико уобичајених токова рада (CI кеш враћа тај животни циклус поновног покретања) hooks селективно, или програмери који само врше ревизију након инсталације) да троструко редундантна декларација буде најсигурнија опклада за нападача.
креда-шаблон додаје други механизам: декларише axois-utils:^1.0.7 као време извршавања зависностИнсталирање грешке у куцању шаблон за креду стога повлачи и сродни typosquat, и оба корисна оптерећења се покрећу. Два пакета су координисани пар, а не независни спискови.
Фаза А — крађа акредитива / новчаника (2026-05-15 → данас)
Фаза А је оригинални терет. Утоваривач је кратак postinstall.js који указује на Serveo HTTPS обрнути тунел:
// chalk-tempalte/postinstall.js:11-13 const C2_HOST = "f04a273bd84c0622-80-200-28-28.serveousercontent.com"; const C2_PORT = 443; const C2_PATH = '/collect'; Сервео поддомен кодира одредишну ИП адресу (80.200.28.28) директно у имену хоста — препознатљива конвенција за ту услугу. Оператор ротира насумични префикс поддомена између верзија како би избегао листе блокирања наивних домена, али основна ИП адреса се никада не мења. (креда-шаблон:1.0.14 полован 8a3e818ea8f11186-80-200-28-28…; 1.0.16 / 1.0.19 / 1.0.20 употреба ф04а273бд84ц0622-….)
postinstall.js руке даље од phantom.js, модул „колектор“ у пакету од 7,667 линија. phantom.js шета домаћина за:
SSH приватни кључеви (~/.ssh/*) |
.npmrc садржај и било који npm_* токени окружења |
| Датотеке са акредитивима за AWS, GCP и Azure |
Регуларни израз токена за лични приступ GitHub-у (ghp_*, gho_*, ghu_*, ghs_*) |
| Артефакти крипто-новчаника за Биткоин, Егзодус, Електрум, Монеро, Лајткоин, Доџкоин, Зкеш, Деш |
Рекурзивни .env* прошетати ~/projects, ~/dev, ~/code, ~/workspaceи инсталациони cwd |
Историје шкољки и све process.env |
Пакет је ОБЈАВЉЕН у тунел Сервео на / цоллецтНема замагљивања, нема анти-виртуелне логике, нема постављања теме — оператер се ослања на јачину звука и брзину.
Фаза Б — Регрутовање за PhantomBot DDoS нападе (17.05.2026, само axois-utils:1.0.9)
Фаза Б замењује phantom.js + postinstall.js једном датотеком под називом distrube.js (грешка у куцању је од стране оператора). Троструки скофхолд у package.json је непромењен; пакет задржава исто име, опсег и образац за надоградњу верзије. Споља, axois-utils:1.0.9 изгледа као мањи наставак верзије 1.0.6. Унутра је то другачија породица малвера.
distrube.js отвара се конфигурационим блоком који именује сопствени брендинг оператера:
// axois-utils-1.0.9/distrube.js:11-15 |
// Use your localhost.run HTTPS URL (the tunnel handles HTTP internally) |
const C2_HOST = 'b94b6bcfa27554.lhr.life'; // Your localhost.run tunnel |
const C2_PORT = 443; // HTTPS port - tunnel handles SSL |
const BOT_ID = `${os.hostname()}_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`; |
Коментари су упућени будућем оператеру који покреће комплет („Користите ваш HTTPS URL localhost.run“). То, плус оно што се испоручује поред бот клијента, јесте знак да ово није само корисни терет жртве — то је комплет.
Ток:
- Истрајност Прво се покреће. Скрипта се инсталира на три различита начина по оперативном систему (регистар трчање + Почетна фасцикла + сцхтаскс на Windows-у; crontab + phantom-bot.service системска јединица + .басхрц/.зсхрц додај + /етц/рц.лоцал на Линуксу; ЛаунчАгент com.phantom.bot.plist на macOS-у). Назив сервиса перзистенције и ознака LaunchAgent су фантом-бот / com.phantom.bot, одакле потиче и назив кампање.
- Системске информације извучене покреће се једном — једнократни отисак прста POST на b94b6bcfa27554.lhr.life:443/collect који носи име хоста, платформу, arch, корисничко име, CPU/RAM, мрежне интерфејсе, process.env, cwd, кућни директоријум, верзију чвора и јавну IP адресу. Ово је много мање агресивно него Фаза А: нема SSH, нема новчаника, нема .env рекурзије. Посао бота је да се региструје, а не да краде.
- Петља откуцаја срца отвара HTTPS POST сваких 30 секунди на b94b6bcfa27554.lhr.life:443/. Кориснички агент је PhantomBot/1.0. TLS верификација је експлицитно онемогућена (rejectUnauthorized: false). C2 одговор се рашчлањује као JSON облика {type, target, port, duration, threads, method} и шаље.
- Арсенал од поплава повезан је са шест команди:
| Тип команде | Модули | белешке |
|---|---|---|
| пинг | Одговор на живост | Бот се идентификује |
| хттп | ХТТП поплава | Поплава захтева слоја 7 |
| ХТТПС | HTTPS поплава | Исто као http, обмотано TLS-ом |
| тцп | TCP поплава | 65 KB насумичног садржаја спама |
| удп | УДП поплава | UDP пакети од 65,507 бајтова |
| nhanh | DoS са брзим ресетовањем на HTTP/2 | Техника CVE-2023-44487 из 2023. |
Свих пет модула за поплаве узимају мета, лука, трајање, i теме аргумент — бот је генерички флудер за изнајмљивање, није усмерен ни на једну одређену жртву. Листа жртава оператера се налази на C2, а не у пакету.
Шта је ново овде — испоручени C2 бинарни фајл
Фаза А је познатог облика: крађа акредитива, превара при инсталирању, тунелирање C2 од стране добављача. Фаза Б је Такође познати облик — DDoS ботнети су годинама били део злонамерних npm пакета. Необично је то што је оператер испоручио страна сервера комплета унутар npm tarball-а:
- c2 — компајлирани бинарни Go ELF од 4 мегабајта
- c2.go — изворни код Go-а од 426 линија за тај бинарни код
Ниједна датотека се не позива ниједним инсталационим хооком. Оне нису део жртвиног корисног оптерећења. Налазе се у директоријуму пакета на исти начин као што би се налазила датотека документације. Највероватније тумачење је да је оператер померио своје развојно радно стабло на npm без курирања листе датотека — права OpSec грешка — и оно што је испоручено је комплетан двострани комплет: клијент кога покреће жртва и сервер који покреће оператер.
Ово је део приче који оправдава формулисање „комплета за ботнет по принципу „кључ у руке“. Свако ко је преузео axois-utils:1.0.9 Пре него што се изврши уклањање, нема само узорак жртве — имају и функционалан C2 сервер.
Осовина, у једној реченици
Исти издавач, иста имена пакета, иста трострука скела, исти „фантомски“ брендинг — али корисни терет је преко ноћи променио модел монетизацијеод „сакупљања тајни које могу препродати“ до „изнајмљивања капацитета поплаве које могу да изнајмим“. Временски период инсталације (TTP) на који би браниоци требало да пазе су готово идентични у обе фазе; одбрана заснована на потписима повезана је са низовима путање новчаника Фазе А или са phantom.jsКолекционар од 7,667 редова би потпуно пропустио Фазу Б.
| Датум (UTC) | догађај |
|---|---|
| 2026-05-15 | Прва публикација: axois-utils:1.0.4 (Тест LAN мреже, развојни систем на 192.168.129.19) |
| 2026-05-15 | axois-utils:1.0.6 објављено — Фаза А Ц2 замењена са 80.200.28.28 преко тунела Сервео; коментар извора // Change to '80.200.28.28' for public потврђује замену dev→prod |
| 2026-05-16 | chalk-tempalte:1.0.14 1.0.16 објављено — декларисање ланчаног учитавача axois-utils:^1.0.7 као зависност током извршавања; поддомен Serveo ротиран |
| 2026-05-16 | Кампања фазе А откривена током рутинског нпм скенирања; примењене су закључке о потврђеном злонамерном понашању |
| 2026-05-17 | axois-utils:1.0.9 објављено — пивот корисног оптерећења: регрутовање PhantomBot DDoS-а преко тунела localhost.run; на страни оператера c2 бинарни и c2.go изворни код је послат у tarball-у |
| 2026-05-17 | chalk-tempalte:1.0.19 1.0.20 објављено — још увек Фаза А (крадец); оператер сада покреће оба модула паралелно |
| 2026-05-17 | Откривање фазе Б током рутинског скенирања; закључци примењени на све 2026-05-17 верзије |
| (у току, сталан) | Извештаји о уклањању су на чекању; сва четири објављена пакета су и даље доступна у регистру у време писања |
Индикатори компромиса
Пакети
| Екосистем | пакет | верзије |
|---|---|---|
| нпм | axois-utils (типоскват од аксиоса) | 1.0.4, 1.0.6, 1.0.9 |
| нпм | chalk-tempalte (типосквот кредастог шаблона) | 1.0.14, 1.0.16, 1.0.19, 1.0.20 |
Идентитет аутора
| Поље | Vrednost |
|---|---|
| НПМ издавач | deadcode09284814 |
| Имејл адреса издавача | phantomdeadcode@tutamail.com |
| SCM верификација | ниједан |
Цомманд-анд-цонтрол
| Фаза | Крајња тачка | превоз |
|---|---|---|
| A | f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect | Сервео HTTPS тунел |
| A | 8a3e818ea8f11186-80-200-28-28.serveousercontent.com:443/collect | Serveo HTTPS тунел (ранија верзија) |
| A | 80.200.28.28:443/collect | Основна VPS крајња тачка |
| B | b94b6bcfa27554.lhr.life:443/ | localhost.run HTTPS обрнути тунел |
Сажеци датотека (SHA-256)
| Фајл | СХА-КСНУМКС | белешке |
|---|---|---|
c2 (Иди на ELF, 4 MB) | 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 | C2 сервер на страни оператера, испоручује се унутра axois-utils:1.0.9 |
c2.go (426 редова) | 7d0ae79fdb1e9968f3323a3712b624643a782ba3efb2cf3a2cb9c4c5513cea30 | Go изворни код за C2 бинарни фајл |
distrube.js | 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 | Бот клијент фазе Б |
phantom.js (chalk-tempalte:1.0.19) | 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 | Сакупљач акредитива / новчаника фазе А |
phantom.js (chalk-tempalte:1.0.20) | d1c9e3f296ee9f7d5032f73f9c504cede50334bc14c394055fd5cb9c3a6e08b3 | Колектор фазе А (варијанта 1.0.20) |
postinstall.js (chalk-tempalte:1.0.19 = 1.0.20) | ffba9bdd6793edd5b38e12900252c1813a693f59c25af51c3b658cf3f27b6162 | Фаза А учитавања, идентичан бајтовима у обе верзије |
Атрибуција и мотивација
Пратимо ову кампању као ПхантомБот, преузимајући сопствени бренд оператера од Кориснички агент: PhantomBot/1.0 заглавље откуцаја срца, phantom-bot.service системска јединица, та com.phantom.bot Ознака LaunchAgent-а и phantomdeadcode@ имејл адреса. Оператор је доследан у вези са овим именом у најмање четири артефакта.
Каталог сигнала
- Издавач - мртви код09284814 на npm-у. Налог са једним управљачем, једнократна е-пошта Tutamail-а, не SCM верификација. Нема претходне историје објављивања изван ове кампање.
- Поновна употреба бренда — „phantom“ се појављује у имејлу издавача, у називу датотеке колектора Фазе А (phantom.js), у називу услуге перзистентности фазе Б (phantom-bot.service), у ознаци LaunchAgent-а (com.phantom.bot), и у корисничком агенту бота (ФантомБот/1.0).
- Инфраструктура — Један VPS на 80.200.28.28 фронтови Фазе А путем ротације Сервео поддомена; Фаза Б се помера ка а localhost.run обрнути тунел (б94б6бцфа27554.лхр.лифе). Обе услуге добављача су бесплатне и захтевају само одлазни SSH на страни оператера, што је у складу са нискобуџетним подешавањима са ниским оперативним безбедношћу.
- Стил кода — Једноставан JavaScript свуда; без обфускације, без кодирања низова, без анти-виртуелних провера. Имена променљивих су описна (krađaSystemInfo, извршиКоманду, httpFlood). Коментари у distrube.js директно се обраћају будућем оператору („Користите свој HTTPS URL localhost.run“), што сугерише да је датотека била намењена за редистрибуцију као комплет, а не за коришћење од стране једног нападача.
- Оперативна безбедносна листа — Фаза Б тарбол садржи и бот клијента и C2 сервер на страни оператера (c2 ВИЛЕЊАК + c2.go извор). Ово је у складу са оператором који је проследио своје радно стабло на npm без ревизије листе датотека. Или је оператор неискусан или је комплет значило да се дистрибуира јавно, а бинарна датотека C2 је део производа.
- Самопотврда - axois-utils:1.0.4 садржи коментар извора // Промени на '80.200.28.28' за јавност у линији 12, потврђујући напредак у развоју / припремама / производњи који оператери обично поричу.
Мотивација
Фаза А је директна финансијска крађа: акредитиви, клауд кључеви, GitHub токени и крипто новчаници имају ликвидна тржишта препродаје. Фаза Б је такође финансијска, али индиректна: DDoS сервиси за изнајмљивање („booter“) изнајмљују капацитет по минуту, а ботови попут оног који је овде испоручени су инвентар на којем те услуге раде. Откуцај срца од 30 секунди, генерички мета/лука/трајање командна шема и арсенал од пет протокола за поплаве су standard производ оператера покретања система.
Паралелно покретање оба модула — креда-шаблон:1.0.19 1.0.20 наставити са слањем крадљивца док axois-utils:1.0.9 шаље бота — сугерише да оператер штити токове прихода уместо да напушта Фазу А. Преокрет је додатак, не замена.
Оно што не тврдимо
Нисмо успели да потврдимо стварни идентитет иза мртви код09284814 ручку, и не приписујемо ову кампању ниједном именованом актеру претње, групи или земљи. Брендирање „фантом“ је довољно доследно у свим артефактима да сугерише једног оператера, али испорука бинарне датотеке C2 у стилу комплета оставља могућност да ће будући пакети из неповезаних ручки поново користити исти код.
Утицај, трендови и шта браниоци треба да ураде
Утицај
Легитимни циљеви чучњева акиос шаблон за креду се у великој мери ослањају на JavaScript екосистем; акиос сам се налази међу тридесет најпреузиманијих npm пакета. Имена са типосквотом су удаљена само један притисак тастера од правих (аксој ↔ акиос, шаблони ↔ шаблон), и обе су лингвистички вероватне правописне грешке.
Нисмо успели да добијемо поуздану статистику преузимања за злонамерне верзије пре уклањања — npm не чува број преузимања по верзији након што је пакет опозван са објављивања, и npms.ioПроксији у стилу -су бучни на овој скали. Било која организација чији се lockfile решава у пакет под називом axois-utils or креда-шаблон од издавача мртви код09284814 треба третирати као угрожено: ротирати сваки акредитив који се налази у process.env на погођеном хосту, проверите векторе перзистенције по ОС (погледајте „Шта браниоци треба да ураде“ испод) и уклоните зависност.
Нови обрасци
Ова кампања илуструје промену коју смо видели у неколико недавних инцидената са новим јавним медијима: Скела са куком за монтажу је трајна предност; корисни терет се може заменитиИсти издавач, исти пакет, исто преинсталл / инсталирати / након инсталације трострука, па чак и иста каденца повећања верзије — једина ствар која се променила између axois-utils:1.0.6 axois-utils:1.0.9 је ли датотека била hooks покренути. Детекција заснована на потпису повезана са корисним теретом Фазе А (низови путање новчаника, phantom.jsКолектор од 7,667 редова, домаћин Serveo C2) би означио прве три верзије и потпуно пропустио Фазу Б.
Исти образац је видљив и у другим кампањама из 2026. које смо пратили: један оператер са стабилном платформом, који се смењује између крађе акредитива, клијената који варају на испитима, избацивања путем Телеграм ботова, а сада и регрутовања путем DDoS-а. Браниоци који се ослањају на потписе корисног терета ће наставити да губе други круг сваке кампање.
Последица је да Временски периоди инсталирања (TTP) су бољи сигналТроструке декларације install-hook-а, инсталирају скрипте које увозе ХТТПС or дете_процес, инсталирајте скрипте које пишу у фасцикле за покретање корисника и инсталирајте скрипте које разрешавају имена хостова на бесплатним сервисима обрнутог тунела (Serveo, localhost.run, ngrok, cloudflared) су ретки у легитимним пакетима, а уобичајени у злонамерним.
Шта браниоци треба да ураде
- Ревизија закључаних датотека. Претражи сваких пацкаге-лоцк.јсон / пређа.брава / пнпм-лок.yaml у вашој организацији за тачне стрингове axois-utils креда-шаблонТретирајте било који меч као компромис.
- Ротирајте тајне на погођеним домаћинима. Фаза А масовно прикупљени SSH, cloud, GitHub, npm и новчани акредитиви. Претпоставите сваки акредитив који је икада присутан у process.env, ~ / .ссх, ~/.aws, ~/.npmrc, ~/.цонфиг, или било .env* датотека на погођеном хосту је изложена.
- Уклоните упорност (фаза Б). У оперативном систему Windows, обришите HKCU\Софтвер\Мајкрософт\Виндоус\Тренутна верзија\Покрени\Системско ажурирање, уклони %APPDATA%\Microsoft\Windows\Старт мени\Програми\Покретање\system-update.bat, i schtasks /delete /tn SystemUpdate /fНа Линуксу, цронтаб -е и уклоните @reboot чвор …, systemctl –user disable –now phantom-bot.service затим избриши ~/.config/systemd/user/phantom-bot.service, пилинг .басхрц / .зсхрц / /етц/рц.лоцалНа macOS-у, launchctl истовари ~/Library/LaunchAgents/com.phantom.bot.plist затим обришите плист.
- Блокирајте C2 хостове. Додајте четири C2 крајње тачке у IOC табели на вашу излазну листу блокова. *.serveousercontent.com *.lhr.life може бити блокиран у потпуности ако ваше окружење нема легитимну употребу за услуге обрнутог тунела.
- Потрага по времену инсталације (TTP), а не корисни терет. Уноси у закључану датотеку инвентара чији пацкаге.јсон објављен преинсталл, инсталирати, i након инсталације све указује на исти скрипт. Унакрсно проверите старост пакета и статус верификације издавача. Овај образац је редак у легитимним пакетима и најпоузданији је сигнал који PhantomBot поново користи.
- Ревизија за бинарни C2. Свако ко је преузео axois-utils:1.0.9 има C2 сервер оператера (c2 ЕЛФ, ша256 165fa92d…) на диску. Скенирајте кеш меморије и складишта артефаката CI. Бинарна датотека је сама по себи неактивна, али њено присуство на радној станици је недвосмислен доказ да је пакет инсталиран.
Завршна линија
Исти оператор, исти пакет и иста инсталациона веза могу да испоручи потпуно различите претње у року од 48 сати. Пазите на скелу, а не на корисни терет.




