TL; DR
nolimit-agent dərc olunmuş versiyaları olan bir npm paketidir — 1.0.299-dən 1.0.307-a qədər, 2026-06-26 - 2026-06-29 tarixləri arasında dörd gün ərzində buraxıldı — hər birində bir var tam fişinq və toplu poçt çərçivəsi gizli, tamamilə qarışıq bir qovluq daxilində. Hər versiyada əsas giriş həll olunur .ad/x0.js, təxminən 4,200 javascript-obfuscator string-array blobunu saxlayan dotfile adlı qovluqdakı ~86 fayldan biridir; quraşdırma hooku və giriş düzeni bütün xətt üzrə eynidir.
Qarışıqlığın arxasında bir şey dayanır Microsoft 365 OAuth cihaz kodu axını (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) kod təsdiqləndikdən sonra qurbanın Outlook gələn qutusunu oxuyur və Microsoft Graph API vasitəsilə elementlər göndərir; operator tərəfindən təmin edilən alıcı siyahıları ilə idarə olunan toplu SMTP və SMS göndərmə mühərriki; brend təqlidi mesaj şablonları; açıq yönləndirmə linki qurulması; və HTTPS, WHOIS və GitHub kod axtarışı üzərindən DNS üzərindən kəşfiyyat. Operator infrastrukturuna işləmə vaxtı trafik mayakları api[.]nolimitent[.]xyz:4100.
Təsirə məruz qalanlar: paketin istənilən versiyasını quraşdıran hər kəs və hər hansı bir Microsoft 365 poçt qutusu sahibi tərəfindən təqdim edilən cihaz kodunu təsdiqləyir. Ən son versiya, 1.0.307, cari ən son etiketdir və eyni cihaz kodu poçt qutusu imkanını daşıyır — zərərli kod yalnız bir əvvəlki versiya ilə məhdudlaşmır.
Şiddəti: tənqidiTəsirə məruz qalan ekosistem: npmİlk axtarılacaq tək göstərici: ev sahibi api[.]nolimitent[.]xyz.
Hücum: necə işləyir
Gizli yükün üzərindəki xoşxassəli qabıq
Paket adi bir səth təqdim edir. paket.json elan edir quraşdırma sonrası qarmaq –
text postinstall: node scripts/postinstall.js — və yoxlama zamanı skriptlər/postinstall.js zərərsizdir: Windows əmr şimini quraşdırır və çıxış edir. Hook davranışın yerləşdiyi yer deyil. Elanlar və bin hər ikisi sahələrə işarə edir .ad/, aparıcı nöqtəsi onu təsadüfi şeylərdən uzaq saxlayan bir qovluq ls çıxışı və məzmunu maşın tərəfindən vahid şəkildə qarışdırılır. Statik skaner, bütün ərazi üzrə ~4,293 kodlanmış faydalı yük diapazonunu saydı. .ad/ modul dəsti; javascript-obfuscator paketlənmiş faylların sətir-massiv-fırlanma formasına uyğun gələn elan edilmiş inkişaf asılılığıdır.
Bölünmə adlandırılmağa dəyər ilk siqnaldır: rəyçinin yoxlayacağı quraşdırma çəngəli təmizdir, əməliyyat kodu isə bir qovluqdan uzaqda, gizli və qarışıq vəziyyətdə yerləşir və yalnız paketin ixrac giriş nöqtəsi işlədikdə əldə edilir.
Microsoft 365 cihaz kodlu poçt qutusuna giriş
Modul .ad/x12.js Çərçivənin ən əhəmiyyətli imkanlarına malikdir. Microsoft 365 OAuth 2.0 cihaz icazəsi qrantını idarə edir:
text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode Cihaz kodu verilməsi giriş məhdudiyyəti olan cihazlar üçün hazırlanmış qanuni Microsoft axınıdır: xidmət kod tələb edir, istifadəçi həmin kodu daxil edir microsoft.com/devicelogin` ikinci cihazda təsdiqləyir və sorğu göndərən xidmət tokenləri alır. Sorğu göndərən xidmət poçt qutusu sahibindən başqa birinə məxsus olduqda, təsdiq həmin üçüncü tərəfə token verir. Token əldə edildikdən sonra, .ad/x12.js` poçt qutusunu birbaşa Microsoft Graph vasitəsilə oxuyur:
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 Proyeksiyalar göndərənin ünvanlarını gələnlər qutusundan, alıcının ünvanlarını isə göndərilən poçtlardan çəkir — qurbanın müxbirlərini xəritələşdirmək üçün xammal. Bu, parol ələ keçirməklə deyil, razılıqla ortadakı rəqib (AiTM) girişidir: klassik mənada fişinq üçün heç bir etimadnamə yoxdur, yalnız təsdiqlənmək üçün bir kod var.
Təqlid şablonları olan toplu poçt və SMS mühərriki
Poçt qutusu girişinin ətrafında poçt göndərən yerləşir. Paket operator tərəfindən redaktə edilə bilən məlumat fayllarını — göndərən siyahılarını (göndərənlər.txt, smtps.txt) və şablon faylı (funksiyalar.txt) — yer tutucu ünvanları təqlid üçün tökmə vərəqi kimi oxunur: security@apple.com, login-vergi, OAuth xidməti, ödəniş və hesab bildirişi göndərənlərə qarşı sizindomain.com Operator əvəz edir. SMS tərəfində telefon varebook və şlüz konfiqurasiyası. Poçt göndəricisi operator tərəfindən təmin edilən alıcı siyahılarını təkrarlayır və konfiqurasiya edilmiş SMTP röleləri vasitəsilə göndərir.
Linkləri qurmaq üçün, .ad/xu.js və .ad/xq.js URL təhlilinin qeyri-müəyyənliyindən və klik izləməsindən istifadə edən URL-lər qurun. Saxtakarlıq nümunələri etibarlı görünüşlü bir səlahiyyətli şəxsdən əvvəl onu yerləşdirir. @ beləliklə, görünən prefiks real hostdan fərqlənir:
text https://trusted[.]com@ https://trusted[.]com%40 https://trusted[.]com:80@ https://redirect[.]example[.]com/ https://track[.]example[.]com/click? Çərçivə həmçinin əsas istehlakçılardan favikonlar alır və enterprise poçt provayderləri — inandırıcı provayder markalı sorğu və ya açılış səhifəsi göstərmək üçün adi bir texnika.
Hədəf və infrastruktur kəşfiyyatı
Bir neçə modul göndərməzdən əvvəl kontekst toplayır. .ad/x0.js DNS üzərindən HTTPS üzərindən adları həll edir (dns[.]google/həll yolu), .ad/xa.js WHOIS sorğuları (api[.]whois[.]vu) Və .ad/x9.js GitHub kod axtarışını işə salır (api[.]github[.]com/search/code?q=) — rele siyahısını qidalandırmaq üçün açıq poçt server konfiqurasiyasını və SMTP etimadnaməsini aşkar etməklə uyğun bir model. .ad/xs.js Wayback Machine-ın CDX indeksini sorğulayır.
Komanda və nəzarət
Qarışıq dəstin o biri tərəfində, .ad/x4.js operatorun son nöqtəsinə istinad edir:
text http://api[.]nolimitent[.]xyz:4100 Ev sahibi bunu paylaşır məhdudiyyətsiz naşirin öz adını daşıyan brend və : 4100 port, çərçivənin evə çağırış kanalıdır. Bu, müdafiəçilər üçün ən davamlı göstəricidir: paket, geliştirici iş stansiyası və ya çatan qurma agenti api[.]nolimitent[.]xyz bu kodu işlədib.
Kompromis göstəriciləri
Aşağıdakı indikatorlar müdafiəçinin hərəkət edə biləcəyi indikatorlardır — kilid faylını grep etmək, hostu bloklamaq və ya proksi və DNS qeydlərini axtarmaq. Microsoft son nöqtələri, çərçivənin onları sui-istifadə etməsi səbəbindən görünür; onlar özləri zərərli deyil və bloklanmamalıdır.
| Göstərici | növü | Hara | Müdafiəçi hərəkəti |
|---|---|---|---|
nolimit-agent (bütün versiyalar 1.0.299–1.0.307) | Paketi | npm | Grep lockfiles / quraşdırma qeydləri |
api[.]nolimitent[.]xyz (:4100) | C2 ev sahibi | .ad/x4.js | Bloklayın; DNS + proksi qeydlərini axtarın |
.ad/ əsas/bin hədəfi kimi gizli dir | struktur | package.json | Qeydiyyat icmalında statik siqnal |
trusted[.]com@ / %40 / :80@ keçid formaları | URL saxtakarlığı | .ad/xu.js, .ad/xq.js | Poçt/proksi URL yoxlaması |
Cihaz kodu qrantı + Qrafik inbox/sentitems oxumaq | Davranış | .ad/x12.js | M365 girişi + Qrafik auditinin icmalı |
Striage zamanı qeydə alınan fayl heşləri:
- package/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- paket/package.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
Bu paketdən asılı olmayaraq axtarmağa dəyər bir Microsoft 365 icarəçi siqnalı: uğurlu cihaz kodu girişləri və ardınca Graph oxuyur poçt qovluqları/gələnlər qutusu və mailFolders/göndərilənlər, xüsusən də istifadəçinin tanımadığı bir sessiyadan.
Atribut və müşahidə olunan davranış
Müşahidə edilə bilən şey onun arxasında kimin dayandığından ayrı qalır.
Müşahidə edilə bilən faktlar: paket tutacaq altında dərc olunur nolimit-agent təsdiqlənməmiş Gmail ünvanı və əlaqəli mənbə deposu olmayan; onun paket.json onu “qabaqcıl e-poçt göndərən” kimi təsvir edir və etiketləyir qırmızı komanda açar söz; icra müddəti kodu gizli, qarışıq bir yerdə cəmləşib .ad/ alətlər zəncirinin (javascript-obfuscator) elan edilmiş asılılıqdır; və çağırış ev sahibi api[.]nolimitent[.]xyz təkrar istifadə edir məhdudiyyətsiz brend. Bu, operator tərəfindən idarə olunan bir infrastruktur nişangahına malik tək bir paketdir — çoxpaketli klaster deyil və əvvəllər adlandırılmış bir kampaniya ilə heç bir üst-üstə düşmə aşkar edilməmişdir.
The qırmızı komanda açar söz təsnifatı dəyişdirmir. İkiqat istifadə qabiliyyəti təqdim edən qanuni hücum təhlükəsizliyi alətləri bunu şəffaf şəkildə edir: oxunaqlı mənbə, operator tərəfindən təmin edilən hədəflər və gizli ev çağırışı yoxdur. Bu paket bu xüsusiyyətlərin hər birini tərsinə çevirir - onun əməliyyat kodu qarışıq və gizlidir və istifadəçinin təmin etdiyi hədəf əvəzinə sabit operator infrastrukturuna işarə edir. Zərərli olan hökm etiket deyil, davranış tərəfindən idarə olunur.
Burada niyyət təsdiqlənmir. Yazıda kodun nə etdiyi təsvir olunur — cihaz kodunu tələb etmək, Graph üzərindən poçt qutusunu oxumaq, konfiqurasiya edilmiş röleler vasitəsilə toplu poçt göndərmək, sabit hosta mayak göndərmək — və motiv göstərilmədən qalır.
Təsir, trendlər və müdafiəçi rəhbərliyi
Quraşdırma vaxtına iki təsir vacibdir. Birincisi, quraşdıran hər hansı bir geliştirici və ya CI agenti nolimit-agent freymvorku həmin hosta gətirir və çağırış evini qurur api[.]nolimitent[.]xyzİkincisi, cihaz kodu imkanı quraşdırıcı hostdan kənara çıxır: təqdim olunan kodu təsdiqləməyə məcbur edilən Microsoft 365 poçt qutusu, heç bir parol teldən keçmədən birbaşa Graph vasitəsilə oxunur.
Daha geniş trend daxililəşdirmədir. Cihaz kodu (AiTM) fişinqi müstəqil fişinq infrastrukturundan ictimai reyestrdəki paketə keçib — paylanması npm yükləyin e-poçtla göndərilən link vasitəsilə deyil. Dəsti bu şəkildə qablaşdırmaq, fişinq operatorunun hostinq və link çatdırılma problemini qeydiyyat qovluğunun əlçatanlığı üçün dəyişdirir və əməliyyat kodunu təmiz quraşdırma çəngəlinin və tez bir əl ilə yoxlamanı aradan qaldıran dotfile adlı qarışıq bir qovluğun arxasında gizlədir.
Müdafiəçilər üçün:
- Reyestr və asılılıq icmalı. Bir paketi müalicə edin Elanlar
/bin quraşdırma çəngəlinin təmiz görünüb-görünməməsindən asılı olmayaraq, yalnız strukturda yüksək riskli kimi vahid şəkildə qarışıq birinci tərəf kodunun gizli (nöqtə ilə əvvəlcədən təyin olunmuş) qovluğuna həll olunur. Minification qarışıqlıq deyil — sətir uzunluğunda deyil, sətir-massiv dekoder imzasında qapı.
- Microsoft 365 sərtləşməsi. Əməliyyat baxımından tələb olunmadığı hallarda cihaz kodu avtorizasiya axınını Şərti Giriş ilə məhdudlaşdırın; cihaz kodu qrantları məlum AiTM vektorudur və interaktiv istifadəçilər tərəfindən nadir hallarda tələb olunur. Cihaz kodu girişləri üçün audit, ardınca dərhal Qrafik poçt qutusunun sayılması.
- Şəbəkə aşkarlanması. Bloklayın və xəbərdarlıq aktivdir api[.]nolimitent[.]xyzGeliştirici və tikinti infrastrukturu boyunca çıxış DNS və proksi qeydlərini axtarın.
- Poçt yolunun aşkarlanması. The istifadəçi@host URL-saxtakarlıq formaları (etibarlı[.]com@…) poçt şlüzü və proksi-serverdə aşkar edilə bilər; səlahiyyət komponenti birindən əvvəl gələn bayraq bağlantıları @.
Paket təhlil zamanı npm-də aktiv idi. Çünki gizli çərçivə bütün dərc olunmuş versiya xəttini və cari versiyanı əhatə edir son (1.0.307) etiketi cihaz kodu qabiliyyətini daşıyır, reyestr silinməsi yalnız bir əvvəlki versiyanı deyil, bütün versiyaları əhatə etməlidir.




