TL; DR
nolimit-agent бул npm пакети, анын жарыяланган версиялары — 1.0.299 - 1.0.307, 2026-жылдын 26-июнунан 2026-жылдын 29-июнуна чейин төрт күндүн ичинде чыгарылган — ар биринде толук фишинг жана жапырт почта алкагы жашыруун, толугу менен бүдөмүк каталогдун ичинде. Ар бир версияда негизги жазуу чечилет .ad/x0.js, болжол менен 4,200 javascript-obfuscator string-array blobs камтыган dotfile деп аталган папкадагы ~86 файлдын бири; орнотуу илмеги жана жазуунун жайгашуусу бардык жагынан бирдей.
Бүдөмүктүн артында бир нерсе жатат 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, учурдагы эң акыркы тег болуп саналат жана ошол эле түзмөк кодунун почта кутучасынын мүмкүнчүлүгүн камтыйт — зыяндуу код бир мурунку версия менен гана чектелбейт.
Даражасы: оорТаасир эткен экосистема: КЭУБАлгач издөө керек болгон бир гана индикатор: хост api[.]nolimitent[.]xyz.
Кол салуу: ал кантип иштейт
Жашыруун жүктүн үстүндөгү зыянсыз кабык
Пакет кадимки бетти көрсөтөт. package.json жарыялайт орнотуудан кийинки илгич –
text postinstall: node scripts/postinstall.js — жана текшерүү учурунда скрипттер/постинстал.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 The $тандоо Проекциялар жөнөтүүчүнүн даректерин кирүүчү кутудан, ал эми алуучунун даректерин жөнөтүлгөн нерселерден алат — бул жабырлануучунун корреспонденттерин картага түшүрүү үчүн чийки зат. Бул сырсөздү алуу аркылуу эмес, макулдук аркылуу ортодогу душмандын (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 аркылуу 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) | таңгак | КЭУБ | Grep кулпу файлдары / орнотуу журналдары |
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 кирүү + Графикалык аудитти карап чыгуу |
Триажда кармалган файл хэштери:
- пакет/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- пакет/пакет.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
Бул пакеттен көз карандысыз түрдө издөөгө арзырлык Microsoft 365 ижарачысынын сигналы: түзмөк коду менен ийгиликтүү кирүүлөр, андан кийин дароо Graph окуйт почта папкалары/кирүүчү куту жана почта папкалары/жөнөтүлгөн нерселер, айрыкча, колдонуучу тааныбаган сеанстан.
Атрибуция жана байкалган жүрүм-турум
Байкалып турган нерсе анын артында ким турганынан айырмаланып турат.
Байкалган фактылар: таңгак туткасынын астында жарыяланган лимит-агент текшерилбеген Gmail дареги жана шилтемеленген булак кампасы жок; анын package.json аны "өркүндөтүлгөн электрондук почта жөнөтүүчүсү" катары сүрөттөйт жана аны менен белгилейт кызыл команда ачкыч сөз; иштөө убактысынын коду жашыруун, бүдөмүк жерде топтолгон .жарнама/ куралдар чынжыры (javascript-obfuscator) жарыяланган көз карандылык; жана үйгө чакыруу хосту 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) теги түзмөк коду мүмкүнчүлүгүн камтыйт, реестрди алып салуу бир гана мурунку версияны эмес, ар бир версияны камтышы керек.




