Kubesploit एक क्रॉस-प्लेटफ़ॉर्म पोस्ट-एक्सप्लॉइटेशन HTTP/2 कमांड और कंट्रोल सर्वर और एजेंट है जो गोलांग में लिखा गया है, जो कंटेनरीकृत वातावरणों पर केंद्रित है।
Kubesploit एक क्रॉस-प्लेटफॉर्म पोस्ट-एक्सप्लॉइटेशन HTTP/2 कमांड एंड कंट्रोल सर्वर और एजेंट है जो कंटेनरीकृत वातावरण के लिए समर्पित है, जिसे Golang में लिखा गया है और Russel Van Tuyl (@Ne0nd0g) द्वारा Merlin प्रोजेक्ट के ऊपर बनाया गया है।
Docker और Kubernetes पर शोध करते समय, हमने देखा कि आज उपलब्ध अधिकांश उपकरण क्लस्टर में कमजोरियों के लिए निष्क्रिय स्कैनिंग पर लक्षित हैं, और अधिक जटिल हमले वेक्टर कवरेज की कमी है।
यह आपको समस्या देखने की अनुमति दे सकता है लेकिन इसका शोषण नहीं कर सकता। शोषण चलाना महत्वपूर्ण है ताकि वास्तविक दुनिया के हमले का अनुकरण किया जा सके जिसका उपयोग नेटवर्क भर में कॉर्पोरेट लचीलापन निर्धारित करने के लिए किया जाएगा।
जब एक शोषण चलाया जाता है, तो यह संगठन के साइबर घटना प्रबंधन का अभ्यास करेगा, जो क्लस्टर समस्याओं के लिए स्कैन करते समय नहीं होता है।
यह संगठन को यह सीखने में मदद कर सकता है कि जब वास्तविक हमले होते हैं तो कैसे काम करना है, यह देखने के लिए कि क्या इसकी अन्य डिटेक्शन सिस्टम अपेक्षित रूप से काम करती है और क्या बदलाव किए जाने चाहिए।
हम एक आक्रामक उपकरण बनाना चाहते थे जो इन आवश्यकताओं को पूरा करे।
लेकिन हमारे पास ऐसा उपकरण बनाने का एक और कारण था। हमारे पास पहले से ही Kubernetes से संबंधित दो ओपन-सोर्स टूल (KubiScan और kubeletctl) थे, और हमारे पास और अधिक के लिए एक विचार था। प्रत्येक के लिए एक प्रोजेक्ट बनाने के बजाय, हमने सोचा कि एक नया उपकरण बनाना बेहतर होगा जो नए उपकरणों को केंद्रीकृत करेगा, और तब Kubesploit बनाया गया।
हमने एक ओपन-सोर्स की खोज की जो क्रॉस-प्लेटफॉर्म सिस्टम के लिए भारी काम प्रदान करता है, और हमने Merlin पाया, जो Russel Van Tuyl (@Ne0nd0g) द्वारा लिखा गया, हमारे लिए उपयुक्त था।
हमारा मुख्य लक्ष्य कंटेनरीकृत वातावरण की सुरक्षा के बारे में जागरूकता बढ़ाने और विभिन्न नेटवर्कों में लागू किए गए शमन उपायों में सुधार करने में योगदान देना है। यह सब एक ढांचे के माध्यम से कैद किया गया है जो PT टीमों और रेड टीमर्स को उनके इन वातावरणों में गतिविधियों के दौरान उपयुक्त उपकरण प्रदान करता है। इन उपकरणों का उपयोग करके आप इन वातावरणों की ताकत का अनुमान लगाने और उनकी सुरक्षा के लिए आवश्यक परिवर्तन करने में मदद करेंगे।
चूंकि C&C और एजेंट बुनियादी ढांचा पहले से Merlin द्वारा किया गया था, हमने Go इंटरप्रेटर ("Yaegi") को एकीकृत किया ताकि सर्वर से एजेंट तक Golang कोड चलाने में सक्षम हो सकें।
इसने हमें अपने मॉड्यूल Golang में लिखने, मॉड्यूल पर अधिक लचीलापन प्रदान करने और गतिशील रूप से नए मॉड्यूल लोड करने की अनुमति दी।
यह एक चालू परियोजना है, और हम भविष्य में Docker और Kubernetes से संबंधित और अधिक मॉड्यूल जोड़ने की योजना बना रहे हैं।
वर्तमान में उपलब्ध मॉड्यूल हैं:
माउंटिंग का उपयोग कर कंटेनर ब्रेकआउट
docker.sock का उपयोग कर कंटेनर ब्रेकआउट
CVE-2019-5736 शोषण का उपयोग कर कंटेनर ब्रेकआउट
Kubernetes क्लस्टर ज्ञात CVE के लिए स्कैन करें
Kubernetes सेवाओं पर ध्यान केंद्रित करते हुए पोर्ट स्कैनिंग
कंटेनर के अंदर से Kubernetes सेवा स्कैन
हल्का kubeletctl जिसमें निम्नलिखित विकल्प हैं:
cGroup ब्रेकआउट
कर्नेल मॉड्यूल ब्रेकआउट
Var लॉग एस्केप
Deepce: Docker गणना (एक मॉड्यूल के रूप में एकीकृत ओपन-सोर्स प्रोजेक्ट)
कमजोरी परीक्षण: जांचें कि आपका कंटेनर kubesploit के किन शोषणों के प्रति संवेदनशील है
मॉड्यूल के बारे में विस्तृत जानकारी के लिए, विकी पेज देखें
हमने आपके लिए Kubesploit के साथ प्रयोग करने के लिए एक समर्पित Kubernetes वातावरण KillerCoda में बनाया है।
यह एक पूर्ण सिमुलेशन है जिसमें Kubesploit का उपयोग करने के तरीके पर स्वचालित निर्देशों का एक पूरा सेट है। हम आपको इसे एक्सप्लोर करने के लिए प्रोत्साहित करते हैं।
सर्वर चलाएँ:
./kubesploitServer
एजेंट चलाएँ:
./agent -url https://<server_ip>:443 &

इस प्रोजेक्ट को बनाने के लिए, रूट फ़ोल्डर से make कमांड चलाएँ।
नोट: वर्तमान में आपको Golang 1.18 या Go 1.19 (नवीनतम 2 प्रमुख रिलीज़) का उपयोग करने की आवश्यकता होगी, जो traefik/yaegi v0.14.3 की golang आवश्यकताओं पर आधारित है।
Linux के लिए त्वरित निर्माण चलाने के लिए, आप निम्नलिखित चला सकते हैं:
export PATH=$PATH:/usr/local/go/bin
go build -o agent cmd/merlinagent/main.go
go build -o server cmd/merlinserver/main.go
एक कंटेनर का उपयोग करके server चलाने के लिए, आपको Kubesploit सर्वर को 0.0.0.0 इंटरफ़ेस पर सुनने के लिए बनाना होगा (और 127.0.0.1 पर नहीं)।
आप config.yaml में इंटरफ़ेस फ़ील्ड अपडेट कर सकते हैं।
साइडनोट: होस्ट और कंटेनर के बीच पोर्ट बांधना सुनिश्चित करें (डिफ़ॉल्ट पोर्ट
443है और इसे config.yaml में भी कॉन्फ़िगर किया जा सकता है)
हमने YARA नियम बनाए हैं जो Kubesploit बाइनरी को पकड़ने में मदद करेंगे। नियम kubesploit.yara फ़ाइल में लिखे गए हैं।
एजेंट पर लोड किया गया प्रत्येक Go मॉड्यूल पीड़ित मशीन के अंदर रिकॉर्ड किया जा रहा है।
हमने Kubesploit द्वारा उपयोग किए जा रहे हमले के वैक्टर का MITRE मानचित्र बनाया।
हमने प्रत्येक मॉड्यूल के लिए, इसका विवरण और इससे बचाव कैसे करें, लिखा है।
हमने इसे MITIGATION.md फ़ाइल में संक्षेपित किया है।
हम इस रिपॉजिटरी में सभी प्रकार के योगदान का स्वागत करते हैं।
आरंभ करने के तरीके और हमारे विकास कार्यप्रवाह के विवरण के लिए, कृपया हमारा योगदान गाइड देखें।
हम Russel Van Tuyl (@Ne0nd0g) को धन्यवाद देना चाहते हैं जिन्होंने Merlin को ओपन-सोर्स के रूप में बनाया जिसने हमें इसके ऊपर Kubesploit बनाने की अनुमति दी।
हम Traefik Labs (@traefik) को भी धन्यवाद देना चाहते हैं जिन्होंने Go इंटरप्रेटर ("Yaegi") बनाया जिसने हमें दूरस्थ एजेंट पर Golang मॉड्यूल आसानी से चलाने की अनुमति दी।
कॉपीराइट (c) 2021 CyberArk Software Ltd. सर्वाधिकार सुरक्षित।
यह रिपॉजिटरी GPL-3.0 लाइसेंस के तहत लाइसेंस प्राप्त है।
पूर्ण लाइसेंस पाठ के लिए LICENSE देखें।
अधिक टिप्पणियों, सुझावों या प्रश्नों के लिए, आप CyberArk Labs से Eviatar Gerzi (@g3rzi) से संपर्क कर सकते हैं या एक issue खोल सकते हैं। आप हमारे द्वारा विकसित और अधिक प्रोजेक्ट https://github.com/cyberark/ पर पा सकते हैं।