
विस्तारणीय शोषण ढांचा जो एक मॉड्यूलर मल्टी-टास्किंग आर्किटेक्चर पर तैनात किया गया है
एक शैक्षिक एक्सप्लॉइटेशन फ्रेमवर्क जो एक मॉड्यूलर और अत्यधिक विस्तार योग्य मल्टी-टास्किंग और मल्टी-प्रोसेसिंग आर्किटेक्चर पर शिप किया गया है।
संस्करण 1 ढूंढ रहे हैं? इस रिपॉजिटरी में शाखाएं देखें।
ब्रूटस एक शैक्षिक एक्सप्लॉइटेशन फ्रेमवर्क है जो पायथन में लिखा गया है। यह प्री और पोस्ट-कनेक्शन नेटवर्क-आधारित एक्सप्लॉइट्स के साथ-साथ वेब-आधारित टोही को स्वचालित करता है। एक हल्के-वजन वाले फ्रेमवर्क के रूप में, ब्रूटस का उद्देश्य तीसरे पक्ष की निर्भरताओं पर निर्भरता को कम करना है। काली लिनक्स के लिए अनुकूलित, ब्रूटस मैकओएस और अधिकांश लिनक्स डिस्ट्रीब्यूशन के साथ भी संगत है, जिसमें एक पूरी तरह से इंटरैक्टिव कमांड-लाइन इंटरफ़ेस और बहुमुखी प्लगइन सिस्टम है।
ब्रूटस एक अत्यधिक-विस्तार योग्य, मॉड्यूलर आर्किटेक्चर की विशेषता रखता है। शामिल एक्सप्लॉइट्स (प्लगइन्स लेयर) में कई डिकपल्ड मॉड्यूल शामिल हैं जो थ्रेड पूल और थ्रेड-सेफ, एसिंक क्यूज़ (जो भी दिए गए मॉड्यूल के लिए सबसे उपयुक्त हो) से बनी 'टास्किंग लेयर' पर चलते हैं। मुख्य थ्रेड एक मल्टी-प्रोसेसिंग पूल के ऊपर चलता है जो ऐप संदर्भ का प्रबंधन करता है और नई प्रक्रियाओं को भेजता है ताकि कार्य पृष्ठभूमि में, अलग-अलग शेल आदि में चल सकें।
यूआई लेयर भी डिकपल्ड और विस्तार योग्य है। डिफ़ॉल्ट रूप से, ब्रूटस एक मेनू-आधारित कमांड-लाइन इंटरफ़ेस यूआई के साथ आता है, लेकिन इसका कोई कारण नहीं है कि आप जीयूआई, एक आर्गुमेंट पार्सर, या यहां तक कि एक HTTP API या रिमोट प्रक्रिया कॉल के लिए एडेप्टर नहीं जोड़ सकते।
अंत में, ब्रूटस में फ़ाइल-सिस्टम संचालन, शेल (टर्मिनल एमुलेटर) प्रबंधन, स्थायित्व विधियों और सिस्टम मेटाडेटा के लिए सामान्य क्षमताओं वाली एक उपयोगिता लेयर है।
यदि आप केवल कुछ पायथन हैकिंग में रुचि रखते हैं, तो बेझिझक स्क्रिप्ट को सीधे पुल करें - प्रत्येक मॉड्यूल को स्टैंडअलोन आह्वान किया जा सकता है।
वेब स्कैनिंग और पेलोड संकलन डेमो: mp4 देखें

आप शायद निम्नलिखित निर्भरताएं चाहेंगे:
ब्रूटस काली लिनक्स के लिए अनुकूलित है। वर्चुअल मशीन में काली लिनक्स चलाने के तरीके के बारे में ऑनलाइन बहुत सारी जानकारी है।
स्थापित करने के लिए:
pipenv install
चलाएं:
pipenv run brutus
परीक्षण:
pipenv run test
लिंट:
pipenv run lint
विकास के लिए Git हुक सेट करें:
pipenv run setup
फीचर प्रस्तावों, बगफिक्सेस आदि के साथ पीआर खोलने के लिए स्वतंत्र महसूस करें। ध्यान दें कि इस परियोजना का अधिकांश भाग अभी भी प्रगति पर है। आधार मौजूद है और आपके लिए इसे बनाने के लिए तैयार है।
ब्रूटस में कई मॉड्यूल शामिल हैं जिन्हें तीन मैक्रो-श्रेणियों में सामान्यीकृत किया जा सकता है: नेटवर्क-आधारित, वेब-आधारित, और पेलोड्स। अंतिम श्रेणी कंपाइलर्स और संबंधित पेलोड्स की एक लाइब्रेरी है - पेलोड को ब्रूटस के इंटरैक्टिव कमांड-लाइन मेनू के माध्यम से संकलित किया जा सकता है; संकलित पेलोड को बाद में ब्रूटस के कई लागू नेटवर्क-आधारित मॉड्यूल में लोड किया जा सकता है।
ब्रूटस की आधार लेयर समवर्ती मल्टी-टास्किंग के लिए POSIX थ्रेड्स का उपयोग करती है। कुछ मॉड्यूल - यानी मूल रूप से कोई भी चीज़ जो भारी I/O बाउंड है - इसके बजाय पायथन की async I/O लाइब्रेरीज़ का उपयोग करते हैं और पायथन के डिफ़ॉल्ट इवेंट लूप के ऊपर एक एब्स्ट्रैक्शन पर चलते हैं।
शामिल उपयोगिताएं/स्क्रिप्ट्स
नोट: यह उपकरण 48-बिट MAC के लिए है, %02x डिफ़ॉल्ट बाइट प्रारूप के साथ।
MAC (मीडिया एक्सेस कंट्रोल) एक स्थायी, भौतिक और अद्वितीय पता है जो डिवाइस निर्माताओं द्वारा नेटवर्क इंटरफेस को सौंपा जाता है। इसका मतलब है कि उदाहरण के लिए, आपका वायरलेस कार्ड भी अपना स्वयं का अद्वितीय MAC पता रखता है।
MAC पता, इंटरनेट पर IP के अनुरूप, संसाधनों और डेटा (यानी पैकेट) की उचित डिलीवरी की सुविधा के लिए एक नेटवर्क के भीतर उपयोग किया जाता है। एक इंटरैक्शन में आम तौर पर एक स्रोत MAC और एक गंतव्य MAC शामिल होता है।
MAC पते आपको पहचान सकते हैं, फ़िल्टर किए जा सकते हैं, या अन्यथा एक्सेस-प्रतिबंधित किए जा सकते हैं। यह ध्यान रखना महत्वपूर्ण है कि ये अद्वितीय पते क्षणिक नहीं हैं; वे स्थायी हैं और एक डिवाइस के साथ जुड़े रहेंगे यदि कोई उपयोगकर्ता इसे दूसरी मशीन में स्थापित करता है। लेकिन दोनों को अविभाज्य रूप से जुड़ा होना आवश्यक नहीं है...
यह मॉड्यूल उपयोगकर्ता-इनपुट के रूप में किसी भी दिए गए वायरलेस डिवाइस और किसी भी वैध MAC पते को स्वीकार करेगा जिसे उपयोगकर्ता उक्त डिवाइस को पुन: असाइन करना चाहता है। प्रोग्राम इतना सरल है कि मुझे इसे और अधिक समझाने की आवश्यकता नहीं है: यह वायरलेस इंटरफ़ेस को बंद करने, MAC को पुन: असाइन करने और इसे पुन: आरंभ करने के लिए आवश्यक शेल कमांड के अनुक्रम को स्वचालित करने के लिए सबप्रोसेस मॉड्यूल का उपयोग करता है।
यदि आप सक्रिय रूप से अपना MAC पता बदल रहे हैं, तो यह सुनिश्चित करने के लिए किसी प्रकार की सत्यापन संरचना या उच्च-क्रम विधि रखना विवेकपूर्ण हो सकता है कि 1) वायरलेस डिवाइस मौजूद है, 2) वायरलेस डिवाइस एक MAC पते को समायोजित करता है, 3) उपयोगकर्ता-इनपुट MAC पता एक मान्य प्रारूप का है, और 4) वायरलेस डिवाइस का MAC पता सफलतापूर्वक अपडेट किया गया है। यह उपकरण इन कार्यों को स्वचालित करता है।
'जेनरेट' विकल्प का चयन करने पर, एक विशिष्ट MAC पते के बजाय, प्रोग्राम IEEE विनिर्देशों के अनुसार एक मान्य MAC पता उत्पन्न करेगा। मुझे यह जानकर उत्साह है कि मैंने न केवल पूरी तरह से यादृच्छिक (और मान्य) MAC पते उत्पन्न करने के लिए, बल्कि ऐसे MAC पते उत्पन्न करने के लिए विस्तारित कार्यक्षमता लागू की है जो या तो किसी विशिष्ट विक्रेता उपसर्ग (OUI) से शुरू होते हैं, या मल्टीकास्ट और/या UAA विकल्पों के साथ उत्पन्न होते हैं। ये विकल्प जनरेटर विधि में बाइट-कोड तर्क को ट्रिगर करते हैं, जो IEEE विनिर्देशों के अनुसार संवर्धित होते हैं। MAC पतों के बारे में अधिक जानें यहाँ.
नेटवर्क स्कैनर एक और बहुत उपयोगी उपकरण है, और पूर्वोक्त MAC परिवर्तक के साथ उपयोग किए जाने पर एक दुर्जेय उपकरण है। यह स्कैनर उपयोगकर्ता इनपुट के रूप में एक मान्य ipv4 या ipv6 IP पता और साथ में - वैकल्पिक - सबनेट रेंज स्वीकार करके ARP अनुरोध कार्यक्षमता का उपयोग करता है।
प्रोग्राम फिर दिए गए IP और/या रेंज को लेता है, फिर IEEE विनिर्देशों के अनुसार उन्हें मान्य करता है (फिर से, यह सत्यापन ipv4 और ipv6 मानकों के विरुद्ध चलाया जाता है)। अंत में, दिए गए IP और एक उत्पन्न ईथरनेट फ्रेम के साथ एक ब्रॉडकास्ट ऑब्जेक्ट इंस्टेंशिएट किया जाता है; यह ऑब्जेक्ट हमें दिए गए नेटवर्क और साथ में रेंज के भीतर सभी जुड़े उपकरणों की एक सूची लौटाता है, उनके IP को संबंधित MAC पतों से मैप करता है।
प्रोग्राम इन एसोसिएशन के साथ एक तालिका आउटपुट करता है, जिसका उपयोग बाद में MAC परिवर्तक के लिए इनपुट के रूप में किया जा सकता है यदि परिस्थितियों में इसकी आवश्यकता हो।
ARP स्पूफ मॉड्यूल हमें किसी दिए गए लक्ष्य क्लाइंट और उसके नेटवर्क के गेटवे के ARP तालिकाओं को एक साथ हेरफेर करके एक दिए गए नेटवर्क में पैकेट के प्रवाह को पुनर्निर्देशित करने में सक्षम बनाता है। यह मॉड्यूल इस प्रक्रिया के दौरान पोर्ट फ़ॉरवर्डिंग को स्वचालित रूप से सक्षम करता है, और गतिशील रूप से ARP पैकेट का निर्माण और भेजता है।
जब मॉड्यूल उपयोगकर्ता द्वारा समाप्त किया जाता है, तो लक्ष्यों की ARP तालिकाओं को रीसेट किया जाता है, ताकि नियंत्रक को एक अस्थिर स्थिति में न छोड़ा जाए (साथ ही, यह करने के लिए अच्छी बात है)।
क्योंकि यह प्रक्रिया नियंत्रक को क्लाइंट और AP के बीच पैकेट-प्रवाह के बीच में रखती है, इसलिए नियंत्रक को सभी डेटा प्रवाह तक पहुंच प्राप्त होती है (उक्त डेटा के संभावित एन्क्रिप्शन से निपटना दूसरी स्क्रिप्ट का काम है)। यहां से, पैकेट-प्रवाह ऑर्केस्ट्रेशन के असंख्य विकल्प स्पष्ट रूप से दिखाई देते हैं: ऑटोमेशन और रेगुलर एक्सप्रेशन के माध्यम से कोड का सरोगेशन, जबरन रीडायरेक्ट, रिमोट एक्सेस, आदि। सौभाग्य से, ब्रूटस इसे भी स्वचालित कर सकता है।
पैकेट स्निफर ARP स्पूफर चलाने के बाद उपयोग करने के लिए एक उत्कृष्ट मॉड्यूल है; यह सभी इंटरसेप्ट किए गए HTTP पैकेटों के डेटा का एक डेटाफ्लो बनाता है जिसमें या तो URL, या संभावित उपयोगकर्ता क्रेडेंशियल शामिल होते हैं।
स्क्रिप्ट विस्तार योग्य है और कई उपलब्ध फिल्टरों में से एक के साथ लिसनर ऑब्जेक्ट को इंस्टेंशिएट करके विभिन्न प्रोटोकॉल को समायोजित कर सकती है। ध्यान दें कि ब्रूटस स्वचालित रूप से HTTPS को डाउनग्रेड करता है, इसलिए जब तक HSTS शामिल न हो, डेटाफ्लो टोही के लिए व्यवहार्य होना चाहिए।
अस्वीकरण: यह सॉफ्टवेयर और इसमें सभी सामग्री केवल शोध उपयोग के लिए बनाई गई थी। मैं न तो उन लोगों के कार्यों का समर्थन करता हूं और न ही किसी भी क्षमता में जिम्मेदारी लेता हूं जो इस सॉफ्टवेयर का दुर्भावनापूर्ण या अन्यथा अवैध तरीके से उपयोग करने का इरादा रख सकते हैं।