hacktricks/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens
2024-02-11 01:46:25 +00:00
..
README.md Translated to Polish 2024-02-11 01:46:25 +00:00

Wykorzystywanie tokenów

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Tokeny

Jeśli nie wiesz, czym są tokeny dostępu w systemie Windows, przeczytaj tę stronę, zanim przejdziesz dalej:

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

Możliwe, że będziesz w stanie podnieść uprawnienia, wykorzystując już posiadane tokeny

SeImpersonatePrivilege

To uprawnienie, które posiada każdy proces, umożliwia podmianę (ale nie tworzenie) dowolnego tokenu, pod warunkiem, że można uzyskać do niego uchwyt. Uprawniony token można uzyskać z usługi systemu Windows (DCOM), wywołując uwierzytelnianie NTLM przeciwko wykorzystaniu, co umożliwia wykonanie procesu z uprawnieniami SYSTEM. Tę podatność można wykorzystać za pomocą różnych narzędzi, takich jak juicy-potato, RogueWinRM (które 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, użyje tej samej metody do uzyskania uprzywilejowanego tokenu.
Następnie, to uprawnienie pozwala przypisać podstawowy token do nowego/zawieszonego procesu. Z uprzywilejowanego tokenu impersonacji można utworzyć podstawowy token (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, aby uzyskać token impersonacji dla dowolnego innego użytkownika, nie znając poświadczeń, dodać dowolną grupę (administratorzy) 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 wszystkim plikom (ograniczone do operacji odczytu) kontroli dostępu do odczytu za pomocą tego uprawnienia. Jest ono wykorzystywane do odczytywania skrótów haseł kont lokalnych Administratora z rejestru, a następnie można użyć narzędzi takich jak "psexec" lub "wmicexec" z tym skrótem (technika Pass-the-Hash). Jednak ta technika nie działa w dwóch przypadkach: gdy konto lokalnego Administratora jest wyłączone lub gdy obowiązuje zasada, która usuwa prawa administracyjne od Administratorów lokalnych łączących się zdalnie.
Możesz wykorzystać to uprawnienie za pomocą:

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

SeRestorePrivilege

To uprawnienie umożliwia zapis do dowolnego pliku systemowego, niezależnie od listy kontroli dostępu (ACL) pliku. Otwiera to wiele możliwości eskalacji, w tym możliwość modyfikacji usług, wykonywania DLL Hijackingu i ustawiania debuggerów za pomocą Image File Execution Options oraz wiele innych technik.

SeCreateTokenPrivilege

SeCreateTokenPrivilege to potężne uprawnienie, szczególnie przydatne, gdy użytkownik ma możliwość podmiany tokenów, ale także w przypadku braku uprawnienia SeImpersonatePrivilege. Ta zdolność opiera się na możliwości podmiany tokenu, który reprezentuje tego samego użytkownika i którego poziom integralności nie przekracza poziomu integralności bieżącego procesu.

Kluczowe punkty:

  • Podmiana tożsamości bez uprawnienia SeImpersonatePrivilege: Możliwe jest wykorzystanie uprawnienia SeCreateTokenPrivilege do podniesienia uprawnień poprzez podmianę tokenów w określonych warunkach.
  • Warunki podmiany tokenów: Aby podmiana była udana, token docelowy musi należeć do tego samego użytkownika i mieć poziom integralności mniejszy lub równy poziomowi integralności procesu próbującego dokonać podmiany.
  • Tworzenie i modyfikacja tokenów podmiany: Użytkownicy mogą tworzyć token podmiany i ulepszać go, dodając identyfikator zabezpieczeń (SID) uprzywilejowanej grupy.

SeLoadDriverPrivilege

To uprawnienie umożliwia ładowanie i usuwanie sterowników urządzeń

# 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 wykorzystanie tej uprzywilejowanej roli znajduje się na stronie 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 przejmować własność obiektu, omijając wymaganie udzielania jawnego dostępu dyskrecjonalnego poprzez zapewnienie praw dostępu WRITE_OWNER. Proces polega na najpierw zabezpieczeniu własności zamierzonego klucza rejestru w celu zapisu, 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

Ta uprawnienie umożliwia debugowanie innych procesów, w tym odczyt i zapis w pamięci. Można zastosować różne strategie wstrzykiwania pamięci, które są w stanie uniknąć większości programów antywirusowych i rozwiązań do zapobiegania intruzji na hosta.

Zrzut pamięci

Możesz użyć ProcDump z SysInternals Suite, aby przechwycić pamięć 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 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

To determine the privileges of the current user, you can use the following methods:

1. Whoami

The whoami command displays the username and group membership of the current user.

whoami

2. Net user

The net user command provides detailed information about user accounts, including their group memberships and privileges.

net user <username>

Replace <username> with the name of the user you want to check.

3. Systeminfo

The systeminfo command displays detailed information about the system, including the privileges of the current user.

systeminfo

4. PowerShell

You can also use PowerShell to check the privileges of the current user. Run the following command:

whoami /priv

This will display a list of privileges assigned to the current user.

Remember that these methods will only show the privileges of the current user. To check the privileges of other users, you may need administrative access or specific permissions.

whoami /priv

Tokeny, które są wyłączone, można włączyć, a tak naprawdę można nadużywać 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łna ściąga uprawnień tokenów dostępna pod adresem https://github.com/gtworek/Priv2Admin, poniżej znajdują się tylko bezpośrednie sposoby wykorzystania uprawnień w celu 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 podszywanie się pod tokeny i eskalację uprawnień do nt system przy użyciu narzędzi takich jak potato.exe, rottenpotato.exe i juicypotato.exe" Dziękuję Aurélienowi Chalot za aktualizację. Postaram się wkrótce przepisać to na coś bardziej przypominającego 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

- SeBackupPrivilege (i robocopy) nie są pomocne przy otwieraniu plików.

- Robocopy wymaga zarówno uprawnień SeBackup, jak i SeRestore, aby działać z parametrem /b.

SeCreateToken Admin Narzędzie firm trzecich Utwórz dowolny token, w tym z lokalnymi uprawnieniami administratora za pomocą NtCreateToken.
SeDebug Admin PowerShell Zduplikuj token lsass.exe. Skrypt można znaleźć pod adresem FuzzySecurity
SeLoadDriver Admin Narzędzie firm trzecich

1. Załaduj wadliwy sterownik jądra, tak jak szkg64.sys
2. Wykorzystaj podatność sterownika

Alternatywnie, uprawnienie to może być używane do wyładowania sterowników związanych z zabezpieczeniami za pomocą wbudowanego polecenia ftlMC. np.: fltMC sysmondrv

1. Podatność szkg64 jest wymieniona jako CVE-2018-15732
2. Kod eksploitacji szkg64 został stworzony przez Parveza Anwara

SeRestore Admin PowerShell

1. Uruchom PowerShell/ISE z obecnością uprawnienia 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 antywirusowe.

Alternatywna metoda polega na zastąpieniu binarnych plików usług przechowywanych w "Program Files" przy użyciu tego samego uprawnienia

SeTakeOwnership Admin Wbudowane polecenia

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 antywirusowe.

Alternatywna metoda polega na zastąpieniu binarnych plików usług przechowywanych w "Program Files" przy użyciu tego samego uprawnienia.

SeTcb Admin Narzędzie firm trzecich

Zmieniaj tokeny, aby zawierały lokalne uprawnienia administratora. Może wymagać SeImpersonate.

Do weryfikacji.

Odnośniki

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!