
यूज़रलैंड एक्सप्लॉइट के साथ PPL की मेमोरी डंप करें
⚠️ 2022-07-24 - Windows 10 21H2 10.0.19044.1826 (जुलाई 2022 अपडेट) के अनुसार, PPLdump में लागू किया गया शोषण अब काम नहीं करता। NTDLL में एक पैच अब PPLs को Known DLLs लोड करने से रोकता है। अधिक जानकारी यहाँ।
यह उपकरण एक यूज़रलैंड शोषण को लागू करता है जिसे मूल रूप से जेम्स फोरशॉ (उर्फ @tiraniddo) ने इस ब्लॉग पोस्ट में किसी भी PPL की मेमोरी डंप करने के लिए एक व्यवस्थापक के रूप में चर्चा किया था।
मैंने इस उपकरण के बारे में दो ब्लॉग पोस्ट लिखे। पहला भाग संरक्षित प्रक्रियाओं (Protected Processes) की अवधारणाओं के बारे में है जबकि दूसरा बायपास तकनीक पर चर्चा करता है।
बिना किसी तर्क के निष्पादन योग्य चलाएं और आपको विस्तृत सहायता/उपयोग मिलेगा।
c:\Temp>PPLdump64.exe
_____ _____ __ _
| _ | _ | | _| |_ _ _____ ___
| __| __| |__| . | | | | . | version 0.4
|__| |__| |_____|___|___|_|_|_| _| by @itm4n
|_|
Description:
Dump the memory of a Protected Process Light (PPL) with a *userland* exploit
Usage:
PPLdump.exe [-v] [-d] [-f] <PROC_NAME|PROC_ID> <DUMP_FILE>
Arguments:
PROC_NAME The name of a Process to dump
PROC_ID The ID of a Process to dump
DUMP_FILE The path of the output dump file
Options:
-v (Verbose) Enable verbose mode
-d (Debug) Enable debug mode (implies verbose)
-f (Force) Bypass DefineDosDevice error check
Examples:
PPLdump.exe lsass.exe lsass.dmp
PPLdump.exe -v 720 out.dmp
सबसे पहले, PPLs को Windows 8.1 के साथ पेश किया गया था, इसलिए Windows के पुराने संस्करण स्पष्ट रूप से समर्थित नहीं हैं। यह प्रोजेक्ट मुख्य रूप से Windows 10 (और इसके सर्वर संस्करण) को लक्षित करता है, लेकिन मैंने इसे पुराने संस्करणों पर भी परीक्षण किया है। आपको मेरे द्वारा किए गए परीक्षणों की सारांश तालिका उसी नाम के अनुभाग में मिलेगी।
अन्य PPL बायपास उपकरण आमतौर पर डिजिटल रूप से हस्ताक्षरित ड्राइवर के माध्यम से कर्नेल में मनमाना कोड निष्पादित करते हैं। यह अलग है क्योंकि इसमें केवल यूज़रलैंड ट्रिक्स शामिल हैं और यह (लगभग) फ़ाइल रहित है।
यह उपकरण एक बहुत ही चतुर चाल का लाभ उठाता है जिसे मूल रूप से 2018 में जेम्स फोरशॉ द्वारा चर्चा किया गया था (क्रेडिट देखें)। इसमें सिस्टम को एक मनमाना Known DLL प्रविष्टि बनाने के लिए DefineDosDevice API फ़ंक्शन का उपयोग शामिल है। चूंकि PPLs Known DLLs की डिजिटल हस्ताक्षर की जांच नहीं करते हैं, इसका उपयोग बाद में DLL अपहरण हमला करने और PPL के अंदर मनमाना कोड निष्पादित करने के लिए किया जा सकता है।
हालांकि यह उपकरण दूसरे चरण के रूप में DLL अपहरण हमला करता है, यह डिस्क पर एक नई DLL फ़ाइल नहीं बनाता है। इसके बजाय, यह मौजूदा DLL की सामग्री को आभासी रूप से बदलने के लिए NTFS लेन-देन का उपयोग करता है, यह तकनीक सीधे @_ForrestOrr के काम से प्रेरित है (क्रेडिट देखें)।
संक्षिप्त उत्तर है "नहीं"। पहली बात, इसमें कोई सीधा कर्नेल एक्सेस शामिल नहीं है, इसलिए इस दृष्टिकोण से BSOD होने का कोई जोखिम नहीं है। सबसे खराब स्थिति में, उपकरण बनाई गई Known DLL प्रविष्टि को हटाने में विफल हो सकता है, लेकिन इससे सेवा से इनकार नहीं होगा। यह अगले मशीन रीबूट तक वहीं रहेगी। चूंकि बनाई गई प्रविष्टि केवल एक प्रतीकात्मक लिंक होगी जो एक गैर-मौजूद अनुभाग की ओर इशारा करती है, सिस्टम अंततः डिफ़ॉल्ट स्थान (यानी System32 फ़ोल्डर) पर वापस आ जाएगा, इसलिए यह मशीन पर चलने वाले अन्य कार्यक्रमों को प्रभावित नहीं करेगा।
⚠️ पूरी तरह से अपडेटेड Windows 8.1 / Server 2012 R2 मशीनों पर शोषण विफल हो जाता है। मुझे अभी तक पता नहीं चला है कि किस पैच ने यह त्रुटि उत्पन्न की।
[-] DefineDosDevice failed with error code 6 - The handle is invalid.
⚠️ Windows 8.1 / Server 2012 R2 पर, आपको बाइनरी को स्थिर रूप से संकलित करना पड़ सकता है (नीचे "निर्माण निर्देश" देखें)।
इस Visual Studio समाधान में दो प्रोजेक्ट हैं (निष्पादन योग्य और एक पेलोड DLL) जिन्हें एक विशिष्ट क्रम में संकलित करने की आवश्यकता है। सब कुछ पूर्व-कॉन्फ़िगर किया गया है, इसलिए आपको बस इन सरल निर्देशों का पालन करना होगा। संकलित पेलोड DLL स्वचालित रूप से अंतिम निष्पादन योग्य में एम्बेड हो जाता है।
Release / x64 या Release / x86 चुनें।Build > Build Solution।Windows 8.1 / Server 2012 R2 पर, आपको बाइनरी को स्थिर रूप से संकलित करना पड़ सकता है।
PPLdump प्रोजेक्ट पर राइट-क्लिक करें।Configuration Properties > C/C++ > Code Generation पर जाएं।Runtime Library विकल्प के रूप में Multi-threaded (/MT) चुनें।| Windows संस्करण | बिल्ड | एडिशन | आर्क | व्यवस्थापक | SYSTEM |
|---|
| Windows 10 20H2 | 19042 | Pro | x64 | ✔️ | ✔️ |
| Windows 10 20H2 | 19042 | Pro | x86 | ✔️ | ✔️ |
| Windows 10 1909 | 18363 | Pro | x64 | ✔️ | ✔️ |
| Windows 10 1507 | 10240 | Educational | x64 | ✔️ | ✔️ |
| Windows 10 1507 | 10240 | Home | x64 | ✔️ | ✔️ |
| Windows 10 1507 | 10240 | Pro | x64 | ✔️ | ✔️ |
| Windows Server 2019 | 17763 | Standard | x64 | ✔️ | ✔️ |
| Windows Server 2019 | 17763 | Essentials | x64 | ✔️ | ✔️ |
| Windows 8.1 | 9600 | Pro | x64 | ⚠️ | ⚠️ |
| Windows Server 2012 R2 | 9600 | Standard | x64 | ⚠️ | ⚠️ |