एक सुरक्षा परीक्षण Slackbot जो Google Cloud Platform पर Kubernetes बैकएंड के साथ बनाया गया है
नोट: मैं अब इस प्रोजेक्ट को सक्रिय रूप में मेंटेन नहीं कर रहा हूँ। मैं कुछ अन्य लोगों के साथ Kubebot के v2 पर काम कर रहा हूँ जो संभवतः आगामी सुरक्षा सम्मेलनों में से एक में प्रस्तुत किया जाएगा।
1 - API अनुरोध (टूल, टार्गेट, विकल्प) Slackbot से शुरू किया गया, API सर्वर को भेजा गया, जो Kubernetes (K8s) क्लस्टर पर Docker कंटेनर के रूप में चल रहा है और स्केल किया जा सकता है।
2 - API सर्वर प्राप्त अनुरोध को PubSub Tool Topic पर एक संदेश के रूप में ड्रॉप करता है।
3 - संदेश Tool Subscription पर प्रकाशित किए जाते हैं।
4 - Subscription Worker(s), K8s क्लस्टर पर Docker कंटेनर के रूप में चल रहे हैं, सब्सक्रिप्शन से संदेश का उपभोग करते हैं। इन वर्कर्स की संख्या को भी स्केल किया जा सकता है।
5 - अंतिम उपयोगकर्ता से प्राप्त टूल, टार्गेट और विकल्पों के आधार पर, उपयुक्त Tool Worker(s) को उसी K8s क्लस्टर में Docker कंटेनर के रूप में शुरू किया जाता है। परिणाम अस्थायी रूप से उस कंटेनर की स्थानीय निर्देशिका में संग्रहीत किए जाते हैं। उस टूल की Github निर्देशिका को क्लोन किया जाता है।
6 - यह जाँच की जाती है कि उत्पन्न परिणाम फ़ाइल मौजूद थी या नहीं। यदि मौजूद नहीं थी, तो इसे जोड़ा जाता है और परिवर्तन Github पर पुश किए जाते हैं। यदि मौजूद है, तो फ़ाइलों की तुलना की जाती है, नई फ़ाइल Github पर पुश की जाती है और केवल परिवर्तन अगले चरण पर भेजे जाते हैं।
7 - Tool Worker(s) से एक वेबहुक परिवर्तनों को वापस Slack पर भेजता है। टूल वर्कर को हटा दिया जाता है क्योंकि उनकी अब आवश्यकता नहीं है।
PS - API सर्वर, Subscription Worker(s) और Tool Worker(s) के सभी Docker इमेज K8s क्लस्टर पर तैनात होने से पहले उस GCP खाते के Google Container Registry से डाउनलोड किए जाते हैं।
अब तक एकीकृत टूल्स की सूची (यह सूची अद्यतन होती रहेगी क्योंकि और टूल्स जोड़े जाते हैं। टूल्स फ़ोल्डर में कुछ अतिरिक्त टूल्स भी हैं लेकिन वे अभी भी विकसित किए जा रहे हैं।)
config - Kubebot घटकों को तैनात करने के लिए कॉन्फ़िगरेशन फ़ाइलें शामिल हैं।
cronjobs - एक नमूना तैनाती (.yaml) फ़ाइल शामिल है जो एक विशिष्ट अंतराल पर एक विशिष्ट टूल चलाने के लिए क्रॉनजॉब सेटअप करने और परिणामों को वेबहुक के माध्यम से Slack पर वापस भेजने के लिए है।
एक उपयोगिता कंटेनर जिसे checkfile कहा जाता है, github फ़ाइलों पर diff ऑपरेशन करने के लिए उपयोग किया जाता है ताकि किसी टूल के पिछले रन से नवीनतम रन में कोई बदलाव पहचाना जा सके। यह कंटेनर प्रत्येक टूल कंटेनर के बाद चलाया जाता है।
एक उपयोगिता जिसे converttobq कहा जाता है, टूल्स से डेटा को BigQuery इन्जेस्ट करने योग्य प्रारूप में बदलने के लिए उपयोग की जाती है। यह उपयोगिता स्वचालन वर्कफ़्लो में चलाई जाती है जहाँ प्रत्येक टूल के परिणाम BQ में संग्रहीत किए जाते हैं ताकि अन्य टूल्स द्वारा उपभोग किया जा सके।
एक उपयोगिता जिसे wfuzzbasicauthbrute कहा जाता है, BQ तालिका में संग्रहीत एंडपॉइंट्स के बेसिक ऑथेंटिकेशन तंत्र को ब्रूटफोर्स करने के लिए उपयोग की जाती है, जिसमें सभी सीक्रेट्स दूसरी BQ तालिका में संग्रहीत होते हैं।
.env.sample - इस फ़ाइल का नाम बदलकर .env करें और सुनिश्चित करें कि जब आप Kubebot को स्थानीय रूप से तैनात करना चाहते हैं तो उसमें मान सटीक हैं।
Makefile - आपके Kubebot वातावरण के निर्माण के लिए makefile।
आरंभ करना
Pre-requisites - कृपया सुनिश्चित करें कि ये सभी पूर्वापेक्षाएँ पूरी हों।
Running Kubebot locally - रिमोट पर चलाने से पहले Kubebot के अभ्यस्त होने के लिए यह एक अच्छी शुरुआत है।
Integrating your own tools - यदि आप अपने स्वयं के टूल्स को Kubebot में एकीकृत करना चाहते हैं, तो ऐसा करना काफी आसान है!
TODOS - कृपया Kubebot को बेहतर बनाने में मेरी मदद करें!
Running Kubebot remote - एक बार जब आप आश्वस्त हो जाते हैं कि Kubebot स्थानीय रूप से (Minikube का उपयोग करके) अपेक्षित रूप से काम करता है और अब इसे क्लाउड पर पूरी क्षमता से उपयोग करना चाहते हैं, तो इसे Google Container Engine (GKE) क्लस्टर पर तैनात किया जा सकता है। हालांकि, मैं अभी रिमोट तैनाती के निर्देश प्रदान नहीं कर सकता। ऐसा कहने के बाद, यदि रुचि है, तो मुझे मदद करने में खुशी होगी। और, यदि आप बस Kubebot को Slack ऐप के रूप में उपयोग करना चाहते हैं और बैकएंड बुनियादी ढांचे के बारे में चिंता नहीं करना चाहते हैं, तो यह भी एक छोटी मासिक सब्सक्रिप्शन योजना के लिए व्यवस्थित किया जा सकता है, क्योंकि मैं अपने व्यक्तिगत GCP खाते में बैकएंड होस्ट करूंगा और आप केवल क्लाउड प्रदाता पर VPS होस्ट करने की सामान्य लागतों के लिए जिम्मेदार होंगे। कृपया उन विकल्पों पर चर्चा करने के लिए संपर्क करने में संकोच न करें।
ध्यान दें कि आप टूल के नाम, विकल्प और टार्गेट के साथ Slash कमांड कैसे चला सकते हैं। मैं टार्गेट(s) कहता हूं क्योंकि आप एक Slash कमांड चलाकर एक टूल को एक सेट विकल्प के साथ कई टार्गेट्स के विरुद्ध चला सकते हैं। उदाहरण के लिए, नीचे gitrob कमांड test और abc के विरुद्ध चलाया जा रहा है।
/runtool nmap|-Pn -p 1-1000|google.com
/runtool sublist3r|-t 50|test.com
/runtool gobuster|-m dns -w fierce_hostlist.txt -t 10 -fw|google.com