Дастаўка пакета DeviceDoor npm з дапамогай фішынгавай платформы Microsoft 365 Device-Code

DeviceDoor: публічны npm-пакет, які дастаўляе фрэймворк для фішынгу і масавай рассылкі кода прылад Microsoft 365.

TL, д-р

nolimit-agent гэта npm-пакет, апублікаваныя версіі якога — 1.0.299 праз 1.0.307, выпушчаныя на працягу чатырох дзён з 26.06.2026 па 29.06.2026 — кожны з іх мае поўная сістэма для фішынгу і масавай рассылкі унутры схаванага, цалкам заблытанага каталога. У кожнай версіі галоўны запіс мае выгляд .ad/x0.js, адзін з ~86 файлаў у тэчцы з назвай dotfile, якая змяшчае прыблізна 4,200 блобаў радкоў-масіўаў javascript-ofuscator; перахопнік усталёўкі і макет запісу ідэнтычныя па ўсім радку.

За заблытанасцю хаваецца Паток кода прылады Microsoft 365 OAuth (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode), які пасля ўхвалення кода зчытвае ўваходныя паведамленні і адпраўленыя паведамленні ахвяры ў Outlook праз API Microsoft Graph; механізм масавай рассылкі SMTP і SMS, які кіруецца спісамі атрымальнікаў, прадастаўленымі аператарам; шаблоны паведамленняў, якія выдаюць сябе за брэнд; стварэнне спасылак з адкрыццём і перанакіраваннем; і разведку праз пошук кода DNS праз HTTPS, WHOIS і GitHub. Маякі трафіку падчас выканання да інфраструктуры аператара па адрасе api[.]nolimitent[.]xyz:4100.

Закранаюцца: усе, хто ўсталёўвае любую версію пакета, і любыя Паштовая скрыня Microsoft 365 уладальнік якога ўхваляе код прылады, прадстаўлены праз яго. Самая апошняя версія, 1.0.307, з'яўляецца бягучым апошнім тэгам і мае тыя ж магчымасці паштовай скрыні кода прылады — шкоднасны код не абмяжоўваецца адной папярэдняй версіяй.

Цяжар: крытычныПацярпелая экасістэма: НПМАдзіны паказчык, на які трэба звярнуць увагу ў першую чаргу: гаспадар api[.]nolimitent[.]xyz.

Атака: як гэта працуе

Дабраякасная абалонка над схаванай карыснай нагрузкай

На ўпакоўцы прадстаўлена звычайная паверхня. package.json аб'яўляе пасля ўстаноўкі кручок – 

text postinstall: node scripts/postinstall.js 

— і пры праверцы скрыпты/postinstall.js бясшкодны: ён усталёўвае прашыўку каманд Windows і завяршае працу. Перахопнік не знаходзіцца там, дзе знаходзіцца паводзіна. асноўнай і Бэн абодва палі паказваюць на .рэклама/, каталог, у якім кропка на пачатку не дазваляе выпадковаму ls вывад, і змесціва якога аднастайна абфускуецца машынай. Статычны сканер налічыў ~4,293 прамежкі закадаванай карыснай нагрузкі па ўсім .рэклама/ набор модуляў; javascript-obfuscator — гэта аб'яўленая залежнасць распрацоўкі, якая адпавядае форме павароту радкоў-масіваў у аб'яднаных файлах.

Падзел — першы сігнал, які варта назваць: перахопнік усталёўкі, які рэцэнзент старанна прааналізаваў бы, чысты, у той час як аперацыйны код знаходзіцца ў адным каталогу, схаваны і заблытаны, і дасягаецца толькі тады, калі запускаецца экспартаваная кропка ўваходу пакета.

Доступ да паштовай скрыні 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 

,en $выбраць Праекцыі выцягваюць адрасы адпраўнікоў з паштовай скрыні і адрасы атрымальнікаў з адпраўленых паведамленняў — зыходны матэрыял для адлюстравання карэспандэнтаў ахвяры. Гэта доступ па прынцыпе «зламыснік пасярэдзіне» (AiTM) па згодзе, а не праз захоп пароля: для фішынгу ў класічным сэнсе няма ўліковых дадзеных, толькі код для атрымання адабрэння.

Механізм масавай рассылкі і SMS з шаблонамі для ўвасаблення

Вакол доступу да паштовай скрыні знаходзіцца паштовая праграма. Пакет адпраўляе файлы дадзеных, якія можа рэдагаваць аператар, — спісы адпраўнікоў (senders.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 праз 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 запытвае індэкс CDX Wayback Machine.

Камандаванне і кантроль

Па ўсім заблытаным мностве, .ad/x4.js спасылаецца на канчатковую кропку аператара:

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

Гаспадар дзеліцца сваім неабмежаваны брэнд з уласнай назвай выдаўца, і : 4100 Порт — гэта канал сувязі фрэймворка. Гэта самы надзейны індыкатар для абаронцаў: пакет, працоўная станцыя распрацоўшчыка або агент зборкі дасягаюць api[.]без абмежаванняў[.]xyz запусціў гэты код.

Паказчыкі кампрамісу

Ніжэйпералічаныя паказчыкі — гэта тыя, на якія можа рэагаваць абаронца — атрымаць файл блакіроўкі з дапамогай grep, заблакаваць хост або праглядзець журналы проксі-сервера і DNS. Канчатковыя кропкі Microsoft з'яўляюцца, таму што фрэймворк імі злоўжывае; самі па сабе яны не з'яўляюцца шкоднаснымі і не павінны блакавацца.

індыкатар тып Дзе Дзеянні абаронцы
nolimit-agent (усе версіі 1.0.299–1.0.307) пакет НПМ Файлы блакіроўкі Grep / журналы ўстаноўкі
api[.]nolimitent[.]xyz (:4100) C2-хост .ad/x4.js Блакіраваць; шукаць у журналах DNS + проксі-сервера
.ad/ схаваны каталог як мэта main/bin структура package.json Статычны сігнал пры праглядзе рэестра
trusted[.]com@ / %40 / :80@ формы спасылак Падробка URL-адраса .ad/xu.js, .ad/xq.js Праверка URL пошты/проксі-сервера
Грант на код прылады + графік inbox/sentitems счытванне Паводзіны .ad/x12.js Уваход у M365 + праверка аўдыту Graph

Хэшы файлаў, атрыманыя падчас трыяжу:

  • пакет/.ad/x0.js — ша256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a

  • пакет/package.json — ша256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644

Сігнал арандатара Microsoft 365, на які варта звярнуць увагу незалежна ад гэтага пакета: паспяховы ўваход у сістэму з дапамогай кода прылады, а затым неадкладнае чытанне графікаў паштовыя тэчкі/паштовая скрыня і mailFolders/sentimes, асабліва з сеансу, які карыстальнік не пазнае.

Атрыбуцыя і назіраная паводзіны

Тое, што можна назіраць, застаецца асобным ад таго, хто за гэтым стаіць.

Назіральныя факты: пакет апублікаваны пад дзясклем агент без абмежаванняў з неправераным адрасам Gmail і без спасылкі на рэпазітар зыходнага кода; яго package.json апісвае яго як «пашыраны адпраўнік электроннай пошты» і пазначае яго тэгам чырвоная каманда ключавое слова; код выканання сканцэнтраваны ў схаваным, заблытаным .рэклама/ каталог, інструментальная лінейка якога (javascript-obfuscator) — гэта аб'яўленая залежнасць; і хост выкліку дадому api[.]без абмежаванняў[.]xyz паўторна выкарыстоўвае неабмежаваны брэнд. Гэта адзіны пакет з адным арыенцірам інфраструктуры, які кіруецца аператарам, а не кластар з некалькіх пакетаў, і ніякага перакрыцця з раней названай кампаніяй не выяўлена.

,en чырвоная каманда Ключавое слова не змяняе класіфікацыю. Легітымныя інструменты наступальнай бяспекі, якія маюць двайное прызначэнне, робяць гэта празрыста: чытэльны зыходны код, мэты, якія прадастаўляюцца аператарам, і адсутнасць схаваных кантактаў. Гэты пакет інвертуе кожную з гэтых уласцівасцей — яго аперацыйны код заблытваецца і схаваны, і ён накіроўвае на фіксаваную інфраструктуру аператара, а не на мэту, якую прадастаўляе карыстальнік. Паводзіны, а не пазнака, вызначаюць вердыкт, які з'яўляецца шкоднасным.

Тут не сцвярджаецца намер. У паведамленні апісваецца, што робіць код — запытвае код прылады, чытае паштовую скрыню праз Graph, адпраўляе масавую пошту праз настроеныя рэле, перадае маячок на фіксаваны хост — і матыў не ўказваецца.

Уплыў, тэндэнцыі і рэкамендацыі па абаронцах

Маюць значэнне два наступствы ўстаноўкі. Па-першае, любы распрацоўшчык або агент неперасягненай інтэграцыі, які ўсталёўвае агент без абмежаванняў пераносіць фрэймворк на гэты хост і ўстанаўлівае канал сувязі api[.]без абмежаванняў[.]xyzПа-другое, магчымасць выкарыстання кода прылады распаўсюджваецца за межы ўсталявальнага хаста: паштовая скрыня Microsoft 365, уладальнік якой павінен ухваліць прадстаўлены код, зчытваецца непасрэдна праз Graph, без перадачы пароля.

Больш шырокая тэндэнцыя — гэта інтэрнацыяналізацыя. Фішынг з выкарыстаннем кода прылады (AiTM) перайшоў з асобнай фішынгавай інфраструктуры ў пакет у публічным рэестры — распаўсюджванне праз ная ўстаноўка а не па спасылцы, адпраўленай па электроннай пошце. Такая ўпакоўка камплекта дазваляе абмяняць праблему хостынгу і дастаўкі спасылак фішынгавага аператара на ахоп рэестра і хавае аперацыйны код за чыстым перахопнікам усталёўкі і заблытаным каталогам з назвай dotfile, што перашкаджае хуткаму ручному прагляданню.

Для абаронцаў:

  • Агляд рэестра і залежнасцей. Апрацоўвайце пасылку, асноўнай/Бэн пераўтвараецца ў схаваны (з прэфіксам кропкі) каталог з аднастайна абфускаваным кодам першага боку як высокарызыкоўны толькі па структуры, незалежна ад таго, ці выглядае перахоп усталёўкі чыстым. Мініфікацыя не з'яўляецца абфускацыяй — гейт па подпісе дэкодэра радковага масіва, а не па даўжыні радка.
  • Паляпшэнне бяспекі Microsoft 365. Абмяжуйце паток аўтарызацыі кода прылады з дапамогай умоўнага доступу, дзе гэта не патрабуецца для працы; гранты кода прылады з'яўляюцца вядомым вектарам AiTM і рэдка патрабуюцца інтэрактыўнымі карыстальнікамі. Аўдыт уваходу з кодам прылады з наступным неадкладным пералічэннем паштовых скрынь Graph.
  • Выяўленне сеткі. Блакіроўка і абвестка ўключаны api[.]без абмежаванняў[.]xyzШукайце выходныя DNS і проксі-серверы ў журналах распрацоўкі і зборкі.
  • Выяўленне шляху пошты. ,en карыстальнік@хост URL-падробкі (давераны[.]com@…) выяўляюцца на паштовым шлюзе і проксі-серверы; пазначаюць спасылкі, кампанент аўтарытэтнасці якіх папярэднічае @.

На момант аналізу пакет быў даступны на npm. Паколькі схаваны фрэймворк ахоплівае ўсю апублікаваную версію і бягучую... апошні Паколькі тэг (1.0.307) мае магчымасць кода прылады, выдаленне з рэестра павінна ахопліваць усе версіі, а не толькі адну папярэднюю версію. 

інструменты-для-аналізу-складання-праграмнага ...
Прыярытэзуйце, ліквідуйце і абараняйце свае праграмныя рызыкі
Атрымайце свой бясплатны рахунак.
Не патрабуецца крэдытная карта.

Забяспечце распрацоўку і пастаўку праграмнага забеспячэння

з пакетам прадуктаў Xygeni