
Windows - विशेषाधिकार प्राप्त फ़ाइल लेखन को Update Session Orchestrator सेवा के साथ हथियार बनाना
⚠️ 2020-06-06 अपडेट: यह ट्रिक अब Windows 10 इनसाइडर प्रीव्यू के नवीनतम बिल्ड्स पर काम नहीं करती। इसका मतलब है कि, हालाँकि यह अभी भी Windows 10 के मुख्यधारा संस्करण पर काम करता है, आपको उम्मीद करनी चाहिए कि आने वाले महीनों में इसे पैच किया जाएगा।
यह PoC एक तकनीक दिखाता है जिसका उपयोग Windows पर विशेषाधिकार प्राप्त फ़ाइल लिखने की कमजोरियों को हथियार बनाने के लिए किया जा सकता है। यह DiagHub DLL लोडिंग "एक्सप्लॉइट" का एक विकल्प प्रदान करता है जिसे James Forshaw (उर्फ @tiraniddo) ने खोजा था, जिसे Microsoft ने बिल्ड संस्करण 1903 से शुरू करके ठीक कर दिया था।
Windows 10 से शुरू करके, Microsoft ने अपडेट सत्र ऑर्केस्ट्रेटर सेवा शुरू की। एक सामान्य उपयोगकर्ता के रूप में, आप COM का उपयोग करके इस सेवा के साथ बातचीत कर सकते हैं, और "अपडेट स्कैन" शुरू कर सकते हैं (यानी जांचें कि अपडेट उपलब्ध हैं या नहीं) या लंबित अपडेट का डाउनलोड शुरू कर सकते हैं। इस उद्देश्य के लिए usoclient.exe नामक एक अनिर्दिष्ट अंतर्निहित उपकरण भी है।
एक हमलावर के दृष्टिकोण से, यह सेवा दिलचस्प है क्योंकि यह NT AUTHORITY\System के रूप में चलती है और जब भी कोई अपडेट सत्र बनाया जाता है तो यह एक गैर-मौजूद DLL (windowscoredeviceinfo.dll) को लोड करने का प्रयास करती है।
इसका मतलब यह है कि, अगर हमें Windows या किसी तीसरे पक्ष के सॉफ़्टवेयर में एक विशेषाधिकार प्राप्त फ़ाइल लिखने की कमजोरी मिलती है, तो हम अपने स्वयं के संस्करण windowscoredeviceinfo.dll को C:\Windows\Sytem32\ में कॉपी कर सकते हैं और फिर इसे USO सेवा द्वारा लोड करवा सकते हैं ताकि NT AUTHORITY\System के रूप में मनमाना कोड निष्पादन प्राप्त कर सकें।
अधिक जानकारी के लिए:
भाग 1 - https://itm4n.github.io/usodllloader-part1/
भाग 2 - https://itm4n.github.io/usodllloader-part2/
यह समाधान दो परियोजनाओं से बना है: WindowsCoreDeviceInfo और UsoDllLoader।
यह एक PoC DLL प्रदान करता है जो जब भी QueryDeviceInformation() फ़ंक्शन कहा जाता है, पोर्ट 1337 (केवल लोकलहोस्ट) पर एक बाइंड शेल शुरू करेगा। यह USO वर्कर्स द्वारा उपयोग किए जाने वाले फ़ंक्शन का नाम है।
यह usoclient.exe का एक छोटा संस्करण है। इसे USO सेवा के साथ बातचीत करने और windowscoredeviceinfo.dll को लोड करवाने के लिए एक सामान्य उपयोगकर्ता के रूप में चलाया जा सकता है। फिर, यह बाइंड शेल से कनेक्ट करने का प्रयास करेगा। त्रुटियों के मामले में, कृपया "ज्ञात समस्याएं" अनुभाग पढ़ें।
समाधान पहले से कॉन्फ़िगर किया गया है ताकि संकलन करना आसान हो। मैं विज़ुअल स्टूडियो 2019 का उपयोग कर रहा हूँ। यह पुराने संस्करणों के साथ काम नहीं कर सकता।
रिलीज़ कॉन्फिग और x64 आर्किटेक्चर चुनें।.\x64\Release\WindowsCoreDeviceInfo.dll और लोडर .\x64\Release\UsoDllLoader.exe।परीक्षण उद्देश्यों के लिए, आप यह कर सकते हैं:
WindowsCoreDeviceInfo.dll को C:\Windows\System32\ में कॉपी करें।NT AUTHORITY\SYSTEM के रूप में एक शेल का आनंद लें।यदि UsoDllLoader.exe विफल हो जाता है, तो आप उपरोक्त मैन्युअल रूप से कर सकते हैं।
WindowsCoreDeviceInfo.dll को C:\Windows\System32\ में कॉपी करें।usoclient StartInteractiveScan का उपयोग करें। ध्यान दें कि आपको कमांड से कोई प्रतिक्रिया नहीं मिलेगी।nc.exe 127.0.0.1 1337 का उपयोग करें।यह विधि संभवतः विफल हो जाएगी यदि एक या अधिक अपडेट स्थापित होने की प्रतीक्षा कर रहे हों, या यदि अपडेट स्थापित किए जा रहे हों।
Windows के संस्करण के आधार पर, UsoDllLoader.exe विभिन्न त्रुटि कोडों के साथ विफल हो सकता है। मैंने इन मुद्दों की अधिक जांच नहीं की। इसका कारण यह है कि यह केवल एक PoC है, जिसे मैंने सुविधा के लिए विकसित किया है। सबसे महत्वपूर्ण चीज DLL है, लोडर नहीं। अधिक विवरण के लिए "उपयोग 2" देखें।