TL؛ DR
nolimit-agent هي حزمة npm التي نُشرت إصداراتها — 1.0.299 خلال 1.0.307تم إصدارها على مدار أربعة أيام من 26-06-2026 إلى 29-06-2026 — كل منها يحمل إطار عمل متكامل لمكافحة التصيد الاحتيالي والبريد الإلكتروني الجماعي داخل دليل مخفي ومُشفر بالكامل. في كل إصدار، يُشير المدخل الرئيسي إلى .ad/x0.js، واحد من حوالي 86 ملفًا في مجلد يحمل اسم ملف نقطي يحتوي على ما يقرب من 4,200 من كتل مصفوفة سلسلة جافا سكريبت المخفية ؛ خطاف التثبيت وتخطيط الإدخال متطابقان عبر السطر.
خلف هذا التعتيم يكمن تدفق رمز الجهاز OAuth في Microsoft 365 (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecodeيقوم هذا النظام، بمجرد الموافقة على الرمز، بقراءة صندوق بريد الضحية في Outlook والعناصر المرسلة عبر واجهة برمجة تطبيقات Microsoft Graph؛ ومحرك إرسال SMTP وSMS جماعي مدعوم بقوائم مستلمين مقدمة من المشغل؛ وقوالب رسائل انتحال العلامة التجارية؛ وإنشاء روابط إعادة توجيه مفتوحة؛ واستطلاع عبر DNS-over-HTTPS وWHOIS والبحث عن التعليمات البرمجية على GitHub. كما يقوم النظام بإرسال إشارات مرور في وقت التشغيل إلى بنية المشغل التحتية على api[.]nolimitent[.]xyz:4100.
المتأثرون: أي شخص يقوم بتثبيت أي إصدار من الحزمة، وأي صندوق بريد مايكروسوفت 365 الذي يوافق مالكه على رمز الجهاز المقدم من خلاله. أحدث إصدار، 1.0.307، هو أحدث إصدار حالي ويحمل نفس قدرة صندوق بريد رمز الجهاز - لا يقتصر الرمز الضار على إصدار سابق واحد.
الخطورة: حرجالنظام البيئي المتأثر: الآلية الوقائية الوطنيةالمؤشر الوحيد الذي يجب البحث عنه أولاً: المضيف api[.]nolimitent[.]xyz.
الهجوم: كيف يعمل
غلاف غير مؤذٍ فوق حمولة مخفية
العبوة ذات سطح عادي. package.json تعلن أ بعد التثبيت خطاف -
text postinstall: node scripts/postinstall.js — وعند التفتيش scripts/postinstall.js لا يسبب أي ضرر: فهو يقوم بتثبيت برنامج وسيط لأوامر ويندوز ثم يخرج. لا يكمن السلوك في نقطة الربط. رئيسي و بن يشير كلا الحقلين إلى .إعلان/دليلٌ تُبقيه نقطته الأولى بعيدًا عن اللغة العامية. ls المخرجات، ومحتوياتها مشفرة آليًا بشكل موحد. أحصى الماسح الضوئي الثابت حوالي 4,293 نطاقًا من الحمولة المشفرة عبر .إعلان/ مجموعة الوحدات النمطية؛ جافا سكريبت- obfuscator هو تبعية تطوير معلنة، والتي تتطابق مع شكل دوران مصفوفة السلسلة للملفات المجمعة.
يُعد الانقسام أول إشارة تستحق الذكر: فخطاف التثبيت الذي سيدقق فيه المراجع نظيف، بينما يوجد رمز التشغيل في دليل واحد بعيدًا، مخفيًا ومبهمًا، ولا يتم الوصول إليه إلا عند تشغيل نقطة الدخول المصدرة للحزمة.
الوصول إلى صندوق بريد Microsoft 365 باستخدام رمز الجهاز
الوحدة .ad/x12.js يحمل هذا الإطار أهم قدراته، فهو يُشغّل عملية منح تفويض الأجهزة عبر بروتوكول OAuth 2.0 في Microsoft 365.
text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode يُعد منح رمز الجهاز إجراءً شرعيًا من مايكروسوفت مصممًا للأجهزة ذات الإمكانيات المحدودة للإدخال: حيث تطلب الخدمة رمزًا، ثم يقوم المستخدم بإدخال هذا الرمز في 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 استخدم $select تستخلص عمليات الإسقاط عناوين المرسل من البريد الوارد وعناوين المستلمين من الرسائل المرسلة، وهي المادة الخام لرسم خريطة مراسلي الضحية. هذا هو نوع من الوصول عبر وسيط (AiTM) عن طريق الموافقة وليس عن طريق سرقة كلمة المرور: لا توجد بيانات اعتماد للتصيد الاحتيالي بالمعنى التقليدي، بل مجرد رمز للحصول على الموافقة.
محرك إرسال رسائل بريد إلكتروني ورسائل نصية جماعية مع قوالب انتحال الهوية
يوجد حول صندوق البريد برنامج إرسال البريد. تتضمن الحزمة ملفات بيانات قابلة للتعديل من قبل المستخدم - قوائم المرسلين (senders.txt, smtps.txt) وملف قالب (functions.txt) — التي تُقرأ عناوينها المؤقتة كأوراق تمثيل لانتحال الشخصية: security@apple.com, loginالتحقق، وخدمة OAuth، والفواتير، ومرسلي إشعارات الحساب مقابل yourdomain.com يقوم الموظف البديل باستبدال المشغل. ويحمل جانب الرسائل النصية القصيرة رقم هاتف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[.]nolimitent[.]xyz تم تشغيل هذا الكود.
مؤشرات الحل الوسط
المؤشرات المذكورة أدناه هي التي يمكن للمدافع اتخاذ إجراء بناءً عليها، مثل البحث في ملف القفل، أو حظر مضيف، أو البحث في سجلات الخادم الوكيل وسجلات نظام أسماء النطاقات (DNS). تظهر نقاط نهاية مايكروسوفت لأن النظام يسيء استخدامها؛ فهي ليست ضارة في حد ذاتها ولا ينبغي حظرها.
| مؤشر | النوع | في | إجراء المدافع |
|---|---|---|---|
nolimit-agent (جميع الإصدارات من 1.0.299 إلى 1.0.307) | فئة الإشتراك | الآلية الوقائية الوطنية | grep lockfiles / install logs |
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 + مراجعة تدقيق Graph |
تم التقاط تجزئات الملفات أثناء الفرز:
- package/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- package/package.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
إشارة لمستأجر Microsoft 365 تستحق البحث عنها بغض النظر عن هذه الحزمة: عمليات تسجيل دخول ناجحة باستخدام رمز الجهاز متبوعة على الفور بقراءات الرسم البياني لـ مجلدات البريد/الصندوق الوارد و مجلدات البريد/العناصر المرسلةوخاصة من جلسة لا يتعرف عليها المستخدم.
الإسناد والسلوك الملاحظ
ما يمكن ملاحظته يبقى منفصلاً عن من يقف وراءه.
حقائق قابلة للملاحظة: تم نشر الحزمة تحت اسم المستخدم وكيل بلا حدود مع عنوان بريد إلكتروني غير موثق على Gmail وبدون مستودع مصدر مرتبط؛ package.json يصفه بأنه "مرسل بريد إلكتروني متطور" ويصنفه ضمن الفريق الأحمر الكلمة المفتاحية؛ يتركز رمز وقت التشغيل في مكان مخفي ومبهم .إعلان/ الدليل الذي يحتوي على سلسلة الأدوات (جافا سكريبت- obfuscator) هو تبعية معلنة؛ ومضيف الاتصال بالخادم الرئيسي api[.]nolimitent[.]xyz يعيد استخدام بلا حدود العلامة التجارية. هذه حزمة واحدة مع معلم بنية تحتية واحد يتحكم فيه المشغل - وليست مجموعة حزم متعددة، ولم يتم تحديد أي تداخل مع حملة مسماة مسبقًا.
استخدم الفريق الأحمر لا تُغيّر الكلمة المفتاحية التصنيف. أدوات الأمن الهجومي المشروعة التي توفر إمكانية الاستخدام المزدوج تفعل ذلك بشفافية: مصدر قابل للقراءة، وأهداف يُحددها المُشغّل، ولا يوجد اتصال خفي بالخادم. هذه الحزمة تُقلب كل هذه الخصائص رأسًا على عقب - فشفرتها التشغيلية مُبهمة ومخفية، وتتصل ببنية تحتية ثابتة للمُشغّل بدلًا من هدف يُحدده المستخدم. السلوك، وليس التصنيف، هو ما يُحدد الحكم، وهو خبيث.
لم يتم توضيح النية هنا. يصف المنشور ما يفعله الكود - طلب رمز الجهاز، وقراءة صندوق البريد عبر Graph، وإرسال بريد جماعي من خلال خوادم وسيطة مُهيأة، وإرسال إشارة إلى مضيف ثابت - ولكنه يترك الدافع غير مُعلن.
التأثير والاتجاهات وتوجيهات المدافعين
هناك تأثيران مهمان لوقت التثبيت. أولاً، أي مطور أو وكيل تكامل مستمر يقوم بالتثبيت وكيل بلا حدود يقوم هذا النظام بتثبيت الإطار على ذلك المضيف وينشئ اتصالاً بخادم النظام. api[.]nolimitent[.]xyzثانيًا، تمتد إمكانية رمز الجهاز إلى ما هو أبعد من المضيف الذي يقوم بالتثبيت: يتم قراءة صندوق بريد Microsoft 365 الذي يتم حث مالكه على الموافقة على رمز معروض مباشرة من خلال Graph، دون أن تعبر كلمة المرور الشبكة أبدًا.
الاتجاه الأوسع هو اتجاه الاستيعاب الداخلي. لقد انتقلت عمليات التصيد الاحتيالي باستخدام رمز الجهاز (AiTM) من بنية تحتية مستقلة للتصيد الاحتيالي إلى حزمة على سجل عام - يتم توزيعها بواسطة تركيب npm بدلاً من إرسال رابط عبر البريد الإلكتروني. إن تغليف الحزمة بهذه الطريقة يستبدل مشكلة استضافة مشغل التصيد الاحتيالي وتوصيل الروابط بوصول سجل المواقع، ويخفي رمز التشغيل خلف خطاف تثبيت نظيف ودليل مشفر يحمل اسم ملف نقطي، مما يفشل عملية المسح اليدوي السريع.
للمدافعين:
- مراجعة السجل والتبعية. عالج طردًا رئيسي/بن يُحوّل إلى دليل مخفي (يبدأ بنقطة) يحتوي على كود أصلي مُشفر بشكل موحد، ويُعتبر عالي الخطورة بناءً على بنيته فقط، بغض النظر عما إذا كان خطاف التثبيت يبدو نظيفًا. التصغير ليس تشفيرًا - فالشرط هو توقيع مُفكِّك مصفوفة السلاسل النصية، وليس طول السطر.
- تعزيز أمان Microsoft 365. قيّد عملية منح تفويض رمز الجهاز باستخدام الوصول المشروط حيث لا يكون ذلك مطلوبًا تشغيليًا؛ إذ تُعدّ منح رمز الجهاز وسيلة معروفة للاختراق، ونادرًا ما يحتاجها المستخدمون التفاعليون. قم بمراجعة عمليات تسجيل الدخول باستخدام رمز الجهاز، ثم قم فورًا بحصر صناديق بريد Graph.
- الكشف عن الشبكة. حظر وتنبيه بشأن api[.]nolimitent[.]xyzابحث عن سجلات نظام أسماء النطاقات (DNS) الصادرة وسجلات الوكيل (proxy) الخاصة بها عبر البنية التحتية للمطورين والبناء.
- الكشف عن مسار البريد. استخدم user @ host نماذج انتحال عناوين المواقع الإلكترونية (trusted[.]com@…يمكن اكتشافها عند بوابة البريد والوكيل؛ ضع علامة على الروابط التي يسبق مكون السلطة فيها @.
كانت الحزمة متاحة على npm وقت إجراء التحليل. لأن الإطار الخفي يمتد عبر سلسلة الإصدارات المنشورة بالكامل، والإصدار الحالي آخر يحمل الوسم (1.0.307) إمكانية رمز الجهاز، ويجب أن يشمل حذف السجل كل إصدار، وليس إصدارًا واحدًا فقط.




