UIAccess ile Admin Protection Bypass’ları
Tip
AWS Hacking öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna, telegram grubuna katılın, X/Twitter üzerinde @hacktricks_live hesabını takip edin veya LinkedIn sayfasını ve YouTube kanalını kontrol edin.
- HackTricks ve HackTricks Cloud github depolarına PR göndererek hacking tricks paylaşın.
Genel Bakış
- Windows AppInfo
RAiLaunchAdminProcess’i UIAccess süreçleri başlatmak için açığa çıkarır (erişilebilirlik amaçlı). UIAccess, erişilebilirlik yazılımlarının daha yüksek-IL UI’yi kontrol edebilmesi için çoğu User Interface Privilege Isolation (UIPI) mesaj filtrelemesini atlar. - UIAccess’i doğrudan etkinleştirmek
NtSetInformationToken(TokenUIAccess)ile SeTcbPrivilege gerektirir, bu yüzden düşük ayrıcalıklı çağırıcılar servise güvenir. Servis, UIAccess ayarlamadan önce hedef ikili üzerinde üç kontrol gerçekleştirir:- Gömülü manifest
uiAccess="true"içerir. - Local Machine root store tarafından güvenilen herhangi bir sertifika ile imzalanmış (EKU/Microsoft şartı yok).
- Sistem sürücüsünde yöneticiye özel bir yolun içinde yer alır (ör.
C:\Windows,C:\Windows\System32,C:\Program Files, belirli yazılabilir alt yollar hariç).
- Gömülü manifest
RAiLaunchAdminProcessUIAccess başlatmaları için herhangi bir onay istemi göstermez (aksi takdirde erişilebilirlik araçları istemi kontrol edemezdi).
Token shaping ve integrity seviyeleri
- Kontroller başarılı olursa, AppInfo çağırıcı token’ı kopyalar, UIAccess’i etkinleştirir ve Integrity Level (IL) yükseltir:
- Limited admin user (kullanıcı Administrators grubunda ama filtrelenmiş olarak çalışıyor) ➜ High IL.
- Non-admin user ➜ IL +16 seviyeye kadar arttırılır, en fazla High ile sınırlandırılır (System IL atanmaz).
- Eğer çağırıcı token zaten UIAccess içeriyorsa, IL değiştirilmez.
- “Ratchet” hilesi: bir UIAccess süreç kendi üzerindeki UIAccess’i devre dışı bırakıp
RAiLaunchAdminProcessile tekrar başlatabilir ve başka bir +16 IL artışı elde edebilir. Medium➜High geçişi 255 yeniden başlatma gerektirir (gürültülü, ama çalışır).
Neden UIAccess Admin Protection kaçışına izin verir
- UIAccess, daha düşük-IL bir sürecin daha yüksek-IL pencerelere pencere mesajı göndermesine izin verir (UIPI filtrelerini atlayarak). Eşit IL’de,
SetWindowsHookExgibi klasik UI primitifleri herhangi bir pencereye sahip sürece (COM tarafından kullanılan message-only pencereler dahil) kod enjeksiyonu/DLL yüklemeye izin verir. - Admin Protection UIAccess sürecini limited user kimliğiyle ama High IL seviyesinde sessizce başlatır. Bir kez High-IL UIAccess sürecinde rastgele kod çalıştırıldığında, saldırgan masaüstündeki diğer High-IL süreçlere (farklı kullanıcılara ait olanlar dahil) enjeksiyon yapabilir ve tasarlanan ayrımı kırar.
HWND-to-process handle primitive (GetProcessHandleFromHwnd / NtUserGetWindowProcessHandle)
- Windows 10 1803+’te API Win32k’ye (
NtUserGetWindowProcessHandle) taşındı ve çağırıcı tarafından sağlananDesiredAccesskullanılarak bir process handle açabilir. Kernel yoluObOpenObjectByPointer(..., KernelMode, ...)kullanır; bu normal user-mode erişim kontrollerini atlar. - Pratik önkoşullar: hedef pencere aynı desktop’ta olmalı ve UIPI kontrolleri geçmelidir. Tarihsel olarak, UIAccess sahibi bir çağırıcı UIPI başarısızlığını atlayabiliyor ve yine de kernel-mode handle elde edebiliyordu (düzeltildi: CVE-2023-41772).
- Etki: bir pencere handle’ı, çağırıcının normalde açamayacağı güçlü bir process handle (genellikle
PROCESS_DUP_HANDLE,PROCESS_VM_READ,PROCESS_VM_WRITE,PROCESS_VM_OPERATION) elde etmesi için bir capability haline gelir. Bu çapraz sandbox erişimine izin verir ve hedef herhangi bir pencere (message-only pencereler dahil) açıyorsa Protected Process / PPL sınırlarını zayıflatabilir. - Pratik kötüye kullanım akışı: HWND’leri listele veya bul (ör.
EnumWindows/FindWindowEx), sahip PID’yi çöz (GetWindowThreadProcessId),GetProcessHandleFromHwndçağır, sonra dönen handle’ı bellek okuma/yazma veya kod ele geçirme primitifleri için kullan. - Düzeltmeden sonraki davranış: UIAccess artık UIPI başarısızlığında kernel-mode açılışlara izin vermez ve izin verilen erişim hakları legacy hook set ile sınırlanır; Windows 11 24H2 process-protection kontrolleri ve özellik-flag’lenmiş daha güvenli yollar ekler. UIPI’yi sistem çapında devre dışı bırakmak (
EnforceUIPI=0) bu korumaları zayıflatır.
Secure-directory validation zayıflıkları (AppInfo AiCheckSecureApplicationDirectory)
AppInfo verilen yolu GetFinalPathNameByHandle ile çözümler ve sonra sabitlenmiş kökler/dışlamalara karşı string allow/deny kontrolleri uygular. Bu basit doğrulamadan kaynaklanan birden fazla bypass sınıfı vardır:
- Directory named streams: Hariç tutulmuş yazılabilir dizinler (ör.
C:\Windows\tracing) dizinin kendisinde bir named stream ile atlanabilir, örn.C:\Windows\tracing:file.exe. String kontrollerC:\Windows\kısmını görür ve hariç tutulmuş alt yolu kaçırır. - Writable file/directory inside an allowed root:
CreateProcessAsUserbir.exeuzantısı gerektirmez. İzin verilen kök altında herhangi bir yazılabilir dosyayı çalıştırılabilir yük ile üstüne yazmak işe yarar, veya imzalıuiAccess="true"EXE’yi herhangi bir yazılabilir alt dizine kopyalamak (ör. mevcutsa güncelleme kalıntıları gibiTasks_Migrated) secure-path kontrolünü geçmesini sağlar. - MSIX into
C:\Program Files\WindowsApps(düzeltildi): Non-admin’ler imzalı MSIX paketleri kurupWindowsAppsiçine yerleştirebiliyordu; bu yol hariç tutulmamıştı. MSIX içine UIAccess ikili paketleyipRAiLaunchAdminProcessile başlatmak, prompt olmadan High-IL UIAccess süreci elde edilmesine yol açıyordu. Microsoft bu yolu hariç tutarak hafifletti; ayrıcauiAccesskısıtlı MSIX capability’si zaten admin kurulumu gerektiriyordu.
Saldırı iş akışı (Prompt olmadan High IL elde etme)
- İmzalı bir UIAccess binary elde et veya oluştur (manifest
uiAccess="true"). - AppInfo’nun allowlist’inin kabul ettiği bir yere yerleştir (veya yukarıdaki yol-doğrulama kenar durumunu/yazılabilir artefaktı suistimal et).
RAiLaunchAdminProcessçağırarak onu UIAccess + yükseltilmiş IL ile sessizce başlat.- Bu High-IL foothold’dan, masaüstündeki başka bir High-IL süreci hedefle ve window hooks/DLL injection veya aynı-IL primitifleri ile admin bağlamını tamamen ele geçir.
Yazılabilir aday yolları listeleme
Belirli bir token perspektifinden nominal olarak güvenli kökler içinde yazılabilir/üzerine yazılabilir nesneleri keşfetmek için PowerShell yardımcısını çalıştır:
$paths = "C:\\Windows","C:\\Program Files","C:\\Program Files (x86)"
Get-AccessibleFile -Win32Path $paths -Access Execute,WriteData `
-DirectoryAccess AddFile -Recurse -ProcessId <PID>
- Daha geniş görünürlük için Yönetici olarak çalıştırın;
-ProcessId’i o token’ın erişimini yansıtacak düşük ayrıcalıklı bir sürece ayarlayın. - Adayları
RAiLaunchAdminProcessile kullanmadan önce, bilinen izin verilmeyen alt dizinleri hariç tutmak için elle filtreleyin.
İlgili
Secure Desktop erişilebilirlik kayıt defteri yayılımı LPE (RegPwn):
Secure Desktop Accessibility Registry Propagation LPE (RegPwn)
Referanslar
Tip
AWS Hacking öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna, telegram grubuna katılın, X/Twitter üzerinde @hacktricks_live hesabını takip edin veya LinkedIn sayfasını ve YouTube kanalını kontrol edin.
- HackTricks ve HackTricks Cloud github depolarına PR göndererek hacking tricks paylaşın.


