DeviceDoor npm пакетін жеткізу Microsoft 365 құрылғы кодын фишингтік құрылымы

DeviceDoor: Microsoft 365 құрылғы кодының фишингі мен жаппай пошта құрылымын жіберетін жалпыға қолжетімді npm пакеті

TL; DR

nolimit-agent жарияланған нұсқалары бар npm пакеті — 1.0.299 арқылы 1.0.307, 2026-06-26 және 2026-06-29 аралығында төрт күн ішінде шығарылды — әрқайсысында толық фишинг және жаппай пошта құрылымы жасырын, толығымен түсініксіз каталог ішінде. Әрбір нұсқада негізгі жазба келесідей шешіледі .ad/x0.js, шамамен 4,200 javascript-obfuscator string-array blobs сақтайтын dotfile атауымен аталған қалтадағы ~86 файлдың бірі; install hook және жазба орналасуы барлық жол бойынша бірдей.

Бұрмаланудың артында бір нәрсе тұр Microsoft 365 OAuth құрылғы кодының ағыны (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) код бекітілгеннен кейін, жәбірленушінің Outlook кіріс жәшігін оқып, Microsoft Graph API арқылы элементтерді жібереді; оператор ұсынған алушылар тізімдері басқаратын жаппай SMTP және SMS жіберу механизмі; брендті имитациялау хабарлама үлгілері; ашық бағыттау сілтемесін құру; және HTTPS, WHOIS және GitHub кодын іздеу арқылы DNS арқылы барлау. Оператор инфрақұрылымына орындалу уақытындағы трафик сигналдары api[.]nolimitent[.]xyz:4100.

Әсер етілгендер: пакеттің кез келген нұсқасын орнатқан кез келген адам және кез келген Microsoft 365 пошта жәшігі иесі ол арқылы ұсынылған құрылғы кодын бекітеді. Ең соңғы нұсқасы, 1.0.307, қазіргі ең соңғы тег болып табылады және құрылғы кодының пошта жәшігінің бірдей мүмкіндігін қамтиды — зиянды код бір ғана алдыңғы нұсқамен шектелмейді.

Ауырлығы: сынӘсер етілген экожүйе: npmАлдымен іздеу керек бір индикатор: хост api[.]nolimitent[.]xyz.

Шабуыл: ол қалай жұмыс істейді

Жасырын пайдалы жүктің үстіндегі қауіпсіз қабық

Қаптама кәдімгі бетті ұсынады. пакет.json жариялайды орнатудан кейінгі ілмек – 

text postinstall: node scripts/postinstall.js 

— және тексеру кезінде скрипттер/постинстал.js зиянсыз: ол Windows командалық тақтасын орнатады және шығады. Ілмек мінез-құлықтың орналасқан жері емес. басты және А.М. өрістердің екеуі де көрсетеді .ad/, жетекші нүктесі оны кездейсоқтықтан аулақ ұстайтын каталог ls шығыс, және оның мазмұны машинамен біркелкі шатастырылған. Статикалық сканер бүкіл аумақ бойынша ~4,293 кодталған пайдалы жүктеме ауқымын санады. .ad/ модульдер жиынтығы; javascript-обфускатор - жинақталған файлдардың жол-массив-айналдыру пішініне сәйкес келетін жарияланған әзірлеу тәуелділігі.

Бөлу - атауға тұрарлық бірінші сигнал: шолушы тексеретін орнату ілмегі таза, ал операциялық код бір каталогтан алыс орналасқан, жасырын және түсініксіз, тек пакеттің экспортталған кіру нүктесі іске қосылғанда ғана қолжетімді.

Microsoft 365 құрылғы кодының пошта жәшігіне кіруі

Модуль .ad/x12.js Бұл құрылымның ең маңызды мүмкіндіктерін ұсынады. Ол Microsoft 365 OAuth 2.0 құрылғысына рұқсат беруді басқарады:

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

Құрылғы кодын беру - бұл енгізу шектелген құрылғыларға арналған заңды Microsoft ағыны: қызмет код сұрайды, пайдаланушы сол кодты тереді microsoft.com/deviceloginекінші құрылғыда мақұлдайды, ал сұрау салушы қызмет токендерді алады. Сұрау салушы қызмет пошта жәшігінің иесінен басқа біреуге тиесілі болған кезде, мақұлдау сол үшінші тарапқа токен береді. Токен алынғаннан кейін, .ad/x12.js пошта жәшігін тікелей 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 

The $select Проекциялар жіберушінің мекенжайларын кіріс жәшігінен, ал алушының мекенжайларын жіберілген элементтерден алады — жәбірленушінің корреспонденттерін картаға түсіруге арналған шикізат. Бұл құпия сөзді алу арқылы емес, келісім арқылы ортадағы қарсылас (AiTM) қол жеткізу: классикалық мағынада фишинг үшін ешқандай рұқсат жоқ, тек бекіту үшін код бар.

Жалған үлгілері бар жаппай пошта және SMS жүйесі

Пошта жәшігіне кірудің айналасында пошта жіберуші орналасқан. Пакет оператор өңдей алатын деректер файлдарын — жіберушілердің тізімдерін (жібергіштер.txt, smtps.txt) және үлгі файлы (functions.txt) — оның орынбасар мекенжайлары еліктеуге арналған парақ ретінде оқылады: security@apple.com, login-тексеру, OAuth қызметі, төлем және тіркелгі хабарландыруларын жіберушілерге қарсы yourdomain.com Оператор ауыстырады. SMS жағында телефон барebook және шлюз конфигурациясы. Пошта жіберуші оператор ұсынған алушылар тізімдерін қайталайды және конфигурацияланған SMTP релелері арқылы жібереді.

Сілтемелерді жасау үшін, .ad/xu.js және .ad/xq.js URL талдауының түсініксіздігін және шертулерді бақылауды пайдаланатын URL мекенжайларын жасаңыз. Жасырын үлгілер сенімді көрінетін авторитетті алдымен енгізеді @ сондықтан көрінетін префикс нақты хосттан ерекшеленеді:

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

Сондай-ақ, құрылым ірі тұтынушылардан фавикондарды алады және enterprise пошта провайдерлері — провайдер брендімен шақыруды немесе қону бетін сенімді түрде көрсетудің әдеттегі әдісі.

Нысананы және инфрақұрылымды барлау

Бірнеше модуль жібермес бұрын контекст жинайды. .ad/x0.js DNS-over-HTTPS арқылы атауларды шешеді (dns[.]google/resolve), .ad/xa.js WHOIS сұраулары (api[.]whois[.]vu), және .ad/x9.js GitHub кодын іздеуді іске қосады (api[.]github[.]com/search/code?q=) — релелік тізімді беру үшін ашық пошта серверінің конфигурациясын және SMTP тіркелгі деректерін анықтауға сәйкес келетін үлгі. .ad/xs.js Wayback Machine CDX индексін сұрайды.

Пәрмен және басқару

Шашыраңқы жиынтықтың арғы жағында, .ad/x4.js оператордың соңғы нүктесіне сілтеме жасайды:

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

Үй иесі мұнымен бөліседі шектеусіз баспагердің өз атауы бар бренд және : 4100 порт - фреймворктің үйге қоңырау шалу арнасы. Бұл қорғаушылар үшін ең берік индикатор: пакет, әзірлеуші ​​жұмыс станциясы немесе құрастыру агенті api[.]nolimitent[.]xyz бұл кодты іске қосты.

Ымыраға келу көрсеткіштері

Төмендегі индикаторлар қорғаушы әрекет ете алатын индикаторлар болып табылады — құлыптау файлын ашу, хостты бұғаттау немесе прокси мен DNS журналдарын іздеу. Microsoft соңғы нүктелері фреймворк оларды теріс пайдаланғандықтан пайда болады; олардың өздері зиянды емес және бұғатталмауы керек.

Индикатор түрі қайда Қорғаушының әрекеті
nolimit-agent (барлық 1.0.299–1.0.307 нұсқалары) пакет npm Grep lockfiles / орнату журналдары
api[.]nolimitent[.]xyz (:4100) C2 хосты .ad/x4.js Блоктау; DNS + прокси журналдарын іздеу
.ad/ жасырын каталог негізгі/қалта нысанасы ретінде Құрылым package.json Тізілімді шолудағы статикалық сигнал
trusted[.]com@ / %40 / :80@ сілтеме формалары URL мекенжайының жалғандығы .ad/xu.js, .ad/xq.js Пошта/прокси URL мекенжайын тексеру
Құрылғы кодын беру + График inbox/sentitems оқу мінез-құлық .ad/x12.js M365 жүйесіне кіру + График аудитін шолу

Сұрыптау кезінде түсірілген файл хэштері:

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

  • пакет/пакет.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644

Осы пакеттен тәуелсіз іздеуге тұрарлық Microsoft 365 жалға алушысының сигналы: құрылғы кодына сәтті кіру, содан кейін Graph оқиды пошта қалталары/кіріс жәшігі және пошта қалталары/жіберілгендер, әсіресе пайдаланушы танымайтын сеанстан.

Атрибуция және байқалған мінез-құлық

Байқалатын нәрсе оның артында кім тұрғанынан бөлек қалады.

Байқалатын фактілер: қаптама тұтқа астында жарияланады лимит-агент расталмаған Gmail мекенжайымен және сілтеме жасалған дереккөз репозиторийі жоқ; оның пакет.json оны «озық электрондық пошта жіберушісі» ретінде сипаттайды және онымен белгілейді қызыл команда кілт сөз; орындалу уақыты коды жасырын, түсініксіз жерде шоғырланған .ad/ құралдар тізбегі бар каталог (javascript-обфускатор) - жарияланған тәуелділік; және үйге шақыру хосты api[.]nolimitent[.]xyz қайта пайдаланады шектеусіз бренд. Бұл оператор басқаратын бір инфрақұрылымдық бағдары бар бірыңғай пакет — көп пакетті кластер емес, және бұрын аталған науқанмен сәйкестік анықталмаған.

The қызыл команда кілт сөз жіктеуді өзгертпейді. Қос мақсатты мүмкіндікті ұсынатын заңды шабуылдау қауіпсіздігі құралдары мұны ашық түрде жасайды: оқылатын дереккөз, оператор ұсынатын нысаналар және жасырын үйге қоңырау шалу мүмкіндігі жоқ. Бұл пакет осы қасиеттердің әрқайсысын инверсиялайды — оның операциялық коды шатастырылған және жасырылған, және ол пайдаланушы ұсынатын нысанаға емес, оператордың бекітілген инфрақұрылымына сигнал береді. Зиянды шешімді белгі емес, мінез-құлық басқарады.

Мұнда ниет көрсетілмеген. Жазбада кодтың не істейтіні сипатталған — құрылғы кодын сұрау, Graph арқылы пошта жәшігін оқу, конфигурацияланған релелер арқылы көп пошта жіберу, бекітілген хостқа маяк жіберу — және себебі көрсетілмеген.

Әсер, үрдістер және қорғаушы нұсқаулығы

Орнату уақытының екі әсері маңызды. Біріншіден, орнататын кез келген әзірлеуші ​​немесе CI агенті лимит-агент фреймворкты сол хостқа әкеледі және шақыру үйін орнатады api[.]nolimitent[.]xyzЕкіншіден, құрылғы коды мүмкіндігі орнату хостынан тыс жерлерге де таралады: иесі ұсынылған кодты бекітуге мәжбүр болған Microsoft 365 пошта жәшігі Graph арқылы тікелей оқылады, құпия сөз сым арқылы өтпейді.

Кеңірек тренд - ішкі тренд. Құрылғы коды (AiTM) фишингі жеке фишинг инфрақұрылымынан қоғамдық тізілімдегі пакетке ауысты — таратушы npm орнату электрондық пошта арқылы жіберілген сілтеме арқылы емес. Жинақты осылайша орау фишинг операторының хостинг және сілтеме жеткізу мәселесін тізілімге қолжетімділік үшін айырбастайды және операциялық кодты таза орнату ілмегі мен жылдам қолмен шолып шығуды болдырмайтын dotfile деп аталатын түсініксіз каталогтың артына жасырады.

Қорғаушылар үшін:

  • Тіркеу және тәуелділікті шолу. Қаптаманы өңдеңіз басты/А.М. орнату ілмегі таза көрінетініне қарамастан, тек құрылымда жоғары қауіптілік ретінде біркелкі шатастырылған бірінші тарап кодының жасырын (нүктелік префикстелген) каталогына ауыстырылады. Минификация шатастыру емес — жол ұзындығында емес, жол-массив декодерінің қолтаңбасындағы қақпа.
  • Microsoft 365 шыңдауы. Құрылғы кодын авторизациялау ағынын операциялық тұрғыдан қажет емес жағдайларда шартты кіру арқылы шектеңіз; құрылғы кодын беру белгілі AiTM векторы болып табылады және интерактивті пайдаланушыларға сирек қажет. Құрылғы кодына кіруді тексеру, содан кейін бірден Граф пошта жәшігін нөмірлеу.
  • Желіні анықтау. Блоктау және ескерту қосулы api[.]nolimitent[.]xyzӘзірлеуші ​​​​және құрастыру инфрақұрылымы бойынша шығыс DNS және прокси журналдарын іздеңіз.
  • Пошта жолын анықтау. The пайдаланушы@хост URL-сұраныс формалары (сенімді[.]com@…) пошта шлюзінде және проксиде анықталады; өкілеттік компоненті алдында орналасқан сілтемелерді белгілейді @.

Талдау кезінде пакет npm режимінде жұмыс істеп тұрған. Себебі жасырын құрылым жарияланған нұсқалар желісінің барлығын және ағымдағы ең соңғы (1.0.307) тегі құрылғы коды мүмкіндігін қамтиды, тізілімді жою тек бір алдыңғы нұсқаны ғана емес, барлық нұсқаны қамтуы керек. 

sca-құралдары-бағдарламалық жасақтама-композиция-талдау-құралдары
Бағдарламалық жасақтама тәуекелдеріне басымдық беріңіз, оларды жойыңыз және қауіпсіз етіңіз
Тегін аккаунтыңызды алыңыз.
Несие картасы қажет емес.

Бағдарламалық жасақтаманы әзірлеу және жеткізуді қауіпсіз етіңіз

Xygeni өнім жиынтығымен бірге