TL. DR
Մեկ npm հրատարակիչ, deadcode09284814, վարել է տպագրական կեղծիքների արշավ օրինականության դեմ axios և chalk-template փաթեթներ 2026 թվականի մայիսի կեսերից։
Արշավը սկսվեց որպես ավանդական վկայականների և դրամապանակների գողություն՝ տվյալները արտահոսելով դեպի… Serveo HTTPS թունել.
On 2026-05-17Հետ axois-utils:1.0.9, օպերատորն ամբողջությամբ փոխեց օգտակար բեռը. նույն եռակի տեղադրման կեռիկային կառուցվածքը, նույն հրատարակիչը, նույն փաթեթի անունը։
Սակայն տեղադրման սկրիպտն այժմ խաչաձև հարթակային DDoS բոտնետի հավաքագրման գործիք է։
Բեռը խոսում է մի բանի մասին localhost.run թունել և ընդունում է ջրհեղեղի հրամաններ՝ վարակված միջավայրերը վերածելով DDoS-ունակ բոտնետի մի մասի։
օպերատորը նույնիսկ առաքեց C2 սերվերի երկուական ֆայլ tarball-ի ներսում, ինչը ցույց է տալիս տվյալների գողությունից մինչև ակտիվ բոտնետային ենթակառուցվածքի հստակ էսկալացիա։
Երկու փաթեթ, չորս տարբերակ դեռևս ակտիվ են գրանցամատյանում, և մեկ օպերատոր այժմ զուգահեռաբար գործարկում է երկու մոդուլները։
Լարվածություն՝ բարձր։
Հարձակումը. Ինչպես է այն գործում
Արշավը կառուցված է միտումնավոր ձանձրալի առաքման սխեմայի վրա. երկու տառասխալ փաթեթների անուններ, մեկ տառով տարբերվող փաթեթներից, որոնք ունեն շաբաթական հարյուր միլիոնավոր ներբեռնումներ (axios, կավիճի ձևանմուշ), և եռակի տեղադրում hooks որոնք երաշխավորում են կատարումը։ Հետաքրքիրն այն է, թե ինչ է կառամատույցը կրում է — և այն փաստը, որ օպերատորը փոխել է բեռը՝ առանց որևէ այլ բան փոխելու։
Համատեղ կառամատույց
Երկու փաթեթների յուրաքանչյուր հրապարակված տարբերակ հայտարարում է նույն երեք կյանքի ցիկլը hooks in package.json:
Բեռի ցուցակագրումը բոլոր երեքի ներքո hooks չափազանց է — հետինստալյացիա միայնակ կաշխատեր լռելյայն npm տեղադրելԸնտրությունը կարևոր է. npm install –ignore-scripts բաց է թողնում սկրիպտները, բայց մի քանի տարածված աշխատանքային հոսքեր (CI քեշի վերականգնումներ, որոնք վերագործարկում են կյանքի ցիկլը) hooks ընտրողաբար, կամ մշակողներ, որոնք միայն աուդիտ են անում հետինստալյացիա) եռակի ավելորդ հայտարարությունն ամենաապահով տարբերակն է հարձակվողի համար։
կավիճ-շաբլոն ավելացնում է երկրորդ մեխանիզմ՝ այն հայտարարում է axois-utils:^1.0.7 որպես գործարկման ժամանակ կախվածություն. Տիպոսքվատվածի տեղադրում կավիճի ձևանմուշ հետևաբար, ներառում է նաև single typosquat-ը, և երկու բեռներն էլ աշխատում են։ Երկու փաթեթներն էլ համակարգված զույգ են, այլ ոչ թե անկախ ցուցակներ։
A փուլ — հավատարմագրեր / դրամապանակի գող (2026-05-15 → մինչ օրս)
A փուլը սկզբնական օգտակար բեռն է։ Բեռնիչը կարճատև է։ հետինստալյացիա.js որը մատնացույց է անում Serveo HTTPS հակադարձ թունելին՝
Serveo ենթադոմենը կոդավորում է նպատակակետի IP հասցեն (80.200.28.28) անմիջապես հոսթի անվան մեջ՝ ճանաչելի կոնվենցիա այդ ծառայության համար։ Օպերատորը պատահական ենթադոմեյնի նախածանցը փոխում է տարբերակների միջև՝ խուսափելու համար պարզունակ դոմեյնի բլոկների ցուցակներից, բայց հիմքում ընկած IP-ն երբեք չի փոխվում։ (կավիճ-շաբլոններ՝ 1.0.14 սովոր 8a3e818ea8f11186-80-200-28-28…; 1.0.16 / 1.0.19 / 1.0.20 օգտագործում f04a273bd84c0622-….)
հետինստալյացիա.js ձեռքերը հեռու phantom.js, 7,667 տողանոց միացված «հավաքիչ» մոդուլ։ phantom.js տանտիրոջը քայլում է հետևյալի համար՝
SSH մասնավոր բանալիներ (~/.ssh/*) |
.npmrc պարունակությունը և ցանկացած npm_* env տոկեններ |
| AWS, GCP և Azure հավատարմագրերի ֆայլեր |
GitHub անձնական մուտքի նշանի կանոնավոր կոդ (ghp_*, gho_*, ghu_*, ghs_*) |
| Bitcoin, Exodus, Electrum, Monero, Litecoin, Dogecoin, Zcash, Dash կրիպտո-դրամապանակների արտեֆակտներ |
Ռեկուրսիվ .env* անցնել ~/projects, ~/dev, ~/code, ~/workspace, և install cwd-ն |
Shell-ի պատմությունները և ամբողջականը process.env |
Փաթեթը ուղարկվում է Սերվեո թունել՝ / հավաքելՉկա որևէ խճճվածություն, հակա-VM տրամաբանություն, ոչ մի բեմականացում՝ օպերատորի խաղադրույքը ծավալի և արագության վրա է։
B փուլ — PhantomBot DDoS նորակոչիկ (2026-05-17, միայն axois-utils:1.0.9)
B փուլը 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')}`; |
Մեկնաբանությունները ուղղված են հավաքածուն գործարկող ապագա օպերատորին («Օգտագործեք ձեր localhost.run HTTPS URL-ը»): Դա, գումարած այն, ինչ հայտնվում է բոտ-հաճախորդի կողքին, այն է, որ սա պարզապես զոհի բեռ չէ, այլ հավաքածուն է։
Հոսքը՝
- Համառություն առաջինը գործարկվում է։ Սկրիպտը տեղադրվում է երեք տարբեր եղանակներով՝ յուրաքանչյուր օպերացիոն համակարգի համար (ռեգիստր Վազում + Գործարկման թղթապանակ + schtasks Windows-ի վրա; crontab + phantom-bot.service համակարգային միավոր + .bashrc/.zshrc ավելացնել + /etc/rc.local Linux-ի վրա; LaunchAgent com.phantom.bot.plist macOS-ում): Համառության ծառայության անունը և LaunchAgent պիտակը երկուսն էլ ուրվական-ռոբոտ / com.phantom.bot, որտեղից էլ ծագում է արշավի անվանումը։
- Համակարգի տեղեկատվության exfil աշխատում է մեկ անգամ՝ մեկանգամյա մատնահետքի POST-ով b94b6bcfa27554.lhr.life:443/collect-ին, որը պարունակում է hostname, platform, arch, username, CPU/RAM, network interfaces, process.env, cwd, homedir, node version և public IP: Սա շատ ավելի քիչ ագրեսիվ է, քան A փուլը. չկա SSH, չկա wallets, չկա .env ռեկուրսիա: Բոտի աշխատանքը գրանցումն է, այլ ոչ թե գողանալը:
- Սրտի զարկերի ցիկլ Յուրաքանչյուր 30 վայրկյանը մեկ բացում է HTTPS POST ֆայլ b94b6bcfa27554.lhr.life:443/ հասցեով: Օգտատիրոջ գործակալը PhantomBot/1.0 է: TLS ստուգումը հստակորեն անջատված է (rejectUnauthorized: false): C2 պատասխանը վերլուծվում է որպես {type, target, port, duration, threads, method} ձևի JSON և ուղարկվում:
- Ջրհեղեղի զինանոց միացված է վեց հրամանների՝
| Հրամանի տեսակը | Մոդուլներ | Նշումներ |
|---|---|---|
| սուլոց | Liveness-ի պատասխանը | Բոտը ինքն իրեն նույնականացնում է |
| HTTP | HTTP ջրհեղեղ | 7-րդ մակարդակի հարցման հեղեղում |
| https | HTTPS ջրհեղեղ | Նույնը, ինչ http-ը, TLS-ով փաթեթավորված |
| tcp | TCP ջրհեղեղ | 65 ԿԲ պատահական բեռնման սպամ |
| udp | UDP ջրհեղեղ | 65,507 բայթանոց UDP փաթեթներ |
| արագ | HTTP/2 արագ վերագործարկման DoS | 2023 CVE-2023-44487 տեխնիկան |
Բոլոր հինգ ջրհեղեղի մոդուլները ընդունում են թիրախ, նավահանգիստ, տեւողությունը, եւ Թեմաներ փաստարկ՝ բոտը վարձու flooder-ի ընդհանուր տեսակ է, որը նախատեսված չէ որևէ կոնկրետ զոհի համար։ Օպերատորի զոհերի ցուցակը գտնվում է C2-ում, այլ ոչ թե փաթեթում։
Ի՞նչ նորություն կա այստեղ՝ առաքվող C2 բինար համակարգը
A փուլը ծանոթ ձև ունի՝ վկայականի գողություն, տեղադրման կեռիկ, մատակարարի կողմից թունելավորված C2: B փուլը նույնպես ծանոթ ձև՝ DDoS բոտնետերերը տարիներ շարունակ վնասակար npm փաթեթների մշտական բնակիչ են եղել։ Անսովորն այն է, որ օպերատորն է ուղարկել սերվերի կողմը npm tarball-ի ներսում գտնվող հավաքածուի մասին՝
- c2 — 4 մեգաբայթանոց կոմպիլյացված Go ELF երկուական ֆայլ
- c2.go — այդ բինար ֆայլի 426 տողանոց Go աղբյուրը
Ոչ մի ֆայլ չի կանչվում որևէ տեղադրման կեռիկի կողմից։ Դրանք զոհի բեռի մաս չեն կազմում։ Դրանք գտնվում են փաթեթների գրացուցակում այնպես, ինչպես փաստաթղթերի ֆայլը։ Ամենահավանական ընթերցումն այն է, որ օպերատորը իր մշակման աշխատանքային ծառը տեղափոխել է npm՝ առանց ֆայլերի ցանկը կազմելու (իրական OpSec սլիպ), և այն, ինչ ուղարկվել է, ամբողջական երկկողմանի հավաքածուն է. զոհի կողմից գործարկվող հաճախորդը և օպերատորի կողմից գործարկվող սերվերը։
Սա պատմության այն մասն է, որը արդարացնում է «պատրաստի բոտնետային հավաքածուի» ձևակերպումը։ Ամեն ոք, ով ներբեռնել է axois-utils:1.0.9 Ջնջումից առաջ ոչ միայն զոհի նմուշ կա, այլև գործող C2 սերվեր։
Շրջադարձը՝ մեկ նախադասությամբ
Նույն հրատարակիչը, նույն փաթեթների անունները, նույն եռակի կեռիկով կառուցվածքը, նույն «ուրվական» ապրանքանիշը, բայց բեռնափոխադրումը մեկ գիշերվա ընթացքում փոխեց դրամայնացման մոդելը«բերքի գաղտնիքներից, որոնք կարող եմ վերավաճառել» մինչև «վարձակալել ջրհեղեղի հզորություն, որը կարող եմ վարձակալել»։ Պաշտպանները պետք է հետևեն տեղադրման ժամանակի TTP-ներին, որոնք գրեթե նույնական են երկու փուլերում էլ. ստորագրության վրա հիմնված պաշտպանություններ, որոնք կապված են A փուլի դրամապանակի ուղու տողերի հետ կամ phantom.js-ի 7,667 տողանոց հավաքորդը լիովին բաց կթողներ B փուլը։
| Ամսաթիվ (UTC) | իրադարձություն |
|---|---|
| 2026-05-15 | Առաջին հրապարակումը՝ axois-utils:1.0.4 (LAN թեստային կառուցվածք, մշակողների համար նախատեսված համակարգ 192.168.129.19) |
| 2026-05-15 | axois-utils:1.0.6 հրապարակված — A փուլ C2-ը փոխարինվեց 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 | A փուլի արշավը հայտնաբերվել է npm սկանավորման ընթացքում։ Կիրառվել են հաստատված չարամիտ դատավճիռներ։ |
| 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 հրապարակված՝ դեռևս A փուլ (գողացող); օպերատորն այժմ զուգահեռաբար աշխատեցնում է երկու մոդուլները |
| 2026-05-17 | B փուլի հայտնաբերումը սովորական սկանավորման ընթացքում. դատավճիռները կիրառվում են բոլորի համար 2026-05-17 տարբերակները |
| (շարունակական) | Հեռացման մասին հաղորդագրությունները սպասվում են. բոլոր չորս հրապարակված փաթեթները գրառման պահին մնում են գրանցամատյանում հասանելի։ |
Փոխզիջման ցուցանիշներ
Փաթեթներ
| էկոհամակարգը | Փաթեթ | Versions |
|---|---|---|
| npm | axois-utils (axios-ի typosquat) | 1.0.4, 1.0.6, 1.0.9 |
| npm | chalk-tempalte (կավիճ-շաբլոնի typosquat) | 1.0.14, 1.0.16, 1.0.19, 1.0.20 |
Հեղինակի ինքնությունը
| Դաշտ | Արժեք |
|---|---|
| npm հրատարակիչ | deadcode09284814 |
| Հրատարակչի էլ. փոստը | phantomdeadcode@tutamail.com |
| SCM ստուգում | ոչ մեկը |
Հրաման և կառավարում
| Փուլ | Վերջնակետ | տրանսպորտային |
|---|---|---|
| A | f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect | Serveo 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)
| Ֆայլ | ՊԱԳ - 256 | Նշումներ |
|---|---|---|
c2 (Գնալ ELF, 4 ՄԲ) | 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 | Օպերատորի կողմից C2 սերվեր, առաքվում է ներսում axois-utils:1.0.9 |
c2.go (426 տող) | 7d0ae79fdb1e9968f3323a3712b624643a782ba3efb2cf3a2cb9c4c5513cea30 | Գնալ C2 բինար ֆայլի աղբյուրի վրա |
distrube.js | 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 | B փուլի բոտի հաճախորդ |
phantom.js (chalk-tempalte:1.0.19) | 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 | A փուլի որակավորում / դրամապանակի հավաքորդ |
phantom.js (chalk-tempalte:1.0.20) | d1c9e3f296ee9f7d5032f73f9c504cede50334bc14c394055fd5cb9c3a6e08b3 | A փուլի կոլեկտոր (1.0.20 տարբերակ) |
postinstall.js (chalk-tempalte:1.0.19 = 1.0.20) | ffba9bdd6793edd5b38e12900252c1813a693f59c25af51c3b658cf3f27b6162 | A փուլի բեռնիչ, բայթերի նույնական երկու տարբերակներում էլ |
Վերագրում և մոտիվացիա
Մենք հետևում ենք այս արշավին որպես PhantomBot, օպերատորի սեփական ապրանքանիշը վերցնելով Օգտատիրոջ գործակալ՝ PhantomBot/1.0 սրտի բաբախյունի վերնագիր, the phantom-bot.service համակարգված միավոր, com.phantom.bot LaunchAgent պիտակը և phantomdeadcode@ էլ. փոստի հասցե։ Օպերատորը հետևողական է այս անվանման հարցում առնվազն չորս արտեֆակտների դեպքում։
Սիգնալների կատալոգ
- Հրատարակիչ - մեռած կոդ 09284814 npm-ում։ Միակողմանի հաշիվ, Tutamail միանգամյա օգտագործման էլ. փոստ, ոչ SCM ստուգում: Այս արշավից հետո նախորդ հրապարակումների պատմություն չկա:
- Բրենդինգի վերօգտագործում — «phantom»-ը հայտնվում է հրատարակչի էլեկտրոնային նամակում, A փուլի հավաքորդի ֆայլի անվան մեջ (phantom.js), B փուլի կայունության ծառայության անվան մեջ (phantom-bot.service), LaunchAgent պիտակում (com.phantom.bot), և bot User-Agent-ում (PhantomBot/1.0).
- Ենթակառուցվածքներ — Մեկ VPS հասցեով 80.200.28.28 A փուլը առջևում է Serveo ենթատիրույթի ռոտացիայի միջոցով. B փուլը տեղափոխվում է a localhost.run հակադարձ թունել (b94b6bcfa27554.lhr.life)։ Երկու մատակարարների ծառայություններն էլ անվճար են և պահանջում են միայն արտագնա SSH օպերատորի կողմից, ինչը համապատասխանում է ցածր բյուջեով և ցածր OpSec պահանջող կարգավորումներին։
- Կոդի ոճը — Պարզ JavaScript ամբողջ տարածքում. առանց խճճվածքի, առանց տողերի կոդավորման, առանց հակավիրուսային ստուգումների։ Փոփոխականների անունները նկարագրական են (գողանալ համակարգի տեղեկատվություն, կատարելՀրաման, httpFloodՄեկնաբանություններ distrube.js ուղղակիորեն դիմել ապագա օպերատորին («Օգտագործեք ձեր localhost.run HTTPS URL-ը»), ինչը ենթադրում է, որ ֆայլը նախատեսված էր վերաբաշխվելու որպես հավաքածու, այլ ոչ թե մեկ հարձակվողի կողմից օգտագործվելու համար։
- OpSec-ի կտրոն — B փուլի tarball-ը ներառում է և՛ բոտ-հաճախորդը, և՛ օպերատորի կողմից 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 բոտի առաքումը ենթադրում է, որ օպերատորը ապահովագրում է եկամտի հոսքերը, այլ ոչ թե հրաժարվում է A փուլից: Շրջադարձը ժամանակը, ոչ թե փոխարինող։
Ինչը մենք չենք պնդում
Մենք չկարողացանք հաստատել իրական ինքնությունը, որը կանգնած է դրա հետևում։ մեռած կոդ 09284814 բռնակ, և մենք այս արշավը չենք վերագրում որևէ անվանական սպառնալիքի գործողի, խմբի կամ երկրի: «Ֆանտոմ» ապրանքանիշը բավականին հետևողական է բոլոր արտեֆակտների մեջ՝ մեկ օպերատոր ենթադրելու համար, բայց C2 բինար ֆայլի հավաքածուի ոճով առաքումը բաց է թողնում այն հնարավորությունը, որ ապագա փաթեթները կապ չունեցող բռնակներից կրկին կօգտագործեն նույն կոդը:
Ազդեցություն, միտումներ և ինչ պետք է անեն պաշտպանները
հարված
Օրինական զավթողական թիրախները axios և կավիճի ձևանմուշ լայնորեն կախված են JavaScript էկոհամակարգից։ axios մենակ երեսուն ամենաշատ ներբեռնված npm փաթեթների շարքում է։ typosquat անունները մեկ ստեղնի հարվածով հեռու են իրականներից (աքսոիս ↔ axios, շաբլոն ↔ Կաղապար), և երկուսն էլ լեզվական առումով հավանական ուղղագրական սխալներ են։
Մենք չկարողացանք ստանալ վնասակար տարբերակների հուսալի ներբեռնման վիճակագրություն՝ հեռացումից առաջ. npm-ը չի պահպանում յուրաքանչյուր տարբերակի ներբեռնումների քանակը փաթեթի հրապարակումը չեղարկելուց հետո, և npms.io-ոճի պրոքսիները աղմկոտ են այս մասշտաբով։ Ցանկացած կազմակերպություն, որի կողպված ֆայլը լուծվում է որպես անունով փաթեթ։ աքսոիս-ուտիլս or կավիճ-շաբլոն հրատարակչից մեռած կոդ 09284814 պետք է դիտարկվի որպես խախտված. փոխեք առկա յուրաքանչյուր լիազորագիր process.env ազդակիր հոսթի վրա, աուդիտի ենթարկեք համառության վեկտորները յուրաքանչյուր օպերացիոն համակարգի համար (տե՛ս ստորև «Ինչ պետք է անեն պաշտպանները») և հեռացրեք կախվածությունը։
Զարգացող օրինաչափություններ
Այս արշավը օրինակ է այն տեղաշարժի, որը մենք տեսել ենք վերջին մի քանի npm միջադեպերում. տեղադրման կեռիկով կառամատույցը դիմացկուն ակտիվ է; օգտակար բեռը փոխարինելի էՆույն հրատարակիչը, նույն փաթեթը, նույնը նախնական տեղադրում / տեղադրել / հետինստալյացիա եռակի, և նույնիսկ նույն տարբերակի բումային ռիթմը՝ միակ բանը, որ փոխվեց axois-utils:1.0.6 և axois-utils:1.0.9 ֆայլն էր hooks գործարկել։ Ստորագրության վրա հիմնված հայտնաբերում, որը բանալիավորված է A փուլի բեռի համար (դրամապանակի ուղու տողեր, phantom.js-ի 7,667 տողանոց հավաքորդը՝ Serveo C2 հոսթը), կհայտարարեր առաջին երեք տարբերակների մասին և ամբողջությամբ կբաց թողներ B փուլը։
Նույն օրինաչափությունը տեսանելի է նաև մեր կողմից հետևած մյուս 2026 թվականի արշավներում. մեկ օպերատոր՝ կայուն կառուցվածքով, որը փոխում է տվյալները գողանալու, քննությունների խաբեությամբ զբաղվող հաճախորդների, Telegram-bot exfil-ի և այժմ DDoS հավաքագրման միջև։ Պաշտպանները, որոնք հույսը դնում են բեռնվածության ստորագրությունների վրա, կշարունակեն պարտվել յուրաքանչյուր արշավի երկրորդ փուլում։
Հետևանքն այն է, որ տեղադրման ժամանակի TTP-ները ավելի լավ ազդանշան ենԵռակի տեղադրման կեռիկի հայտարարագրեր, ներմուծող տեղադրման սկրիպտներ https or երեխա_գործընթաց, տեղադրել սկրիպտներ, որոնք գրում են օգտատիրոջ գործարկման թղթապանակներում, և տեղադրել սկրիպտներ, որոնք լուծում են հոսթ անունները անվճար հակադարձ թունելային ծառայություններում (Serveo, localhost.run, ngrok, Cloudflared) բոլորն էլ հազվադեպ են հանդիպում օրինական փաթեթներում և տարածված են վնասակար փաթեթների մոտ։
Ինչ պետք է անեն պաշտպանները
- Lockfile աուդիտ. Որոնել ամեն package-lock.json / մանվածք.կողպեք / pnpm-lock.yaml ձեր կազմակերպությունում ճշգրիտ տողերի համար աքսոիս-ուտիլս և կավիճ-շաբլոն. Ցանկացած համընկնում վերաբերվեք որպես փոխզիջման։
- Գաղտնիքների պտտում ազդակիր հոսթերի վրա։ Ա փուլի SSH, ամպային, GitHub, npm և դրամապանակի մեծածախ հավաքագրման տվյալներ։ Ենթադրեք բոլոր առկա տվյալները։ process.env, / .սշ, ~/.aws, ~/.npmrc, ~/.config, կամ որևէ այլ .env* տուժած հոսթի վրա գտնվող ֆայլը բացահայտված է։
- Հեռացրեք համառությունը (B փուլ): Windows-ում ջնջել HKCU\Software\Microsoft\Windows\CurrentVersion\Run\SystemUpdate, հեռացնել %APPDATA%\Microsoft\Windows\Սկսել ցանկ\Ծրագրեր\Սկսել\system-update.bat, եւ schtasks /delete /tn Համակարգի թարմացում /fLinux-ում, crontab -e և հեռացնել @reboot հանգույց …, systemctl –օգտատիրոջ անջատում –այժմ phantom-bot.service ապա ջնջել ~/.config/systemd/user/phantom-bot.service, մացառ .bashrc / .zshrc / /etc/rc.local. macOS-ի վրա, launchctl unload ~/Library/LaunchAgents/com.phantom.bot.plist ապա ջնջեք ցանկը։
- Արգելափակել C2 հոսթերը։ IOC աղյուսակի չորս C2 վերջնակետերը ավելացրեք ձեր ելքի արգելափակված ցանկին։ *.serveousercontent.com և *.lhr.life կարող է մեծածախ արգելափակվել, եթե ձեր միջավայրը չունի հետադարձ թունելային ծառայությունների օրինական օգտագործում։
- Որոնում տեղադրման ժամանակի TTP-ով, ոչ թե օգտակար բեռ։ Գույքագրման կողպեքի ֆայլերի գրառումներ, որոնց package.json հայտարարված նախնական տեղադրում, տեղադրել, եւ հետինստալյացիա բոլորը նույն սկրիպտին են մատնացույց անում։ Համեմատեք փաթեթի տարիքի և հրատարակչի ստուգման կարգավիճակի հետ։ Այս օրինաչափությունը հազվադեպ է հանդիպում օրինական փաթեթներում և PhantomBot-ի կողմից վերօգտագործվող ամենահուսալի ազդանշանն է։
- C2 բինար սկավառակի աուդիտ։ Ամեն ոք, ով ներբեռնել է axois-utils:1.0.9 ունի օպերատորի C2 սերվերը (c2 ELF, sha256 165fa92d…) սկավառակի վրա։ Սկանավորեք քեշերը և CI արտեֆակտների պահեստները։ Երկուական ֆայլը ինքնուրույն անգործուն է, բայց դրա ներկայությունը աշխատանքային կայանում միանշանակ ապացույց է, որ փաթեթը տեղադրվել է։
Վերջնական գիծ
Նույն օպերատորը, նույն փաթեթը և նույն տեղադրման գործիքը կարող են 48 ժամվա ընթացքում ներկայացնել բոլորովին այլ սպառնալիքներ: Ուշադրություն դարձրեք կառուցվածքին, այլ ոչ թե օգտակար բեռին:




