Tokenları 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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Tokenlar
Eğer Windows Erişim Tokenlarının ne olduğunu bilmiyorsanız devam etmeden önce bu sayfayı okuyun:
{{#ref}} ../access-tokens.md {{#endref}}
Belki de sahip olduğunuz tokenları kötüye kullanarak ayrıcalıkları yükseltebilirsiniz
SeImpersonatePrivilege
Bu, herhangi bir tokenın taklit edilmesine (ancak oluşturulmasına değil) izin veren herhangi bir süreç tarafından tutulan bir ayrıcalıktır; bunun için bir handle elde edilebilir. Ayrıcalıklı bir token, bir Windows hizmetinden (DCOM) NTLM kimlik doğrulamasını bir istismar karşısında gerçekleştirmesi sağlanarak elde edilebilir ve bu da bir sürecin SYSTEM ayrıcalıklarıyla çalıştırılmasını sağlar. Bu güvenlik açığı, juicy-potato, RogueWinRM (winrm'nin devre dışı bırakılmasını gerektirir), SweetPotato, EfsPotato, DCOMPotato ve PrintSpoofer gibi çeşitli araçlar kullanılarak istismar edilebilir.
{{#ref}} ../roguepotato-and-printspoofer.md {{#endref}}
{{#ref}} ../juicypotato.md {{#endref}}
SeAssignPrimaryPrivilege
Bu, SeImpersonatePrivilege ile çok benzer olup, ayrıcalıklı bir token elde etmek için aynı yöntemi kullanır.
Daha sonra, bu ayrıcalık yeni/askıya alınmış bir sürece bir birincil token atamaya izin verir. Ayrıcalıklı taklit token ile bir birincil token türetebilirsiniz (DuplicateTokenEx).
Token ile, 'CreateProcessAsUser' ile yeni bir süreç oluşturabilir veya askıya alınmış bir süreç oluşturup tokenı ayarlayabilirsiniz (genel olarak, çalışan bir sürecin birincil tokenını değiştiremezsiniz).
SeTcbPrivilege
Bu token etkinleştirildiğinde, KERB_S4U_LOGON kullanarak herhangi bir kullanıcı için taklit token alabilirsiniz, kimlik bilgilerini bilmeden, tokena keyfi bir grup (yönetici) ekleyebilir, tokenın bütünlük seviyesini "orta" olarak ayarlayabilir ve bu tokenı mevcut iş parçacığına atayabilirsiniz (SetThreadToken).
SeBackupPrivilege
Bu ayrıcalık, herhangi bir dosyaya (okuma işlemleri ile sınırlı) tüm okuma erişim kontrolü vermek için sistemin zorlanmasına neden olur. Bu, yerel Yönetici hesaplarının şifre karma değerlerini kayıt defterinden okumak için kullanılır; ardından, "psexec" veya "wmiexec" gibi araçlar hash ile kullanılabilir (Pass-the-Hash tekniği). Ancak, bu teknik iki koşul altında başarısız olur: Yerel Yönetici hesabı devre dışı bırakıldığında veya uzaktan bağlanan Yerel Yöneticilerden yönetim haklarını kaldıran bir politika uygulandığında.
Bu ayrıcalığı kötüye kullanabilirsiniz:
- https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1
- https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug
- https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec IppSec'i takip ederek
- Veya aşağıdaki Yedek Operatörleri ile ayrıcalıkları yükseltme bölümünde açıklandığı gibi:
{{#ref}} ../../active-directory-methodology/privileged-groups-and-token-privileges.md {{#endref}}
SeRestorePrivilege
Bu ayrıcalık, dosyanın Erişim Kontrol Listesi (ACL) ne olursa olsun, herhangi bir sistem dosyasına yazma erişimi sağlar. Bu, hizmetleri değiştirme, DLL Hijacking yapma ve çeşitli diğer teknikler arasında Görüntü Dosyası Uygulama Seçenekleri aracılığıyla hata ayıklayıcılar ayarlama gibi birçok yükseltme olanağı sunar.
SeCreateTokenPrivilege
SeCreateTokenPrivilege, özellikle bir kullanıcının tokenları taklit etme yeteneğine sahip olduğunda, ancak SeImpersonatePrivilege yoksa faydalı olan güçlü bir izindir. Bu yetenek, aynı kullanıcıyı temsil eden ve bütünlük seviyesi mevcut sürecin seviyesini aşmayan bir tokenı taklit etme yeteneğine dayanır.
Ana Noktalar:
- SeImpersonatePrivilege olmadan taklit: Belirli koşullar altında tokenları taklit ederek SeCreateTokenPrivilege'i EoP için kullanmak mümkündür.
- Token Taklit Koşulları: Başarılı taklit, hedef tokenın aynı kullanıcıya ait olmasını ve bütünlük seviyesinin taklit etmeye çalışan sürecin bütünlük seviyesinden az veya eşit olmasını gerektirir.
- Taklit Tokenların Oluşturulması ve Değiştirilmesi: Kullanıcılar bir taklit token oluşturabilir ve bunu ayrıcalıklı bir grubun SID'sini (Güvenlik Tanımlayıcısı) ekleyerek geliştirebilir.
SeLoadDriverPrivilege
Bu ayrıcalık, ImagePath
ve Type
için belirli değerlerle bir kayıt defteri girişi oluşturarak cihaz sürücülerini yükleme ve boşaltma izni verir. HKLM
(HKEY_LOCAL_MACHINE) üzerinde doğrudan yazma erişimi kısıtlandığından, bunun yerine HKCU
(HKEY_CURRENT_USER) kullanılmalıdır. Ancak, HKCU
'nun sürücü yapılandırması için çekirdek tarafından tanınabilmesi için belirli bir yol izlenmelidir.
Bu yol \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
şeklindedir; burada <RID>
, mevcut kullanıcının Göreceli Tanımlayıcısıdır. HKCU
içinde, bu tüm yol oluşturulmalı ve iki değer ayarlanmalıdır:
ImagePath
, yürütülecek ikili dosyanın yoluType
, değeriSERVICE_KERNEL_DRIVER
(0x00000001
) olan.
İzlenecek Adımlar:
- Kısıtlı yazma erişimi nedeniyle
HKLM
yerineHKCU
'ya erişin. HKCU
içinde\Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
yolunu oluşturun; burada<RID>
, mevcut kullanıcının Göreceli Tanımlayıcısını temsil eder.ImagePath
'ı ikilinin yürütme yoluna ayarlayın.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)
Daha fazla bu ayrıcalığı kötüye kullanma yolu 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 sürecin bir nesnenin mülkiyetini üstlenmesine izin vermek olup, WRITE_OWNER erişim hakları sağlanarak açık takdir erişimi gereksinimini aşar. Süreç, önce yazma amacıyla hedef kayıt anahtarının mülkiyetini güvence altına almayı, ardından yazma işlemlerini etkinleştirmek için DACL'yi değiştirmeyi içerir.
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 hata ayıklamayı sağlar, buna bellek içinde okuma ve yazma da dahildir. Bu ayrıcalık ile, çoğu antivirüs ve host saldırı önleme çözümlerini atlatabilen çeşitli bellek enjeksiyon stratejileri uygulanabilir.
Belleği dökme
Bir sürecin belleğini yakalamak için ProcDump veya SharpDump kullanabilirsiniz. Özellikle, bir kullanıcının bir sisteme başarıyla giriş yaptıktan sonra kullanıcı kimlik bilgilerini saklamaktan sorumlu olan Yerel Güvenlik Otoritesi Alt Sistemi Hizmeti (LSASS) sürecine uygulanabilir.
Bu dökümü daha sonra şifreleri elde etmek için mimikatz'a yükleyebilirsiniz:
mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords
RCE
Eğer bir NT SYSTEM
shell almak 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
SeManageVolumePrivilege
, disk hacimlerini yönetmek için kullanıcıların disk hacimlerini oluşturma ve silme gibi işlemleri yapmasına izin veren bir Windows kullanıcı hakkıdır. Yöneticiler için tasarlanmış olmasına rağmen, eğer bu hak yönetici olmayan kullanıcılara verilirse, ayrıcalık yükseltmek için istismar edilebilir.
Bu ayrıcalığı kullanarak hacimleri manipüle etmek ve tam hacim erişimi sağlamak mümkündür. SeManageVolumeExploit kullanılarak C:\ için tüm kullanıcılara tam erişim verilebilir.
Ayrıca, bu Medium makalesinde SeManageVolumePrivilege
ile birlikte DLL hijacking kullanarak ayrıcalıkları yükseltme süreci açıklanmaktadır. Bir payload DLL C:\Windows\System32\wbem\tzres.dll
yerleştirerek ve systeminfo
çağrısı yaparak dll çalıştırılır.
Check privileges
whoami /priv
Devre Dışı Görünen Token'lar etkinleştirilebilir, aslında Etkin ve Devre Dışı token'ları kötüye kullanabilirsiniz.
Tüm Token'ları Etkinleştir
Eğer devre dışı token'larınız varsa, tüm token'ları etkinleştirmek için EnableAllTokenPrivs.ps1 script'ini kullanabilirsiniz:
.\EnableAllTokenPrivs.ps1
whoami /priv
Or the script embed in this post.
Table
Full token privileges cheatsheet at https://github.com/gtworek/Priv2Admin, summary below will only list direct ways to exploit the privilege to obtain an admin session or read sensitive files.
Privilege | Impact | Tool | Execution path | Remarks |
---|---|---|---|---|
SeAssignPrimaryToken | Admin | 3rd party tool | "Bu, bir kullanıcının token'ları taklit etmesine ve potato.exe, rottenpotato.exe ve juicypotato.exe gibi araçlar kullanarak nt sistemine yükselmesine izin verecektir." | Thank you Aurélien Chalot for the update. I will try to re-phrase it to something more recipe-like soon. |
SeBackup | Threat | Built-in commands | Hassas dosyaları robocopy /b ile okuyun | - %WINDIR%\MEMORY.DMP dosyasını okuyabiliyorsanız daha ilginç olabilir. |
SeCreateToken | Admin | 3rd party tool | NtCreateToken ile yerel yönetici hakları da dahil olmak üzere keyfi bir token oluşturun. | |
SeDebug | Admin | PowerShell | lsass.exe token'ını kopyalayın. | Script to be found at FuzzySecurity |
SeLoadDriver | Admin | 3rd party tool | 1. | 1. |
SeRestore | Admin | PowerShell | 1. SeRestore ayrıcalığı ile PowerShell/ISE başlatın. | Saldırı bazı AV yazılımları tarafından tespit edilebilir. Alternatif yöntem, aynı ayrıcalığı kullanarak "Program Files" içinde depolanan hizmet ikili dosyalarını değiştirmeye dayanır. |
SeTakeOwnership | Admin | Built-in commands | 1. | Saldırı bazı AV yazılımları tarafından tespit edilebilir. Alternatif yöntem, aynı ayrıcalığı kullanarak "Program Files" içinde depolanan hizmet ikili dosyalarını değiştirmeye dayanır. |
SeTcb | Admin | 3rd party tool | Token'ları yerel yönetici hakları ile manipüle edin. SeImpersonate gerektirebilir. Doğrulanması gerekiyor. |
Reference
- Take a look to this table defining Windows tokens: https://github.com/gtworek/Priv2Admin
- Take a look to this paper about privesc with tokens.
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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.