
تنفيذ مفتوح المصدر لـ Malleable C2 الخاص بـ Cobalt Strike
تطبيق مفتوح المصدر لـ Malleable C2 من Cobalt Strike
OpenMalleableC2 هي مكتبة غير مرتبطة بإطار عمل معين، تطبق تنسيق ملف تعريف Malleable C2 المستخدم في Cobalt Strike لتحويلات HTTP. تمكن باحثي الأمن وفرق الاختراق الأحمر من تنفيذ اتصالات Malleable C2 بسهولة في أدواتهم المخصصة وأطر عمل C2.
تتيح الاستخدام الكامل لملفات تعريف Malleable C2 لإرسال بيانات عشوائية عبر HTTP بطريقة شفافة و(نأمل) مستقرة.
توجد العديد من أطر عمل C2 مفتوحة المصدر توفر درجات متفاوتة من تخصيص حركة مرور HTTP. ومع ذلك، حتى الأطر الأكثر تطورًا مثل Mythic وHavoc وAdaptix وغيرها تفتقر إلى عمق تخصيص حركة مرور HTTP الذي يتيحه Malleable C2 من Cobalt Strike، خاصةً فيما يتعلق بتضمين بيانات الاستدعاء ضمن طلبات HTTP تبدو بريئة بشكل مقنع. الهدف من هذا المشروع هو السماح للأدوات مفتوحة المصدر بالاستفادة من عمق تخصيص نظام Malleable C2، بالإضافة إلى الموارد الحالية التي تعتمد عليه (مثل الملفات التعريفية، أدوات إنشاء الملفات التعريفية، إلخ).
إنه يعمل في الغالب، لكنني لا أقدم أي ضمانات بشأن استقراره في الوقت الحالي. أرجو الإبلاغ عن الأخطاء إذا وجدت :)
المثال المقدم هو وكيل وخادم بسيط "ping pong" يوضح استدعاء Beacon النموذجي. سيرسل الوكيل استدعاء GET للتحقق من وجود مهام، ثم يرسل استدعاء POST لإرسال مخرجات المهمة مرة أخرى إلى الخادم.
في هذا المثال، المهام هي مجرد سلسلة عشوائية بديلة، سيقوم الوكيل باسترجاعها وعكسها وإرسال النتيجة مرة أخرى. يتحقق الخادم من صحة السلسلة المعكوسة ويرسل ردًا وفقًا لذلك.
تشغيل مثال ping-pong:
# ابدأ خادم Python
python Server\Python\examples\pingpong_server.py profiles\gmail.profile
# أو ابدأ خادم Go
cd Server\Go
go run .\cmd\pingpong-server ..\..\profiles\gmail.profile
# تشغيل الوكيل (في نافذة طرفية أخرى)
.\Client\C\examples\pingpong_agent.exe profiles\gmail.profile
بناء مثال عميل C:
cd Client\C\examples
build.bat
هيكل المستودع:
Client\C\lib مكتبة عميل بلغة C
Client\C\examples مثال وكيل ping-pong بلغة C
Server\Python\lib مكتبة خادم بلغة Python
Server\Python\examples مثال خادم ping-pong بلغة Python
Server\Go\openmalleable مكتبة خادم بلغة Go
Server\Go\cmd\pingpong-server مثال خادم ping-pong بلغة Go
مثال للإخراج:
pingpong_server.py:
