Abusing Tokens

AWS hackleme konusunda sıfırdan kahramana kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!

Tokenlar

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

pageAccess Tokens

Belki zaten sahip olduğunuz token'ları kötüye kullanarak ayrıcalıkları yükseltebilirsiniz

SeImpersonatePrivilege

Bu ayrıcalık, herhangi bir işlem tarafından herhangi bir token'ın taklit edilmesine (ancak oluşturulmasına değil) izin verir, bir kolu alınabilirse. Bir Windows hizmetinden (DCOM) ayrıcalıklı bir token, bir açığı kullanarak NTLM kimlik doğrulamasını gerçekleştirmeye zorlayarak elde edilebilir, ardından bir işlemi SİSTEM ayrıcalıklarıyla yürütme imkanı sağlar. Bu zafiyet, juicy-potato, RogueWinRM (winrm'nin devre dışı bırakılmasını gerektirir), SweetPotato ve PrintSpoofer gibi çeşitli araçlar kullanılarak sömürülebilir.

pageRoguePotato, PrintSpoofer, SharpEfsPotato, GodPotatopageJuicyPotato

SeAssignPrimaryPrivilege

Bu, SeImpersonatePrivilege ile çok benzerdir, ayrıcalıklı bir token almak için aynı yöntemi kullanacaktır. Daha sonra, bu ayrıcalık, bir yeni/askıya alınmış işleme birincil bir token atamaya izin verir. Ayrıcalıklı taklit token'ı ile birincil bir token türetebilirsiniz (DuplicateTokenEx). Token ile 'CreateProcessAsUser' ile yeni bir işlem oluşturabilir veya bir işlem askıya alabilir ve token'ı ayarlayabilirsiniz (genel olarak, çalışan bir işlemin birincil token'ını değiştiremezsiniz).

SeTcbPrivilege

Bu token etkinleştirilmişse, KERB_S4U_LOGON kullanarak herhangi bir kullanıcı için bir taklit token alabilir, kimlik bilgilerini bilmeden bir keyfi grup (yöneticiler) ekleyebilir, token'ın bütünlük seviyesini "orta" olarak ayarlayabilir ve bu token'ı mevcut iş parçacığına (SetThreadToken) atayabilirsiniz.

SeBackupPrivilege

Bu ayrıcalıkla sistem, bu ayrıcalıkla herhangi bir dosyaya (sadece okuma işlemleriyle sınırlı) tüm okuma erişimini verir. Bu, yerel Yönetici hesaplarının şifre karmalarını (Pass-the-Hash tekniği) okumak için kullanılır. Ancak, bu teknik iki durumda başarısız olur: Yerel Yönetici hesabı devre dışı bırakıldığında veya uzaktan bağlanan Yerel Yöneticilerden yönetici haklarını kaldıran bir politika olduğunda. Bu ayrıcalığı şu şekilde kötüye kullanabilirsiniz:

pagePrivileged Groups

SeRestorePrivilege

Bu ayrıcalık, dosyanın Erişim Kontrol Listesi'ne (ACL) bakılmaksızın herhangi bir sistem dosyasına yazma erişimini sağlar. Bu, hizmetleri değiştirme, DLL Hijacking yapma ve hata ayıklayıcıları Image File Execution Options aracılığıyla ayarlama gibi çeşitli teknikler için birçok olasılık açar.

SeCreateTokenPrivilege

SeCreateTokenPrivilege, bir kullanıcının token'ları taklit etme yeteneğine sahip olduğunda özellikle güçlü bir izindir, ancak SeImpersonatePrivilege olmadığında da kullanışlıdır. Bu yetenek, aynı kullanıcıyı temsil eden ve bütünlük seviyesi mevcut işlemin bütünlük seviyesini aşmayan bir token'ı taklit etme yeteneğine dayanır.

Ana Noktalar:

  • SeImpersonatePrivilege Olmadan Taklit: Belirli koşullar altında SeCreateTokenPrivilege'ı EoP için kullanabilirsiniz.

  • Token Taklidi Koşulları: Başarılı taklit, hedef token'ın aynı kullanıcıya ait olmasını ve taklit denemesi yapan işlemin bütünlük seviyesinin hedef token'ın bütünlük seviyesinden küçük veya eşit olmasını gerektirir.

  • Taklit Token'larının Oluşturulması ve Değiştirilmesi: Kullanıcılar, bir taklit token oluşturabilir ve bir ayrıcalıklı grubun SID'sini (Güvenlik Tanımlayıcısı) ekleyerek geliştirebilir.

SeLoadDriverPrivilege

Bu ayrıcalık, belirli değerlerle bir kayıt defteri girdisi oluşturarak sürücü yüklemesine ve kaldırmasına izin verir. ImagePath ve Type için belirli değerlere sahip bir kayıt defteri girdisi oluştururken doğrudan yazma erişimi HKLM (HKEY_LOCAL_MACHINE) tarafından kısıtlandığından, bunun yerine HKCU (HKEY_CURRENT_USER) kullanılmalıdır. Ancak, sürücü yapılandırması için HKCU'yu çekirdeğe tanımlanabilir hale getirmek 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 Kimliğini temsil eder. HKCU içinde, bu tüm yol oluşturulmalı ve iki değer ayarlanmalıdır:

  • ImagePath, yürütülecek ikili dosyanın yoludur

  • Type, SERVICE_KERNEL_DRIVER (0x00000001) değerine sahip olmalıdır.

İzlenecek Adımlar:

  1. Yazma erişimi kısıtlı olduğundan HKLM yerine HKCU'ya erişin.

  2. HKCU içinde, <RID> mevcut kullanıcının Göreceli Kimliğini temsil ettiği \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName yolunu oluşturun.

  3. ImagePath'i ikilinin yürütme yoluna ayarlayın.

  4. TypeSERVICE_KERNEL_DRIVER (0x00000001) olarak ayarlayı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'a benzer. Başlıca işlevi, bir işlemin bir nesnenin sahipliğini üstlenmesine olanak tanır ve WRITE_OWNER erişim hakları sağlayarak açık bir keyfi erişim gereksinimini atlar. İşlem, öncelikle yazma amaçları için amaçlanan kayıt defteri anahtarının sahipliğini 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 işlemleri hata ayıklama izni verir, bellekte okuma ve yazma yapılmasını da içerir. Bu ayrıcalıkla, çoğu antivirüs ve ana bilgisayar saldırı önleme çözümlerini atlatabilen çeşitli bellek enjeksiyon stratejileri kullanılabilir.

Belleği dök

SysInternals Suite'den ProcDump'ı kullanarak bir işlemin belleğini yakalayabilirsiniz. Bu özellikle, kullanıcı başarılı bir şekilde bir sisteme giriş yaptıktan sonra kullanıcı kimlik bilgilerini depolayan Yerel Güvenlik Otoritesi Alt Sistem Hizmeti (LSASS) işlemine uygulanabilir.

Daha sonra bu dökümü mimikatz'da yükleyerek şifreleri elde edebilirsiniz:

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

Uzaktan Kod Çalıştırma (RCE)

Eğer bir NT SYSTEM kabuğuna erişmek 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>)

İzinleri 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ışı bırakılmış token'larınız varsa, tüm token'ları etkinleştirmek için EnableAllTokenPrivs.ps1 betiğini kullanabilirsiniz:

.\EnableAllTokenPrivs.ps1
whoami /priv

Veya bu gönderideki betik.

Tablo

Tam token ayrıcalıkları hile yaprağı https://github.com/gtworek/Priv2Admin, aşağıdaki özet sadece ayrıcalığı kötüye kullanarak yönetici oturumu elde etmek veya hassas dosyaları okumak için doğrudan yolları listeleyecektir.

AyrıcalıkEtkiAraçYürütme yoluAçıklamalar

SeAssignPrimaryToken

Yönetici

3. taraf araç

"Bir kullanıcıya tokenları taklit etme ve potato.exe, rottenpotato.exe ve juicypotato.exe gibi araçları kullanarak nt sistemine yükselme imkanı verir"

Güncelleme için teşekkürler Aurélien Chalot . Yakında daha çok tarif benzeri bir şeye dönüştürmeye çalışacağım.

SeBackup

Tehdit

Dahili komutlar

robocopy /b ile hassas dosyaları okuyun

- %WINDIR%\MEMORY.DMP dosyasını okuyabilirseniz daha ilginç olabilir - SeBackupPrivilege (ve robocopy), açık dosyalarla ilgili olmadığında yardımcı olmaz. - Robocopy, /b parametresiyle çalışmak için hem SeBackup hem de SeRestore gerektirir.

SeCreateToken

Yönetici

3. taraf araç

NtCreateToken ile yerel yönetici hakları da dahil olmak üzere keyfi token oluşturun.

SeDebug

Yönetici

PowerShell

lsass.exe token'ını çoğaltın.

Betik FuzzySecurity adresinde bulunabilir.

SeLoadDriver

Yönetici

3. taraf araç

1. szkg64.sys gibi hatalı çekirdek sürücü yükle 2. Sürücü açığından yararlanın Alternatif olarak, ayrıcalık ftlMC dahili komutu ile güvenlikle ilgili sürücüleri boşaltmak için kullanılabilir. Örneğin: fltMC sysmondrv

1. szkg64 açığı CVE-2018-15732 olarak listelenmiştir 2. szkg64 sömürü kodu Parvez Anwar tarafından oluşturulmuştur

SeRestore

Yönetici

PowerShell

1. SeRestore ayrıcalığı mevcut olan PowerShell/ISE'yi başlatın. 2. Ayrıcalığı Enable-SeRestorePrivilege ile 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 Dosyaları" içinde depolanan hizmet ikili dosyalarını değiştirme üzerine dayanır

SeTakeOwnership

Yönetici

Dahili komutlar

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 Dosyaları" içinde depolanan hizmet ikili dosyalarını değiştirme üzerine dayanır.

SeTcb

Yönetici

3. taraf araç

Yerel yönetici haklarını içerecek şekilde tokenları manipüle edin. SeImpersonate gerekebilir.

Doğrulanması gerekiyor.

Referans

Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

Last updated