DeviceDoor npm-pakket wat 'n Microsoft 365-toestelkode-phishing-raamwerk verskeep

DeviceDoor: 'n openbare npm-pakket wat 'n Microsoft 365-toestelkode-phishing- en grootmaat-posraamwerk verskeep

TL; DR

nolimit-agent is 'n npm-pakket waarvan die gepubliseerde weergawes — 1.0.299 tot en met 1.0.307, vrygestel oor vier dae van 2026-06-26 tot 2026-06-29 — elk dra 'n volledige raamwerk vir phishing en grootmaat-pos binne 'n versteekte, volledig verdoeselde gids. In elke weergawe los die hoofinskrywing op na .ad/x0.js, een van ~86 lêers in 'n dotfile-genaamde vouer wat ongeveer 4 200 javascript-obfuscator string-array blobs bevat; die installasiehaak en inskrywingsuitleg is identies oor die hele lyn.

Agter die verduistering sit 'n Microsoft 365 OAuth-toestelkodevloei (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) wat, sodra 'n kode goedgekeur is, die slagoffer se Outlook-inkassie en gestuurde items deur die Microsoft Graph API lees; 'n massa-SMTP- en SMS-stuurenjin aangedryf deur operateur-verskafde ontvangerlyste; handelsmerk-nabootsingboodskapsjablone; oop-herleidingskakelkonstruksie; en verkenning oor DNS-oor-HTTPS-, WHOIS- en GitHub-kodesoektog. Looptydverkeersbakens na operateurinfrastruktuur by api[.]nolimitent[.]xyz:4100.

Geaffekteer: enigiemand wat enige weergawe van die pakket installeer, en enige Microsoft 365-posbus wie se eienaar 'n toestelkode goedkeur wat daardeur aangebied word. Die mees onlangse weergawe, 1.0.307, is die huidige nuutste etiket en dra dieselfde toestelkode-posbusvermoë — die kwaadwillige kode is nie beperk tot een terugweergawe nie.

erns: kritiekeGeaffekteerde ekosisteem: NPMDie een aanwyser om eerste na te soek: die gasheer api[.]nolimitent[.]xyz.

Die aanval: hoe dit werk

'n Goedaardige dop oor 'n verborge vrag

Die pakket bied 'n gewone oppervlak. pakket.json verklaar 'n na-installasie haak – 

text postinstall: node scripts/postinstall.js 

— en op inspeksie scripts/postinstall.js is onskadelik: dit installeer 'n Windows-opdrag-shim en sluit. Die haak is nie waar die gedrag voorkom nie. Die hoof en bin velde wys albei na .ad/, 'n gids waarvan die voorste punt dit uit die terloopse omgewing hou ls uitvoer, en waarvan die inhoud eenvormig masjien-verduister is. Die statiese skandeerder het ~4 293 geënkodeerde-vragspanne oor die .ad/ modulestel; javascript-obfuscator is 'n verklaarde ontwikkelingsafhanklikheid, wat ooreenstem met die string-skikking-rotasie-vorm van die gebundelde lêers.

Die verdeling is die eerste sein wat die moeite werd is om te noem: die installasiehaak wat 'n resensent sou ondersoek, is skoon, terwyl die operasionele kode een gids weg is, versteek en verdoesel, en slegs bereik word wanneer die pakket se uitgevoerde toegangspunt loop.

Toegang tot Microsoft 365-posbus met toestelkode

Die module .ad/x12.js dra die raamwerk se mees belangrike vermoë. Dit dryf die Microsoft 365 OAuth 2.0-toestelmagtigingstoelaag aan:

text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode 

Die toestelkode-toekenning is 'n wettige Microsoft-vloei wat ontwerp is vir toestelle met beperkte invoer: 'n diens versoek 'n kode, die gebruiker tik daardie kode in. microsoft.com/toestellogin` op 'n tweede toestel en keur goed, en die versoekende diens ontvang tokens. Wanneer die versoekende diens aan iemand anders as die posbus-eienaar behoort, gee goedkeuring daardie derde party 'n token. Sodra 'n token verkry is, .ad/x12.js` lees die posbus direk deur 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 

Die $kies projeksies trek senderadresse uit die inboks en ontvangeradresse uit gestuurde items – die rou materiaal vir die kartering van 'n slagoffer se korrespondente. Dit is teenstander-in-die-middel (KI) toegang deur toestemming eerder as deur wagwoordvaslegging: daar is geen geloofsbriewe vir phishing in die klassieke sin nie, slegs 'n kode om goedgekeur te word.

'n Grootmaatpos- en SMS-enjin met nabootsingsjablone

Rondom die posbustoegang is 'n posstuk. Die pakket stuur operateur-redigeerbare datalêers — senderlyste (senders.txt, smtps.txt) en 'n sjabloonlêer (funksies.txt) — waarvan die plekhoueradresse gelees word as 'n beslissende vorm vir nabootsing: sekuriteit@apple.com, login-verifikasie, OAuth-diens, fakturering en rekeningkennisgewing-senders teen 'n yourdomain.com die invaller vervang die operateur. Die SMS-kant dra 'n telefoonebook en poortkonfigurasie. Die posverskaffer herhaal operateurverskafde ontvangerlyste en stuur deur gekonfigureerde SMTP-relais.

Om skakels te laat land, .ad/xu.js en .ad/xq.js bou URL'e wat URL-ontleding-dubbelsinnigheid en klikopsporing benut. Die spoofpatrone lê 'n betroubare outoriteit voor 'n @ so verskil die sigbare voorvoegsel van die werklike gasheer:

text https://trusted[.]com@      https://trusted[.]com%40      https://trusted[.]com:80@ https://redirect[.]example[.]com/      https://track[.]example[.]com/click? 

Die raamwerk gryp ook gunstelingikone van groot verbruikers- en enterprise posverskaffers — 'n roetinetegniek om 'n oortuigende verskaffer-gebrandmerkte prompt of bestemmingsblad te lewer.

Teiken- en infrastruktuurverkenning

Verskeie modules versamel konteks voordat dit gestuur word. .ad/x0.js los name op oor DNS-oor-HTTPS (dns[.]google/los op), .ad/xa.js navrae WHOIS (api[.]whois[.]vu), En .ad/x9.js voer GitHub-kodesoektog uit (api[.]github[.]com/soek/kode?q=) — 'n patroon wat ooreenstem met die ontdekking van blootgestelde posbedienerkonfigurasie en SMTP-geloofsbriewe om die afloslys te voed. .ad/xs.js navrae oor die Wayback Machine se CDX-indeks.

Opdrag en beheer

Oor die verduisterde stel, .ad/x4.js verwys na die operateur se eindpunt:

text http://api[.]nolimitent[.]xyz:4100 

Die gasheer deel sy onbeperk handelsmerk met die uitgewer se eie naamgewing, en die : 4100 poort is die raamwerk se oproep-tuis-kanaal. Dit is die enkele mees duursame aanwyser vir verdedigers: 'n pakket, 'n ontwikkelaarwerkstasie of 'n bou-agent wat bereik api[.]onbeperk[.]xyz het hierdie kode uitgevoer.

Aanwysers van kompromie

Die aanwysers hieronder is die waarop 'n verdediger kan optree - grep 'n sluitlêer, blokkeer 'n gasheer, of soek instaanbediener en DNS-logboeke. Microsoft-eindpunte verskyn omdat die raamwerk hulle misbruik; hulle is nie self kwaadwillig nie en moet nie geblokkeer word nie.

Indicator Tipe Waar Verdediger se aksie
nolimit-agent (alle weergawes 1.0.299–1.0.307) pakket NPM Grep sluitlêers / installasielogboeke
api[.]nolimitent[.]xyz (:4100) C2-gasheer .ad/x4.js Blokkeer; soek DNS + proxy-logboeke
.ad/ versteekte gids as hoof/bin-teiken struktuur package.json Statiese sein in registeroorsig
trusted[.]com@ / %40 / :80@ skakelvorms URL-namaaksel .ad/xu.js, .ad/xq.js Pos-/instaanbediener-URL-inspeksie
Toestelkode-toekenning + Grafiek inbox/sentitems lees Gedrag .ad/x12.js M365-aanmelding + Graph-ouditoorsig

Lêer-hashes vasgelê tydens triage:

  • pakket/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a

  • pakket/pakket.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644

'n Microsoft 365-huurdersein wat die moeite werd is om na te jag, onafhanklik van hierdie pakket: suksesvolle toestelkode-aanmeldings gevolg deur Grafieklesings van poslêers/inboks en poslêers/stuuritems, veral van 'n sessie wat die gebruiker nie herken nie.

Toeskrywing en waargenome gedrag

Wat waarneembaar is, bly apart van wie daaragter sit.

Waarneembare feite: die pakket word onder die handvatsel gepubliseer nolimit-agent met 'n ongeverifieerde Gmail-adres en geen gekoppelde bronbewaarplek nie; sy pakket.json beskryf dit as 'n "gevorderde e-pos sender" en merk dit met die rooi-span sleutelwoord; die looptydkode is gekonsentreer in 'n verborge, verdoeselde .ad/ gids waarvan die gereedskapsketting (javascript-obfuscator) is 'n verklaarde afhanklikheid; en die oproephuis-gasheer api[.]onbeperk[.]xyz hergebruik die onbeperk handelsmerk. Hierdie is 'n enkele pakket met een operateur-beheerde infrastruktuurlandmerk — nie 'n multi-pakketgroep nie, en geen oorvleueling met 'n voorheen genoemde veldtog is geïdentifiseer nie.

Die rooi-span Die sleutelwoord verander nie die klassifikasie nie. Wettige aanvallende sekuriteitsinstrumente wat dubbele gebruikskapasiteit verskaf, doen dit deursigtig: leesbare bronkode, teikens wat deur die operateur verskaf word, en geen versteekte oproeptuis nie. Hierdie pakket keer elk van daardie eienskappe om - die operasionele kode is verdoesel en versteek, en dit stuur 'n sein na vaste operateurinfrastruktuur eerder as 'n teiken wat die gebruiker verskaf. Die gedrag, nie die etiket nie, bepaal die uitspraak, wat kwaadwillig is.

Bedoeling word nie hier beweer nie. Die plasing beskryf wat die kode doen — versoek 'n toestelkode, lees 'n posbus oor Graph, stuur massapos deur gekonfigureerde relais, stuur 'n sein na 'n vaste gasheer — en laat motief onvermeld.

Impak, tendense en verdedigerleiding

Twee installasietyd-effekte maak saak. Eerstens, enige ontwikkelaar of CI-agent wat installeer nolimit-agent bring die raamwerk na daardie gasheer en vestig die oproephuis na api[.]onbeperk[.]xyzTweedens, die toestelkode-vermoë strek verder as die installeerder: 'n Microsoft 365-posbus waarvan die eienaar gevra word om 'n aangebiedde kode goed te keur, word direk deur Graph gelees, sonder dat 'n wagwoord ooit oor die draad gaan.

Die breër tendens is die een om te internaliseer. Toestelkode (AITM) phishing het van 'n losstaande phishing-infrastruktuur na 'n pakket op 'n openbare register verskuif — verspreiding deur npm installeer eerder as per e-pos skakel. Deur die kit op hierdie manier te verpak, word die phishing-operateur se gasheer- en skakelleweringsprobleem verruil vir 'n register se bereik, en word die operasionele kode versteek agter 'n skoon installasiehaak en 'n dotfile-genaamde obfuscated gids wat 'n vinnige handmatige oorsig omverwerp.

Vir verdedigers:

  • Register- en afhanklikheidshersiening. Behandel 'n pakket waarvan hoof/bin los op in 'n versteekte (punt-voorvoegsel) gids van uniform verduisterde eerstepartykode as hoërisiko op struktuur alleen, onafhanklik van of die installasiehaak skoon lyk. Minimifikasie is nie verduistering nie — hek op die string-skikking dekodeerder handtekening, nie op lynlengte nie.
  • Microsoft 365-verharding. Beperk die toestelkode-magtigingsvloei met Voorwaardelike Toegang waar dit nie operasioneel vereis word nie; toestelkode-toelaes is 'n bekende AiTM-vektor en word selde deur interaktiewe gebruikers benodig. Oudit vir toestelkode-aanmeldings gevolg deur onmiddellike Graph-posbusopsomming.
  • Netwerkopsporing. Blokkeer en waarskuwing aan api[.]onbeperk[.]xyzSoek uitgaande DNS- en instaanbedienerlogboeke daarvoor oor ontwikkelaars en bou-infrastruktuur.
  • Pospadopsporing. Die gebruiker@gasheer URL-namaakvorms (vertroude[.]com@…) is opspoorbaar by die pospoort en instaanbediener; merk skakels waarvan die gesagskomponent 'n voorafgaan @.

Die pakket was ten tyde van die analise op npm aktief. Omdat die verborge raamwerk die hele gepubliseerde weergawelyn en die huidige dek. jongste etiket (1.0.307) dra die toestelkode-vermoë, register verwydering moet elke weergawe dek, nie net 'n enkele terugweergawe nie. 

sca-tools-sagteware-samestelling-analise-gereedskap
Prioritiseer, herstel en beveilig jou sagtewarerisiko's
Kry jou gratis rekening.
Geen kredietkaart benodig nie.

Beveilig u sagteware-ontwikkeling en -lewering

met Xygeni-produksuite