
منارات JavaScript وقنوات القيادة والتحكم (C2) تُستخدم كحمولات XSS أو أدوات زرع بعد الاستغلال على خوادم تطبيقات الويب أو برامج سطح المكتب لمراقبة المستخدمين والحفاظ على الاستمرارية. تتضمن أدوات زرع لملحقات المتصفح، وتطبيقات إلكترون، وتطبيقات Node/Bun.
التغييرات الرئيسية موثقة في إعلانات المشروع:
https://github.com/hoodoer/JS-Tap/discussions/categories/announcements
يمكنك قراءة المقال الأصلي عن JS-Tap هنا:
https://trustedsec.com/blog/js-tap-weaponizing-javascript-for-red-teams
عرض توضيحي قصير من ShmooCon للإصدار 1 من JS-Tap:
https://youtu.be/IDLMMiqV6ss?si=XunvnVarqSIjx_x0&t=19814
عرض توضيحي للإصدار 2 من JS-Tap في HackSpaceCon، بما في ذلك C2 وكيفية استخدامه كأداة تسلل بعد الاستغلال:
https://youtu.be/aWvNLJnqObQ?t=11719
عرض توضيحي لمولد الحمولة التلقائي، يستخدم نماذج البيانات المُعترضة وحركة مرور شبكة JavaScript كنموذج لتوليد حمولات C2 مخصصة:
https://www.youtube.com/watch?v=cU915mxLfTo
عرض توضيحي في CactusCon للإصدار 2 بما في ذلك ميزة المحاكاة:
https://youtu.be/O7-zxAmP13o?si=gchYwOJksutCCUPH
عرض توضيحي للإصدار 3 من Beacons، كود تجريبي:
https://youtu.be/-esrfSHqZeo
لا أخطط لإنشاء نصوص برمجية لترحيل قاعدة البيانات، وغالبًا ما تتضمن زيادات رقم الإصدار تغييرات في مخطط قاعدة البيانات (تحقق من سجلات التغييرات). يُفضل حذف قاعدة بيانات jsTap.db الخاصة بك عند زيادات الإصدار. إذا كان لديك حمولات مخصصة في خادم JS-Tap الخاص بك، فتأكد من تصديرها قبل حذف ملفات قاعدة البيانات.
JS-Tap هي مجموعة أدوات هجومية قائمة على JavaScript مخصصة لفرق الاختراق الأحمر. بدأت كحمولة JavaScript عامة لمهاجمة تطبيقات الويب عبر XSS أو كأداة تسلل بعد الاستغلال، وتطورت لتشمل إضافات المتصفح وأدوات تسلل تطبيقات سطح المكتب Electron — جميعها تبلغ إلى خادم C2 واحد.
لا تتطلب الحمولة من المستخدم المستهدف تشغيلها أن يكون موثّقًا في التطبيق الذي يتم مهاجمته، ولا تتطلب أي معرفة مسبقة بالتطبيق بخلاف إيجاد طريقة لإدخال JavaScript في التطبيق.
بدلاً من مهاجمة خادم التطبيق نفسه، تركز حمولة JS-Tap على جانب العميل من التطبيق وتقوم بمراقبة وربط كود جانب العميل بشكل مكثف. يسمح نظام C2 بإضافة حمولات JavaScript مخصصة وتشغيلها كمهام على عملاء JS-Tap، مما يوفر وسيلة لمهاجمة خادم التطبيق مباشرة. لتسهيل الانتقال السريع إلى مهاجمة الخادم، يتضمن JS-Tap الآن ميزة "المحاكاة" لتوليد حمولات مخصصة تلقائيًا وتسليمها إلى نظام C2.
مثال حمولة DOM Beacon موجود في ملف telemlib.js في دليل الحمولات، ومع ذلك يتم تقديم أي ملف في هذا الدليل دون مصادقة، لذا يمكنك تقديم حمولات متعددة بتكوينات مختلفة تستهدف تطبيقات مختلفة في نفس الوقت.
انسخ ملف telemlib.js إلى أي اسم ملف ترغب فيه وعدّل التكوين حسب الحاجة. لم يتم إخفاء هذا الملف. قبل الاستخدام في مهمة، يُوصى بشدة بتغيير أسماء نقاط النهاية، وإزالة التعليقات، وإخفاء الحمولة بشكل كبير. افتراضيًا، يستخدم التطبيق نقاط نهاية API واضحة إلى حد ما (مثل /loot/screenshot)، في إعدادات التطبيق يمكنك تشغيل إخفاء حركة المرور.
تأكد من مراجعة قسم التكوين أدناه بعناية قبل الاستخدام على خادم مكشوف للعامة.
يحتوي JS-Tap على خمسة أنواع من الإشارات/العملاء تتصل بنفس الخادم:
| نوع الإشارة | ما هي | كيف تصل إلى هناك |
|---|---|---|
| DOM Beacon (telemlib.js) | حمولة JavaScript تُحقن في صفحة ويب. تراقب DOM، وتلتقط نشاط المستخدم، ولقطات الشاشة، واستدعاءات الشبكة. | ثغرة XSS، أو إضافتها مباشرة إلى ملفات JavaScript الخاصة بالتطبيق المستهدف (بعد الاستغلال). |
| BEX Beacon | إضافة متصفح (Chrome MV3 / Firefox MV2). تراقب جميع أنشطة التصفح، وتلتقط ملفات تعريف الارتباط (بما في ذلك httpOnly)، وlocalStorage، وsessionStorage، ورؤوس الطلبات. يمكنها حقن DOM Beacons في نطاقات محددة بناءً على الأمر. | مثبتة في متصفح الهدف (هندسة اجتماعية، وصول مادي، سياسة دفع، إلخ). |
| Sidecar | ملف ثنائي أصلي بلغة Go يعمل على نظام تشغيل الهدف. يوفر تصفح نظام الملفات، وقراءة الملفات، وتنفيذ الأوامر. | مثبتة جنبًا إلى جنب مع BEX Beacon عبر التراسل الأصلي. يتطلب BEX Beacon لنقل الأوامر. |
| Atom Beacon | أداة تسلل مزدوجة الطبقة لتطبيقات سطح المكتب Electron. تحقن وكيل في العملية الرئيسية (بيئة تشغيل Node.js) + حمولات في المُعالج إلى جميع نوافذ التطبيق. تجمع بين جمع البيانات على مستوى المتصفح والوصول إلى نظام التشغيل المضيف — لا حاجة لملف ثنائي منفصل. تدعم وضع وكيل المتصفح. | يتم تطبيعه في أرشيف ASAR لتطبيق Electron المستهدف (أو دليل التطبيق غير المضغوط) باستخدام atomize.py. |
| V8 Beacon | وكيل JavaScript لتطبيقات سطر الأوامر Node.js و Bun (Gemini CLI، Claude Code، إلخ). يعترض جميع استدعاءات الشبكة HTTP/Fetch، ويلتقط ضغطات المفاتيح، ويوفر الوصول إلى نظام الملفات والصدفة. بدون تبعيات. | يتم حقنه عبر متغير بيئي: NODE_OPTIONS="--require" (Node.js) أو BUN_OPTIONS="--preload" (Bun). لا حاجة لتصحيح التطبيق. |
جميعها تبلغ إلى نفس بوابة خادم JS-Tap، حيث يتم عرض الغنائم وإصدار أوامر C2.
تتضمن البوابة أيضًا أداتين لاستنساخ الجلسات:
| الأداة | ما تفعله |
|---|---|
| وكيل المتصفح | وكيل MITM على خادم JS-Tap يقوم بتوجيه حركة HTTP/HTTPS الخاصة بالمشغل عبر متصفح الضحية (أو عملية Node.js) عبر WebSocket. يتم جلب الطلبات من سياق شبكة الضحية، بحيث يرى الموقع المستهدف عنوان IP وبصمة TLS الخاصة بالضحية. يمكن دمجه مع تذكرة جلسة للتصفح الموثّق عبر شبكة الضحية. مدعوم من BEX و Atom و V8 Beacons. راجع وكيل المتصفح أدناه. |
| موصل JS-Tap | إضافة Firefox مستقلة تستورد بيانات الجلسة التي تم التقاطها بواسطة BEX Beacon (كـ "تذكرة JS-Tap") وتعيد تشغيلها محليًا — تعيين ملفات تعريف الارتباط، وحقن الرؤوس، وتعبئة التخزين، وانتحال وكيل المستخدم — ليتمكن المشغل من التصفح كضحية. راجع تذاكر JS-Tap وموصل JS-Tap أدناه. |
DOM Beacon مستقل: تعمل حمولة DOM Beacon (telemlib.js) بشكل مستقل. قم بحقنها عبر XSS أو زرعها في ملفات JS الخاصة بالهدف. تتصل بخادم JS-Tap من تلقاء نفسها.
BEX Beacon كموزع: يراقب BEX Beacon التصفح ويجمع المعلومات الاستخباراتية السلبية (ملفات تعريف الارتباط، localStorage، sessionStorage، رؤوس الطلبات، التنقل). من بوابة JS-Tap، يمكنك توجيه الإشارة لحقن DOM Beacon في نطاق معين. يحصل DOM Beacon الناتج عن BEX Beacon على لقطات شاشة عالية الجودة عبر واجهة captureVisibleTab الخاصة بالإضافة (وضع "BEX-Assist").
Sidecar للوصول إلى نظام التشغيل: عند تثبيته، يمنح الملف الثنائي Sidecar إشارة BEX Beacon الوصول إلى نظام التشغيل الأساسي. يتم إرسال الأوامر من بوابة JS-Tap، وتُمرر عبر القناة المشفرة للإشارة إلى الملف الثنائي الأصلي، ويتم إرسال النتائج مرة أخرى. هذا يحول إضافة المتصفح إلى موطئ قدم للوصول إلى نظام الملفات وتنفيذ الأوامر.
وكيل المتصفح للتصفح المباشر: يقوم المشغل بتكوين متصفحه لاستخدام وكيل JS-Tap ويتم توجيه جميع حركة HTTP/HTTPS عبر متصفح الضحية في الوقت الفعلي. يقوم الوكيل بإنهاء TLS MITM (باستخدام CA يتم إنشاؤه تلقائيًا) حتى يتمكن المشغل من تصفح مواقع HTTPS. الوكيل هو "أنبوب غبي" — يُمرر بالضبط ما يرسله متصفح المشغل. للتصفح الموثّق، ادمج مع تذكرة جلسة: يقوم موصل JS-Tap بحقن ملفات تعريف الارتباط ورؤوس ووكيل المستخدم الخاصة بالضحية في متصفح المشغل، ويقوم وكيل MITM بتوجيهها إلى الإشارة، وتجلب الإشارة من شبكة الضحية. هذا يعطي المشغل جلسة موثّقة من عنوان IP الخاص بالضحية. تدعم إشارات BEX و Atom و V8 جميعها وضع الوكيل.
Atom Beacon لتطبيقات Electron: يقوم المبرمج atomize.py بتعديل أرشيف ASAR لتطبيق Electron لحقن وكيل Atom Beacon. عند التشغيل، يسجل الوكيل مع خادم JS-Tap، ويبدأ اتصال C2 المشفر، ويحقن تلقائيًا حمولات المُعالج في كل BrowserWindow ينشئه التطبيق. يوفر وكيل العملية الرئيسية وصولًا أصليًا لنظام التشغيل (نظام الملفات، تنفيذ الأوامر) بينما تقوم حمولات المُعالج بجمع البيانات على مستوى DOM (ضغطات المفاتيح، المدخلات، النماذج، ملفات تعريف الارتباط، التخزين، استدعاءات الشبكة). نظرًا لأنه يعمل داخل العملية الرئيسية لـ Electron مع وصول كامل لـ Node.js، فإنه لا يحتاج إلى ملف ثنائي Sidecar منفصل — تصفح الملفات وقراءتها وأوامر الصدفة مدمجة.