Зловживання токенами
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Токени
Якщо ви не знаєте, що таке токени доступу Windows, прочитайте цю сторінку перед продовженням:
{{#ref}} access-tokens.md {{#endref}}
Можливо, ви зможете підвищити привілеї, зловживаючи токенами, які у вас вже є
SeImpersonatePrivilege
Це привілей, який має будь-який процес, що дозволяє імперсонувати (але не створювати) будь-який токен, за умови, що можна отримати дескриптор до нього. Привілейований токен можна отримати з Windows-сервісу (DCOM), спонукаючи його виконати NTLM-аутентифікацію проти експлойту, що, в свою чергу, дозволяє виконати процес з привілеями SYSTEM. Цю вразливість можна експлуатувати за допомогою різних інструментів, таких як juicy-potato, RogueWinRM (який вимагає, щоб winrm був вимкнений), SweetPotato та PrintSpoofer.
{{#ref}} roguepotato-and-printspoofer.md {{#endref}}
{{#ref}} juicypotato.md {{#endref}}
SeAssignPrimaryPrivilege
Цей привілей дуже схожий на SeImpersonatePrivilege, він використовує той же метод для отримання привілейованого токена.
Потім цей привілей дозволяє призначити первинний токен новому/призупиненому процесу. З привілейованим токеном імперсонування ви можете отримати первинний токен (DuplicateTokenEx).
З токеном ви можете створити новий процес за допомогою 'CreateProcessAsUser' або створити призупинений процес і встановити токен (в загальному, ви не можете змінити первинний токен працюючого процесу).
SeTcbPrivilege
Якщо ви активували цей токен, ви можете використовувати KERB_S4U_LOGON для отримання токена імперсонування для будь-якого іншого користувача без знання облікових даних, додати довільну групу (адміністратори) до токена, встановити рівень цілісності токена на "середній" і призначити цей токен поточному потоку (SetThreadToken).
SeBackupPrivilege
Цей привілей змушує систему надавати всі права на читання для будь-якого файлу (обмежено до операцій читання). Він використовується для читання хешів паролів локальних облікових записів адміністратора з реєстру, після чого такі інструменти, як "psexec" або "wmiexec", можуть бути використані з хешем (техніка Pass-the-Hash). Однак ця техніка не спрацьовує за двох умов: коли обліковий запис локального адміністратора вимкнено або коли діє політика, яка позбавляє адміністративних прав локальних адміністраторів, які підключаються віддалено.
Ви можете зловживати цим привілеєм за допомогою:
- https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1
- https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug
- слідуючи IppSec на https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
- Або як пояснено в розділі підвищення привілеїв з операторами резервного копіювання:
{{#ref}} ../active-directory-methodology/privileged-groups-and-token-privileges.md {{#endref}}
SeRestorePrivilege
Цей привілей надає дозвіл на запис до будь-якого системного файлу, незалежно від списку контролю доступу (ACL) файлу. Це відкриває численні можливості для підвищення привілеїв, включаючи можливість модифікувати сервіси, виконувати DLL Hijacking і встановлювати дебагери через параметри виконання образу серед інших технік.
SeCreateTokenPrivilege
SeCreateTokenPrivilege - це потужний привілей, особливо корисний, коли користувач має можливість імперсонувати токени, але також і за відсутності SeImpersonatePrivilege. Ця можливість залежить від здатності імперсонувати токен, який представляє того ж користувача і рівень цілісності якого не перевищує рівень цілісності поточного процесу.
Ключові моменти:
- Імперсонування без SeImpersonatePrivilege: Можливо використовувати SeCreateTokenPrivilege для EoP, імперсуючи токени за певних умов.
- Умови для імперсонування токена: Успішне імперсонування вимагає, щоб цільовий токен належав тому ж користувачу і мав рівень цілісності, який менший або рівний рівню цілісності процесу, що намагається імперсувати.
- Створення та модифікація токенів імперсонування: Користувачі можуть створювати токен імперсонування та покращувати його, додаючи SID (ідентифікатор безпеки) привілейованої групи.
SeLoadDriverPrivilege
Цей привілей дозволяє завантажувати та вивантажувати драйвери пристроїв з створенням запису реєстру з конкретними значеннями для ImagePath
та Type
. Оскільки прямий доступ на запис до HKLM
(HKEY_LOCAL_MACHINE) обмежений, потрібно використовувати HKCU
(HKEY_CURRENT_USER). Однак, щоб зробити HKCU
впізнаваним для ядра для конфігурації драйвера, потрібно дотримуватися певного шляху.
Цей шлях: \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
, де <RID>
- це відносний ідентифікатор поточного користувача. Всередині HKCU
потрібно створити цей весь шлях і встановити два значення:
ImagePath
, що є шляхом до виконуваного бінарного файлуType
, зі значеннямSERVICE_KERNEL_DRIVER
(0x00000001
).
Кроки для виконання:
- Доступ до
HKCU
замістьHKLM
через обмежений доступ на запис. - Створити шлях
\Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
вHKCU
, де<RID>
представляє відносний ідентифікатор поточного користувача. - Встановити
ImagePath
на шлях виконання бінарного файлу. - Призначити
Type
якSERVICE_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)
Більше способів зловживання цим привілеєм у https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
SeTakeOwnershipPrivilege
Це схоже на SeRestorePrivilege. Його основна функція дозволяє процесу приймати власність на об'єкт, обходячи вимогу явного дискреційного доступу шляхом надання прав доступу WRITE_OWNER. Процес включає спочатку отримання власності на потрібний ключ реєстру для запису, а потім зміну DACL для дозволу операцій запису.
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
Ця привілегія дозволяє налагоджувати інші процеси, включаючи читання та запис у пам'ять. Можна використовувати різні стратегії для ін'єкції пам'яті, здатні уникати більшості антивірусних рішень та рішень для запобігання вторгненням на хост.
Dump memory
Ви можете використовувати ProcDump з SysInternals Suite, щоб захопити пам'ять процесу. Зокрема, це може стосуватися процесу Local Security Authority Subsystem Service (LSASS), який відповідає за зберігання облікових даних користувача після успішного входу користувача в систему.
Потім ви можете завантажити цей дамп у mimikatz, щоб отримати паролі:
mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords
RCE
Якщо ви хочете отримати NT SYSTEM
оболонку, ви можете використати:
# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)
Перевірка привілеїв
whoami /priv
Токени, які з'являються як Вимкнені, можуть бути увімкнені, ви насправді можете зловживати Увімкненими та Вимкненими токенами.
Увімкнути всі токени
Якщо у вас є вимкнені токени, ви можете використовувати скрипт EnableAllTokenPrivs.ps1 для увімкнення всіх токенів:
.\EnableAllTokenPrivs.ps1
whoami /priv
Або скрипт, вбудований у цей пост.
Таблиця
Повна шпаргалка з привілеїв токенів доступна за адресою https://github.com/gtworek/Priv2Admin, нижче наведено лише прямі способи експлуатації привілею для отримання адміністративної сесії або читання чутливих файлів.
Привілей | Вплив | Інструмент | Шлях виконання | Зауваження |
---|---|---|---|---|
SeAssignPrimaryToken | Адмін | 3rd party tool | "Це дозволить користувачу імітувати токени та підвищити привілеї до системи nt, використовуючи такі інструменти, як potato.exe, rottenpotato.exe та juicypotato.exe" | Дякую Aurélien Chalot за оновлення. Я спробую перефразувати це на щось більш схоже на рецепт найближчим часом. |
SeBackup | Загроза | Вбудовані команди | Читати чутливі файли за допомогою robocopy /b | - Може бути більш цікавим, якщо ви можете прочитати %WINDIR%\MEMORY.DMP |
SeCreateToken | Адмін | 3rd party tool | Створити довільний токен, включаючи права локального адміністратора, за допомогою NtCreateToken . | |
SeDebug | Адмін | PowerShell | Дублювати токен lsass.exe . | Скрипт можна знайти на FuzzySecurity |
SeLoadDriver | Адмін | 3rd party tool | 1. Завантажити помилковий драйвер ядра, наприклад | 1. Вразливість |
SeRestore | Адмін | PowerShell | 1. Запустіть PowerShell/ISE з присутнім привілеєм SeRestore. | Атаку можуть виявити деякі антивірусні програми. Альтернативний метод ґрунтується на заміні бінарних файлів служб, збережених у "Program Files", використовуючи той же привілей |
SeTakeOwnership | Адмін | Вбудовані команди | 1. | Атаку можуть виявити деякі антивірусні програми. Альтернативний метод ґрунтується на заміні бінарних файлів служб, збережених у "Program Files", використовуючи той же привілей. |
SeTcb | Адмін | 3rd party tool | Маніпулювати токенами, щоб включити права локального адміністратора. Може вимагати SeImpersonate. Підлягає перевірці. |
Посилання
- Ознайомтеся з цією таблицею, що визначає токени Windows: https://github.com/gtworek/Priv2Admin
- Ознайомтеся з цією статтею про підвищення привілеїв за допомогою токенів.
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.