Secure Desktop Accessibility Registry Propagation LPE (RegPwn)
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Panoramica
Le funzionalità Accessibility di Windows memorizzano la configurazione utente sotto HKCU e la propagano in posizioni HKLM per sessione. Durante una transizione del Secure Desktop (schermata di blocco o prompt UAC), i componenti SYSTEM ricopiano questi valori. Se la chiave HKLM per sessione è scrivibile dall’utente, diventa un punto di strozzatura per scritture privilegiate che può essere reindirizzato con registry symbolic links, producendo una scrittura arbitraria nel registro con privilegi SYSTEM.
La tecnica RegPwn abusa di quella catena di propagazione con una piccola finestra di race stabilizzata tramite un opportunistic lock (oplock) su un file usato da osk.exe.
Registry Propagation Chain (Accessibility -> Secure Desktop)
Esempio di feature: On-Screen Keyboard (osk). Le posizioni rilevanti sono:
- Elenco delle funzionalità a livello di sistema:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs- Configurazione per utente (scrivibile dall’utente):
HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk- Configurazione HKLM per sessione (creata da
winlogon.exe, scrivibile dall’utente): HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\Session<session id>\ATConfig\osk- Secure Desktop/hive utente predefinito (contesto SYSTEM):
HKU\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk
Propagazione durante una transizione del Secure Desktop (semplificata):
- Utente
atbroker.execopiaHKCU\...\ATConfig\oskinHKLM\...\Session<session id>\ATConfig\osk. - SYSTEM
atbroker.execopiaHKLM\...\Session<session id>\ATConfig\oskinHKU\.DEFAULT\...\ATConfig\osk. - SYSTEM
osk.execopiaHKU\.DEFAULT\...\ATConfig\oskdi nuovo inHKLM\...\Session<session id>\ATConfig\osk.
Se il sottoramo HKLM della sessione è scrivibile dall’utente, i passaggi 2/3 forniscono una scrittura con privilegi SYSTEM attraverso una posizione che l’utente può sostituire.
Primitive: Arbitrary SYSTEM Registry Write via Registry Links
Sostituire la chiave per sessione scrivibile dall’utente con una registry symbolic link che punta a una destinazione scelta dall’attaccante. Quando avviene la copia da parte di SYSTEM, segue il link e scrive valori controllati dall’attaccante nella chiave di destinazione arbitraria.
Idea chiave:
- Obiettivo della scrittura vittima (scrivibile dall’utente):
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\Session<session id>\ATConfig\osk- L’attaccante sostituisce quella chiave con una registry link verso qualsiasi altra chiave.
- SYSTEM esegue la copia e scrive nella chiave scelta dall’attaccante con permessi SYSTEM.
Ciò fornisce una primitiva di scrittura arbitraria nel registro con privilegi SYSTEM.
Vincere la finestra di race con gli oplock
Esiste una breve finestra temporale tra l’avvio di SYSTEM osk.exe e la scrittura della chiave per sessione. Per renderlo affidabile, l’exploit posa un oplock su:
C:\Program Files\Common Files\microsoft shared\ink\fsdefinitions\oskmenu.xml
Quando l’oplock scatta, l’attaccante sostituisce la chiave HKLM per sessione con un registry link, consente al SYSTEM di scrivere, quindi rimuove il link.
Esempio di flusso di sfruttamento (livello alto)
- Recuperare l’ID sessione corrente dal token di accesso.
- Avviare un’istanza nascosta di
osk.exee mettere in sleep brevemente (assicurarsi che l’oplock si attivi). - Scrivere valori controllati dall’attaccante in:
HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\osk
- Impostare un oplock su
C:\Program Files\Common Files\microsoft shared\ink\fsdefinitions\oskmenu.xml. - Attivare il Secure Desktop (
LockWorkstation()), causando l’avvio come SYSTEM diatbroker.exe/osk.exe. - Al trigger dell’oplock, sostituire
HKLM\...\Session<session id>\ATConfig\oskcon un registry link verso un target arbitrario. - Attendere brevemente il completamento della copia da parte di SYSTEM, quindi rimuovere il link.
Conversione del primitivo in esecuzione SYSTEM
Una catena semplice è sovrascrivere un valore di configurazione del servizio (ad es., ImagePath) e poi avviare il servizio. Il PoC RegPwn sovrascrive il ImagePath di msiserver e lo attiva istanziando il MSI COM object, ottenendo l’esecuzione di codice come SYSTEM.
Correlati
Per altri comportamenti di Secure Desktop / UIAccess, vedere:
Uiaccess Admin Protection Bypass
References
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.


