UAC - User Account Control
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
User Account Control (UAC) एक विशेषता है जो उच्च गतिविधियों के लिए सहमति संकेत सक्षम करती है। अनुप्रयोगों के विभिन्न integrity
स्तर होते हैं, और एक उच्च स्तर वाला कार्यक्रम उन कार्यों को करने में सक्षम होता है जो संभवतः सिस्टम को खतरे में डाल सकते हैं। जब UAC सक्षम होता है, अनुप्रयोग और कार्य हमेशा गैर-प्रशासक खाते के सुरक्षा संदर्भ में चलते हैं जब तक कि एक प्रशासक स्पष्ट रूप से इन अनुप्रयोगों/कार्य को सिस्टम पर प्रशासक स्तर की पहुंच देने के लिए अधिकृत नहीं करता। यह एक सुविधा है जो प्रशासकों को अनपेक्षित परिवर्तनों से बचाती है लेकिन इसे सुरक्षा सीमा नहीं माना जाता है।
अखंडता स्तरों के बारे में अधिक जानकारी के लिए:
Integrity Levelsजब UAC लागू होता है, तो एक प्रशासक उपयोगकर्ता को 2 टोकन दिए जाते हैं: एक मानक उपयोगकर्ता कुंजी, नियमित स्तर के रूप में नियमित क्रियाएँ करने के लिए, और एक प्रशासक विशेषाधिकार के साथ।
यह पृष्ठ UAC के काम करने के तरीके पर गहराई से चर्चा करता है और लॉगिन प्रक्रिया, उपयोगकर्ता अनुभव, और UAC आर्किटेक्चर को शामिल करता है। प्रशासक सुरक्षा नीतियों का उपयोग करके यह कॉन्फ़िगर कर सकते हैं कि UAC उनके संगठन के लिए स्थानीय स्तर पर कैसे काम करता है (secpol.msc का उपयोग करके), या Active Directory डोमेन वातावरण में समूह नीति वस्तुओं (GPO) के माध्यम से कॉन्फ़िगर और धकेल सकते हैं। विभिन्न सेटिंग्स के बारे में विस्तार से चर्चा की गई है यहाँ। UAC के लिए सेट की जा सकने वाली 10 समूह नीति सेटिंग्स हैं। निम्नलिखित तालिका अतिरिक्त विवरण प्रदान करती है:
FilterAdministratorToken
Disabled
EnableUIADesktopToggle
Disabled
ConsentPromptBehaviorAdmin
Prompt for consent for non-Windows binaries
ConsentPromptBehaviorUser
Prompt for credentials on the secure desktop
EnableInstallerDetection
Enabled (default for home) Disabled (default for enterprise)
ValidateAdminCodeSignatures
Disabled
EnableSecureUIAPaths
Enabled
PromptOnSecureDesktop
Enabled
EnableVirtualization
Enabled
कुछ कार्यक्रम स्वचालित रूप से उच्च स्तर पर उपयोगकर्ता समूह से संबंधित होने पर स्वचालित रूप से उच्चीकृत होते हैं। इन बाइनरी में उनके Manifests के अंदर autoElevate विकल्प होता है जिसका मान True होता है। बाइनरी को Microsoft द्वारा हस्ताक्षरित होना चाहिए।
फिर, UAC को बायपास करने के लिए (उच्चीकृत करना मध्यम अखंडता स्तर से उच्च पर) कुछ हमलावर इस प्रकार की बाइनरी का उपयोग करते हैं ताकि वे मनमाने कोड को निष्पादित कर सकें क्योंकि इसे उच्च स्तर की अखंडता प्रक्रिया से निष्पादित किया जाएगा।
आप sigcheck.exe उपकरण का उपयोग करके बाइनरी के Manifest की जांच कर सकते हैं। और आप Process Explorer या Process Monitor (Sysinternals के) का उपयोग करके प्रक्रियाओं के अखंडता स्तर को देख सकते हैं।
UAC सक्षम है या नहीं, इसकी पुष्टि करने के लिए करें:
यदि यह 1
है तो UAC सक्रिय है, यदि यह 0
है या यह मौजूद नहीं है, तो UAC निष्क्रिय है।
फिर, कौन सा स्तर कॉन्फ़िगर किया गया है, इसकी जांच करें:
यदि 0
है, तो UAC संकेत नहीं देगा (जैसे अक्षम)
यदि 1
है, तो व्यवस्थापक से उपयोगकर्ता नाम और पासवर्ड पूछा जाएगा उच्च अधिकारों के साथ बाइनरी निष्पादित करने के लिए (सुरक्षित डेस्कटॉप पर)
यदि 2
है (हमेशा मुझे सूचित करें) UAC हमेशा व्यवस्थापक से पुष्टि मांगेगा जब वह उच्च विशेषाधिकारों के साथ कुछ निष्पादित करने की कोशिश करेगा (सुरक्षित डेस्कटॉप पर)
यदि 3
है, तो 1
की तरह लेकिन सुरक्षित डेस्कटॉप पर आवश्यक नहीं
यदि 4
है, तो 2
की तरह लेकिन सुरक्षित डेस्कटॉप पर आवश्यक नहीं
यदि 5
है (डिफ़ॉल्ट) तो यह व्यवस्थापक से पुष्टि मांगेगा कि उच्च विशेषाधिकारों के साथ गैर-विंडोज बाइनरी चलाने के लिए
फिर, आपको LocalAccountTokenFilterPolicy
के मान पर ध्यान देना होगा
यदि मान 0
है, तो केवल RID 500 उपयोगकर्ता (बिल्ट-इन व्यवस्थापक) UAC के बिना प्रशासनिक कार्य कर सकता है, और यदि इसका 1
है, तो "Administrators" समूह के सभी खाते ऐसा कर सकते हैं।
और, अंत में FilterAdministratorToken
कुंजी के मान पर ध्यान दें
यदि 0
(डिफ़ॉल्ट), तो बिल्ट-इन व्यवस्थापक खाता दूरस्थ प्रशासनिक कार्य कर सकता है और यदि 1
है, तो बिल्ट-इन खाता व्यवस्थापक दूरस्थ प्रशासनिक कार्य नहीं कर सकता, जब तक LocalAccountTokenFilterPolicy
को 1
पर सेट नहीं किया गया है।
यदि EnableLUA=0
या मौजूद नहीं है, किसी के लिए भी UAC नहीं
यदि EnableLua=1
और LocalAccountTokenFilterPolicy=1
, किसी के लिए भी UAC नहीं
यदि EnableLua=1
और LocalAccountTokenFilterPolicy=0
और FilterAdministratorToken=0
, RID 500 (बिल्ट-इन व्यवस्थापक) के लिए कोई UAC नहीं
यदि EnableLua=1
और LocalAccountTokenFilterPolicy=0
और FilterAdministratorToken=1
, सभी के लिए UAC
यह सभी जानकारी metasploit मॉड्यूल का उपयोग करके एकत्र की जा सकती है: post/windows/gather/win_privs
आप अपने उपयोगकर्ता के समूहों की भी जांच कर सकते हैं और अखंडता स्तर प्राप्त कर सकते हैं:
ध्यान दें कि यदि आपके पास पीड़ित तक ग्राफिकल पहुंच है, तो UAC बायपास सीधा है क्योंकि आप बस UAC प्रॉम्प्ट दिखाई देने पर "हाँ" पर क्लिक कर सकते हैं।
UAC बायपास की आवश्यकता निम्नलिखित स्थिति में होती है: UAC सक्रिय है, आपकी प्रक्रिया एक मध्यम अखंडता संदर्भ में चल रही है, और आपका उपयोगकर्ता प्रशासकों समूह में है।
यह उल्लेख करना महत्वपूर्ण है कि UAC को बायपास करना बहुत कठिन है यदि यह उच्चतम सुरक्षा स्तर (हमेशा) पर है, बजाय इसके कि यह अन्य स्तरों (डिफ़ॉल्ट) में से किसी एक पर हो।
यदि UAC पहले से ही अक्षम है (ConsentPromptBehaviorAdmin
0
है) तो आप प्रशासक विशेषाधिकारों के साथ एक रिवर्स शेल निष्पादित कर सकते हैं (उच्च अखंडता स्तर) कुछ इस तरह:
यदि आपके पास एक शेल है जिसमें एक उपयोगकर्ता है जो Administrators समूह के अंदर है, तो आप C$ साझा को SMB (फ़ाइल प्रणाली) के माध्यम से एक नए डिस्क में स्थानीय रूप से माउंट कर सकते हैं और आपको फ़ाइल प्रणाली के अंदर सब कुछ तक पहुंच प्राप्त होगी (यहां तक कि Administrator का होम फ़ोल्डर)।
लगता है कि यह ट्रिक अब काम नहीं कर रही है
कोबाल्ट स्ट्राइक तकनीकें केवल तभी काम करेंगी जब UAC अपनी अधिकतम सुरक्षा स्तर पर सेट न हो।
Empire और Metasploit में UAC को bypass करने के लिए कई मॉड्यूल हैं।
दस्तावेज़ और उपकरण https://github.com/wh0amitz/KRBUACBypass में
UACME जो कई UAC bypass exploits का संकलन है। ध्यान दें कि आपको UACME को विज़ुअल स्टूडियो या msbuild का उपयोग करके संकलित करना होगा। संकलन कई निष्पादन योग्य फ़ाइलें बनाएगा (जैसे Source\Akagi\outout\x64\Debug\Akagi.exe
), आपको यह जानना होगा कि आपको कौन सी चाहिए।
आपको सावधान रहना चाहिए क्योंकि कुछ बायपास कुछ अन्य कार्यक्रमों को प्रॉम्प्ट करेंगे जो उपयोगकर्ता को सूचित करेंगे कि कुछ हो रहा है।
UACME में निर्माण संस्करण है जिससे प्रत्येक तकनीक काम करना शुरू हुई। आप अपने संस्करणों को प्रभावित करने वाली तकनीक के लिए खोज कर सकते हैं:
Also, using this page you get the Windows release 1607
from the build versions.
सभी तकनीकें जो यहाँ AUC को बायपास करने के लिए उपयोग की जाती हैं एक पूर्ण इंटरैक्टिव शेल की आवश्यकता होती है (एक सामान्य nc.exe शेल पर्याप्त नहीं है)।
आप meterpreter सत्र का उपयोग करके प्राप्त कर सकते हैं। एक प्रक्रिया में माइग्रेट करें जिसका सत्र मान 1 के बराबर है:
(explorer.exe काम करना चाहिए)
यदि आपके पास GUI तक पहुंच है, तो आप जब UAC प्रॉम्प्ट प्राप्त करते हैं, तो आप बस इसे स्वीकार कर सकते हैं, आपको वास्तव में इसे बायपास करने की आवश्यकता नहीं है। इसलिए, GUI तक पहुंच प्राप्त करना UAC को बायपास करने की अनुमति देगा।
इसके अलावा, यदि आपको एक GUI सत्र मिलता है जिसका कोई और उपयोग कर रहा था (संभवतः RDP के माध्यम से), तो वहाँ कुछ उपकरण हैं जो व्यवस्थापक के रूप में चल रहे होंगे जहाँ से आप cmd को उदाहरण के लिए व्यवस्थापक के रूप में सीधे चला सकते हैं बिना UAC द्वारा फिर से प्रॉम्प्ट किए। जैसे https://github.com/oski02/UAC-GUI-Bypass-appverif। यह थोड़ा अधिक गुप्त हो सकता है।
यदि आपको शोर करने की परवाह नहीं है, तो आप हमेशा कुछ ऐसा चला सकते हैं https://github.com/Chainski/ForceAdmin जो अनुमतियों को बढ़ाने के लिए पूछता है जब तक उपयोगकर्ता इसे स्वीकार नहीं करता।
यदि आप UACME पर एक नज़र डालते हैं, तो आप देखेंगे कि अधिकांश UAC बायपास एक Dll Hijacking कमजोरियों का दुरुपयोग करते हैं (मुख्य रूप से C:\Windows\System32 पर दुर्भावनापूर्ण dll लिखना)। Dll Hijacking कमजोरी खोजने के लिए इसे पढ़ें।
एक बाइनरी खोजें जो autoelevate करेगा (जाँच करें कि जब इसे निष्पादित किया जाता है, तो यह उच्च अखंडता स्तर पर चलता है)।
procmon के साथ "NAME NOT FOUND" घटनाओं को खोजें जो DLL Hijacking के लिए कमजोर हो सकती हैं।
आपको संभवतः कुछ संरक्षित पथों (जैसे C:\Windows\System32) के अंदर DLL लिखने की आवश्यकता होगी जहाँ आपके पास लिखने की अनुमति नहीं है। आप इसे बायपास कर सकते हैं:
wusa.exe: Windows 7, 8 और 8.1। यह संरक्षित पथों के अंदर CAB फ़ाइल की सामग्री को निकालने की अनुमति देता है (क्योंकि यह उपकरण उच्च अखंडता स्तर से निष्पादित होता है)।
IFileOperation: Windows 10।
एक स्क्रिप्ट तैयार करें जो आपके DLL को संरक्षित पथ के अंदर कॉपी करे और कमजोर और ऑटोएलीवेटेड बाइनरी को निष्पादित करे।
इसमें यह देखना शामिल है कि क्या एक autoElevated binary पंजीकरण से बाइनरी या कमांड के नाम/पथ को पढ़ने की कोशिश करता है (यह अधिक दिलचस्प है यदि बाइनरी इस जानकारी को HKCU के अंदर खोजता है)।
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)