UAC - User Account Control
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Χρησιμοποιήστε Trickest για να δημιουργήσετε και να αυτοματοποιήσετε ροές εργασίας με τη βοήθεια των πιο προηγμένων εργαλείων της κοινότητας. Αποκτήστε πρόσβαση σήμερα:
Ο Έλεγχος Λογαριασμού Χρήστη (UAC) είναι μια δυνατότητα που επιτρέπει μια προτροπή συγκατάθεσης για ανυψωμένες δραστηριότητες. Οι εφαρμογές έχουν διαφορετικά επίπεδα integrity
, και ένα πρόγραμμα με υψηλό επίπεδο μπορεί να εκτελεί εργασίες που θα μπορούσαν ενδεχομένως να θέσουν σε κίνδυνο το σύστημα. Όταν είναι ενεργοποιημένος ο UAC, οι εφαρμογές και οι εργασίες εκτελούνται πάντα υπό το πλαίσιο ασφαλείας ενός λογαριασμού μη διαχειριστή εκτός αν ένας διαχειριστής εξουσιοδοτήσει ρητά αυτές τις εφαρμογές/εργασίες να έχουν πρόσβαση επιπέδου διαχειριστή στο σύστημα για να εκτελούνται. Είναι μια δυνατότητα ευκολίας που προστατεύει τους διαχειριστές από ακούσιες αλλαγές αλλά δεν θεωρείται όριο ασφαλείας.
Για περισσότερες πληροφορίες σχετικά με τα επίπεδα ακεραιότητας:
Όταν είναι σε εφαρμογή ο UAC, σε έναν χρήστη διαχειριστή δίνονται 2 διαπιστευτήρια: ένα κλειδί τυπικού χρήστη, για να εκτελεί κανονικές ενέργειες ως κανονικό επίπεδο, και ένα με τα δικαιώματα διαχειριστή.
Αυτή η σελίδα συζητά πώς λειτουργεί ο UAC σε βάθος και περιλαμβάνει τη διαδικασία σύνδεσης, την εμπειρία χρήστη και την αρχιτεκτονική του UAC. Οι διαχειριστές μπορούν να χρησιμοποιήσουν πολιτικές ασφαλείας για να ρυθμίσουν πώς λειτουργεί ο UAC συγκεκριμένα για την οργάνωσή τους σε τοπικό επίπεδο (χρησιμοποιώντας το secpol.msc), ή να ρυθμιστεί και να προωθηθεί μέσω Αντικειμένων Πολιτικής Ομάδας (GPO) σε περιβάλλον τομέα Active Directory. Οι διάφορες ρυθμίσεις συζητούνται λεπτομερώς εδώ. Υπάρχουν 10 ρυθμίσεις Πολιτικής Ομάδας που μπορούν να ρυθμιστούν για τον UAC. Ο παρακάτω πίνακας παρέχει επιπλέον λεπτομέρειες:
FilterAdministratorToken
Απενεργοποιημένο
EnableUIADesktopToggle
Απενεργοποιημένο
ConsentPromptBehaviorAdmin
Ζητήστε συγκατάθεση για μη Windows δυαδικά αρχεία
ConsentPromptBehaviorUser
Ζητήστε διαπιστευτήρια στην ασφαλή επιφάνεια εργασίας
EnableInstallerDetection
Ενεργοποιημένο (προεπιλογή για οικιακή χρήση) Απενεργοποιημένο (προεπιλογή για επιχείρηση)
ValidateAdminCodeSignatures
Απενεργοποιημένο
EnableSecureUIAPaths
Ενεργοποιημένο
EnableLUA
Ενεργοποιημένο
PromptOnSecureDesktop
Ενεργοποιημένο
EnableVirtualization
Ενεργοποιημένο
Ορισμένα προγράμματα είναι αυτοανυψωμένα αυτόματα εάν ο χρήστης ανήκει στην ομάδα διαχειριστών. Αυτά τα δυαδικά αρχεία έχουν μέσα στα Manifests την επιλογή autoElevate με τιμή True. Το δυαδικό αρχείο πρέπει επίσης να είναι υπογεγραμμένο από τη Microsoft.
Στη συνέχεια, για να παρακάμψουν τον UAC (ανύψωση από μεσαίο επίπεδο ακεραιότητας σε υψηλό) ορισμένοι επιτιθέμενοι χρησιμοποιούν αυτού του είδους τα δυαδικά αρχεία για να εκτελέσουν αυθαίρετο κώδικα επειδή θα εκτελούνται από μια Διαδικασία Υψηλού Επιπέδου Ακεραιότητας.
Μπορείτε να ελέγξετε το Manifest ενός δυαδικού αρχείου χρησιμοποιώντας το εργαλείο sigcheck.exe από το Sysinternals. Και μπορείτε να δείτε το επίπεδο ακεραιότητας των διαδικασιών χρησιμοποιώντας το Process Explorer ή το Process Monitor (του Sysinternals).
Για να επιβεβαιώσετε αν είναι ενεργοποιημένος ο UAC, κάντε:
Αν είναι 1
τότε το UAC είναι ενεργοποιημένο, αν είναι 0
ή δεν υπάρχει, τότε το UAC είναι ανενεργό.
Στη συνέχεια, ελέγξτε ποιο επίπεδο είναι ρυθμισμένο:
Αν 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
Μπορείτε επίσης να ελέγξετε τις ομάδες του χρήστη σας και να αποκτήσετε το επίπεδο ακεραιότητας:
Σημειώστε ότι αν έχετε γραφική πρόσβαση στο θύμα, η παράκαμψη UAC είναι απλή καθώς μπορείτε απλά να κάνετε κλικ στο "Ναι" όταν εμφανιστεί το παράθυρο προτροπής UAC
Η παράκαμψη UAC είναι απαραίτητη στην εξής κατάσταση: η UAC είναι ενεργοποιημένη, η διαδικασία σας εκτελείται σε μέσο επίπεδο ακεραιότητας και ο χρήστης σας ανήκει στην ομάδα διαχειριστών.
Είναι σημαντικό να αναφερθεί ότι είναι πολύ πιο δύσκολο να παρακαμφθεί η UAC αν είναι στο υψηλότερο επίπεδο ασφάλειας (Πάντα) από ότι αν είναι σε οποιοδήποτε από τα άλλα επίπεδα (Προεπιλογή).
Αν η UAC είναι ήδη απενεργοποιημένη (ConsentPromptBehaviorAdmin
είναι 0
) μπορείτε να εκτελέσετε ένα reverse shell με δικαιώματα διαχειριστή (υψηλό επίπεδο ακεραιότητας) χρησιμοποιώντας κάτι σαν:
Αν έχετε ένα shell με έναν χρήστη που είναι μέσα στην ομάδα Διαχειριστών μπορείτε να συνδέσετε το C$ κοινόχρηστο μέσω SMB (σύστημα αρχείων) τοπικά σε έναν νέο δίσκο και θα έχετε πρόσβαση σε όλα μέσα στο σύστημα αρχείων (ακόμα και στον φάκελο του Διαχειριστή).
Φαίνεται ότι αυτό το κόλπο δεν λειτουργεί πια
Οι τεχνικές Cobalt Strike θα λειτουργήσουν μόνο αν το UAC δεν είναι ρυθμισμένο στο μέγιστο επίπεδο ασφαλείας του.
Empire και Metasploit έχουν επίσης αρκετά modules για bypass του UAC.
Τεκμηρίωση και εργαλείο στο https://github.com/wh0amitz/KRBUACBypass
UACME που είναι μια συλλογή αρκετών UAC bypass exploits. Σημειώστε ότι θα χρειαστεί να compile UACME χρησιμοποιώντας το visual studio ή το msbuild. Η συλλογή θα δημιουργήσει αρκετά executables (όπως Source\Akagi\outout\x64\Debug\Akagi.exe
), θα χρειαστεί να γνωρίζετε ποιο χρειάζεστε.
Πρέπει να είστε προσεκτικοί γιατί μερικά bypass θα προκαλέσουν κάποια άλλα προγράμματα που θα ειδοποιήσουν τον χρήστη ότι κάτι συμβαίνει.
Το UACME έχει την έκδοση build από την οποία κάθε τεχνική άρχισε να λειτουργεί. Μπορείτε να αναζητήσετε μια τεχνική που επηρεάζει τις εκδόσεις σας:
Also, using this page you get the Windows release 1607
from the build versions.
Όλες οι τεχνικές που χρησιμοποιούνται εδώ για να παρακάμψουν το AUC απαιτούν μια πλήρη διαδραστική κονσόλα με το θύμα (μια κοινή nc.exe κονσόλα δεν είναι αρκετή).
Μπορείτε να αποκτήσετε πρόσβαση χρησιμοποιώντας μια meterpreter συνεδρία. Μεταναστεύστε σε μια διαδικασία που έχει την τιμή Session ίση με 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 (κυρίως γράφοντας την κακόβουλη 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.
Ετοιμάστε ένα σενάριο για να αντιγράψετε την DLL σας μέσα στην προστατευμένη διαδρομή και να εκτελέσετε το ευάλωτο και αυτοανυψωμένο δυαδικό αρχείο.
Αποτελείται από την παρακολούθηση αν ένα αυτοανυψωμένο δυαδικό αρχείο προσπαθεί να διαβάσει από το μητρώο το όνομα/διαδρομή ενός δυαδικού ή εντολής που θα εκτελεστεί (αυτό είναι πιο ενδιαφέρον αν το δυαδικό αναζητά αυτές τις πληροφορίες μέσα στο 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)