
rdpscan CVE-2019-0708 (ब्लूकीप) कमजोरी के लिए
यह माइक्रोसॉफ्ट रिमोट डेस्कटॉप में CVE-2019-0708 कमजोरी के लिए एक जल्दबाजी में बनाया गया स्कैनर है।
अभी, सार्वजनिक इंटरनेट पर लगभग 900,000 मशीनें इस कमजोरी के प्रति संवेदनशील हैं,
इसलिए उम्मीद है कि जल्द ही WannaCry और notPetya जैसा एक वर्म आएगा। इसलिए, अपने नेटवर्क को स्कैन करें और
संवेदनशील सिस्टम पर पैच लगाएं (या कम से कम, NLA सक्षम करें)।
यह एक कमांड-लाइन उपकरण है। आप स्रोत डाउनलोड करके इसे स्वयं संकलित कर सकते हैं,
या ऊपर दिए गए लिंक से विंडोज या macOS के लिए पूर्व-संकलित बाइनरी डाउनलोड कर सकते हैं।
यह उपकरण पूरी तरह से rdesktop पैच पर आधारित है https://github.com/zerosum0x0/CVE-2019-0708।
मैंने कोड को केवल इतना छोटा किया है कि मैं इसे आसानी से macOS और Windows पर संकलित कर सकूं,
साथ ही एकाधिक लक्ष्यों को स्कैन करने की क्षमता जोड़ी है।
स्थिति
यह केवल कुछ दिन पुराना और प्रयोगात्मक है। हालाँकि, मैं पूरे इंटरनेट को स्कैन करके इसका परीक्षण कर रहा हूँ
(masscan की सहायता से), इसलिए मैं बहुत सी समस्याओं से जल्दी निपट रहा हूँ। आप मुझसे ट्विटर (@erratarob) पर संपर्क कर सकते हैं।
- 2019-05-38 - बेहतर आउटपुट परिणाम विवरण, साथ ही उनके अर्थ का दस्तावेज़ीकरण (नीचे देखें)।
- 2019-05-27 - Windows और macOS बाइनरी जारी की गईं (ऊपर बैज पर क्लिक करें)।
- 2019-05-26 - विंडोज नेटवर्किंग समस्याओं को ठीक करना
- 2019-05-25 - Linux और macOS ठीक काम कर रहे हैं, Windows में कुछ नेटवर्क त्रुटियाँ हैं
- 2019-05-24 - Linux और macOS पर काम करता है, Windows में कुछ संकलन बग हैं
- 2019-05-23 - वर्तमान में XCode के अंतर्गत macOS पर काम कर रहा हूँ
प्राथमिक उपयोग
किसी नेटवर्क को स्कैन करने के लिए, इसे इस प्रकार चलाएँ:
rdpscan 192.168.1.1-192.168.1.255
यह प्रत्येक पते के लिए 3 परिणामों में से एक उत्पन्न करता है:
- SAFE - यदि लक्ष्य पैच होने या कम से कम CredSSP/NLA की आवश्यकता होने पर निर्धारित होता है
- VULNERABLE - यदि लक्ष्य की कमजोरी की पुष्टि हो गई है
- UNKNOWN - यदि लक्ष्य प्रतिक्रिया नहीं देता है या कोई प्रोटोकॉल विफलता है
जब लक्ष्य IP पते पर कुछ भी मौजूद नहीं होता है, पुराने संस्करण "UNKNOWN - connection timed out" संदेश प्रिंट करते थे। बड़े नेटवर्क को स्कैन करते समय, यह उन सिस्टमों के बारे में बहुत अधिक जानकारी उत्पन्न करता है जिनकी आपको परवाह नहीं है। इसलिए, नया संस्करण डिफ़ॉल्ट रूप से यह जानकारी नहीं देता है जब तक कि आप कमांड-लाइन पर -v (वर्बोज़) नहीं जोड़ते।
आप कार्यकर्ताओं की संख्या बढ़ाकर बड़े नेटवर्क को स्कैन करने की गति बढ़ा सकते हैं:
rdpscan --workers 10000 10.0.0.0/8
हालाँकि, मेरे कंप्यूटर पर, यह सिस्टम सीमाओं के कारण, इस पैरामीटर को कितना भी उच्च कॉन्फ़िगर करूँ, केवल लगभग 1500 वर्कर ही उत्पन्न करता है।
आप इसे masscan के साथ संयोजन में उपयोग करके और भी गति बढ़ा सकते हैं, जैसा कि नीचे दूसरे में वर्णित है।
परिणामों की व्याख्या
तीन सामान्य प्रतिक्रियाएँ हैं:
- SAFE - जिसका अर्थ है कि लक्ष्य शायद पैच किया गया है या अन्यथा बग के लिए संवेदनशील नहीं है।
- VULNERABLE: जिसका अर्थ है कि हमने पुष्टि की है कि लक्ष्य इस बग के लिए संवेदनशील है, और जब वर्म हमला करेगा, तो संभवतः संक्रमित हो जाएगा।
- UNKNOWN: इसका अर्थ है कि हम किसी भी तरह से पुष्टि नहीं कर सकते, आमतौर पर क्योंकि लक्ष्य प्रतिक्रिया नहीं देता है या RDP नहीं चला रहा है, जो कि अधिकांश प्रतिक्रियाएँ हैं। इसके अलावा, जब लक्ष्य संसाधनों से बाहर होते हैं या नेटवर्क समस्याओं का सामना कर रहे होते हैं, तब भी हमें इनमें से बहुत कुछ मिलता है। अंत में, प्रोटोकॉल त्रुटियाँ भी बहुत सारी जिम्मेदार हैं।
जबकि तीन मुख्य प्रतिक्रियाएँ SAFE, VULNERABLE और UNKNOWN हैं, उनमें निदान की व्याख्या करने वाला अतिरिक्त पाठ होता है। यह खंड उन विभिन्न स्ट्रिंग्स का वर्णन करता है जो आप देखेंगे।
SAFE
हमारे विचार में तीन मुख्य कारण हैं कि लक्ष्य सुरक्षित है:
- SAFE - Target appears patched
यह तब होता है जब लक्ष्य ट्रिगरिंग अनुरोध का जवाब नहीं देता है। इसका मतलब है कि यह एक विंडोज सिस्टम है जिसे पैच किया गया है, या एक ऐसा सिस्टम है जो शुरू से ही संवेदनशील नहीं था, जैसे Windows 10 या Unix।
- SAFE - CredSSP/NLA required
इसका मतलब है कि RDP कनेक्शन स्थापित होने से पहले लक्ष्य को पहले नेटवर्क स्तर प्रमाणीकरण की आवश्यकता होती है। उपकरण वैध क्रेडेंशियल्स के बिना इस बिंदु को पार नहीं कर सकता है, इसलिए यह निर्धारित नहीं कर सकता कि लक्ष्य को पैच किया गया है या नहीं। हालाँकि, हैकर्स भी संवेदनशील सिस्टमों का शोषण करने के लिए इस बिंदु को पार नहीं कर सकते हैं, इसलिए आप शायद "सुरक्षित" हैं। हालाँकि, जब शोषण सामने आते हैं, तो वैध उपयोगकर्ता नाम/पासवर्ड वाले अंदरूनी लोग सिस्टम का शोषण करने में सक्षम होंगे यदि वह अपैच्ड है।
- SAFE - not RDP
इसका मतलब है कि सिस्टम RDP नहीं है, बल्कि कोई अन्य सेवा है जो इसी पोर्ट का उपयोग करती है, और एक प्रतिक्रिया उत्पन्न करती है जो स्पष्ट रूप से RDP नहीं है। सामान्य उदाहरण HTTP और SSH हैं। ध्यान दें कि एक पहचान योग्य प्रोटोकॉल के बजाय, एक सर्वर RST या FIN पैकेट के साथ प्रतिक्रिया कर सकता है। इन्हें SAFE के बजाय UNKNOWN के रूप में पहचाना जाता है।
VULNERABLE
इसका मतलब है कि हमने पुष्टि की है कि सिस्टम इस बग के लिए संवेदनशील है।
- VULNERABLE - got appid
जब सिस्टम संवेदनशील होता है, तो केवल एक ही प्रतिक्रिया होती है, यही।
UNKNOWN
अज्ञात के लिए अनगिनत विविधताएँ हैं
- UNKNOWN - no connection - timeout
यह अब तक की सबसे आम प्रतिक्रिया है, और तब होती है जब लक्ष्य IP पता कोई प्रतिक्रिया नहीं देता है। वास्तव में, यह इतना सामान्य है कि बड़े पतों की श्रेणियों को स्कैन करते समय इसे आमतौर पर छोड़ दिया जाता है। इसे सक्षम करने के लिए आपको -v (वर्बोज़) फ़्लैग जोड़ना होगा।
- UNKNOWN - no connection - refused (RST)
यह अब तक की दूसरी सबसे आम प्रतिक्रिया है, और तब होती है जब लक्ष्य मौजूद होता है और नेटवर्क ट्रैफ़िक का जवाब देता है, लेकिन RDP नहीं चला रहा है, इसलिए TCP RST पैकेट के साथ कनेक्शन को अस्वीकार कर देता है।
- UNKNOWN - RDP protocol error - receive timeout
यह तीसरी सबसे आम प्रतिक्रिया है, और तब होती है जब हम सफलतापूर्वक एक RDP कनेक्शन स्थापित कर चुके होते हैं, लेकिन फिर सर्वर हमें जवाब देना बंद कर देता है। यह नेटवर्क त्रुटियों और जब लक्ष्य सिस्टम किसी कारण से ओवरलोड होता है, के कारण होता है। यह इस छोर पर नेटवर्क त्रुटियाँ भी हो सकता है, जैसे जब आप एक NAT के पीछे हैं और इसे बहुत अधिक कनेक्शनों से ओवरलोड कर रहे हैं।
- UNKNOWN - no connection - connection closed
इसका मतलब है कि हमने एक कनेक्शन स्थापित किया है (TCP SYN-ACK), लेकिन फिर कनेक्शन तुरंत बंद कर दिया जाता है (RST या FIN के साथ)। ऐसे कई कारण हैं जिनसे ऐसा होता है, जिन्हें हम अलग नहीं कर सकते:
- यह RDP चला रहा है, लेकिन किसी कारण से कनेक्शन बंद कर देता है, संभवतः क्योंकि यह संसाधनों से बाहर है।
- यह RDP नहीं है, और हमारे द्वारा भेजे गए RDP अनुरोध को पसंद नहीं करता है, इसलिए हमें एक अच्छा त्रुटि संदेश भेजने के बजाय (जो SAFE - not RDP को ट्रिगर करेगा), यह अचानक कनेक्शन बंद कर देता है।
- कोई हस्तक्षेप करने वाला उपकरण, जैसे IPS, फ़ायरवॉल या NAT, ने कनेक्शन बंद कर दिया क्योंकि उसने इसे शत्रुतापूर्ण पहचाना, या संसाधन खत्म हो गए।
- कोई अन्य कारण जिसकी मैंने पहचान नहीं की है, जब मैं इंटरनेट को स्कैन करता हूँ तो बहुत सी अजीब चीजें होती हैं।
- UNKNOWN - no connection - host unreachable (ICMP error)
दूरस्थ नेटवर्क रिपोर्ट करता है कि होस्ट तक नहीं पहुंचा जा सकता या वह चल नहीं रहा है। यदि आपको लगता है कि होस्ट को चालू होना चाहिए, तो बाद में पुनः प्रयास करें।
- UNKNOWN - no connection - network unreachable (ICMP error)