Nadużywanie Tokenów

Reading time: 9 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Tokeny

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

{{#ref}} access-tokens.md {{#endref}}

Możesz być w stanie podnieść uprawnienia, nadużywając tokenów, które już posiadasz

SeImpersonatePrivilege

Jest to uprawnienie, które posiada każdy proces, pozwalające na impersonację (ale nie tworzenie) dowolnego tokena, pod warunkiem, że można uzyskać uchwyt do niego. Uprawniony token można uzyskać z usługi Windows (DCOM) poprzez skłonienie jej 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.

{{#ref}} roguepotato-and-printspoofer.md {{#endref}}

{{#ref}} juicypotato.md {{#endref}}

SeAssignPrimaryPrivilege

Jest bardzo podobne do SeImpersonatePrivilege, użyje tej samej metody do uzyskania uprawnionego tokena.
Następnie to uprawnienie pozwala przypisać token główny do nowego/zawieszonego procesu. Z uprawnionym 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 rzecz biorąc, nie możesz modyfikować głównego tokena działającego procesu).

SeTcbPrivilege

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

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 skrótów haseł lokalnych kont administratorów z rejestru, po czym narzędzia takie jak "psexec" lub "wmiexec" mogą być używane z hasłem (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ą:

{{#ref}} ../active-directory-methodology/privileged-groups-and-token-privileges.md {{#endref}}

SeRestorePrivilege

To uprawnienie zapewnia dostęp do zapisu 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, 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 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 binarnego
  • Type, z wartością SERVICE_KERNEL_DRIVER (0x00000001).

Kroki do wykonania:

  1. Uzyskaj dostęp do HKCU zamiast HKLM z powodu ograniczonego dostępu do zapisu.
  2. Utwórz ścieżkę \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName w HKCU, gdzie <RID> reprezentuje identyfikator względny bieżącego użytkownika.
  3. Ustaw ImagePath na ścieżkę wykonywania pliku binarnego.
  4. Przypisz Type jako SERVICE_KERNEL_DRIVER (0x00000001).
python
# 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 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łó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.

bash
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

Ten przywilej 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 przywilejem.

Zrzut pamięci

Możesz użyć ProcDump z SysInternals Suite, aby złapać pamięć procesu. W szczególności może to dotyczyć 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:

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ć:

powershell
# 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:

powershell
.\EnableAllTokenPrivs.ps1
whoami /priv

Lub skrypt osadzony w tym poście.

Tabela

Pełna ściągawka uprawnień tokenów znajduje się pod adresem https://github.com/gtworek/Priv2Admin, podsumowanie poniżej wymieni tylko bezpośrednie sposoby na wykorzystanie uprawnienia do uzyskania sesji administratora lub odczytu wrażliwych plików.

UprawnienieWpływNarzędzieŚcieżka wykonaniaUwagi
SeAssignPrimaryTokenAdminnarzędzie firm trzecich"Pozwoliłoby to użytkownikowi na podszywanie się pod tokeny i podniesienie 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.
SeBackupZagrożenieWbudowane poleceniaOdczytaj 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.

SeCreateTokenAdminnarzędzie firm trzecichUtwórz dowolny token, w tym prawa lokalnego administratora za pomocą NtCreateToken.
SeDebugAdminPowerShellDuplikuj token lsass.exe.Skrypt do znalezienia na FuzzySecurity
SeLoadDriverAdminnarzędzie firm trzecich

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, tj.: fltMC sysmondrv

1. Luka w szkg64 jest wymieniona jako CVE-2018-15732
2. szkg64 kod exploitu został stworzony przez Parvez Anwar

SeRestoreAdminPowerShell

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

Alternatywna metoda polega na zastąpieniu binariów usług przechowywanych w "Program Files" przy użyciu tych samych uprawnień

SeTakeOwnershipAdminWbudowane 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 binariów usług przechowywanych w "Program Files" przy użyciu tych samych uprawnień.

SeTcbAdminnarzędzie firm trzecich

Manipuluj tokenami, aby mieć włączone prawa lokalnego administratora. Może wymagać SeImpersonate.

Do weryfikacji.

Odniesienie

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks