CVE-2020-1350 (SIGRed) - विंडोज DNS DoS शोषण
बग का श्रेय पूरी तरह से Check Point Research (@_cpresearch_) को जाता है जिन्होंने इस बग का एक अविश्वसनीय विवरण लिखा (पोस्ट के लिए @sagitz_ को सलाम) उनका विवरण यहाँ पाया जा सकता है।
यह शोषण @maxpl0it द्वारा लिखा गया था
यह कैसे काम करता है इसका त्वरित सारांश:
- LAN पर आप एक DNS अनुरोध (अधिक विशेष रूप से, SIG रिकॉर्ड्स के लिए एक अनुरोध) एक दुष्ट डोमेन (उदाहरण के लिए 9.evil_domain.com) के लिए ट्रिगर करते हैं
- यह कमजोर विंडोज सर्वर के DNS सर्वर को भेजा जाता है
- कमजोर सर्वर उस DNS को अनुरोध भेजता है जिसे वह अनुरोध अग्रेषित करता है (आमतौर पर मानक Google IPs)
- Google DNS दुष्ट डोमेन के लिए नेमसर्वर्स के साथ उत्तर देता है
- कमजोर सर्वर तब DNS क्लाइंट के रूप में कार्य करता है और दुष्ट DNS सर्वर को एक अनुरोध भेजता है
- दुष्ट सर्वर एक पेलोड के साथ उत्तर देता है जो 2-बाइट संख्या को ओवरफ्लो करता है, जिससे आवश्यकता से छोटा आवंटन होता है
- हस्ताक्षर कॉपी हो जाता है और चीजें टूट जाती हैं (बेशक), कमजोर सर्वर के DNS सर्वर को क्रैश कर देता है
General Setup:
- इस शोषण के लिए आपको अपने सर्वर की ओर इशारा करते हुए अपने स्वयं के नेमसर्वर्स के साथ एक डोमेन स्थापित करना होगा।
- सर्वर सेट करें और इस स्क्रिप्ट को चलाएं। यह TCP और UDP दोनों पर पोर्ट 53 पर सुनेगा।
- यदि आपको यह कहते हुए त्रुटि मिलती है कि पोर्ट व्यस्त हैं, तो यह पता लगाने के लिए netstat -pa का उपयोग करें कि डोमेन पोर्ट पर क्या सुन रहा है (शायद systemd-resolved) और इसे अक्षम + बंद करें। यदि सर्वर पर कुछ भी नहीं सुन रहा है, तो सुनिश्चित करें कि आपने पुनः चलाने से पहले इस स्क्रिप्ट के सभी उदाहरणों को मार दिया है।
उदाहरण के लिए, मैंने दुर्भावनापूर्ण DNS सर्वर शुरू करने के लिए python sigred_dos.py ibrokethe.net चलाया
Testing Setup:
- यदि आपके पास विंडोज सर्वर तक पहुंच है, तो आप ibrokethe.net को स्क्रिप्ट चलाने वाले होस्ट के IP पते पर इंगित करने के लिए एक सशर्त फॉरवर्डर कॉन्फ़िगर कर सकते हैं। यह प्रभावी रूप से सारांश में चरण 3 और 4 को छोड़ देता है।
Execution:
- विंडोज DNS सर्वर पर भेद्यता को ट्रिगर करने के लिए,
nslookup -type=sig 9.your_domain_name_here dns_server_to_target चलाएं
- सबडोमेन '9' वास्तव में यहां आवश्यक है। इसके लिए आपको कोई डोमेन रिकॉर्ड परिवर्तन करने की आवश्यकता नहीं है क्योंकि स्क्रिप्ट इससे निपटती है।
- एक उदाहरण के रूप में: मैंने
nslookup -type=sig 9.ibrokethe.net 127.0.0.1 चलाया क्योंकि मैं इसे सर्वर पर चला रहा था।