
Kubesploit هو خادم وعميل تحكم وأمر (C2) بعد الاستغلال متعدد المنصات عبر HTTP/2 مكتوب بلغة Golang، يركز على البيئات المحتواة.
Kubesploit هو خادم وعميل تحكم وأوامر (C&C) HTTP/2 متعدد المنصات للاستغلال بعد الاختراق، مُصمم خصيصًا للبيئات المحتواة، مكتوب بلغة Golang ومبني على مشروع Merlin من قِبل Russel Van Tuyl (@Ne0nd0g).
أثناء بحثنا في Docker و Kubernetes، لاحظنا أن معظم الأدوات المتاحة حاليًا تركز على المسح السلبي للثغرات في الكتلة، وهناك نقص في تغطية ناقلات الهجوم الأكثر تعقيدًا. قد تسمح لك هذه الأدوات برؤية المشكلة ولكن ليس استغلالها. من المهم تنفيذ الاستغلال لمحاكاة هجوم واقعي يُستخدم لتحديد مرونة المؤسسة عبر الشبكة. عند تنفيذ الاستغلال، سيتم تدريب المؤسسة على إدارة الأحداث السيبرانية، وهو ما لا يحدث عند مسح مشاكل الكتلة فقط. يمكن أن يساعد المؤسسة على تعلم كيفية التصرف عند حدوث هجمات حقيقية، ومعرفة ما إذا كانت أنظمة الكشف الأخرى تعمل كما هو متوقع، وما التغييرات التي يجب إجراؤها. أردنا إنشاء أداة هجومية تلبي هذه المتطلبات.
لكن كان لدينا سبب آخر لإنشاء مثل هذه الأداة. كان لدينا بالفعل أداتان مفتوحتا المصدر (KubiScan و kubeletctl) متعلقتان بـ Kubernetes، وكانت لدينا فكرة لمزيد من الأدوات. بدلاً من إنشاء مشروع لكل أداة، رأينا أنه من الأفضل إنشاء أداة جديدة تُركّز الأدوات الجديدة، وهنا وُلد Kubesploit.
بحثنا عن مشروع مفتوح المصدر يوفر البنية التحتية الثقيلة لنظام متعدد المنصات، ووجدنا أن Merlin، الذي كتبه Russel Van Tuyl (@Ne0nd0g)، مناسب لنا.
هدفنا الرئيسي هو المساهمة في زيادة الوعي حول أمن البيئات المحتواة، وتحسين التدابير الوقائية المطبقة في الشبكات المختلفة. كل هذا من خلال إطار عمل يوفر الأدوات المناسبة لمهمة فرق اختبار الاختراق (PT) وفرق الأحمر (Red Teamers) خلال أنشطتهم في هذه البيئات. استخدام هذه الأدوات سيساعدك على تقدير نقاط القوة في هذه البيئات وإجراء التغييرات اللازمة لحمايتها.
نظرًا لأن البنية التحتية للـ C&C والوكيل كانت قد أُنشئت بالفعل بواسطة Merlin، قمنا بدمج مُفسّر Go ("Yaegi") لكي نتمكن من تشغيل كود Golang من الخادم إلى الوكيل. سمح لنا ذلك بكتابة وحداتنا بلغة Golang، مما يوفر مرونة أكبر في الوحدات، وإمكانية تحميل وحدات جديدة ديناميكيًا. هذا مشروع مستمر، ونخطط لإضافة المزيد من الوحدات المتعلقة بـ Docker و Kubernetes في المستقبل.
الوحدات المتاحة حاليًا هي:
كسر الحاوية باستخدام التثبيت (mounting)
كسر الحاوية باستخدام docker.sock
كسر الحاوية باستخدام استغلال CVE-2019-5736
فحص كتلة Kubernetes بحثًا عن ثغرات معروفة (CVEs)
فحص المنافذ مع التركيز على خدمات Kubernetes
فحص خدمات Kubernetes من داخل الحاوية
kubeletctl خفيف يحتوي على الخيارات التالية:
كسر cGroup
كسر وحدة النواة (Kernel module)
الهروب عبر سجل /var/log
Deepce: تعداد Docker (مشروع مفتوح المصدر مدمج كوحدة)
اختبار الثغرات: التحقق من أي من استغلالات kubesploit تكون حاويتك عرضة له
للحصول على معلومات مفصلة عن الوحدات، راجع صفحة WiKi
أنشأنا بيئة Kubernetes مخصصة في KillerCoda لتجربة Kubesploit. إنها محاكاة كاملة مع مجموعة كاملة من التعليمات الآلية حول كيفية استخدام Kubesploit. نشجعك على استكشافها.
تشغيل الخادم:
./kubesploitServer
تشغيل الوكيل:
./agent -url https://<server_ip>:443 &

لبناء هذا المشروع، قم بتشغيل الأمر make من المجلد الجذر.
ملاحظة: ستحتاج حاليًا إلى استخدام Golang 1.18 أو Go 1.19 (آخر إصدارين رئيسيين) بناءً على متطلبات golang التي لدى traefik/yaegi v0.14.3.
لتشغيل بناء سريع لنظام Linux، يمكنك تشغيل ما يلي:
export PATH=$PATH:/usr/local/go/bin
go build -o agent cmd/merlinagent/main.go
go build -o server cmd/merlinserver/main.go
من أجل تشغيل الخادم باستخدام حاوية، يجب عليك جعل خادم Kubesploit يستمع على واجهة 0.0.0.0 (وليس 127.0.0.1).
يمكنك تحديث حقل الواجهة في ملف config.yaml.
ملاحظة جانبية: تأكد من ربط المنافذ بين المضيف والحاوية (المنفذ الافتراضي هو
443ويمكن تكوينه في config.yaml أيضًا)
أنشأنا قواعد YARA للمساعدة في اكتشاف ملفات Kubesploit الثنائية. القواعد مكتوبة في ملف kubesploit.yara.
يتم تسجيل كل وحدة Go يتم تحميلها إلى الوكيل داخل الجهاز الضحية.
أنشأنا خريطة MITRE لناقلات الهجوم المستخدمة من قبل Kubesploit.
لكل وحدة أنشأناها، كتبنا وصفها وكيفية الدفاع ضدها. لخصنا ذلك في ملف MITIGATION.md.
نرحب بمساهمات من جميع الأنواع لهذا المستودع. للحصول على تعليمات حول كيفية البدء وأوصاف لسير العمل التطويري لدينا، يرجى الاطلاع على دليل المساهمة.
نود أن نشكر Russel Van Tuyl (@Ne0nd0g) على إنشاء Merlin كمشروع مفتوح المصدر سمح لنا ببناء Kubesploit فوقه. كما نشكر Traefik Labs (@traefik) على إنشاء مُفسّر Go ("Yaegi") الذي سمح لنا بتشغيل وحدات Golang عن بُعد بسهولة.
حقوق النشر (c) 2021 CyberArk Software Ltd. جميع الحقوق محفوظة.
هذا المستودع مرخص بموجب رخصة GPL-3.0.
للاطلاع على نص الترخيص الكامل، راجع LICENSE.
للمزيد من التعليقات أو الاقتراحات أو الأسئلة، يمكنك الاتصال بـ Eviatar Gerzi (@g3rzi) من مختبرات CyberArk أو فتح مشكلة (issue). يمكنك العثور على المزيد من المشاريع التي طورناها على https://github.com/cyberark/.