Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
external_c2_framework — واجهة برمجة تطبيقات بايثون للاستخدام مع مواصفات External C2 الخاصة بـ Cobalt Strike. | Kitploit
أدوات/GitHubGitHub/truneski/external_c2_framework
أطر اختبار الاختراقأطر الاستغلالما بعد الاستغلالالقيادة والسيطرةالفريق الأحمرتطوير الحمولات
GitHubtruneski/external_c2_framework

external_c2_framework

واجهة برمجة تطبيقات بايثون للاستخدام مع مواصفات External C2 الخاصة بـ Cobalt Strike.

عرض المستودع
63195منذ 7 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

إطار عمل external_c2

إطار عمل بلغة بايثون للاستخدام مع مواصفات External C2 الخاصة بـ Cobalt Strike كما هو موصوف في المواصفات.

الهدف الأساسي من التصميم هو أن يكون تنفيذًا معياريًا جدًا لمواصفات external c2، بحيث يوفر تجريدًا كافيًا لتطبيق قنوات C2 لـ Cobalt Strike بسهولة. من الناحية المثالية، كل ما على المستخدم فعله هو إنشاء وحدة transport، ووحدة encoder، وملء ملف تكوين لتنفيذ قناة جديدة.

تكوين نقل Dropbox

ستحتاج إلى إجراء عدة تغييرات في التكوين قبل البدء في التشغيل. ستحتاج إلى:

  1. إنشاء حساب Dropbox إذا لم يكن لديك واحد بالفعل (https://www.dropbox.com/)
  2. إنشاء رمز وصول (Access Token) لحساب Dropbox الخاص بك (https://www.iperiusbackup.net/en/create-dropbox-app-get-authentication-token/)
  3. في builds/client/dbox/dbox_client.py، قم بتغيير token إلى الرمز الذي تم إنشاؤه في الخطوة 2.
  4. في builds/server/utils/transports/transport_dbox.py، قم بإجراء نفس التغييرات التي أجريتها في الخطوة 3.
  • قم بتجميع ملف DLL الخاص بك عن طريق: cd builds/client/dbox && ./compile_dll.sh
  • ابدأ تشغيل خادم فريق Cobalt Strike وتواصل باستخدام عميل Cobalt Strike.
  • قم بتحميل السكربت start_externalc2.cna من عميل CS الخاص بك.
  • انسخ هذا المستودع إلى خادم فريقك، ثم قم بتشغيل الخادم عن طريق cd builds/server/ && ./dbox_server.py
  • وزع الملف التنفيذي من الخطوة 6 على المضيف وقم بتشغيله. يجب أن ترى اتصالًا يعود من خادم الفريق.
  • رابط عرض الفيديو التوضيحي: https://www.youtube.com/watch?v=nTRHSh_uCcA

    البنية

    يتكون هذا المشروع من ثلاثة أجزاء رئيسية:

    • الباني (Builder) (لم يتم تنفيذه بعد)
    • العميل (Client)
    • الخادم (Server)

    الباني (Builder)

    يقوم الباني ببناء نشرات العميل والخادم ديناميكيًا بناءً على التكوين المحدد. من الناحية المثالية، يمكن توزيع العميل كملف واحد مُجمَّع مثل dll أو exe.

    العميل (Client)

    العميل هو في الأساس الحمولة (payload) التي تعمل على نقطة النهاية، ويُشار إليها باسم عميل طرف ثالث (third-party client) داخل المواصفات. منطق العميل ثابت بشكل أساسي:

    1. تشغيل أي تحضيرات ضرورية باستخدام transport
    2. استقبال المشغّل (stager)
    3. حقن المشغّل وفتح المقبض (handle) للمنارة (beacon)
    4. الحصول على البيانات الوصفية (metadata) من المنارة
    5. نقل البيانات الوصفية من المنارة إلى خادم C2 عبر transport
    6. مراقبة transport بحثًا عن مهام جديدة
    7. نقل المهام الجديدة إلى المنارة
    8. نقل الردود من المنارة عبر transport
    9. تكرار الخطوات 6-8.

    يتم نسخ التكوينات اللازمة لآليات النقل والترميز بشكل ثابت في العميل. كما يتم نسخ منطق الوظائف لآليات النقل والترميز بشكل ثابت من وحداتها الخاصة.

    يتم تحديد منطق حقن العملية من الباني.

    الخادم (Server)

    الخادم هو التطبيق الذي يقوم بتنسيق الاتصال بين العميل وخادم c2، ويُشار إليه باسم وحدة التحكم في العميل الطرف الثالث (third-party Client Controller) داخل المواصفات. منطق الخادم ثابت بشكل أساسي، ولكنه يدعم الإخراج المطول (verbose) وإخراج التصحيح (debug) للمساعدة في التطوير:

    1. تحليل التكوين
    2. استيراد وحدة الترميز المحددة
    3. استيراد وحدة النقل المحددة
    4. إنشاء اتصال بخادم c2
    5. طلب مشغّل من خادم c2
    6. ترميز المشغّل باستخدام وحدة encoder
    7. نقل المشغّل باستخدام وحدة transport
    8. انتظار استجابة بيانات وصفية من العميل يتم استلامها عبر transport
    9. فك ترميز البيانات الوصفية باستخدام وحدة encoder
    10. نقل البيانات الوصفية إلى خادم c2
    11. استقبال مهمة جديدة من خادم c2
    12. ترميز المهمة الجديدة
    13. نقل المهمة الجديدة إلى العميل عبر transport
    14. استقبال رد من العميل يتم استلامه عبر transport
    15. فك ترميز الرد باستخدام وحدة encoder
    16. نقل الرد إلى خادم c2
    17. تكرار الخطوات 11-16

    يتم تحديد وحدة encoder ووحدة transport التي يستوردها الخادم من القيم المخزنة في config.py.

    لا يتم استيراد أي وحدات transport أو encoder غير مستخدمة.

    وظائف مشتركة بين العميل والوحدات

    تصف الجداول التالية الوظائف المشتركة بين وحدات encoding و transport والعميل. الوظائف المشتركة هي في الأساس نفس الكود تمامًا.

    ملاحظة مهمة جدًا: يجب أن تكون البيانات المرسلة إلى وظيفتي sendData و recvData في العميل بيانات خام، بينما يجب أن تكون البيانات المرسلة إلى وظيفتي sendData و retrieveData في وحدة النقل قد تم ترميزها أو فك ترميزها بالفعل حسب الحاجة.

    وحدة النقل (Transport module)

    وظيفة النقل (Transport Function)وظيفة العميل (Client Function)الوصف (Description)
    prepTransportprepTransportتنفيذ أي تكوينات مسبقة مطلوبة لاستخدام آلية النقل
    sendDatasendDataيحدد كيف يتم إرسال البيانات عبر آلية النقل
    retrieveDatarecvDataيحدد كيف يتم استقبال البيانات عبر آلية النقل

    وحدة الترميز (Encoder Module)

    وظيفة الترميز (Encoder Function)وظيفة العميل (Client Function)الوصف (Description)
    encodeencodeيحدد التعديلات التي يتم إجراؤها على البيانات الخام لتجهيزها للنقل
    decodedecodeيحدد التعديلات التي يتم إجراؤها على البيانات الخام المستلمة من النقل ليتم نقلها إلى وجهتها

    كيفية الاستخدام

    أولاً، حدد وحدة النقل ووحدة الترميز التي ترغب في استخدامها. سنستخدم transport_gmail و encoder_b64url في المثال التالي.

    بعد ذلك، قم بتعديل server/config.py لتناسب احتياجاتك، مع التأكد من تكوين ENCODER_MODULE و TRANSPORT_MODULE بشكل صحيح والإشارة إلى الوحدات التي تريدها:

    نموذج config.py

    root@kitploit:~
    EXTERNAL_C2_ADDR = "127.0.0.1"
    EXTERNAL_C2_PORT = "2222"
    C2_PIPE_NAME = "foobar"
    C2_BLOCK_TIME = 100
    C2_ARCH = "x86"
    IDLE_TIME = 5
    ENCODER_MODULE = "encoder_b64url"
    TRANSPORT_MODULE = "transport_gmail"
    verbose = False
    debug = False
    

    بعد ذلك، قم بتعديل قسم التكوين لوحدة transport ووحدة encoder المختارة.

    تأكد من أن قسم التكوين في client/mechanism/$mechanism_client.py يتطابق مع أي تكوينات قمت بتعريفها حتى الآن.

    على الجهاز الذي يشغل الخادم، قم بتنفيذ:

    python server.py

    للحصول على إخراج أكثر تفصيلاً، يمكنك تشغيل:

    python server.py -v

    للحصول على إخراج أكثر تفصيلاً وإخراج إضافي مفيد لتصحيح الأخطاء، يمكنك تشغيل:

    python server.py -d

    بعد ذلك، قم بتشغيل العميل على نقطة النهاية المستهدفة.

    إذا نجح كل شيء، سيتم تسجيل منارة جديدة في وحدة تحكم Cobalt Strike يمكنك التفاعل معها.

    الأسئلة الشائعة (FAQ)

    لماذا كتبت هذا؟: لم يكن هناك العديد من التطبيقات المنشورة للمواصفات، ومن بين تلك المنشورة، إما أنها ليست بلغة أعرفها أو لا تمتلك المرونة والتجريد الذي كنت أبحث عنه.

    لماذا بايثون 2؟: أنا كسول ومن السهل تطبيق قنوات نقل وترميز جديدة به.

    الكود الخاص بك سيء: هذا ليس سؤالاً.

    هل يمكنني تقديم وحدات نقل و/أو ترميز جديدة؟: نعم من فضلك! أرسل طلب سحب (pull request) وسأكون سعيدًا بمراجعته.

    خريطة الطريق (Roadmap)

    • سيتم تنفيذ تجريد وتوزيع مشابه في مكون العميل أيضًا، لدعم طرق مختلفة لحقن العملية لحمولة المنارة وميزات أخرى في خريطة الطريق.

    • حاليًا، هذا يفتقد إلى وظيفة الباني، والتي من المخطط أن تقوم ببناء نشرات العميل والخادم ديناميكيًا، لكنها موجودة في خريطة الطريق.

    تنزيل الأداة