
تجاوز UAC عن طريق استغلال RPC وكائنات التصحيح.
تتيح Elevator تجاوز UAC وإطلاق عملية مرتفعة الصلاحيات بامتيازات مسؤول كاملة. يتم ذلك عبر إساءة استخدام سلوك خادم RPC الذي ينفّذ ميزة UAC، كما وضح James Forshaw في مقالته استدعاء خوادم Windows RPC المحلية من .NET. لا تتطلب الأداة إفلات مكتبة DLL إضافية أو الكتابة إلى سجل Windows (كما هو الحال غالبًا مع تقنيات تجاوز UAC الأخرى)، وقد تم اختبارها بنجاح على Windows Server 2016 وWindows Server 2019 وWindows 10 وWindows 11 (من المحتمل أنها تعمل على إصدارات أخرى من Windows). تم الإصلاح في وقتٍ ما حول البناء 19045.3570).
تتكون الأداة من كعب C++ يربط الأداة نفسها بخادم RPC الذي تعرّضه خدمة APPINFO، ومشروع Rust الذي يحتوي على المنطق الرئيسي الذي يتيح إساءة استخدام الثغرة وتجاوز UAC. تم الحصول على كعب C++ من تجميع ملف IDL الذي أنشأه RPC View من واجهة RPC بالمعرف 201ef99a-7fa0-444c-9399-19ba84f12a1a.
تم تجميع كعب RPC المكتوب بـ C++ إلى ملف dll وتم تشفير محتواه الثنائي وتضمينه بشكل ثابت في كريت Rust (انظر إلى الدالة get_rpc_stub() في كريت rpcclient). بعد ذلك، يتم تعيين ملف dll يدويًا في وقت التشغيل باستخدام DInvoke_rs. إذا كنت تريد تنفيذ هذه العملية بنفسك (وهو أمر غير مطلوب لاستخدام الأداة)، فقط افتح مشروع RPC_Stub في Visual Studio 2019+ وقم بتجميع ملف dll. بعد ذلك، استخدم script.py (Python 2.7) المرفق في المستودع للحصول على سلسلة hex من المحتوى الثنائي لملف dll، ويجب وضع هذه السلسلة في الدالة rppclient::get_rpc_stub().
صالحة فقط لأنظمة x64.
بما أننا نستخدم إضافة LITCRYPT لتعتيم النصوص الحرفية، يلزم إعداد متغير البيئة LITCRYPT_ENCRYPT_KEY قبل تجميع الكود:
C:\Users\User\Desktop\Elevator> set LITCRYPT_ENCRYPT_KEY="yoursupersecretkey"
بعد ذلك، انتقل إلى مجلد Elevator وقم بتجميع الكود ببساطة:
C:\Users\User\Desktop\Elevator\Elevator> cargo build --release
C:\Users\User\Desktop\Elevator\Elevator\target\release> elevator.exe -h
USAGE:
elevator.exe <COMMAND> [OPTIONS]
ARGS:
<COMMAND> Command line to run.
OPTIONS:
-h, --help Print help information.
-n, --new-console Set CREATE_NEW_CONSOLE flag for the new process.
C:\Temp> elevator.exe c:\windows\system32\cmd.exe --new-console
C:\Temp> elevator.exe "c:\windows\system32\cmd.exe /C whoami /groups > file.txt" --new-console