Admin-beskerming-omseilings via UIAccess
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Blaai deur die volledige HackTricks Training-katalogus vir die assesseringsroetes (ARTA/GRTA/AzRTA) en Linux Hacking Expert (LHE).
Ondersteun HackTricks
- Kyk na die intekenplanne!
- Sluit aan by die 💬 Discord-groep, die telegram-groep, volg @hacktricks_live op X/Twitter, of kyk na die LinkedIn-bladsy en YouTube-kanaal.
- Deel hacking tricks deur PRs in te stuur na die HackTricks en HackTricks Cloud github repos.
Oorsig
- Windows AppInfo openbaar
RAiLaunchAdminProcessom UIAccess-prosesse te spawn (bedoel vir toeganklikheid). UIAccess omseil die meeste User Interface Privilege Isolation (UIPI) boodskapfiltrering sodat toeganklikheid-sagteware hoër-IL UI kan beheer. - Om UIAccess direk aan te skakel vereis
NtSetInformationToken(TokenUIAccess)met SeTcbPrivilege, dus lae-priv oproepers vertrou op die diens. Die diens voer drie kontrole op die teiken-binaire uit voordat UIAccess gestel word: - Ingebedde manifest bevat
uiAccess="true". - Onderteken deur enige sertifikaat wat deur die Local Machine root store vertrou word (geen EKU/Microsoft-vereiste nie).
- Geleë in ’n administrateur-alleen pad op die stelseldrywer (bv.
C:\Windows,C:\Windows\System32,C:\Program Files, uitgesonderde spesifieke skryfbare subpaaie). RAiLaunchAdminProcessgee geen toestemming-prompt vir UIAccess-lansings nie (anders kon toeganklikheid-instrumente nie die prompt bestuur nie).
Token-vorming en integriteitsvlakke
- As die kontrole slaag, AppInfo kopieer die oproeper-token, skakel UIAccess aan, en verhoog die Integriteitsvlak (IL):
- Beperkte admin-gebruiker (gebruiker is in Administrators maar hardloop gefilter) ➜ High IL.
- Nie-admin-gebruiker ➜ IL verhoog met +16 vlakke tot ’n High plafon (System IL word nooit toegewys nie).
- As die oproeper-token reeds UIAccess het, word IL onveranderd gelaat.
- “Ratchet”-trick: ’n UIAccess-proses kan UIAccess op sigself deaktiveer, weer opstart via
RAiLaunchAdminProcess, en nog ’n +16 IL-increment kry. Medium➜High neem 255 herstartes (luidrugtig, maar werk).
Waarom UIAccess ’n Admin Protection-omseiling moontlik maak
- UIAccess laat ’n laer-IL proses toe om vensterboodskappe na hoër-IL vensters te stuur (omseil UIPI-filtering). By gelyke IL laat klassieke UI-primitiewe soos
SetWindowsHookExtoe dat kode-inspuiting/DLL-lading plaasvind in enige proses wat ’n venster besit (insluitend message-only windows wat deur COM gebruik word). - Admin Protection lanseer die UIAccess-proses onder die beperkte gebruiker se identiteit maar by High IL, stilweg. Sodra arbitrêre kode binne daardie High-IL UIAccess-proses loop, kan die aanvaller in ander High-IL prosesse op die desktop inspuit (selfs van ander gebruikers), en sodoende die beoogde skeiding verbreek.
HWND-to-process handle primitive (GetProcessHandleFromHwnd / NtUserGetWindowProcessHandle)
- Op Windows 10 1803+ is die API na Win32k verskuif (
NtUserGetWindowProcessHandle) en kan ’n proses-handle oopgemaak word met ’n oproeper-gespesifiseerdeDesiredAccess. Die kernel-pad gebruikObOpenObjectByPointer(..., KernelMode, ...), wat normale user-mode toegangs kontrole omseil. - Voorwaardes in praktyk: die teiken-venster moet op dieselfde desktop wees, en UIPI-kontroles moet slaag. Histories kon ’n oproeper met UIAccess UIPI-fout omseil en steeds ’n kernel-mode handle kry (vasgestel as CVE-2023-41772).
- Impak: ’n venster-handle word ’n vermoë om ’n kragtige proses-handle te verkry (gewoonlik
PROCESS_DUP_HANDLE,PROCESS_VM_READ,PROCESS_VM_WRITE,PROCESS_VM_OPERATION) wat die oproeper normaalweg nie kon oopmaak nie. Dit maak kruis-sandbox toegang moontlik en kan Protected Process / PPL-grense breek as die teiken enige venster blootstel (insluitend message-only windows). - Praktiese misbruikvloeistroom: enumereer of lokaliseer HWNDs (bv.
EnumWindows/FindWindowEx), los die eienaars-PID op (GetWindowThreadProcessId), roepGetProcessHandleFromHwndaan, en gebruik dan die teruggegewe handle vir geheue lees/skryf of kode-oormatiging-primitiewe. - Na-vasstelling gedrag: UIAccess gee nie meer kernel-mode opens op UIPI-fout nie en toegestane toegangregte is beperk tot die klassieke hook-set; Windows 11 24H2 voeg proses-beskermingskontroles en feature-flagged veiliger paaie by. Stelselwyd UIPI deaktiveer (
EnforceUIPI=0) verswak hierdie beskermings.
Secure-directory validasie swakpunte (AppInfo AiCheckSecureApplicationDirectory)
AppInfo los die gegewe pad op via GetFinalPathNameByHandle en pas dan string allow/deny kontroles toe teen hardgekodeerde wortels/uitsluitings. Meerdere omseilingsklasse spruit uit daardie simplistiese validasie:
- Directory named streams: Uitgeslote skryfbare directories (bv.
C:\Windows\tracing) kan omseil word met ’n named stream op die directory self, bv.C:\Windows\tracing:file.exe. Die string-kontroles sienC:\Windows\en mis die uitgeslote subpad. - Skryfbare lêer/directory binne ’n toegelate wortel:
CreateProcessAsUservereis nie ’n.exeuitbreiding nie. Oorskryf enige skryfbare lêer onder ’n toegelate wortel met ’n uitvoerbare payload werk, of kopieer ’n ondertekendeuiAccess="true"EXE in enige skryfbare subgids (bv. opdaterings-restante soosTasks_Migratedas dit teenwoordig is) sodat dit die secure-path kontrole slaag. - MSIX in
C:\Program Files\WindowsApps(vasgestel): Nie-admins kon ondertekende MSIX-pakkette installeer wat inWindowsAppsbeland het, wat nie uitgesluit was nie. Om ’n UIAccess-binaire in die MSIX te verpakk en dit dan viaRAiLaunchAdminProcesste lanseer het ’n prompt-loos High-IL UIAccess-proses gegee. Microsoft het dit gekompenseer deur hierdie pad uit te sluit; dieuiAccessbeperkte MSIX-vaardigheid self vereis reeds admin-installasie.
Aanvalswerkvloei (High IL sonder ’n prompt)
- Verkry/bou ’n ondertekende UIAccess-binaire (manifest
uiAccess="true"). - Plaas dit waar AppInfo se allowlist dit aanvaar (of misbruik ’n pad-validasie randgeval/skryfbare artefak soos hierbo).
- Roep
RAiLaunchAdminProcessaan om dit stilweg met UIAccess + verhoogde IL te spawn. - Vanuit daardie High-IL voet-in-deur, teiken ’n ander High-IL proses op die desktop met venster hooks/DLL-inspuiting of ander selfde-IL primitiewe om die admin-konteks volledig te kompromitteer.
Opsomming van kandidaat-skryfbare paaie
Hardloop die PowerShell-helper om skryfbare/oorskryfbare objekte binne nominaal veilige wortels te ontdek vanuit die perspektief van ’n gekose token:
$paths = "C:\\Windows","C:\\Program Files","C:\\Program Files (x86)"
Get-AccessibleFile -Win32Path $paths -Access Execute,WriteData `
-DirectoryAccess AddFile -Recurse -ProcessId <PID>
- Voer uit as Administrator vir wyer sigbaarheid; stel
-ProcessIdop ’n low-priv process om daardie token se toegang te weerspieël. - Filtreer handmatig om bekende ontoegelate subgidse uit te sluit voordat u die kandidaten met
RAiLaunchAdminProcessgebruik.
Verwante
Secure Desktop accessibility registry propagation LPE (RegPwn):
Secure Desktop Accessibility Registry Propagation LPE (RegPwn)
Verwysings
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Blaai deur die volledige HackTricks Training-katalogus vir die assesseringsroetes (ARTA/GRTA/AzRTA) en Linux Hacking Expert (LHE).
Ondersteun HackTricks
- Kyk na die intekenplanne!
- Sluit aan by die 💬 Discord-groep, die telegram-groep, volg @hacktricks_live op X/Twitter, of kyk na die LinkedIn-bladsy en YouTube-kanaal.
- Deel hacking tricks deur PRs in te stuur na die HackTricks en HackTricks Cloud github repos.


