TL; DR
nolimit-agent er en npm-pakke hvis publiserte versjoner — 1.0.299 gjennom 1.0.307, utgitt over fire dager fra 26.06.2026 til 29.06.2026 — hver har en komplett rammeverk for phishing og masseutsendelser inne i en skjult, fullstendig tilslørt katalog. I alle versjoner løses hovedoppføringen til .ad/x0.js, en av ~86 filer i en mappe med navnet dotfile som inneholder omtrent 4,200 javascript-obfuscator string-array-blobs; installasjonskroken og oppføringsoppsettet er identiske over hele linjen.
Bak forvirringen sitter en Microsoft 365 OAuth-enhetskodeflyt (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) som, når en kode er godkjent, leser offerets Outlook-innboks og sendte elementer via Microsoft Graph API; en motor for massesending av SMTP og SMS drevet av operatørleverte mottakerlister; meldingsmaler for merkevareidentifisering; konstruksjon av åpne omdirigeringslenker; og rekognosering via DNS-over-HTTPS, WHOIS og GitHub-kodesøk. Kjøretidstrafikksignaler til operatørinfrastruktur på api[.]nolimitent[.]xyz:4100.
Berørt: alle som installerer en hvilken som helst versjon av pakken, og alle Microsoft 365-postkasse hvis eier godkjenner en enhetskode som presenteres gjennom den. Den nyeste versjonen, 1.0.307, er den nyeste taggen og har den samme enhetskode-postkassefunksjonen – den skadelige koden er ikke begrenset til én bakversjon.
alvorlighetsgrad: kritiskBerørt økosystem: NPMDen ene indikatoren du bør søke etter først: verten api[.]nolimitent[.]xyz.
Angrepet: hvordan det fungerer
Et godartet skall over en skjult nyttelast
Pakken har en vanlig overflate. pakke.json erklærer en etterinstallasjon krok –
text postinstall: node scripts/postinstall.js – og ved inspeksjon scripts/postinstall.js er ufarlig: den installerer en Windows-kommandoshim og avslutter. Hooken er ikke der oppførselen befinner seg. main og bin feltene peker begge inn i .annonse/, en katalog med et innledende punktum som hindrer tilfeldig bruk ls utdata, og hvis innhold er jevnt maskinforvirret. Den statiske skanneren telte ~4,293 kodede nyttelastspenn på tvers av .annonse/ modulsett; javascript-obfuscator er en deklarert utviklingsavhengighet, som samsvarer med streng-array-rotasjonsformen til de medfølgende filene.
Delingen er det første signalet som er verdt å navngi: installasjonskroken en anmelder ville granske er ren, mens den operative koden ligger én katalog unna, skjult og tilslørt, og nås bare når pakkens eksporterte inngangspunkt kjører.
Tilgang til postboks med enhetskode i Microsoft 365
Modulen .ad/x12.js inneholder rammeverkets mest betydningsfulle funksjonalitet. Den driver enhetsautorisasjonsbevilgningen for Microsoft 365 OAuth 2.0:
text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode Enhetskodetildelingen er en legitim Microsoft-flyt som er utformet for enheter med begrenset inndata: en tjeneste ber om en kode, og brukeren skriver inn den koden i microsoft.com/devicelogin` på en annen enhet og godkjenner, og den forespørrende tjenesten mottar tokener. Når den forespørrende tjenesten tilhører noen andre enn postbokseieren, gir godkjenningen den tredjeparten et token. Når et token er innhentet, .ad/x12.js` leser postboksen 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 Ocuco $velg Projeksjoner henter avsenderadresser fra innboksen og mottakeradresser fra sendte elementer – råmaterialet for å kartlegge offerets korrespondenter. Dette er «adversary-in-the-middle» (AiTM)-tilgang basert på samtykke snarere enn passordregistrering: det finnes ingen legitimasjon for phishing i klassisk forstand, bare en kode for å bli godkjent.
En motor for masseutsendelser og SMS med maler for etterligning
Rundt postkassetilgangen sitter det en avsender. Pakken sender operatørredigerbare datafiler – avsenderlister (sendere.txt, smtps.txt) og en malfil (funksjoner.txt) — hvis plassholderadresser leses som et avstøpningsskjema for etterligning: security@apple.com, login-verifisering, OAuth-tjeneste, fakturering og avsendere av kontovarsler mot en yourdomain.com stedfortreder som operatøren erstatter. SMS-siden har en telefonebook og gateway-konfigurasjon. Mailer-en itererer operatørleverte mottakerlister og sender via konfigurerte SMTP-reléer.
For å få lenker til å lande, .ad/xu.js og .ad/xq.js bygge URL-er som utnytter tvetydighet i URL-parsing og klikksporing. Forfalskningsmønstrene legger inn en autoritet som ser ut til å være pålitelig før en @ så det synlige prefikset er forskjellig fra den virkelige verten:
text https://trusted[.]com@ https://trusted[.]com%40 https://trusted[.]com:80@ https://redirect[.]example[.]com/ https://track[.]example[.]com/click? Rammeverket henter også favorittikoner fra store forbrukere og enterprise e-postleverandører – en rutinemessig teknikk for å gjengi en overbevisende leverandørmerket prompt eller landingsside.
Mål- og infrastrukturrekognosering
Flere moduler samler kontekst før sending. .ad/x0.js løser navn over DNS-over-HTTPS (dns[.]google/løs), .ad/xa.js WHOIS-spørringer (api[.]whois[.]vu), Og .ad/x9.js kjører GitHub-kodesøk (api[.]github[.]com/search/code?q=) – et mønster som er konsistent med å oppdage eksponert e-postserverkonfigurasjon og SMTP-legitimasjon for å mate relélisten. .ad/xs.js spør i Wayback Machines CDX-indeks.
Kommandere og kontrollere
På tvers av det tilslørte settet, .ad/x4.js referererer til operatorens endepunkt:
text http://api[.]nolimitent[.]xyz:4100 Verten deler sin ubegrenset merke med utgiverens eget navn, og : 4100 port er rammeverkets call-home-kanal. Dette er den mest holdbare indikatoren for forsvarere: en pakke, en utviklerarbeidsstasjon eller en byggeagent som når api[.]ingen begrensning[.]xyz har kjørt denne koden.
Indikatorer for kompromiss
Indikatorene nedenfor er de en forsvarer kan handle på – grep en låsefil, blokkere en vert eller søke i proxy- og DNS-logger. Microsoft-endepunkter vises fordi rammeverket misbruker dem; de er ikke skadelige i seg selv og bør ikke blokkeres.
| Indikator | typen | Hvor | Forsvarsaksjon |
|---|---|---|---|
nolimit-agent (alle versjoner 1.0.299–1.0.307) | Pakke | NPM | Grep låsefiler / installasjonslogger |
api[.]nolimitent[.]xyz (:4100) | C2-vert | .ad/x4.js | Blokker; søk i DNS- og proxylogger |
.ad/ skjult mappe som hoved-/bin-mål | Structure | package.json | Statisk signal i registergjennomgang |
trusted[.]com@ / %40 / :80@ lenkeskjemaer | URL-forfalskning | .ad/xu.js, .ad/xq.js | Inspeksjon av e-post-/proxy-URL |
Enhetskodetildeling + Graf inbox/sentitems lese | Behavior | .ad/x12.js | M365-pålogging + Graph-revisjonsgjennomgang |
Fil-hasher fanget ved sortering:
- pakke/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- pakke/pakke.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
Et Microsoft 365-leietakersignal som er verdt å jakte på uavhengig av denne pakken: vellykkede enhetskodepålogginger etterfulgt raskt av graflesninger av postmapper/innboks og MailMapper/Sendte elementer, spesielt fra en økt brukeren ikke gjenkjenner.
Attribusjon og observert atferd
Det som er observerbart forblir atskilt fra hvem som står bak det.
Observerbare fakta: pakken er publisert under navnet nolimit-agent med en ubekreftet Gmail-adresse og ingen lenket kildelager; dens pakke.json beskriver den som en «avansert e-postavsender» og merker den med rødt lag nøkkelord; kjøretidskoden er konsentrert i et skjult, tilslørt .annonse/ katalogen hvis verktøykjede (javascript-obfuscator) er en deklarert avhengighet; og verten for samtalehjem api[.]ingen begrensning[.]xyz gjenbruker ubegrenset merke. Dette er en enkelt pakke med ett operatørkontrollert infrastrukturlandemerke – ikke en klynge med flere pakker, og det ble ikke identifisert noen overlapping med en tidligere navngitt kampanje.
Ocuco rødt lag Nøkkelordet endrer ikke klassifiseringen. Legitime verktøy for offensiv sikkerhet som leverer dobbeltbruksfunksjonalitet gjør dette transparent: lesbar kildekode, operatørleverte mål og ingen skjulte call-homes. Denne pakken inverterer hver av disse egenskapene – den operative koden er tilslørt og skjult, og den sender signal til fast operatørinfrastruktur i stedet for et mål brukeren leverer. Oppførselen, ikke etiketten, styrer dommen, som er ondsinnet.
Intensjon hevdes ikke her. Innlegget beskriver hva koden gjør – be om en enhetskode, lese en postkasse over Graph, sende masseutsendelser gjennom konfigurerte reléer, sende signal til en fast vert – og lar motivet være uoppgitt.
Innvirkning, trender og veiledning fra forsvarere
To effekter på installasjonstiden er viktige. For det første, enhver utvikler eller CI-agent som installerer nolimit-agent bringer rammeverket til den verten og etablerer call-home-et til api[.]ingen begrensning[.]xyzFor det andre strekker enhetskodefunksjonen seg utover den installerende verten: en Microsoft 365-postboks hvis eier blir bedt om å godkjenne en presentert kode, leses direkte gjennom Graph, uten at noe passord noen gang krysser ledningen.
Den bredere trenden er å internalisere. Enhetskode-phishing (AiTM) har gått fra å være en frittstående phishing-infrastruktur til en pakke i et offentlig register – distribusjon av npm installasjon i stedet for via en e-postlenkelse. Å pakke settet på denne måten bytter phishing-operatørens hosting- og lenkeleveringsproblem mot et registers rekkevidde, og skjuler den operative koden bak en ren installasjonshook og en obfuskert katalog med navnet dotfile som omgås en rask manuell skimming.
For forsvarere:
- Register- og avhengighetsgjennomgang. Behandle en pakke hvis main/bin løses opp i en skjult (punktum-prefiks) katalog med jevnt obfuskert førstepartskode som høyrisiko kun på struktur, uavhengig av om installasjonskroken ser ren ut. Minimifisering er ikke obfuskering – gate på streng-array-dekodersignaturen, ikke på linjelengde.
- Microsoft 365-herding. Begrens enhetskodeautorisasjonsflyten med betinget tilgang der det ikke er driftsmessig nødvendig; enhetskodetildelinger er en kjent AiTM-vektor og trengs sjelden av interaktive brukere. Revisjon for enhetskodepålogginger etterfulgt av umiddelbar Graph-postboksopplisting.
- Nettverksdeteksjon. Blokker og varsle på api[.]ingen begrensning[.]xyzSøk etter utgående DNS- og proxy-logger for den på tvers av utvikler- og byggeinfrastruktur.
- Deteksjon av poststi. Ocuco bruker@vert URL-forfalskningsskjemaer (pålitelig[.]com@…) kan oppdages ved e-postgatewayen og proxyen; flagg lenker hvis autoritetskomponent går foran en @.
Pakken var aktiv på npm på analysetidspunktet. Fordi det skjulte rammeverket strekker seg over hele den publiserte versjonslinjen og den nåværende siste tag (1.0.307) har enhetskodefunksjonalitet, bør registerfjerning dekke alle versjoner, ikke bare én enkelt tilbakeversjon.




