TL. DR
nolimit-agent npm փաթեթ է, որի հրապարակված տարբերակները՝ 1.0.299- ից 1.0.307- ը, թողարկվել է չորս օրվա ընթացքում՝ 2026-06-26-ից մինչև 2026-06-29-ը՝ յուրաքանչյուրը կրում է ամբողջական ֆիշինգի և զանգվածային փոստային շրջանակ թաքնված, լիովին խճճված գրացուցակի ներսում։ Յուրաքանչյուր տարբերակում գլխավոր գրառումը վերածվում է .ad/x0.js, dotfile անունով թղթապանակի մոտ 86 ֆայլերից մեկը, որը պարունակում է մոտավորապես 4,200 javascript-obfuscator string-array blob-եր։ տեղադրման կեռիկը և մուտքագրման դասավորությունը նույնական են ամբողջ տողում։
Մշուշոտության հետևում կանգնած է մի Microsoft 365 OAuth սարքի կոդի հոսք (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode), որը, կոդը հաստատվելուց հետո, կարդում է զոհի Outlook-ի մուտքի արկղը և ուղարկում է իրերը Microsoft Graph API-ի միջոցով, օպերատորի կողմից տրամադրված ստացողների ցուցակներով աշխատող զանգվածային SMTP և SMS ուղարկման մեխանիզմ, ապրանքանիշի նմանակման հաղորդագրությունների ձևանմուշներ, բաց վերահասցեավորման հղումների կառուցում և հետախուզություն DNS-ի միջոցով HTTPS-ի, WHOIS-ի և GitHub կոդի որոնման միջոցով: Գործողության ժամանակի երթևեկության ազդանշաններ օպերատորի ենթակառուցվածքներին api[.]nolimitent[.]xyz:4100.
Ազդեցության են ենթարկվում՝ յուրաքանչյուր ոք, ով տեղադրում է փաթեթի որևէ տարբերակ, և ցանկացած Microsoft 365 փոստարկղ որի սեփականատերը հաստատում է դրա միջոցով ներկայացված սարքի կոդը։ Ամենավերջին տարբերակը, 1.0.307,-ը վերջին թեգն է և կրում է նույն սարքի կոդի փոստարկղի հնարավորությունները. վնասակար կոդը չի սահմանափակվում մեկ նախորդ տարբերակով։
Ծանրությունը ` քննադատականԱզդված էկոհամակարգ՝ npmԱռաջին հերթին որոնվող միակ ցուցիչը՝ հոսթինգը api[.]nolimitent[.]xyz.
Հարձակումը. ինչպես է այն գործում
Բարորակ կճեպ թաքնված բեռի վերևում
Փաթեթը ներկայացնում է սովորական մակերես։ package.json հայտարարում է հետինստալյացիա կեռիկ –
text postinstall: node scripts/postinstall.js - և ստուգման ժամանակ սկրիպտներ/postinstall.js անվնաս է. այն տեղադրում է Windows հրամանային վահանակ և դուրս է գալիս։ Կեռիկը այն տեղը չէ, որտեղ գտնվում է վարքագիծը։ հիմնական և ամբար դաշտերը երկուսն էլ ուղղված են դեպի .գովազդ/, մի տեղեկատու, որի սկզբնական կետը այն պահում է անկանոն ls ելքային տվյալները, և որոնց պարունակությունը միատարր կերպով մշուշոտված է մեքենայի կողմից։ Ստատիկ սկաները հաշվել է մոտ 4,293 կոդավորված բեռնվածության տարածություններ ամբողջ .գովազդ/ մոդուլային հավաքածու; javascript-obfuscator հայտարարված մշակման կախվածություն է, որը համապատասխանում է փաթեթավորված ֆայլերի տող-զանգված-պտտման ձևին։
Բաժանումը առաջին ազդանշանն է, որը արժե անվանել. գրախոսողի կողմից ուսումնասիրվող տեղադրման կեռիկը մաքուր է, մինչդեռ օպերացիոն կոդը գտնվում է մեկ գրացուցակ հեռու՝ թաքնված և մշուշոտ, որին հասնում են միայն այն ժամանակ, երբ փաթեթի արտահանված մուտքի կետը գործարկվում է։
Microsoft 365 սարքի կոդով փոստարկղի մուտք
Մոդուլը .ad/x12.js կրում է շրջանակի ամենաարդիական հնարավորությունը։ Այն ղեկավարում է Microsoft 365 OAuth 2.0 սարքի լիազորման թույլտվությունը։
text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode Սարքի կոդի տրամադրումը օրինական Microsoft հոսք է, որը նախատեսված է մուտքային սահմանափակումներով սարքերի համար. ծառայությունը խնդրում է կոդ, օգտատերը մուտքագրում է այդ կոդը։ microsoft.com/devicelogin` երկրորդ սարքի վրա և հաստատում է, և հարցում կատարող ծառայությունը ստանում է տոկեններ: Երբ հարցում կատարող ծառայությունը պատկանում է փոստարկղի սեփականատիրոջից տարբեր մեկին, հաստատումը այդ երրորդ կողմին տրամադրում է տոկեն: Տոկենը ստանալուց հետո, .ad/x12.js`-ը կարդում է փոստարկղը անմիջապես Microsoft Graph-ի միջոցով։
text GET graph[.]microsoft[.]com/v1.0/me/mailFolders/inbox/messages?$top=250&$select=from GET graph[.]microsoft[.]com/v1.0/me/mailFolders/sentitems/messages?$top=250&$select=toRecipients $ընտրել պրոյեկցիաները ուղարկողի հասցեները վերցնում են մուտքային արկղից և ստացողի հասցեները՝ ուղարկված նյութերից՝ զոհի թղթակիցներին քարտեզագրելու հում նյութը: Սա հակառակորդի միջնամասում (AiTM) մուտք է համաձայնությամբ, այլ ոչ թե գաղտնաբառի հավաքագրմամբ. դասական իմաստով ֆիշինգի համար հավատարմագրեր չկան, միայն հաստատում ստանալու կոդ:
Զանգվածային փոստի և SMS-ի շարժիչ՝ կեղծանման ձևանմուշներով
Փոստարկղի շուրջը տեղադրված է փոստային առաքիչ։ Փաթեթը ուղարկում է օպերատորի կողմից խմբագրվող տվյալների ֆայլեր՝ ուղարկողների ցուցակներ (ուղարկողներ.txt, smtps.txt) և ձևանմուշի ֆայլ (ֆունկցիաներ.txt) — որի տեղապահ հասցեները կարդացվում են որպես կեղծանվան համար նախատեսված ձևաթուղթ։ security@apple.com, login-ստուգում, OAuth ծառայություն, հաշվառում և հաշվի ծանուցման ուղարկողներ՝ ընդդեմ a-ի ձերdomain.com փոխարինողը օպերատորն է։ SMS կողմում կա հեռախոսebook և դարպասի կարգավորում: Փոստային փոստը կրկնում է օպերատորի կողմից տրամադրված ստացողների ցուցակները և ուղարկում է կարգավորված SMTP ռելեների միջոցով:
Հղումները վայրէջք կատարելու համար, .ad/xu.js և .ad/xq.js կառուցել URL-ներ, որոնք շահագործում են URL վերլուծության անորոշությունը և սեղմումների հետևումը: Խաբուսիկ ձևանմուշները ներառում են վստահելի տեսք ունեցող հեղինակություն նախքան @ այսպիսով, տեսանելի նախածանցը տարբերվում է իրական հոսթից՝
text https://trusted[.]com@ https://trusted[.]com%40 https://trusted[.]com:80@ https://redirect[.]example[.]com/ https://track[.]example[.]com/click? Շրջանակը նաև ֆավիկոններ է վերցնում խոշոր սպառողներից և enterprise փոստի մատակարարներ՝ համոզիչ մատակարարի ապրանքանիշով հուշում կամ վայրէջքի էջ մատուցելու սովորական տեխնիկա։
Նպատակային և ենթակառուցվածքային հետախուզություն
Մի քանի մոդուլներ ուղարկումից առաջ հավաքում են համատեքստը։ .ad/x0.js անունները որոշում է DNS-ի միջոցով HTTPS-ի միջոցով (dns[.]google/resolve), .ad/xa.js WHOIS հարցումներ (api[.]whois[.]vu), Եւ .ad/x9.js գործարկում է GitHub կոդի որոնումը (api[.]github[.]com/search/code?q=) — օրինաչափություն, որը համապատասխանում է փոստային սերվերի բաց կոնֆիգուրացիայի և SMTP մուտքագրման տվյալների հայտնաբերմանը՝ փոխանցման ցուցակը սնուցելու համար։ .ad/xs.js հարցում է կատարում Wayback Machine-ի CDX ինդեքսին։
Հրաման և վերահսկում
Խճճված բազմության միջով, .ad/x4.js հղում է օպերատորի վերջնակետին՝
text http://api[.]nolimitent[.]xyz:4100 Հաղորդավարը կիսվում է իր անսահմանափակ ապրանքանիշ՝ հրատարակչի սեփական անվանումով, և : 4100 պորտը շրջանակի կանչ-տան ալիքն է: Սա պաշտպանների համար միակ ամենաերկարատև ցուցիչն է՝ փաթեթ, մշակողի աշխատանքային կայան կամ կառուցման գործակալ, որը հասնում է api[.]nolimitent[.]xyz գործարկել է այս կոդը։
Փոխզիջման ցուցիչներ
Ստորև բերված ցուցանիշներն են, որոնց վրա պաշտպանը կարող է գործել՝ grep lockfile, block a host կամ որոնել proxy և DNS logs: Microsoft-ի վերջնակետերը հայտնվում են, քանի որ framework-ը չարաշահում է դրանք. դրանք իրենք վնասակար չեն և չպետք է արգելափակվեն:
| Ցուցիչ | Տիպ | Որտեղ | Պաշտպանի գործողություն |
|---|---|---|---|
nolimit-agent (բոլոր տարբերակները՝ 1.0.299–1.0.307) | Փաթեթ | npm | Grep lockfiles / տեղադրման տեղեկամատյաններ |
api[.]nolimitent[.]xyz (:4100) | C2 հոսթինգ | .ad/x4.js | Արգելափակել; որոնել DNS + պրոքսիի գրանցամատյաններում |
.ad/ թաքնված գրացուցակը որպես գլխավոր/bin թիրախ | կառուցվածք | package.json | Ստատիկ ազդանշան գրանցամատյանի վերանայման մեջ |
trusted[.]com@ / %40 / :80@ հղումների ձևեր | URL կեղծում | .ad/xu.js, .ad/xq.js | Էլ․ փոստի/պրոքսիի URL-ի ստուգում |
Սարքի կոդի տրամադրում + գրաֆիկ inbox/sentitems կարդալ | Վարքագիծ | .ad/x12.js | M365 մուտք + Գրաֆի աուդիտի վերանայում |
Տեսակավորման ժամանակ գրանցված ֆայլերի հեշերը՝
- փաթեթ/.ad/x0.js — շա256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- փաթեթ/փաթեթ.json — շա256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
Microsoft 365 վարձակալի ազդանշան, որը արժե որոնել այս փաթեթից անկախ. սարքի կոդի հաջող մուտքագրումներ, որոնց անմիջապես հաջորդում են գրաֆիկի ընթերցումները։ փոստի թղթապանակներ/մուտքային արկղ և փոստի թղթապանակներ/նշաններ, հատկապես այնպիսի սեսիայից, որը օգտատերը չի ճանաչում։
Վերագրում և դիտարկվող վարքագիծ
Դիտարկելիը մնում է առանձին նրանից, թե ով է դրա հետևում կանգնած։
Դիտարկելի փաստեր. փաթեթը հրապարակվում է բռնակի տակ նոլիմիտ գործակալ չհաստատված Gmail հասցեով և առանց կապակցված աղբյուրի պահոցի։ package.json նկարագրում է այն որպես «առաջադեմ էլ.փոստի ուղարկող» և պիտակավորում է այն՝ կարմիր թիմ բանալի բառ; կատարման ժամանակի կոդը կենտրոնացած է թաքնված, մշուշոտված տարածքում .գովազդ/ պանակը, որի գործիքակազմը (javascript-obfuscator) հայտարարված կախվածություն է, իսկ զանգի տան հոսթը api[.]nolimitent[.]xyz վերօգտագործում է անսահմանափակ ապրանքանիշ։ Սա մեկ փաթեթ է՝ մեկ օպերատորի կողմից կառավարվող ենթակառուցվածքային նշաձողով, այլ ոչ թե բազմափաթեթային կլաստեր, և նախկինում անվանված արշավի հետ որևէ համընկնում չի հայտնաբերվել։
կարմիր թիմ Բանալի բառը չի փոխում դասակարգումը: Երկակի օգտագործման հնարավորություն ապահովող օրինական հարձակողական անվտանգության գործիքակազմը դա անում է թափանցիկ կերպով. ընթեռնելի աղբյուր, օպերատորի կողմից տրամադրված թիրախներ և թաքնված կանչի բացակայություն: Այս փաթեթը շրջում է այդ հատկություններից յուրաքանչյուրը. դրա գործառնական կոդը մշուշոտ է և թաքնված, և այն ազդանշան է ուղարկում օպերատորի ֆիքսված ենթակառուցվածքին, այլ ոչ թե օգտատիրոջ կողմից տրամադրված թիրախին: Վարքագիծը, այլ ոչ թե պիտակը, որոշում է դատավճիռը, որը չարամիտ է:
Այստեղ մտադրությունը չի նշվում։ Հաղորդագրությունը նկարագրում է կոդի գործողությունը՝ սարքի կոդի հարցում, փոստարկղի ընթերցում Graph-ի միջոցով, զանգվածային փոստի ուղարկում կարգավորված ռելեների միջոցով, beacon-ի ուղարկում ֆիքսված հոսթին, և մոտիվը թողնում է չնշված։
Ազդեցություն, միտումներ և պաշտպանների ուղեցույց
Տեղադրման ժամանակի երկու ազդեցություն կարևոր է։ Նախ, ցանկացած մշակող կամ CI գործակալ, որը տեղադրում է նոլիմիտ գործակալ բերում է շրջանակը այդ հոսթի վրա և հաստատում է կանչի տունը դեպի api[.]nolimitent[.]xyzԵրկրորդ, սարքի կոդի հնարավորությունն ընդլայնվում է տեղադրող հոսթից այն կողմ. Microsoft 365 փոստարկղը, որի սեփականատիրոջը հանձնարարվում է հաստատել ներկայացված կոդը, կարդացվում է անմիջապես Graph-ի միջոցով՝ առանց որևէ գաղտնաբառի։
Ավելի լայն միտումը ներքին կիրառումն է։ Սարքի կոդի (AiTM) ֆիշինգը առանձին ֆիշինգային ենթակառուցվածքից տեղափոխվել է հանրային գրանցամատյանում գտնվող փաթեթի՝ բաշխումը ըստ npm տեղադրել այլ ոչ թե էլեկտրոնային փոստով ուղարկված հղումով։ Այս կերպ փաթեթավորումը ֆիշինգ օպերատորի հոսթինգի և հղումների մատակարարման խնդիրը փոխարինում է գրանցամատյանի հասանելիությամբ և թաքցնում է գործառնական կոդը մաքուր տեղադրման կեռիկի և dotfile անունով խճճված գրացուցակի հետևում, որը կանխում է արագ ձեռքով թերթումը։
Պաշտպանների համար.
- Գրանցամատյանի և կախվածության վերանայում։ Վերաբերվեք այնպիսի փաթեթի, որի հիմնական/ամբար լուծվում է որպես թաքնված (կետային նախածանցով) գրացուցակ՝ միատեսակ մշուշոտված առաջին կողմի կոդով, որը բարձր ռիսկային է միայն կառուցվածքի առումով, անկախ նրանից, թե տեղադրման կեռիկը մաքուր տեսք ունի, թե ոչ։ Մինիֆիկացիան մշուշոտում չէ՝ դարպասը string-array decoder ստորագրության վրա է, այլ ոչ թե տողի երկարության։
- Microsoft 365-ի կարծրացում. Սահմանափակեք սարքի կոդի լիազորման հոսքը պայմանական մուտքի միջոցով, որտեղ դա գործառնականորեն անհրաժեշտ չէ. սարքի կոդի շնորհումները հայտնի AiTM վեկտոր են և հազվադեպ են անհրաժեշտ ինտերակտիվ օգտատերերին: Աուդիտ արեք սարքի կոդի մուտքերի համար, որին կհաջորդի Graph փոստարկղի անհապաղ թվարկումը:
- Ցանցի հայտնաբերում։ Արգելափակել և զգուշացնել միացված է api[.]nolimitent[.]xyzՓնտրեք ելքային DNS և պրոքսի գրանցամատյանները մշակողների և կառուցողների ենթակառուցվածքներում։
- Փոստի ուղու հայտնաբերում։ օգտատեր@հոսթ URL-ի կեղծման ձևեր (վստահելի[.]com@…) հայտնաբերվելի են փոստի դարպասի և պրոքսիի մոտ։ դրոշակակիր հղումներ, որոնց հեղինակության բաղադրիչը նախորդում է @.
Վերլուծության պահին փաթեթը npm-ում ակտիվ էր։ Քանի որ թաքնված շրջանակը ընդգրկում է ամբողջ հրապարակված տարբերակի տողը և ներկայիսը։ ամենավերջին (1.0.307) թեգը կրում է սարքի կոդի հնարավորությունը, գրանցամատյանի հեռացումը պետք է ներառի բոլոր տարբերակները, այլ ոչ թե միայն մեկ նախորդ տարբերակը։




