TL; DR
nolimit-agent er en npm-pakke, hvis udgivne versioner — 1.0.299 gennem 1.0.307, udgivet over fire dage fra 2026-06-26 til 2026-06-29 — hver medfølger en komplet phishing- og massemail-rammeværk inde i en skjult, fuldt tilsløret mappe. I hver version løser hovedposten sig op til .ad/x0.js, en af ~86 filer i en mappe med navnet dotfile, der indeholder cirka 4,200 javascript-obfuscator string-array blobs; installationshooken og indgangslayoutet er identiske på tværs af linjen.
Bag forvirringen gemmer sig en Microsoft 365 OAuth-enhedskodeflow (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) der, når en kode er godkendt, læser offerets Outlook-indbakke og sendte elementer via Microsoft Graph API'en; en masse-SMTP- og SMS-afsendelsesmotor drevet af operatørleverede modtagerlister; skabeloner til brandefterligning af beskeder; konstruktion af åbne omdirigeringer; og rekognoscering via DNS-over-HTTPS, WHOIS og GitHub-kodesøgning. Kørselstidstrafikbeacons til operatørinfrastruktur på api[.]nolimitent[.]xyz:4100.
Berørt: alle, der installerer en version af pakken, og enhver Microsoft 365-postkasse hvis ejer godkender en enhedskode, der præsenteres via den. Den seneste version, 1.0.307, er det seneste tag og har den samme enhedskode-postkassefunktion — den ondsindede kode er ikke begrænset til én bagversion.
Alvorlighed: kritiskBerørt økosystem: NPMDen ene indikator, man skal søge efter først: værten api[.]nolimitent[.]xyz.
Angrebet: Sådan fungerer det
En godartet skal over en skjult nyttelast
Pakken har en almindelig overflade. pakke.json erklærer en efterinstallation krog –
text postinstall: node scripts/postinstall.js — og ved inspektion scripts/postinstall.js er harmløst: den installerer en Windows-kommandoshim og afslutter. Hook'en er ikke der, hvor adfærden findes. main og bin felter peger begge ind i .annonce/, en mappe hvis indledende punktum holder den ude af tilfældig ls output, og hvis indhold er ensartet maskinforvirret. Den statiske scanner talte ~4,293 kodede nyttelastspænd på tværs af .annonce/ modulsæt; javascript-obfuscator er en deklareret udviklingsafhængighed, som matcher streng-array-rotationsformen for de bundtede filer.
Opdelingen er det første signal, der er værd at nævne: den installations-hook, en anmelder ville granske, er ren, mens den operationelle kode ligger én mappe væk, skjult og tilsløret, og kun nås, når pakkens eksporterede indgangspunkt kører.
Adgang til postkasse med Microsoft 365-enhedskode
Modulet .ad/x12.js indeholder frameworkets mest betydningsfulde funktionalitet. Den driver Microsoft 365 OAuth 2.0-enhedsgodkendelsen:
text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode Enhedskodetildelingen er et legitimt Microsoft-flow designet til inputbegrænsede enheder: en tjeneste anmoder om en kode, og brugeren indtaster den kode i microsoft.com/devicelogin` på en anden enhed og godkender, og den anmodende tjeneste modtager tokens. Når den anmodende tjeneste tilhører en anden end postkasseejeren, giver godkendelsen den tredjepart et token. Når et token er indhentet, .ad/x12.js` læser postkassen direkte via 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 $vælg Projektioner henter afsenderadresser fra indbakken og modtageradresser fra sendte elementer – råmaterialet til at kortlægge et offers korrespondenter. Dette er "adversary-in-the-middle" (AiTM) adgang via samtykke snarere end via adgangskoderegistrering: der er ingen legitimationsoplysninger til phishing i klassisk forstand, kun en kode til at blive godkendt.
En masseudsendelses- og SMS-motor med personefterligningsskabeloner
Rundt om postkassens adgang sidder en afsender. Pakken sender operatørredigerbare datafiler — afsenderlister (sendere.txt, smtps.txt) og en skabelonfil (funktioner.txt) — hvis pladsholderadresser læses som et castingsark til efterligning: security@apple.com, login-verifikation, OAuth-tjeneste, fakturering og afsendere af kontomeddelelser mod en yourdomain.com stedfortræder, som operatøren erstatter. SMS-siden har en telefonebook og gatewaykonfiguration. Maileren gentager operatørleverede modtagerlister og sender via konfigurerede SMTP-relæer.
For at få links til at lande, .ad/xu.js og .ad/xq.js opbygge URL'er, der udnytter URL-parsing-tvvetydighed og kliksporing. Forfalskningsmønstrene integrerer en autoritet, der ser pålidelig ud, før en @ så det synlige præfiks adskiller sig fra den rigtige vært:
text https://trusted[.]com@ https://trusted[.]com%40 https://trusted[.]com:80@ https://redirect[.]example[.]com/ https://track[.]example[.]com/click? Frameworket henter også favicons fra store forbrugere og enterprise mailudbydere — en rutinemæssig teknik til at gengive en overbevisende udbyderbrandet prompt eller landingsside.
Mål- og infrastrukturrekognoscering
Flere moduler indsamler kontekst før afsendelse. .ad/x0.js løser navne via DNS-over-HTTPS (dns[.]google/løs), .ad/xa.js forespørgsler WHOIS (api[.]whois[.]vu), Og .ad/x9.js kører GitHub-kodesøgning (api[.]github[.]com/search/code?q=) — et mønster, der er i overensstemmelse med at opdage eksponeret mailserverkonfiguration og SMTP-legitimationsoplysninger for at forsyne relælisten. .ad/xs.js forespørger Wayback Machines CDX-indeks.
Kommando og kontrol
På tværs af det tilslørede sæt, .ad/x4.js referererer til operatorens slutpunkt:
text http://api[.]nolimitent[.]xyz:4100 Værten deler sin ubegrænset mærke med udgiverens eget navn, og : 4100 port er frameworkets call-home-kanal. Dette er den mest holdbare indikator for forsvarere: en pakke, en udvikler-arbejdsstation eller en build-agent, der når api[.]ingenbegrænset[.]xyz har kørt denne kode.
Indikatorer for kompromis
Indikatorerne nedenfor er dem, en forsvarer kan reagere på — grep en låsefil, blokere en vært eller søge i proxy- og DNS-logfiler. Microsoft-slutpunkter vises, fordi frameworket misbruger dem; de er ikke i sig selv skadelige og bør ikke blokeres.
| Indikator | Type | Hvor | Forsvarshandling |
|---|---|---|---|
nolimit-agent (alle versioner 1.0.299–1.0.307) | Pakke | NPM | Grep låsefiler / installationslogfiler |
api[.]nolimitent[.]xyz (:4100) | C2-vært | .ad/x4.js | Bloker; søg i DNS + proxy-logfiler |
.ad/ skjult mappe som hoved-/bin-mål | Struktur | package.json | Statisk signal i registreringsdatabasen |
trusted[.]com@ / %40 / :80@ linkformularer | URL-forfalskning | .ad/xu.js, .ad/xq.js | Inspektion af mail-/proxy-URL |
Enhedskodebevilling + Graf inbox/sentitems læse | Adfærd | .ad/x12.js | M365 login + Graph revisionsgennemgang |
Filhash indsamlet ved triage:
- pakke/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- pakke/pakke.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
Et Microsoft 365-lejersignal, der er værd at jagte uafhængigt af denne pakke: succesfulde enhedskode-logins efterfulgt af graflæsninger af MailMapper/Indbakke og MailMapper/Sendte elementer, især fra en session, som brugeren ikke genkender.
Attribuering og observeret adfærd
Det observerbare forbliver adskilt fra, hvem der står bag det.
Observerbare fakta: Pakken er offentliggjort under navnet nolimit-agent med en ubekræftet Gmail-adresse og intet linket kildelager; dens pakke.json beskriver den som en "avanceret e-mail-afsender" og tagger den med rødt hold nøgleord; runtime-koden er koncentreret i et skjult, tilsløret .annonce/ mappe hvis værktøjskæde (javascript-obfuscator) er en deklareret afhængighed; og call-home-værten api[.]ingenbegrænset[.]xyz genbruger den ubegrænset brand. Dette er en enkelt pakke med ét operatørkontrolleret infrastrukturlandemærke – ikke en klynge med flere pakker, og der blev ikke identificeret nogen overlapning med en tidligere navngivet kampagne.
rødt hold Nøgleordet ændrer ikke klassificeringen. Legitime offensive sikkerhedsværktøjer, der leverer dobbelt anvendelse, gør det transparent: læsbar kildekode, operatørleverede mål og intet skjult call-home. Denne pakke inverterer hver af disse egenskaber - dens operationelle kode er tilsløret og skjult, og den sender beacon til en fast operatørinfrastruktur i stedet for et mål, som brugeren leverer. Adfærden, ikke etiketten, styrer dommen, som er ondsindet.
Intentionen er ikke angivet her. Opslaget beskriver, hvad koden gør — anmode om en enhedskode, læse en postkasse via Graph, sende massemail via konfigurerede relæer, sende beacon til en fast vært — og lader motivet være uangivet.
Indvirkning, tendenser og vejledning til forsvarere
To effekter på installationstiden er vigtige. For det første, enhver udvikler eller CI-agent, der installerer nolimit-agent bringer frameworket til den vært og etablerer call-home til api[.]ingenbegrænset[.]xyzFor det andet rækker enhedskodefunktionen ud over den installerende vært: en Microsoft 365-postkasse, hvis ejer tilskyndes til at godkende en præsenteret kode, læses direkte via Graph, uden at nogen adgangskode nogensinde krydser kablet.
Den bredere tendens er at internalisere. Enhedskode-phishing (AiTM) er gået fra at være en selvstændig phishing-infrastruktur til at være en pakke i et offentligt register – distribution via npm installere snarere end via et link sendt via e-mail. Ved at pakke sættet på denne måde byttes phishing-operatørens hosting- og linkleveringsproblem ud med en registreringsdatabases rækkevidde og skjules den operationelle kode bag en ren installationshook og en obfuscated-mappe med navnet dotfile, der omgås en hurtig manuel skimning.
For forsvarere:
- Gennemgang af register og afhængigheder. Behandl en pakke hvis main/bin opløses i en skjult (med punktum som præfiks) mappe med ensartet obfuskeret førstepartskode som højrisiko alene på strukturen, uafhængigt af om installationskrogen ser ren ud. Minimificering er ikke obfuskation — gate på streng-array dekoderens signatur, ikke på linjelængden.
- Microsoft 365-hærdning. Begræns enhedskodegodkendelsesflowet med betinget adgang, hvor det ikke er operationelt påkrævet; enhedskodetilladelser er en kendt AiTM-vektor og er sjældent nødvendige for interaktive brugere. Overvåg for enhedskodelogins efterfulgt af øjeblikkelig Graph-postkasseoptælling.
- Netværksdetektion. Bloker og advarsel aktiveret api[.]ingenbegrænset[.]xyzSøge efter udgående DNS- og proxy-logfiler for det på tværs af udvikler- og build-infrastruktur.
- Detektion af mailsti. bruger@vært URL-forfalskningsformularer (betroet[.]com@…) kan detekteres ved mailgatewayen og proxyen; marker links, hvis autoritetskomponent går forud for en @.
Pakken var live på npm på analysetidspunktet. Fordi det skjulte framework spænder over hele den publicerede versionslinje og den nuværende seneste tag (1.0.307) indeholder enhedskodefunktionalitet, bør fjernelse fra registreringsdatabasen dække alle versioner, ikke kun en enkelt bagudversion.




