Token’leri Kötüye Kullanma

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Tokens

If you don’t know what are Windows Access Tokens read this page before continuing:

Access Tokens

Zaten sahip olduğunuz token’leri kötüye kullanarak yetkileri yükseltebilirsiniz

SeImpersonatePrivilege

Bu, herhangi bir süreç tarafından sahip olunan ve bir handle elde edilebildiği takdirde herhangi bir token’ın impersonation’ına (ama oluşturulmasına değil) izin veren bir ayrıcalıktır. Ayrıcalıklı bir token, bir Windows servisini (DCOM) zorlayarak onun bir exploit’e karşı NTLM authentication yapmasını sağlayıp elde edilebilir; bu da SYSTEM ayrıcalıklarına sahip bir süreç çalıştırmayı mümkün kılar. Bu zafiyet juicy-potato, RogueWinRM (winrm’in devre dışı bırakılmasını gerektirir), SweetPotato ve PrintSpoofer gibi çeşitli araçlarla istismar edilebilir.

RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato

JuicyPotato

SeAssignPrimaryPrivilege

Bu, SeImpersonatePrivilege ile çok benzerdir; ayrıcalıklı bir token almak için aynı yöntemi kullanır. Sonrasında, bu ayrıcalık yeni/askıya alınmış bir sürece primary token atamaya izin verir. Ayrıcalıklı impersonation token’ı ile bir primary token türetebilirsiniz (DuplicateTokenEx). Bu token ile ‘CreateProcessAsUser’ kullanarak yeni bir süreç oluşturabilir veya bir süreci askıda oluşturup token’i ayarlayabilirsiniz (genelde, çalışan bir sürecin primary token’ını değiştiremezsiniz).

SeTcbPrivilege

Bu ayrıcalık etkinse, kimlik bilgilerini bilmeden herhangi bir kullanıcı için KERB_S4U_LOGON kullanarak bir impersonation token alabilir, token’a istediğiniz bir grup (admins) ekleyebilir, token’ın integrity level’ını “medium” olarak ayarlayabilir ve bu token’ı mevcut thread’e atayabilirsiniz (SetThreadToken).

SeBackupPrivilege

Bu ayrıcalık, herhangi bir dosyaya (yalnızca okuma işlemleriyle sınırlı olmak üzere) tüm okuma erişimini sağlamasına yol açar. Kayıt defterinden yerel Administrator hesaplarının parola hash’lerini okumak için kullanılır; ardından hash ile psexec veya wmiexec gibi araçlar (Pass-the-Hash technique) kullanılabilir. Ancak bu teknik iki durumda başarısız olur: Local Administrator hesabı devre dışı bırakıldığında veya uzaktan bağlanan Local Administrator’ların yönetici haklarını kaldıran bir politika mevcutsa.
Bu ayrıcalığı şu yollarla kötüye kullanabilirsiniz:

Privileged Groups

SeRestorePrivilege

Bu ayrıcalık, bir dosyanın Access Control List (ACL) ne olursa olsun herhangi bir sistem dosyasına yazma erişimi sağlar. Bu, servisleri değiştirme, DLL Hijacking gerçekleştirme ve Image File Execution Options aracılığıyla debugger ayarlama gibi çeşitli yükseltme (escalation) imkânları açar.

SeCreateTokenPrivilege

SeCreateTokenPrivilege, özellikle bir kullanıcının token’ları impersonate edebilme yeteneğine sahip olduğu durumlarda güçlü bir izindir, ancak SeImpersonatePrivilege yokken de faydalıdır. Bu yetenek, aynı kullanıcıyı temsil eden ve integrity level’ı mevcut sürecininkini aşmayan bir token’ı impersonate etme yeteneğine dayanır.

Key Points:

  • SeImpersonatePrivilege olmadan Impersonation: Belirli koşullar altında token’ları impersonate ederek SeCreateTokenPrivilege’i EoP için kullanmak mümkündür.
  • Token Impersonation için Koşullar: Başarılı impersonation, hedef token’ın aynı kullanıcıya ait olmasını ve impersonation yapmaya çalışan sürecin integrity level’ından daha düşük veya eşit bir integrity level’a sahip olmasını gerektirir.
  • Impersonation Token’larının Oluşturulması ve Değiştirilmesi: Kullanıcılar bir impersonation token’ı oluşturabilir ve ona ayrıcalıklı bir grubun SID (Security Identifier)’ini ekleyerek yetkilerini artırabilirler.

SeLoadDriverPrivilege

Bu ayrıcalık, ImagePath ve Type için belirli değerler içeren bir kayıt girdisi oluşturarak aygıt sürücülerini yüklemeye ve kaldırmaya izin verir. HKLM (HKEY_LOCAL_MACHINE)’e doğrudan yazma erişimi kısıtlı olduğundan, HKCU (HKEY_CURRENT_USER) kullanılmalıdır. Ancak kernel’in sürücü yapılandırması için HKCU’yu tanımasını sağlamak üzere belirli bir yol izlenmelidir.

Bu yol \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName’dır; burada <RID> mevcut kullanıcının Relative Identifier’ıdır. HKCU içinde bu tüm yol oluşturulmalı ve iki değer ayarlanmalıdır:

  • ImagePath, çalıştırılacak ikili dosyanın yolu
  • Type, değeri SERVICE_KERNEL_DRIVER (0x00000001) olarak ayarlayın.

Steps to Follow:

  1. Yazma erişimi kısıtlı olduğundan HKCU’ya erişin, HKLM yerine.
  2. HKCU içinde \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName yolunu oluşturun; burada <RID> mevcut kullanıcının Relative Identifier’ını temsil eder.
  3. ImagePath’i ikili dosyanın çalıştırma yoluna ayarlayın.
  4. Type’ı SERVICE_KERNEL_DRIVER (0x00000001) olarak atayın.
# Example Python code to set the registry values
import winreg as reg

# Define the path and values
path = r'Software\YourPath\System\CurrentControlSet\Services\DriverName' # Adjust 'YourPath' as needed
key = reg.OpenKey(reg.HKEY_CURRENT_USER, path, 0, reg.KEY_WRITE)
reg.SetValueEx(key, "ImagePath", 0, reg.REG_SZ, "path_to_binary")
reg.SetValueEx(key, "Type", 0, reg.REG_DWORD, 0x00000001)
reg.CloseKey(key)

Bu ayrıcalığın kötüye kullanılmasıyla ilgili daha fazla yol için: https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege

SeTakeOwnershipPrivilege

Bu, SeRestorePrivilege ile benzerdir. Temel işlevi, bir işlemin bir nesnenin sahipliğini üstlenmesine izin vermek olup, WRITE_OWNER erişim haklarının verilmesi yoluyla explicit discretionary access gereksinimini atlar. Süreç, öncelikle yazma amacıyla hedef registry key’in sahipliğini almak, ardından yazma işlemlerini etkinleştirmek için DACL’i değiştirmekten oluşur.

takeown /f 'C:\some\file.txt' #Now the file is owned by you
icacls 'C:\some\file.txt' /grant <your_username>:F #Now you have full access
# Use this with files that might contain credentials such as
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software
%WINDIR%\repair\security
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
c:\inetpub\wwwwroot\web.config

SeDebugPrivilege

Bu ayrıcalık, diğer süreçleri debug other processes yapmaya ve bellek üzerinde okuma/yazma yapmaya izin verir. Bu ayrıcalıkla, çoğu antivirus ve host intrusion prevention solutions’ı atlatabilecek çeşitli memory injection stratejileri uygulanabilir.

Bellek dökümü

Bu amaçla ProcDump’ı SysInternals Suite içinden kullanarak bir sürecin belleğini yakalayabilirsiniz. Özellikle bu, Local Security Authority Subsystem Service (LSASS) süreci için geçerlidir; bu süreç, bir kullanıcı sisteme başarıyla giriş yaptıktan sonra kullanıcı kimlik bilgilerini saklamaktan sorumludur.

Bu dökümü daha sonra mimikatz’e yükleyip parolaları elde edebilirsiniz:

mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords

RCE

Bir NT SYSTEM shell elde etmek istiyorsanız şunları kullanabilirsiniz:

# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)

SeManageVolumePrivilege

Bu hak (Perform volume maintenance tasks), NTFS ACL’lerini atlayan doğrudan disk I/O için ham hacim aygıt tutamaçlarını (ör. \.\C:) açmaya izin verir. Bununla, alt blokları okuyarak hacimdeki herhangi bir dosyanın baytlarını kopyalayabilir; bu da hassas içeriklerin rastgele okunmasına olanak sağlar (ör. makine private key’leri %ProgramData%\Microsoft\Crypto, kayıt defteri hive’ları, SAM/NTDS (VSS üzerinden)). Bu durum, CA sunucularında özellikle etkildir; CA private key’in exfiltrating edilmesi herhangi bir principal’ı taklit etmek için bir Golden Certificate oluşturulmasını mümkün kılar.

See detailed techniques and mitigations:

Semanagevolume Perform Volume Maintenance Tasks

Ayrıcalıkları Kontrol Et

whoami /priv

Disabled olarak görünen token’lar etkinleştirilebilir; aslında Enabled ve Disabled token’ları suistimal edebilirsiniz.

Tüm token’ları etkinleştir

Eğer token’lar devre dışıysa, tüm token’ları etkinleştirmek için EnableAllTokenPrivs.ps1 script’ini kullanabilirsiniz:

.\EnableAllTokenPrivs.ps1
whoami /priv

Veya bu post içindeki gömülü script.

Table

Full token privileges cheatsheet at https://github.com/gtworek/Priv2Admin, özet aşağıda sadece ayrıcalığı kötüye kullanarak yönetici oturumu elde etmenin veya hassas dosyaları okumanın doğrudan yollarını listeleyecektir.

PrivilegeImpactToolExecution pathRemarks
SeAssignPrimaryTokenYönetici3rd party tool“It would allow a user to impersonate tokens and privesc to nt system using tools such as potato.exe, rottenpotato.exe and juicypotato.exe”Thank you Aurélien Chalot for the update. I will try to re-phrase it to something more recipe-like soon.
SeBackupTehditBuilt-in commandsrobocopy /b ile hassas dosyaları okuyun.

- %WINDIR%\MEMORY.DMP dosyasını okuyabiliyorsanız daha ilginç olabilir

- SeBackupPrivilege (ve robocopy) açık dosyalar söz konusu olduğunda yardımcı olmaz.

- Robocopy’nin /b parametresi ile çalışması için hem SeBackup hem de SeRestore gereklidir.

SeCreateTokenYönetici3rd party toolNtCreateToken ile yerel yönetici hakları dahil olmak üzere keyfi token oluşturun.
SeDebugYöneticiPowerShelllsass.exe token’ını çoğaltın.Script şu adreste bulunabilir: FuzzySecurity
SeLoadDriverYönetici3rd party tool

1. szkg64.sys gibi hatalı bir kernel sürücüsünü yükleyin
2. Sürücü açığını istismar edin

Alternatif olarak, ayrıcalık ftlMC yerleşik komutuyla güvenlikle ilgili sürücüleri unloaded etmek için kullanılabilir. örn.: fltMC sysmondrv

1. szkg64 açığı CVE-2018-15732 olarak listelenmiştir
2. szkg64 için exploit kodu Parvez Anwar tarafından oluşturulmuştur

SeRestoreYöneticiPowerShell

1. SeRestore ayrıcalığı etkinken PowerShell/ISE başlatın.
2. Enable-SeRestorePrivilege ile ayrıcalığı etkinleştirin.
3. utilman.exe dosyasının adını utilman.old olarak değiştirin
4. cmd.exe dosyasının adını utilman.exe olarak değiştirin
5. Konsolu kilitleyip Win+U tuşuna basın

Saldırı bazı AV yazılımları tarafından tespit edilebilir.

Alternatif yöntem, aynı ayrıcalığı kullanarak “Program Files” içinde saklanan servis ikili dosyalarının değiştirilmesine dayanır

SeTakeOwnershipYöneticiBuilt-in commands

1. takeown.exe /f “%windir%\system32”
2. icalcs.exe “%windir%\system32” /grant “%username%”:F
3. cmd.exe dosyasının adını utilman.exe olarak değiştirin
4. Konsolu kilitleyip Win+U tuşuna basın

Saldırı bazı AV yazılımları tarafından tespit edilebilir.

Alternatif yöntem, aynı ayrıcalığı kullanarak “Program Files” içinde saklanan servis ikili dosyalarının değiştirilmesine dayanır.

SeTcbYönetici3rd party tool

Token’ları yerel yönetici hakları içerecek şekilde manipüle edin. SeImpersonate gerektirebilir.

Doğrulanacak.

Reference

  • Windows token’larını tanımlayan bu tabloya göz atın: https://github.com/gtworek/Priv2Admin
  • token’larla privesc hakkında bu makaleye göz atın.
  • Microsoft – Perform volume maintenance tasks (SeManageVolumePrivilege): https://learn.microsoft.com/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/perform-volume-maintenance-tasks
  • 0xdf – HTB: Certificate (SeManageVolumePrivilege → CA key exfil → Golden Certificate): https://0xdf.gitlab.io/2025/10/04/htb-certificate.html

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin