DeviceDoor npm-pakke som sender et Microsoft 365 Device-Code Phishing Framework

DeviceDoor: en offentlig npm-pakke som sender et Microsoft 365-rammeverk for enhetskode for phishing og masseutsendelser av e-post

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. 

sca-tools-programvare-verktøy for komposisjonsanalyse
Prioriter, utbedre og sikre programvarerisikoene dine
Få din gratis konto.
Ingen kredittkort kreves.

Sikre programvareutviklingen og -leveringen din

med Xygeni-produktpakken