
البحث عن نقاط الضعف الأمنية في مجموعات Kubernetes
لم يعد kube-hunter قيد التطوير النشط. إذا كنت مهتمًا بفحص مجموعات Kubernetes بحثًا عن نقاط الضعف المعروفة، فنوصي باستخدام Trivy. على وجه التحديد، فحص سوء التهيئة الخاص بـ Kubernetes من Trivy و فحص نقاط الضعف في KBOM. تعرف على المزيد في وثائق Trivy.
يقوم kube-hunter بالبحث عن نقاط الضعف الأمنية في مجموعات Kubernetes. تم تطوير الأداة لزيادة الوعي والوضوح بشأن المشكلات الأمنية في بيئات Kubernetes. يجب ألا تقوم بتشغيل kube-hunter على مجموعة Kubernetes لا تملكها!
تشغيل kube-hunter: يتوفر kube-hunter كحاوية (aquasec/kube-hunter)، ونقدم أيضًا موقعًا إلكترونيًا على kube-hunter.aquasec.com حيث يمكنك التسجيل عبر الإنترنت لتلقي رمز مميز يسمح لك بمشاهدة النتائج ومشاركتها عبر الإنترنت. يمكنك أيضًا تشغيل كود Python بنفسك كما هو موضح أدناه.
استكشاف نقاط الضعف: تتضمن قاعدة معرفة kube-hunter مقالات حول نقاط الضعف والمشكلات القابلة للاكتشاف. عندما يبلغ kube-hunter عن مشكلة، فسوف يعرض VID (معرف الضعف) الخاص بها بحيث يمكنك البحث عنها في قاعدة المعرفة على https://aquasecurity.github.io/kube-hunter/
إذا كنت مهتمًا بتكامل kube-hunter مع مصفوفة ATT&CK الخاصة بـ Kubernetes استمر في القراءة
يدعم kube-hunter الآن التنسيق الجديد لمصفوفة ATT&CK الخاصة بـ Kubernetes. بينما تمثل نقاط الضعف في kube-hunter مجموعة من التقنيات الإبداعية المصممة لمحاكاة مهاجم داخل المجموعة (أو خارجها)، يحدد Mitre's ATT&CK فئات موحدة وأكثر عمومية للتقنيات المستخدمة في ذلك.
يمكنك التفكير في نقاط ضعف kube-hunter كخطوات صغيرة للمهاجم، والتي تتبع مسار تقنية أكثر عمومية يسعى لتحقيقها. يمكن تصنيف معظم صيادي ونقاط ضعف kube-hunter ضمن هذه التقنيات، ولهذا انتقلنا لاتباع معيار المصفوفة.
بعض نقاط ضعف kube-hunter التي لم نتمكن من تعيينها إلى تقنية Mitre، يتم تسبيقها بالكلمة الأساسية General

هناك ثلاث طرق مختلفة لتشغيل kube-hunter، كل منها يوفر نهجًا مختلفًا لاكتشاف نقاط الضعف في مجموعتك:
شغّل kube-hunter على أي جهاز (بما في ذلك الكمبيوتر المحمول الخاص بك)، واختر الفحص عن بُعد وأعط عنوان IP أو اسم المجال لمجموعة Kubernetes الخاصة بك. سيمنحك هذا رؤية من منظور المهاجم لإعداد Kubernetes الخاص بك.
يمكنك تشغيل kube-hunter مباشرة على جهاز داخل المجموعة، واختيار خيار فحص جميع واجهات الشبكة المحلية.
يمكنك أيضًا تشغيل kube-hunter في pod داخل المجموعة. يشير هذا إلى مدى تعرض مجموعتك إذا تم اختراق أحد pods الخاصة بالتطبيق (على سبيل المثال، من خلال ثغرة برمجية). (علامة --pod)
تحقق أولاً من هذه المتطلبات الأساسية.
بشكل افتراضي، سيفتح kube-hunter جلسة تفاعلية، حيث ستتمكن من تحديد أحد خيارات الفحص التالية. يمكنك أيضًا تحديد خيار الفحص يدويًا من سطر الأوامر. هذه هي الخيارات المتاحة:
لتحديد أجهزة بعيدة للصيد، اختر الخيار 1 أو استخدم الخيار --remote. مثال:
kube-hunter --remote some.node.com
لتحديد فحص الواجهة، يمكنك استخدام الخيار --interface (سيؤدي هذا إلى فحص جميع واجهات الشبكة بالجهاز). مثال:
kube-hunter --interface
لتحديد CIDR معين للفحص، استخدم الخيار --cidr. مثال:
kube-hunter --cidr 192.168.0.0/24
اضبط العلامة --k8s-auto-discover-nodes للاستعلام عن Kubernetes لجميع العقد في المجموعة، ثم محاولة فحصها جميعًا. سيستخدم افتراضيًا التكوين داخل المجموعة للاتصال بواجهة برمجة تطبيقات Kubernetes. إذا كنت ترغب في استخدام ملف kubeconfig صريح، فاضبط --kubeconfig /location/of/kubeconfig/file.
لاحظ أيضًا، أن هذا يتم دائمًا عند استخدام وضع --pod.
من أجل محاكاة مهاجم في مراحله المبكرة، لا يتطلب kube-hunter أي مصادقة للصيد.
الانتحال - يمكنك تزويد kube-hunter برمز مميز لحساب خدمة محدد لاستخدامه عند الصيد عن طريق تمرير رمز JWT Bearer الخاص بسري حساب الخدمة يدويًا باستخدام العلامة --service-account-token.
مثال:
$ kube-hunter --active --service-account-token eyJhbGciOiJSUzI1Ni...
عند التشغيل بعلامة --pod، يستخدم kube-hunter رمز حساب الخدمة المثبت داخل الـ pod للمصادقة على الخدمات التي يجدها أثناء الصيد.
--service-account-token لها الأولوية عند التشغيل كـ podالصيد النشط هو خيار يقوم فيه kube-hunter باستغلال نقاط الضعف التي يجدها، لاستكشاف المزيد من نقاط الضعف. الفرق الرئيسي بين الصيد العادي والصيد النشط هو أن الصيد العادي لن يغير حالة المجموعة أبدًا، بينما يمكن للصيد النشط أن يقوم بعمليات تغيير الحالة على المجموعة، والتي قد تكون ضارة.
بشكل افتراضي، لا يقوم kube-hunter بالصيد النشط. لصيد نشط لمجموعة، استخدم العلامة --active. مثال:
kube-hunter --remote some.domain.com --active
يمكنك رؤية قائمة الاختبارات باستخدام الخيار --list: مثال:
kube-hunter --list
لرؤية اختبارات الصيد النشط بالإضافة إلى اختبارات الصيد السلبي:
kube-hunter --list --active
لرؤية تخطيط شبكة العقد فقط، قم بالتشغيل باستخدام الخيار --mapping. مثال:
kube-hunter --cidr 192.168.0.0/24 --mapping
سيؤدي هذا إلى إخراج جميع عقد Kubernetes التي وجدها kube-hunter.
للتحكم في التسجيل، يمكنك تحديد مستوى السجل باستخدام الخيار --log. مثال:
kube-hunter --active --log WARNING
مستويات السجل المتاحة هي:
بشكل افتراضي، سيتم إرسال التقرير إلى stdout، ولكن يمكنك تحديد طرق مختلفة باستخدام الخيار --dispatch. مثال:
kube-hunter --report json --dispatch http
طرق الإرسال المتاحة هي:
عند التشغيل كـ Pod في بيئة Azure أو AWS، سيجلب kube-hunter الشبكات الفرعية من خدمة بيانات تعريف المثيل. وبطبيعة الحال، يجعل هذا عملية الاكتشاف أطول.
لتحديد فحص الشبكة الفرعية بشدة إلى CIDR /24، استخدم الخيار --quick.
يتيح الصيد المخصص للمستخدمين المتقدمين التحكم في الصيادين الذين يتم تسجيلهم في بداية الصيد. إذا كنت تعرف ما تفعله، يمكن أن يساعد هذا إذا كنت ترغب في ضبط عملية الصيد والاكتشاف الخاصة بـ kube-hunter وفقًا لاحتياجاتك.
مثال:
kube-hunter --custom <HunterName1> <HunterName2>
يؤدي تمكين الصيد المخصص إلى إزالة جميع الصيادين من عملية الصيد، باستثناء الصيادين المدرجين في القائمة البيضاء المحددة.
تقرأ العلامة --custom قائمة بأسماء فئات الصيادين، لعرض جميع أسماء فئات kube-hunter، يمكنك دمج العلامة --raw-hunter-names مع العلامة --list.
مثال:
kube-hunter --active --list --raw-hunter-names
ملاحظة: نظرًا للتصميم المعماري لـ kube-hunter، فإن "الصيادين/الفئات الأساسية" التالية سيتم تسجيلها دائمًا (حتى عند استخدام الصيد المخصص):
هناك ثلاث طرق لنشر kube-hunter:
يمكنك تشغيل kube-hunter مباشرة على جهازك.
ستحتاج إلى تثبيت ما يلي:
التثبيت:
pip install kube-hunter
التشغيل:
kube-hunter
استنساخ المستودع:
git clone https://github.com/aquasecurity/kube-hunter.git
تثبيت تبعيات الوحدة النمطية. (قد تفضل القيام بذلك داخل بيئة افتراضية)
cd ./kube-hunter
pip install -r requirements.txt
التشغيل:
python3 kube_hunter
إذا كنت تريد استخدام pyinstaller/py2exe، فأنت بحاجة أولاً إلى تشغيل سكريبت install_imports.py.
تحتفظ Aqua Security بنسخة محوسبة من kube-hunter في aquasec/kube-hunter:aqua. تحتوي هذه الحاوية على كود المصدر هذا، بالإضافة إلى إضافة إضافية (مصدر مغلق) للإبلاغ عن تحميل النتائج إلى تقرير يمكن عرضه على kube-hunter.aquasec.com. يرجى ملاحظة أن تشغيل حاوية aquasec/kube-hunter وتحميل بيانات التقارير يخضع لـ شروط وأحكام إضافية.
يسمح لك ملف Dockerfile الموجود في هذا المستودع ببناء نسخة محوسبة بدون إضافة الإبلاغ.
إذا قمت بتشغيل حاوية kube-hunter مع شبكة المضيف، فستتمكن من فحص جميع واجهات المضيف:
docker run -it --rm --network host aquasec/kube-hunter
ملاحظة بالنسبة لـ Docker for Mac/Windows: لاحظ أن "المضيف" بالنسبة لـ Docker for Mac أو Windows هو الجهاز الظاهري الذي تشغل Docker الحاويات داخله. لذلك فإن تحديد --network host يسمح لـ kube-hunter بالوصول إلى واجهات الشبكة لهذا الجهاز الظاهري، بدلاً من واجهات جهازك.
بشكل افتراضي، يعمل kube-hunter في الوضع التفاعلي. يمكنك أيضًا تحديد خيار الفحص باستخدام المعلمات الموضحة أعلاه مثل:
docker run --rm aquasec/kube-hunter --cidr 192.168.0.0/24
يسمح لك هذا الخيار باكتشاف ما يمكن أن يفعله أو يكتشفه تشغيل حاوية ضارة على مجموعتك. وهذا يعطي منظورًا لما يمكن أن يفعله المهاجم إذا تمكن من اختراق pod، ربما من خلال ثغرة برمجية. قد يكشف هذا عن نقاط ضعف أكثر بكثير.
يحدد ملف job.yaml النموذجي وظيفة Job ستقوم بتشغيل kube-hunter في pod، باستخدام إعدادات الوصول الافتراضية لـ pod في Kubernetes. (قد ترغب في تعديل هذا التعريف، على سبيل المثال للتشغيل كمستخدم غير جذري، أو للتشغيل في مساحة اسم مختلفة.)
kubectl create -f ./job.yamlkubectl describe job kube-hunterkubectl logs <pod name>لقراءة إرشادات المساهمة، انقر هنا
هذا المستودع متاح بموجب رخصة Apache 2.0.