Abusing Tokens
Reading time: 10 minutes
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Tokens
Jeśli nie wiesz, czym są Windows Access Tokens, przeczytaj tę stronę przed kontynuowaniem:
Możesz być w stanie podnieść uprawnienia, nadużywając tokenów, które już posiadasz
SeImpersonatePrivilege
To uprawnienie, które posiada każdy proces, pozwala na impersonację (ale nie tworzenie) dowolnego tokena, pod warunkiem, że można uzyskać do niego uchwyt. Uprawniony token można uzyskać z usługi Windows (DCOM), skłaniając ją do przeprowadzenia uwierzytelnienia NTLM przeciwko exploitowi, co następnie umożliwia wykonanie procesu z uprawnieniami SYSTEM. Ta luka może być wykorzystana za pomocą różnych narzędzi, takich jak juicy-potato, RogueWinRM (które wymaga wyłączenia winrm), SweetPotato i PrintSpoofer.
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato
SeAssignPrimaryPrivilege
Jest bardzo podobne do SeImpersonatePrivilege, użyje tej samej metody do uzyskania uprawnionego tokena.
Następnie to uprawnienie pozwala przypisać główny token do nowego/zawieszonego procesu. Z uprawnionym tokenem impersonacyjnym możesz utworzyć główny token (DuplicateTokenEx).
Z tokenem możesz stworzyć nowy proces za pomocą 'CreateProcessAsUser' lub utworzyć proces zawieszony i ustawić token (ogólnie nie można modyfikować głównego tokena działającego procesu).
SeTcbPrivilege
Jeśli masz włączony ten token, możesz użyć KERB_S4U_LOGON, aby uzyskać token impersonacyjny dla dowolnego innego użytkownika bez znajomości poświadczeń, dodać dowolną grupę (administratorów) do tokena, ustawić poziom integralności tokena na "medium" i przypisać ten token do bieżącego wątku (SetThreadToken).
SeBackupPrivilege
System jest zmuszony do przyznania pełnego dostępu do odczytu do dowolnego pliku (ograniczonego do operacji odczytu) przez to uprawnienie. Jest wykorzystywane do odczytywania hashy haseł lokalnych kont Administratora z rejestru, po czym można użyć narzędzi takich jak "psexec" lub "wmiexec" z hashem (technika Pass-the-Hash). Jednak ta technika zawodzi w dwóch warunkach: gdy konto lokalnego administratora jest wyłączone lub gdy obowiązuje polityka, która odbiera prawa administracyjne lokalnym administratorom łączącym się zdalnie.
Możesz nadużyć tego uprawnienia za pomocą:
- https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1
- https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug
- śledząc IppSec w https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
- Lub jak wyjaśniono w sekcji podnoszenia uprawnień z Backup Operators w:
SeRestorePrivilege
Uprawnienie do zapisu do dowolnego pliku systemowego, niezależnie od listy kontroli dostępu (ACL) pliku, jest zapewniane przez to uprawnienie. Otwiera to liczne możliwości podnoszenia uprawnień, w tym możliwość modyfikacji usług, przeprowadzania DLL Hijacking i ustawiania debuggerów za pomocą opcji wykonania pliku obrazu, wśród różnych innych technik.
SeCreateTokenPrivilege
SeCreateTokenPrivilege to potężne uprawnienie, szczególnie przydatne, gdy użytkownik ma możliwość impersonacji tokenów, ale także w przypadku braku SeImpersonatePrivilege. Ta zdolność opiera się na możliwości impersonacji tokena, który reprezentuje tego samego użytkownika i którego poziom integralności nie przekracza poziomu bieżącego procesu.
Kluczowe punkty:
- Impersonacja bez SeImpersonatePrivilege: Możliwe jest wykorzystanie SeCreateTokenPrivilege do EoP poprzez impersonację tokenów w określonych warunkach.
- Warunki dla impersonacji tokenów: Udana impersonacja wymaga, aby docelowy token należał do tego samego użytkownika i miał poziom integralności, który jest mniejszy lub równy poziomowi integralności procesu próbującego impersonacji.
- Tworzenie i modyfikacja tokenów impersonacyjnych: Użytkownicy mogą tworzyć token impersonacyjny i wzbogacać go, dodając SID (identyfikator zabezpieczeń) grupy z uprawnieniami.
SeLoadDriverPrivilege
To uprawnienie pozwala na ładowanie i odładowywanie sterowników urządzeń poprzez utworzenie wpisu w rejestrze z określonymi wartościami dla ImagePath
i Type
. Ponieważ bezpośredni dostęp do zapisu w HKLM
(HKEY_LOCAL_MACHINE) jest ograniczony, należy zamiast tego wykorzystać HKCU
(HKEY_CURRENT_USER). Jednak aby HKCU
było rozpoznawane przez jądro do konfiguracji sterownika, należy przestrzegać określonej ścieżki.
Ta ścieżka to \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
, gdzie <RID>
to identyfikator względny bieżącego użytkownika. Wewnątrz HKCU
należy utworzyć całą tę ścieżkę i ustawić dwie wartości:
ImagePath
, która jest ścieżką do wykonywanego pliku binarnegoType
, z wartościąSERVICE_KERNEL_DRIVER
(0x00000001
).
Kroki do wykonania:
- Uzyskaj dostęp do
HKCU
zamiastHKLM
z powodu ograniczonego dostępu do zapisu. - Utwórz ścieżkę
\Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
wHKCU
, gdzie<RID>
reprezentuje identyfikator względny bieżącego użytkownika. - Ustaw
ImagePath
na ścieżkę wykonywania pliku binarnego. - Przypisz
Type
jakoSERVICE_KERNEL_DRIVER
(0x00000001
).
# 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)
Więcej sposobów na nadużycie tego przywileju w https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
SeTakeOwnershipPrivilege
Jest to podobne do SeRestorePrivilege. Jego główną funkcją jest umożliwienie procesowi przyjęcia własności obiektu, omijając wymóg wyraźnego dostępu dyskrecjonalnego poprzez przyznanie praw dostępu WRITE_OWNER. Proces polega najpierw na zabezpieczeniu własności zamierzonego klucza rejestru w celu zapisu, a następnie na zmianie DACL, aby umożliwić operacje zapisu.
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
To uprawnienie pozwala na debugowanie innych procesów, w tym na odczyt i zapis w pamięci. Różne strategie wstrzykiwania pamięci, zdolne do omijania większości rozwiązań antywirusowych i zapobiegających włamaniom, mogą być stosowane z tym uprawnieniem.
Zrzut pamięci
Możesz użyć ProcDump z SysInternals Suite, aby złapać pamięć procesu. W szczególności dotyczy to procesu Local Security Authority Subsystem Service (LSASS), który jest odpowiedzialny za przechowywanie poświadczeń użytkowników po pomyślnym zalogowaniu się do systemu.
Następnie możesz załadować ten zrzut w mimikatz, aby uzyskać hasła:
mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords
RCE
Jeśli chcesz uzyskać powłokę NT SYSTEM
, możesz użyć:
# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)
Sprawdź uprawnienia
whoami /priv
Tokeny, które pojawiają się jako Wyłączone, mogą być włączone, możesz faktycznie wykorzystać Włączone i Wyłączone tokeny.
Włącz wszystkie tokeny
Jeśli masz tokeny wyłączone, możesz użyć skryptu EnableAllTokenPrivs.ps1, aby włączyć wszystkie tokeny:
.\EnableAllTokenPrivs.ps1
whoami /priv
Or the script embed in this post.
Table
Pełna ściągawka uprawnień tokenów znajduje się pod adresem https://github.com/gtworek/Priv2Admin, poniższe podsumowanie wymieni tylko bezpośrednie sposoby na wykorzystanie uprawnienia do uzyskania sesji administratora lub odczytu wrażliwych plików.
Privilege | Impact | Tool | Execution path | Remarks |
---|---|---|---|---|
SeAssignPrimaryToken | Admin | 3rd party tool | "Pozwoliłoby to użytkownikowi na podszywanie się pod tokeny i uzyskanie uprawnień do systemu nt przy użyciu narzędzi takich jak potato.exe, rottenpotato.exe i juicypotato.exe" | Dziękuję Aurélien Chalot za aktualizację. Postaram się wkrótce przeformułować to na coś bardziej przypominającego przepis. |
SeBackup | Threat | Built-in commands | Odczyt wrażliwych plików za pomocą robocopy /b | - Może być bardziej interesujące, jeśli możesz odczytać %WINDIR%\MEMORY.DMP |
SeCreateToken | Admin | 3rd party tool | Tworzenie dowolnego tokena, w tym praw lokalnego administratora za pomocą NtCreateToken . | |
SeDebug | Admin | PowerShell | Duplikacja tokena lsass.exe . | Skrypt do znalezienia na FuzzySecurity |
SeLoadDriver | Admin | 3rd party tool | 1. Załaduj wadliwy sterownik jądra, taki jak | 1. Luka w |
SeRestore | Admin | PowerShell | 1. Uruchom PowerShell/ISE z obecnym uprawnieniem SeRestore. | Atak może być wykryty przez niektóre oprogramowanie antywirusowe. Alternatywna metoda polega na zastąpieniu binariów usług przechowywanych w "Program Files" przy użyciu tych samych uprawnień. |
SeTakeOwnership | Admin | Built-in commands | 1. | Atak może być wykryty przez niektóre oprogramowanie antywirusowe. Alternatywna metoda polega na zastąpieniu binariów usług przechowywanych w "Program Files" przy użyciu tych samych uprawnień. |
SeTcb | Admin | 3rd party tool | Manipulowanie tokenami, aby uzyskać włączone prawa lokalnego administratora. Może wymagać SeImpersonate. Do weryfikacji. |
Reference
- Zobacz tę tabelę definiującą tokeny Windows: https://github.com/gtworek/Priv2Admin
- Zobacz ten dokument dotyczący privesc z tokenami.
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.