Abusing Tokens
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
If you nie wiesz, czym są tokeny dostępu w systemie Windows, przeczytaj tę stronę przed kontynuowaniem:
Możesz być w stanie podnieść uprawnienia, wykorzystując tokeny, które już masz
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. Uprzywilejowany 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.
Jest bardzo podobne do SeImpersonatePrivilege, użyje tej samej metody do uzyskania uprzywilejowanego tokena. Następnie to uprawnienie pozwala przypisać token główny do nowego/zawieszonego procesu. Z uprzywilejowanym tokenem impersonacyjnym możesz uzyskać token główny (DuplicateTokenEx). Z tym tokenem możesz stworzyć nowy proces za pomocą 'CreateProcessAsUser' lub stworzyć proces zawieszony i ustawić token (ogólnie nie możesz modyfikować głównego tokena działającego procesu).
Jeśli masz włączony ten token, możesz użyć KERB_S4U_LOGON do uzyskania tokena impersonacyjnego dla dowolnego innego użytkownika bez znajomości poświadczeń, dodać dowolną grupę (administratorów) do tokena, ustawić poziom integralności tokena na "średni" i przypisać ten token do bieżącego wątku (SetThreadToken).
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 administratorów z rejestru, po czym narzędzia takie jak "psexec" lub "wmiexec" mogą być używane 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 wykorzystać to uprawnienie za pomocą:
ś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 operatorami kopii zapasowej w:
Uprawnienie do dostępu do zapisu do dowolnego pliku systemowego, niezależnie od listy kontroli dostępu (ACL) pliku, jest zapewniane przez to uprawnienie. Otwiera to wiele możliwości podnoszenia uprawnień, w tym możliwość modyfikacji usług, przeprowadzania DLL Hijacking oraz ustawiania debuggerów za pomocą opcji wykonania pliku obrazu, wśród różnych innych technik.
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ń) uprzywilejowanej grupy.
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ł rozpoznawany 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 binarnego
Type
, z wartością SERVICE_KERNEL_DRIVER
(0x00000001
).
Kroki do wykonania:
Uzyskaj dostęp do HKCU
zamiast HKLM
z powodu ograniczonego dostępu do zapisu.
Utwórz ścieżkę \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
w HKCU
, gdzie <RID>
reprezentuje względny identyfikator bieżącego użytkownika.
Ustaw ImagePath
na ścieżkę wykonywania pliku binarnego.
Przypisz Type
jako SERVICE_KERNEL_DRIVER
(0x00000001
).
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
To jest 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 pisania, a następnie na zmianie DACL, aby umożliwić operacje zapisu.
Ten przywilej pozwala na debugowanie innych procesów, w tym na odczyt i zapis w pamięci. Można wykorzystać różne strategie wstrzykiwania pamięci, które są w stanie omijać większość rozwiązań antywirusowych i zapobiegających włamaniom na hoście, korzystając z tego przywileju.
Możesz użyć ProcDump z SysInternals Suite do złapania pamięci 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ę użytkownika do systemu.
Następnie możesz załadować ten zrzut w mimikatz, aby uzyskać hasła:
Jeśli chcesz uzyskać powłokę NT SYSTEM
, możesz użyć:
Tokeny, które pojawiają się jako Wyłączone, mogą być włączone, możesz faktycznie nadużywać Włączonych i Wyłączonych tokenów.
Jeśli masz tokeny wyłączone, możesz użyć skryptu EnableAllTokenPrivs.ps1, aby włączyć wszystkie tokeny:
Or the script embed in this post.
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.
Take a look to this table defining Windows tokens: https://github.com/gtworek/Priv2Admin
Take a look to this paper about privesc with tokens.
Privilege | Impact | Tool | Execution path | Remarks |
---|---|---|---|---|
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
SeAssignPrimaryToken
Admin
3rd party tool
"Pozwoliłoby to użytkownikowi na podszywanie się pod tokeny i uzyskanie uprawnień do systemu nt za pomocą narzędzi takich jak potato.exe, rottenpotato.exe i juicypotato.exe"
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
Odczytaj wrażliwe pliki za pomocą robocopy /b
- Może być bardziej interesujące, jeśli możesz odczytać %WINDIR%\MEMORY.DMP
- SeBackupPrivilege
(i robocopy) nie są pomocne w przypadku otwartych plików.
- Robocopy wymaga zarówno SeBackup, jak i SeRestore, aby działać z parametrem /b.
SeCreateToken
Admin
3rd party tool
Utwórz dowolny token, w tym prawa lokalnego administratora za pomocą NtCreateToken
.
SeDebug
Admin
PowerShell
Duplikuj token lsass.exe
.
Script to be found at FuzzySecurity
SeLoadDriver
Admin
3rd party tool
1. Załaduj wadliwy sterownik jądra, taki jak szkg64.sys
2. Wykorzystaj lukę w sterowniku
Alternatywnie, uprawnienie może być użyte do odinstalowania sterowników związanych z bezpieczeństwem za pomocą wbudowanego polecenia ftlMC
. tzn.: fltMC sysmondrv
1. Luka w szkg64
jest wymieniona jako CVE-2018-15732
2. szkg64
kod exploitu został stworzony przez Parvez Anwar
SeRestore
Admin
PowerShell
1. Uruchom PowerShell/ISE z obecnym uprawnieniem SeRestore. 2. Włącz uprawnienie za pomocą Enable-SeRestorePrivilege. 3. Zmień nazwę utilman.exe na utilman.old 4. Zmień nazwę cmd.exe na utilman.exe 5. Zablokuj konsolę i naciśnij Win+U
Atak może być wykryty przez niektóre oprogramowanie AV.
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. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. Zmień nazwę cmd.exe na utilman.exe
4. Zablokuj konsolę i naciśnij Win+U
Atak może być wykryty przez niektóre oprogramowanie AV.
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
Manipuluj tokenami, aby mieć włączone prawa lokalnego administratora. Może wymagać SeImpersonate.
Do weryfikacji.