Lt; DR
nolimit-agent yra npm paketas, kurio publikuotos versijos — 1.0.299 iki 1.0.307, išleisti per keturias dienas nuo 2026-06-26 iki 2026-06-29 — kiekvienas nešiojasi pilnas sukčiavimo apsimetant ir masinių laiškų siuntimo karkasas paslėptame, visiškai užmaskuotame kataloge. Kiekvienoje versijoje pagrindinis įrašas tampa .ad/x0.js, vienas iš ~86 failų aplanke, pavadintame dotfile pavadinimu, kuriame yra maždaug 4,200 „javascript-obfuscator“ eilučių masyvo „blob“; diegimo kabliukas ir įrašo išdėstymas yra identiški visoje eilutėje.
Už užtemimo slypi „Microsoft 365 OAuth“ įrenginio kodo srautas (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode), kuris, patvirtinus kodą, nuskaito aukos „Outlook“ pašto dėžutę ir išsiųstus elementus per „Microsoft Graph API“; masinio SMTP ir SMS siuntimo variklis, valdomas operatoriaus pateiktų gavėjų sąrašų; prekės ženklo imitavimo pranešimų šablonai; atvirojo peradresavimo nuorodų kūrimas; ir žvalgyba per DNS per HTTPS, WHOIS ir „GitHub“ kodo paieška. Srauto švyturiai operatoriaus infrastruktūrai vykdymo metu adresu api[.]nolimitent[.]xyz:4100.
Paveikta: visi, kurie įdiegia bet kurią paketo versiją, ir bet kuris „Microsoft 365“ pašto dėžutė kurio savininkas patvirtina per jį pateiktą įrenginio kodą. Naujausia versija, 1.0.307, yra naujausia žymė ir turi tą pačią įrenginio kodo pašto dėžutės funkciją – kenkėjiškas kodas neapsiriboja viena senesne versija.
Sunkumas: kritinisPaveikta ekosistema: npmPirmiausia reikia ieškoti vieno rodiklio: pagrindinio kompiuterio. api[.]nolimitent[.]xyz.
Ataka: kaip ji veikia
Gerybinis apvalkalas virš paslėpto naudingojo krovinio
Pakuotėje yra įprastas paviršius. paketas.json pareiškia po įdiegimo kabliukas -
text postinstall: node scripts/postinstall.js – ir patikrinimo metu scenarijai/postinstall.js yra nekenksmingas: jis įdiegia „Windows“ komandų tarpinę ir išeina. Kablys nėra ten, kur slypi šis elgesys. pagrindinis bei jusu siuksliu abu laukai rodo į .skelbimas/, katalogas, kurio pradžioje esantis taškas apsaugo jį nuo atsitiktinio ls išvestis ir kurios turinys yra vienodai užmaskuotas mašinomis. Statinis skaitytuvas suskaičiavo ~4 293 užkoduotų naudingųjų duomenų diapazonus visame .skelbimas/ modulių rinkinys; javascript-obfuscator yra deklaruota kūrimo priklausomybė, kuri atitinka susietų failų eilutės-masyvo-rotacijos formą.
Šis padalijimas yra pirmas vertas įvardijimo signalas: diegimo kabliukas, kurį tikrintų recenzentas, yra švarus, o veikiantis kodas yra vienu katalogu toliau, paslėptas ir užmaskuotas, pasiekiamas tik tada, kai paleidžiamas paketo eksportuotas įėjimo taškas.
„Microsoft 365“ įrenginio kodo pašto dėžutės prieiga
Modulis .ad/x12.js turi svarbiausią sistemos funkciją. Ji valdo „Microsoft 365 OAuth 2.0“ įrenginio autorizacijos suteikimą:
text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode Įrenginio kodo suteikimas yra teisėtas „Microsoft“ srautas, skirtas įvesties apribojimus turintiems įrenginiams: paslauga prašo kodo, vartotojas įveda tą kodą į microsoft.com/devicelogin` antrame įrenginyje ir patvirtina, o prašančioji paslauga gauna žetonus. Kai prašančioji paslauga priklauso ne pašto dėžutės savininkui, patvirtinimas įteikia tai trečiajai šaliai žetoną. Gavus žetoną, .ad/x12.js` nuskaito pašto dėžutę tiesiai per „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 Geriausios $select Projekcijos ištraukia siuntėjų adresus iš gautųjų, o gavėjų adresus – iš išsiųstų laiškų – tai yra žaliava aukos korespondentų nustatymui. Tai yra priešininko tarpininko (AiTM) prieiga gavus sutikimą, o ne užfiksavus slaptažodį: nėra jokių klasikinių sukčiavimo atakų įgaliojimų, tik kodas patvirtinimui.
Masinių laiškų ir SMS siuntimo sistema su apsimetinėjimo šablonais
Aplink pašto dėžutės prieigą yra siuntėjas. Paketas siunčia operatoriaus redaguojamus duomenų failus – siuntėjų sąrašus (siuntėjai.txt, smtps.txt) ir šablono failą (funkcijos.txt) — kurių vietos žymėjimo adresai skaitomi kaip apsimetinėjimo pavyzdys: security@apple.com, login-patvirtinimas, „OAuth“ paslauga, sąskaitų išrašymas ir paskyros pranešimų siuntėjai pagal Yourdomain.com operatorius pakeičia budintįjį asmenį. SMS pusėje yra telefonasebook ir šliuzo konfigūraciją. Pašto siuntėjas peržiūri operatoriaus pateiktus gavėjų sąrašus ir siunčia per sukonfigūruotas SMTP relines.
Kad nuorodos veiktų, .ad/xu.js bei .ad/xq.js kurti URL adresus, kurie išnaudoja URL analizavimo dviprasmybę ir paspaudimų stebėjimą. Apgaulingi šablonai įterpia patikimos išvaizdos autoritetą prieš @ taigi matomas prefiksas skiriasi nuo tikrojo kompiuterio:
text https://trusted[.]com@ https://trusted[.]com%40 https://trusted[.]com:80@ https://redirect[.]example[.]com/ https://track[.]example[.]com/click? Ši sistema taip pat renka mėgstamiausius iš pagrindinių vartotojų ir enterprise pašto paslaugų teikėjai – įprasta technika, skirta įtikinamai pateikti paslaugų teikėjo prekės ženklo raginimą arba nukreipimo puslapį.
Taikinių ir infrastruktūros žvalgyba
Prieš siunčiant, keli moduliai renka kontekstą. .ad/x0.js sprendžia vardus per DNS per HTTPS (dns[.]google/išspręsti), .ad/xa.js užklausos WHOIS (api[.]whois[.]vu) Ir .ad/x9.js vykdo „GitHub“ kodo paiešką (api[.]github[.]com/search/code?q=) – modelis, atitinkantis atviros pašto serverio konfigūracijos ir SMTP kredencialų, skirtų perduoti relių sąrašą, atradimą. .ad/xs.js užklausia „Wayback Machine“ CDX indeksą.
Vadovavimas ir kontrolė
Visame užmaskuotame rinkinyje, .ad/x4.js nurodo operatoriaus galinį tašką:
text http://api[.]nolimitent[.]xyz:4100 Šeimininkas dalijasi savo neribotas prekės ženklas su paties leidėjo pavadinimu ir : 4100 prievadas yra sistemos iškvietimo namų kanalas. Tai pats patikimiausias indikatorius gynėjams: paketas, kūrėjo darbo stotis arba kūrimo agentas pasiekia api[.]nolimit[.]xyz paleido šį kodą.
Kompromiso rodikliai
Žemiau pateikti indikatoriai yra tie, į kuriuos gynėjas gali reaguoti – naudoti užrakinimo failo grep komandą, blokuoti pagrindinį kompiuterį arba ieškoti tarpinio serverio ir DNS žurnaluose. „Microsoft“ galiniai taškai rodomi todėl, kad sistema juos piktnaudžiauja; jie patys nėra kenkėjiški ir neturėtų būti blokuojami.
| rodiklis | Tipas | Kur | Gynėjo veiksmai |
|---|---|---|---|
nolimit-agent (visos versijos 1.0.299–1.0.307) | Paketas | npm | „Grep“ užrakinimo failai / diegimo žurnalai |
api[.]nolimitent[.]xyz (:4100) | C2 šeimininkas | .ad/x4.js | Blokuoti; ieškoti DNS ir tarpinio serverio žurnaluose |
.ad/ paslėptas katalogas kaip pagrindinis/bin paskirties objektas | Struktūra | package.json | Statinis signalas registro peržiūroje |
trusted[.]com@ / %40 / :80@ nuorodų formos | URL klastojimas | .ad/xu.js, .ad/xq.js | Pašto / tarpinio serverio URL patikra |
Įrenginio kodo suteikimas + Graph inbox/sentitems skaityti | Elgesys | .ad/x12.js | M365 prisijungimas + grafų audito peržiūra |
Triažo metu užfiksuoti failų maišos kodai:
- paketas/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- paketas/paketas.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
„Microsoft 365“ nuomininko signalas, kurį verta ieškoti nepriklausomai nuo šio paketo: sėkmingi įrenginio kodo prisijungimai, po kurių greitai seka „Graph“ rodmenys pašto aplankai / gautieji bei pašto aplankai/siuntiniai, ypač iš seanso, kurio vartotojas neatpažįsta.
Priskyrimas ir stebimas elgesys
Tai, kas matoma, lieka atskirta nuo to, kas už to slypi.
Stebimi faktai: paketas publikuojamas naudojant vartotojo vardą nolimit agentas su nepatvirtintu „Gmail“ adresu ir be susietos šaltinio saugyklos; jo paketas.json apibūdina jį kaip „pažangų el. laiškų siuntėją“ ir pažymi jį žymekliu raudonoji komanda raktinis žodis; vykdymo laiko kodas yra sutelktas paslėptoje, užmaskuotoje vietoje .skelbimas/ katalogas, kurio įrankių grandinė (javascript-obfuscator) yra deklaruota priklausomybė; ir iškvietimo namo mazgas api[.]nolimit[.]xyz pakartotinai panaudoja neribotas prekės ženklas. Tai vienas paketas su vienu operatoriaus valdomu infrastruktūros orientyru – ne kelių paketų klasteris, ir nebuvo nustatyta jokio sutapimo su anksčiau pavadinta kampanija.
Geriausios raudonoji komanda raktinis žodis nekeičia klasifikacijos. Teisėti puolimo saugumo įrankiai, teikiantys dvejopo naudojimo galimybes, tai daro skaidriai: skaitomas šaltinis, operatoriaus pateikti taikiniai ir nėra paslėpto iškvietimo namo. Šis paketas apverčia kiekvieną iš šių savybių – jo operacinis kodas yra užmaskuotas ir paslėptas, o signalas nukreipiamas į fiksuotą operatoriaus infrastruktūrą, o ne į vartotojo pateiktą taikinį. Verdiktą, kuris yra kenkėjiškas, lemia elgesys, o ne žymė.
Čia nenurodomas ketinimas. Įraše aprašoma, ką daro kodas – užklausia įrenginio kodą, nuskaito pašto dėžutę per „Graph“, siunčia masinius laiškus per sukonfigūruotas reles, siunčia švyturį fiksuotam mazgui – ir motyvas nenurodomas.
Poveikis, tendencijos ir gynėjų gairės
Svarbūs du diegimo laiko efektai. Pirma, bet kuris kūrėjas arba CI agentas, kuris diegia nolimit agentas perkelia sistemą į tą pagrindinį kompiuterį ir nustato iškvietimo centrą api[.]nolimit[.]xyzAntra, įrenginio kodo galimybė praplečia aprėptį už diegimo pagrindinio kompiuterio ribų: „Microsoft 365“ pašto dėžutė, kurios savininkas yra priverstas patvirtinti pateiktą kodą, nuskaitoma tiesiogiai per „Graph“, be jokio slaptažodžio.
Platesnė tendencija yra internalizacijos tendencija. Įrenginio kodo (AiTM) sukčiavimas apsimetant iš atskiros sukčiavimo infrastruktūros perėjo į viešajame registre esantį paketą – platinamą npm įdiegti o ne el. paštu siunčiama nuoroda. Tokiu būdu supakuojant rinkinį, sukčiavimo operatoriaus prieglobos ir nuorodų pristatymo problema pakeičiama registro pasiekiamumu, o operacinis kodas paslepiamas už švaraus diegimo kabliuko ir užmaskuoto katalogo, pavadinto dotfile, kurio neįmanoma greitai peržiūrėti rankiniu būdu.
Gynėjams:
- Registro ir priklausomybių peržiūra. Elkitės su siuntiniu, kurio pagrindinis/jusu siuksliu paverčiamas paslėptu (su taškais prefiksuotu) katalogu, kuriame yra vienodai užmaskuotas pirmosios šalies kodas, kaip didelės rizikos vien dėl struktūros, nepriklausomai nuo to, ar diegimo kabliukas atrodo tvarkingas. Sumažinimas nėra užmaskavimas – vartai nustatomi pagal eilučių masyvo dekoderio parašą, o ne pagal eilutės ilgį.
- „Microsoft 365“ apsaugos stiprinimas. Apribokite įrenginio kodo autorizacijos srautą naudodami sąlyginę prieigą, kai tai nėra būtina operacinei veiklai; įrenginio kodo suteikimai yra žinomas „AiTM“ vektorius ir interaktyviems vartotojams jų retai reikia. Atlikite įrenginio kodo prisijungimų auditą, po kurio nedelsiant bus išvardinta „Graph“ pašto dėžutė.
- Tinklo aptikimas. Blokavimas ir įspėjimas įjungtas api[.]nolimit[.]xyzIeškokite išeinančių DNS ir tarpinio serverio žurnalų visoje kūrėjo ir kūrimo infrastruktūroje.
- Pašto kelio aptikimas. Geriausios naudotojas@host URL klastojimo formos (patikimas[.]com@…) yra aptinkami pašto šliuze ir tarpiniame serveryje; žymi nuorodas, kurių autoriteto komponentas yra prieš @.
Analizės metu paketas buvo paskelbtas npm. Kadangi paslėptas karkasas apima visą paskelbtos versijos eilutę ir dabartinę naujausias žyma (1.0.307) turi įrenginio kodo galimybę, registro pašalinimas turėtų apimti visas versijas, o ne tik vieną ankstesnę versiją.




