
RPC और डिबग ऑब्जेक्ट्स का दुरुपयोग करके UAC बाईपास।
Elevator आपको UAC को बायपास करने और पूर्ण व्यवस्थापक विशेषाधिकारों के साथ एक elevated प्रक्रिया शुरू करने की अनुमति देता है। यह उस RPC सर्वर के व्यवहार का दुरुपयोग करके किया जाता है जो UAC सुविधा को लागू करता है, जैसा कि James Forshaw ने अपने लेख .NET से स्थानीय Windows RPC सर्वरों को कॉल करना में प्रदर्शित किया है। टूल को अतिरिक्त DLL डालने या Windows Registry में लिखने की आवश्यकता नहीं होती (जैसा कि अक्सर अन्य UAC बायपास तकनीकों के मामले में होता है), और इसका सफलतापूर्वक Windows Server 2016, Windows Server 2019, Windows 10 और Windows 11 पर परीक्षण किया गया है (यह संभवतः Windows के अन्य संस्करणों पर भी काम करता है)। लगभग build 19045.3570 के आसपास इसे ठीक कर दिया गया था।
यह टूल एक C++ स्टब से बना है जो टूल को APPINFO सेवा द्वारा उजागर किए गए RPC सर्वर से जोड़ता है, और Rust प्रोजेक्ट से जिसमें मुख्य लॉजिक है जो बग का दुरुपयोग करके UAC को बायपास करने की अनुमति देता है। C++ स्टब IDL फ़ाइल को संकलित करके प्राप्त किया गया है जिसे RPC View ने ID 201ef99a-7fa0-444c-9399-19ba84f12a1a वाले RPC इंटरफ़ेस से बनाया था।
C++ RPC स्टब को एक dll में संकलित किया गया है और इसकी बाइनरी सामग्री को एन्क्रिप्ट करके Rust crate में हार्डकोड किया गया है (crate rpcclient में फ़ंक्शन get_rpc_stub() देखें)। फिर, dll को रनटाइम पर DInvoke_rs का उपयोग करके मैन्युअल रूप से मैप किया जाता है। यदि आप यह प्रक्रिया स्वयं करना चाहते हैं (जो टूल का उपयोग करने के लिए आवश्यक नहीं है), तो RPC_Stub प्रोजेक्ट को Visual Studio 2019+ में खोलें और dll संकलित करें। उसके बाद, रिपॉजिटरी में शामिल script.py (Python 2.7) का उपयोग करके dll की बाइनरी सामग्री से एक hex स्ट्रिंग प्राप्त करें, जिसे फ़ंक्शन 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