Tokenları Kötüye Kullanma

Reading time: 9 minutes

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)

HackTricks'i Destekleyin

Tokenlar

Eğer Windows Erişim Tokenlarının ne olduğunu bilmiyorsanız devam etmeden önce bu sayfayı okuyun:

Access Tokens

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, yeter ki ona bir handle elde edilebilsin. 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, bu da ardından SYSTEM ayrıcalıklarıyla bir sürecin çalıştırılmasını sağlar. Bu güvenlik açığı, juicy-potato, RogueWinRM (winrm'nin devre dışı bırakılmasını gerektirir), SweetPotato ve PrintSpoofer gibi çeşitli araçlar kullanılarak istismar edilebilir.

RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato

JuicyPotato

SeAssignPrimaryPrivilege

SeImpersonatePrivilege ile çok benzer, ayrıcalıklı bir token elde etmek için aynı yöntemi kullanır.
Bu ayrıcalık, yeni/askıya alınmış bir sürece birincil token atamaya izin verir. Ayrıcalıklı taklit token ile birincil bir 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ştirdiyseniz, 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şlemleriyle sınırlı) tüm okuma erişim kontrolünü vermek için sistemin neden olduğu bir ayrıcalıktır. 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:

Privileged Groups

SeRestorePrivilege

Herhangi bir sistem dosyasına yazma erişimi için izin sağlayan bu ayrıcalık, dosyanın Erişim Kontrol Listesi (ACL) ne olursa olsun geçerlidir. Hizmetleri değiştirme, DLL Hijacking yapma ve çeşitli diğer teknikler arasında 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 güçlü bir izindir, ancak SeImpersonatePrivilege yoksa da faydalıdır. 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 EoP için SeCreateTokenPrivilege'i 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ığı için, 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 ikilinin yolu
  • Type, değeri SERVICE_KERNEL_DRIVER (0x00000001).

İzlenecek Adımlar:

  1. Kısıtlı yazma erişimi nedeniyle HKLM yerine HKCU'ya erişin.
  2. 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.
  3. ImagePath'ı ikilinin yürütme yoluna ayarlayın.
  4. TypeSERVICE_KERNEL_DRIVER (0x00000001) olarak atayın.
python
# 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, bu da WRITE_OWNER erişim hakları sağlanarak açık takdir erişimi gereksinimini aşar. Süreç, önce yazma amacıyla hedef kayıt defteri 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.

bash
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. Çoğu antivirüs ve host saldırı önleme çözümünü atlatabilen çeşitli bellek enjeksiyon stratejileri, bu ayrıcalıkla kullanılabilir.

Belleği dökme

Bir sürecin belleğini yakalamak için ProcDump aracını SysInternals Suite üzerinden kullanabilirsiniz. Özellikle, bir kullanıcının bir sisteme başarıyla giriş yaptıktan sonra kullanıcı kimlik bilgilerini depolamakla 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:

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

Yetkileri Kontrol Et

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:

powershell
.\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.

PrivilegeImpactToolExecution pathRemarks
SeAssignPrimaryTokenAdmin3rd 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.
SeBackupThreatBuilt-in commandsHassas dosyaları robocopy /b ile okuyun

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

- SeBackupPrivilege (ve robocopy) açık dosyalarla çalışırken yardımcı değildir.

- Robocopy, /b parametresi ile çalışmak için hem SeBackup hem de SeRestore'ye ihtiyaç duyar.

SeCreateTokenAdmin3rd party toolNtCreateToken ile yerel yönetici hakları da dahil olmak üzere keyfi bir token oluşturun.
SeDebugAdminPowerShelllsass.exe token'ını kopyalayın.Script to be found at FuzzySecurity
SeLoadDriverAdmin3rd party tool

1. szkg64.sys gibi hatalı bir çekirdek sürücüsü yükleyin.
2. Sürücü zafiyetini istismar edin.

Alternatif olarak, bu ayrıcalık güvenlikle ilgili sürücüleri ftlMC yerleşik komutuyla boşaltmak için kullanılabilir. Yani: fltMC sysmondrv

1. szkg64 zafiyeti CVE-2018-15732 olarak listelenmiştir.
2. szkg64 istismar kodu Parvez Anwar tarafından oluşturulmuştur.

SeRestoreAdminPowerShell

1. SeRestore ayrıcalığı ile PowerShell/ISE başlatın.
2. Enable-SeRestorePrivilege ile ayrıcalığı etkinleştirin.
3. utilman.exe'yi utilman.old olarak yeniden adlandırın.
4. cmd.exe'yi utilman.exe olarak yeniden adlandırın.
5. Konsolu kilitleyin ve Win+U tuşlarına bası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.

SeTakeOwnershipAdminBuilt-in commands

1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. cmd.exe'yi utilman.exe olarak yeniden adlandırın.
4. Konsolu kilitleyin ve Win+U tuşlarına bası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.

SeTcbAdmin3rd party tool

Token'ları yerel yönetici hakları ile manipüle edin. SeImpersonate gerektirebilir.

Doğrulanması gerekiyor.

Reference

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)

HackTricks'i Destekleyin