21 KiB
Nadużywanie tokenów
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
- Czy pracujesz w firmie z branży cyberbezpieczeństwa? Chcesz zobaczyć, jak Twoja firma jest reklamowana na HackTricks? lub chcesz mieć dostęp do najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF? Sprawdź PLANY SUBSKRYPCYJNE!
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź mnie na Twitterze 🐦@carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium hacktricks i repozytorium hacktricks-cloud.
Tokeny
Jeśli nie wiesz, co to są tokeny dostępu systemu Windows, przeczytaj tę stronę przed kontynuacją:
{% content-ref url="access-tokens.md" %} access-tokens.md {% endcontent-ref %}
Być może będziesz w stanie eskalować uprawnienia, nadużywając tokenów, które już posiadasz
SeImpersonatePrivilege
To uprawnienie, które jest przypisane do dowolnego procesu, umożliwia impersonację (ale nie tworzenie) dowolnego tokenu, pod warunkiem że można uzyskać do niego uchwyt. Uprawniony token można uzyskać od usługi systemu Windows (DCOM), wywołując autentykację NTLM przeciwko exploitowi, umożliwiając następnie wykonanie procesu z uprawnieniami SYSTEM. Tę podatność można wykorzystać za pomocą różnych narzędzi, takich jak juicy-potato, RogueWinRM (który wymaga wyłączenia winrm), SweetPotato i PrintSpoofer.
{% content-ref url="roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}
{% content-ref url="juicypotato.md" %} juicypotato.md {% endcontent-ref %}
SeAssignPrimaryPrivilege
Jest bardzo podobne do SeImpersonatePrivilege, będzie używać tej samej metody do uzyskania uprzywilejowanego tokenu.
Następnie to uprawnienie pozwala przypisać token podstawowy do nowego/zawieszonego procesu. Dzięki uprzywilejowanemu tokenowi impersonacji można wygenerować token podstawowy (DuplicateTokenEx).
Z tym tokenem można utworzyć nowy proces za pomocą 'CreateProcessAsUser' lub utworzyć proces zawieszony i ustawić token (zazwyczaj nie można modyfikować podstawowego tokenu działającego procesu).
SeTcbPrivilege
Jeśli masz włączone to uprawnienie, możesz użyć KERB_S4U_LOGON do uzyskania tokena impersonacji dla dowolnego innego użytkownika bez znajomości poświadczeń, dodać dowolną grupę (administratorów) do tokenu, ustawić poziom integralności tokenu na "średni" i przypisać ten token do bieżącego wątku (SetThreadToken).
SeBackupPrivilege
System jest zmuszony do udzielenia wszystkich uprawnień do odczytu do dowolnego pliku (ograniczone do operacji odczytu) za pomocą tego uprawnienia. Jest ono wykorzystywane do odczytywania skrótów haseł kont lokalnych Administratora z rejestru, po czym narzędzia takie jak "psexec" lub "wmicexec" mogą być użyte z hasłem (technika Pass-the-Hash). Jednak ta technika zawodzi w dwóch przypadkach: gdy konto Lokalnego Administratora jest wyłączone lub gdy istnieje polityka, która usuwa prawa administracyjne od Lokalnych Administratorów łączących się zdalnie.
Możesz nadużyć to uprawnienie 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 zgodnie z eskaluowaniem uprawnień z operatorami kopii zapasowych opisanym w sekcji:
{% content-ref url="../active-directory-methodology/privileged-groups-and-token-privileges.md" %} privileged-groups-and-token-privileges.md {% endcontent-ref %}
SeRestorePrivilege
Uprawnienie do zapisu do dowolnego pliku systemowego, niezależnie od listy kontroli dostępu (ACL) pliku, jest zapewnione przez to uprawnienie. Otwiera to wiele możliwości eskalacji, w tym możliwość modyfikacji usług, wykonywania DLL Hijacking oraz ustawiania debuggerów za pomocą opcji wykonania pliku obrazu, między innymi różne techniki.
SeCreateTokenPrivilege
SeCreateTokenPrivilege to potężne uprawnienie, szczególnie przydatne, gdy użytkownik posiada zdolność do impersonacji tokenów, ale także w przypadku braku SeImpersonatePrivilege. Ta zdolność zależy od możliwości impersonacji tokenu reprezentującego tego samego użytkownika, którego poziom integralności nie przekracza poziomu integralności bieżącego procesu.
Kluczowe punkty:
- Impersonacja bez SeImpersonatePrivilege: Możliwe jest wykorzystanie SeCreateTokenPrivilege do EoP poprzez impersonację tokenów w określonych warunkach.
- Warunki impersonacji tokenu: Skuteczna impersonacja wymaga, aby docelowy token należał do tego samego użytkownika i miał poziom integralności mniejszy lub równy poziomowi integralności procesu próbującego dokonać impersonacji.
- Tworzenie i modyfikacja tokenów impersonacji: Użytkownicy mogą tworzyć token impersonacji i wzbogacać go, dodając identyfikator zabezpieczeń uprzywilejowanej grupy (SID).
SeLoadDriverPrivilege
To uprawnienie pozwala na ładowanie i usuwanie sterowników urządzeń poprzez utworzenie wpisu rejestru z określonymi wartościami dla ImagePath
i Type
. Ponieważ bezpośredni zapis do HKLM
(HKEY_LOCAL_MACHINE) jest ograniczony, należy zamiast tego użyć HKCU
(HKEY_CURRENT_USER). Jednak aby sprawić, że HKCU
będzie rozpoznawalne przez jądro do konfiguracji sterownika, należy przejść określoną ścieżkę.
Ścieżka ta to \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
, gdzie <RID>
to Identyfikator Relatywny bieżącego użytkownika. Wewnątrz HKCU
należy utworzyć tę całą ścieżkę i ustawić dwie wartości:
ImagePath
, czyli ścieżka do binariów do wykonaniaType
, z wartościąSERVICE_KERNEL_DRIVER
(0x00000001
).
Kroki do wykonania:
- Uzyskaj dostęp do
HKCU
zamiastHKLM
ze względu na ograniczony zapis. - Utwórz ścieżkę
\Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
wHKCU
, gdzie<RID>
reprezentuje Identyfikator Relatywny bieżącego użytkownika. - Ustaw
ImagePath
na ścieżkę wykonania binariów. - 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 uprawnienia można znaleźć w https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
SeTakeOwnershipPrivilege
To jest podobne do SeRestorePrivilege. Jego główna funkcja pozwala procesowi przyjąć własność obiektu, omijając konieczność uzyskania wyraźnego dostępu dyskrecyjnego poprzez udzielenie praw dostępu WRITE_OWNER. Proces polega na najpierw zabezpieczeniu własności zamierzonego klucza rejestru w celu zapisywania, a następnie zmianie DACL w celu umożliwienia operacji 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 odczyt i zapis w pamięci. Z jego pomocą można zastosować różne strategie wstrzykiwania pamięci, zdolne do unikania większości programów antywirusowych oraz rozwiązań zapobiegających intruzji na hostingu.
Zrzut pamięci
Możesz użyć ProcDump z pakietu SysInternals Suite do przechwycenia 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żytkownika po pomyślnym zalogowaniu się do systemu.
Następnie możesz załadować ten zrzut do 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 są oznaczone jako Wyłączone mogą zostać włączone, co pozwala na nadużycie tokenów Włączonych i Wyłączonych.
Włącz wszystkie tokeny
Jeśli masz wyłączone tokeny, możesz użyć skryptu EnableAllTokenPrivs.ps1, aby włączyć wszystkie tokeny:
.\EnableAllTokenPrivs.ps1
whoami /priv
Lub skrypt osadzony w tym poście.
Tabela
Pełny arkusz osiągnięć uprawnień tokenów dostępny pod adresem https://github.com/gtworek/Priv2Admin, poniższe podsumowanie zawiera jedynie bezpośrednie sposoby wykorzystania uprawnienia do uzyskania sesji administratora lub odczytu poufnych plików.
Uprawnienie | Wpływ | Narzędzie | Ścieżka wykonania | Uwagi |
---|---|---|---|---|
SeAssignPrimaryToken |
Admin | Narzędzie firm trzecich | "Pozwala użytkownikowi na podszycie się pod tokeny i eskalację uprawnień do systemu nt za pomocą narzędzi takich jak potato.exe, rottenpotato.exe i juicypotato.exe" | Dziękuję Aurélienowi Chalot za aktualizację. Spróbuję wkrótce przefrazować to w sposób bardziej przypominający przepis. |
SeBackup |
Zagrożenie | Wbudowane polecenia | Odczytaj poufne pliki za pomocą robocopy /b |
- Może być bardziej interesujące, jeśli można odczytać %WINDIR%\MEMORY.DMP |
SeCreateToken |
Admin | Narzędzie firm trzecich | Utwórz dowolny token, w tym lokalne uprawnienia administratora za pomocą NtCreateToken . |
|
SeDebug |
Admin | PowerShell | Zduplikuj token lsass.exe . |
Skrypt można znaleźć na stronie FuzzySecurity |
SeLoadDriver |
Admin | Narzędzie firm trzecich | 1. Załaduj błędny sterownik jądra, taki jak |
1. Podatność |
SeRestore |
Admin | PowerShell | 1. Uruchom PowerShell/ISE z obecnością uprawnienia SeRestore. |
Atak może być wykryty przez niektóre oprogramowanie AV. Alternatywna metoda polega na zastąpieniu binarnych plików usług przechowywanych w "Program Files" tym samym uprawnieniem |
SeTakeOwnership |
Admin | Wbudowane polecenia | 1. |
Atak może być wykryty przez niektóre oprogramowanie AV. Alternatywna metoda polega na zastąpieniu binarnych plików usług przechowywanych w "Program Files" tym samym uprawnieniem. |
SeTcb |
Admin | Narzędzie firm trzecich | Manipuluj tokenami, aby zawierały lokalne uprawnienia administratora. Może wymagać SeImpersonate. Do weryfikacji. |
Odnośniki
- Zapoznaj się z tą tabelą definiującą tokeny systemu Windows: https://github.com/gtworek/Priv2Admin
- Przeczytaj ten artykuł na temat eskalacji uprawnień za pomocą tokenów.
Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
- Pracujesz w firmie cyberbezpieczeństwa? Chcesz zobaczyć swoją firmę reklamowaną w HackTricks? lub chcesz mieć dostęp do najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF? Sprawdź PLANY SUBSKRYPCYJNE!
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź mnie na Twitterze 🐦@carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium hacktricks i repozytorium hacktricks-cloud.