Secure Desktop Accessibility Registry Propagation LPE (RegPwn)
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.
Επισκόπηση
Τα Windows Accessibility features αποθηκεύουν τις ρυθμίσεις χρήστη υπό HKCU και τις διαδίδουν σε ανά-συνεδρία τοποθεσίες HKLM. Κατά τη διάρκεια μιας μετάβασης στο Secure Desktop (lock screen ή UAC prompt), τα συστατικά του SYSTEM ξανα-αντιγράφουν αυτές τις τιμές. Εάν το per-session HKLM key είναι εγγράψιμο από τον χρήστη, γίνεται ένας privileged write choke point που μπορεί να ανακατευθυνθεί με registry symbolic links, οδηγώντας σε arbitrary SYSTEM registry write.
Η τεχνική RegPwn καταχράται αυτήν την αλυσίδα διάδοσης με ένα μικρό race window που σταθεροποιείται μέσω ενός opportunistic lock (oplock) σε ένα αρχείο που χρησιμοποιεί το osk.exe.
Registry Propagation Chain (Accessibility -> Secure Desktop)
Παράδειγμα λειτουργίας: On-Screen Keyboard (osk). Οι σχετικοί χώροι είναι:
- System-wide feature list:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs- Per-user configuration (user-writable):
HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk- Per-session HKLM config (created by
winlogon.exe, user-writable): HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\Session<session id>\ATConfig\osk- Secure desktop/default user hive (SYSTEM context):
HKU\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk
Διάδοση κατά τη μετάβαση σε secure desktop (απλοποιημένα):
- Η διεργασία χρήστη
atbroker.exeαντιγράφειHKCU\...\ATConfig\oskστοHKLM\...\Session<session id>\ATConfig\osk. - Η διεργασία του SYSTEM
atbroker.exeαντιγράφειHKLM\...\Session<session id>\ATConfig\oskστοHKU\.DEFAULT\...\ATConfig\osk. - Η διεργασία του SYSTEM
osk.exeαντιγράφειHKU\.DEFAULT\...\ATConfig\oskπίσω στοHKLM\...\Session<session id>\ATConfig\osk.
Εάν το subtree του session στο HKLM είναι εγγράψιμο από τον χρήστη, τα βήματα 2/3 παρέχουν μια SYSTEM εγγραφή μέσω μιας τοποθεσίας που ο χρήστης μπορεί να αντικαταστήσει.
Primitive: Arbitrary SYSTEM Registry Write via Registry Links
Αντικαταστήστε το user-writable per-session key με ένα registry symbolic link που δείχνει σε ένα προορισμό της επιλογής του επιτιθέμενου. Όταν γίνει η αντιγραφή από τον SYSTEM, ακολουθεί το link και γράφει τιμές υπό έλεγχο του επιτιθέμενου στο αυθαίρετο κλειδί-στόχο.
Κύρια ιδέα:
- Victim write target (user-writable):
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\Session<session id>\ATConfig\osk- Ο επιτιθέμενος αντικαθιστά αυτό το κλειδί με ένα registry link προς οποιοδήποτε άλλο κλειδί.
- Ο SYSTEM εκτελεί την αντιγραφή και γράφει στο επιλεγμένο από τον επιτιθέμενο κλειδί με δικαιώματα SYSTEM.
Αυτό οδηγεί σε ένα arbitrary SYSTEM registry write primitive.
Winning the Race Window with Oplocks
Υπάρχει ένα μικρό χρονικό παράθυρο μεταξύ της εκκίνησης του SYSTEM osk.exe και της εγγραφής στο per-session key. Για να γίνει αξιόπιστο, το exploit τοποθετεί ένα oplock σε:
C:\Program Files\Common Files\microsoft shared\ink\fsdefinitions\oskmenu.xml
Όταν ενεργοποιηθεί το oplock, ο επιτιθέμενος αντικαθιστά το per-session HKLM key με ένα registry link, επιτρέπει στο SYSTEM να γράψει εκεί, και στη συνέχεια αφαιρεί το link.
Example Exploitation Flow (High Level)
- Ανάκτησε το τρέχον session ID από το access token.
- Ξεκίνα μια κρυφή
osk.exeδιεργασία και περίμενε λίγο (βεβαιώσου ότι το oplock θα ενεργοποιηθεί). - Γράψε τιμές υπό έλεγχο του επιτιθέμενου στο:
HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk
- Θέσε ένα oplock πάνω στο
C:\Program Files\Common Files\microsoft shared\ink\fsdefinitions\oskmenu.xml. - Προκάλεσε το Secure Desktop (
LockWorkstation()), με αποτέλεσμα το SYSTEMatbroker.exe/osk.exeνα ξεκινήσει. - Όταν ενεργοποιηθεί το oplock, αντικατάστησε το
HKLM\...\Session<session id>\ATConfig\oskμε ένα registry link προς τυχαίο στόχο. - Περίμενε λίγο για να ολοκληρωθεί η αντιγραφή από το SYSTEM, και μετά αφαίρεσε το link.
Converting the Primitive to SYSTEM Execution
Μια απλή αλυσίδα είναι να αντικαταστήσεις μια τιμή service configuration (π.χ. ImagePath) και μετά να ξεκινήσεις την υπηρεσία. Το RegPwn PoC αντικαθιστά το ImagePath του msiserver και το ενεργοποιεί με την στιγμιοποίηση του MSI COM object, οδηγώντας σε εκτέλεση κώδικα ως SYSTEM.
Related
Για άλλες συμπεριφορές του Secure Desktop / UIAccess, δείτε:
Uiaccess Admin Protection Bypass
References
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.


