
CVE-2016-6210 के अनुसार उपयोगकर्ता नामों की गणना के लिए लिखा गया कस्टम एक्सप्लॉइट
CVE-2016-6210 (OpenSSH 7.2-p2 एवं उससे पहले) के अनुसार उपयोगकर्ता नामों को सूचीबद्ध करने के लिए कस्टम एक्सप्लॉइट (पायथन 2.7)
केवल अधिकृत प्रणालियों पर प्रयोग किया जाना चाहिए
मैंने इस प्रोग्राम को CVE-2016-6210 के शोषण के लिए एक उपकरण के रूप में लिखा है, जो OpenSSH (संस्करण 7.3 से पहले) में एक कमजोरी है एडी हरारी द्वारा प्रकट
मेरी समझ के अनुसार, समस्या यह है कि इन संस्करणों में OpenSSH के कार्य करने का तरीका ऐसा था कि जब एक बड़ा पासवर्ड (इस मामले में 25kb) दिया जाता है, तो हैशिंग प्रसंस्करण समय के कारण हम यह बता सकते हैं कि उपयोगकर्ता नाम मौजूद है या नहीं, क्योंकि वैध उपयोगकर्ताओं के लिए समय अधिक होता है।
यह प्रोग्राम इस कमजोरी का शोषण करने में मदद करता है, जिससे उपयोगकर्ता कई उपयोगकर्ता नाम (एक वर्डलिस्ट से) भेज सकता है और यह पता लगा सकता है कि उन्हें प्रसंस्करण करने में कितना समय लगा। उपयोगकर्ता अपने लिए उपयुक्त समय के लिए एक अलर्ट सेट कर सकता है, और यदि प्रसंस्करण समय इससे अधिक होता है, तो समय और उपयोगकर्ता नाम प्रदर्शित किया जाएगा।
उपयोगकर्ता अंत में आईपी या ईमेल भी जोड़ सकता है ताकि सूची में आइटम और बिना ईमेल जोड़ के दोनों का परीक्षण किया जा सके। डिफ़ॉल्ट रूप से, (यदि कोई जोड़ नहीं दिया गया है) प्रोग्राम वर्डलिस्ट में प्रत्येक शब्द का शब्द और शब्द@आईपी रूपों में परीक्षण करेगा। यदि कोई जोड़ दिया गया है, तो वही करेगा, लेकिन शब्द@आईपी को शब्द@जोड़ से बदल दिया जाएगा।
प्रत्येक शब्द को भेजने और प्रतिक्रिया के समय की संख्या को अनुकूलित किया जा सकता है, और प्रोग्राम स्वचालित रूप से एक औसत प्रसंस्करण समय उत्पन्न करेगा जिसका उपयोग विश्वसनीयता के लिए व्यक्तिगत समय के बजाय किया जाएगा।
एक विलंब भी प्रदान किया जा सकता है, जो प्रोग्राम को बहुत अधिक अनुरोध जल्दी भेजने से रोकता है।
जहां तक ssh अनुरोध कोड का सवाल है, cveCode.py में अधिकांश कोड का श्रेय एडी हरारी को जाता है: हरारी के कोड का एक संशोधित संस्करण भेजने और समय की गणना के लिए उपयोग किया जाता है। उनकी सलाह और नमूना कोड यहाँ पाया जा सकता है।
नोट: मेरे कोड का केवल OpenSSH-7.2p2 पर ब्लैक-बॉक्स परीक्षण किया गया है (क्लाइंट काली लिनक्स है), और अधिक परीक्षण की आवश्यकता है। परिणाम और पैरामीटर उपयोगकर्ता द्वारा नियंत्रित और व्याख्या किए जाते हैं
python exploit_6210.py IP_ADDRESS [-h] [-a ALERT] [-w WORDLIST] [-e EMAIL] [-av ITERATE_AMOUNT] [-d DELAY]
जहाँ:
IP_ADDRESS वह होस्ट है जिसके विरुद्ध आप प्रोग्राम का परीक्षण कर रहे हैं
-a ALERT (वैकल्पिक, डिफ़ॉल्ट 0.1 है) वह समय (सेकंड में) है जिसके लिए आप एक अलर्ट चाहते हैं यदि प्रसंस्करण समय इससे बड़ा हो
-w WORDLIST (वैकल्पिक, डिफ़ॉल्ट usernamelist है) उन उपयोगकर्ता नामों की सूची का फ़ाइल पथ है जिनका आप होस्ट के विरुद्ध परीक्षण करना चाहते हैं
-e EMAIL (वैकल्पिक) वह आईपी या ईमेल (जो इस प्रकार दिखना चाहिए: @IP_ADDRESS या @email.com) जोड़ है जिसे आप वर्डलिस्ट में प्रत्येक तत्व के अंत में जोड़ने का प्रयास करना चाहते हैं (ध्यान दें कि आइटम और आइटम + ईमेल दोनों का प्रयास किया जाएगा)
-av ITERATE_AMOUNT (वैकल्पिक, डिफ़ॉल्ट 1 है) प्रत्येक दिए गए उपयोगकर्ता नाम के लिए ssh सर्वर से पूछताछ करने की संख्या है, जो अधिक विश्वसनीय औसत समय के उपयोग की अनुमति देता है (संख्या जितनी अधिक होगी, समय उतना ही अधिक लगेगा, बहुत अधिक)
-d DELAY (वैकल्पिक, डिफ़ॉल्ट 0.5 है) प्रत्येक अनुरोध के बीच लगभग विलंब (सेकंड में) है (संख्या जितनी अधिक होगी, समय उतना ही अधिक लगेगा, बहुत अधिक)