hacktricks/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens
2024-02-25 12:24:25 +00:00
..
README.md Translated ['windows-hardening/windows-local-privilege-escalation/privil 2024-02-25 12:24:25 +00:00

Token Kötüye Kullanma

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!

Tokenlar

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

{% content-ref url="../access-tokens.md" %} access-tokens.md {% endcontent-ref %}

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 zayıflık, 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.

{% content-ref url="../roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}

{% content-ref url="../juicypotato.md" %} juicypotato.md {% endcontent-ref %}

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 atanmasına izin verir. Ayrıcalıklı taklit token'ı kullanarak 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ık, sistemin bu ayrıcalıkla tüm okuma erişimini (okuma işlemleriyle sınırlı) herhangi bir dosyaya vermesine neden olur. Bu, yerel Yönetici hesaplarının şifre karmalarını (registry'den) okumak için kullanılır, ardından "psexec" veya "wmicexec" gibi araçlar, hash ile kullanılabilir (Pass-the-Hash tekniği). 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:

{% content-ref url="../../active-directory-methodology/privileged-groups-and-token-privileges.md" %} privileged-groups-and-token-privileges.md {% endcontent-ref %}

SeRestorePrivilege

Bu ayrıcalık, dosyanın Erişim Kontrol Listesi'ne (ACL) bakılmaksızın herhangi bir sistem dosyasına yazma erişimi 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 kullanmak mümkündür.
  • Token Taklidi Koşulları: Başarılı taklit için hedef token'ın aynı kullanıcıya ait olması ve taklit denemesi yapan işlemin bütünlük seviyesinden daha düşük veya eşit bir bütünlük seviyesine sahip olması gerekir.
  • 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 birlikte ImagePath ve Type için belirli değerlere sahip bir kayıt girdisi oluşturarak sürücü yüklemesine ve kaldırmasına izin verir. Doğrudan yazma erişimi HKLM (HKEY_LOCAL_MACHINE) sınırlı olduğundan, 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ğidir. 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. Sınırlı yazma erişimi nedeniyle HKLM yerine HKCU'ya erişin.
  2. HKCU içinde, mevcut kullanıcının Göreceli Kimliğini temsil eden <RID> ile \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName yolunu oluşturun.
  3. ImagePath'i yürütülecek ikilinin yoluna ayarlayın.
  4. Type'ı SERVICE_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 yöntemi 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 izin verir 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 yapmayı içerir. Bu ayrıcalıkla, çoğu antivirüs ve ana bilgisayar saldırı önleme çözümlerinden kaçabilen çeşitli bellek enjeksiyon stratejileri kullanılabilir.

Belleği dök

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

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, özet aşağıda ayrıcalığı kötüye kullanmak için doğrudan yolları listeler.

Ayrıcalık Etki Araç Yürütme yolu Yorumlar
SeAssignPrimaryToken Yönetici 3. taraf araç "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 Aurélien Chalot'a teşekkürler. Yakında daha 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 değildir.

- 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ı kopyalayın. Betik FuzzySecurity adresinde bulunabilir.
SeLoadDriver Yönetici 3. taraf araç

1. szkg64.sys gibi hatalı çekirdek sürücü yükleyin
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ığı 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ştirmeye 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ştirmeye dayanır.

SeTcb Yönetici 3. taraf araç

Yerel yönetici haklarını içeren 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)!