.. | ||
README.md |
Зловживання токенами
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Токени
Якщо ви не знаєте, що таке токени доступу Windows, прочитайте цю сторінку перед продовженням:
{% content-ref url="../access-tokens.md" %} access-tokens.md {% endcontent-ref %}
Можливо, ви зможете підвищити привілеї, зловживаючи токенами, які у вас вже є
SeImpersonatePrivilege
Це привілей, який має будь-який процес, що дозволяє зловживання (але не створення) будь-яким токеном, якщо можна отримати дескриптор до нього. Привілейований токен можна отримати з Windows-сервісу (DCOM), спонукаючи його виконати NTLM-аутентифікацію проти експлойту, що дозволяє виконання процесу з привілеями SYSTEM. Цю вразливість можна експлуатувати за допомогою різних інструментів, таких як juicy-potato, RogueWinRM (який вимагає, щоб winrm був вимкнений), SweetPotato, EfsPotato, DCOMPotato та PrintSpoofer.
{% content-ref url="../roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}
{% content-ref url="../juicypotato.md" %} juicypotato.md {% endcontent-ref %}
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
- Або, як пояснено в розділі підвищення привілеїв з резервними операторами:
{% content-ref url="../../active-directory-methodology/privileged-groups-and-token-privileges.md" %} privileged-groups-and-token-privileges.md {% endcontent-ref %}
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
Or the script embed in this post.
Table
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.
Privilege | Impact | Tool | Execution path | Remarks |
---|---|---|---|---|
SeAssignPrimaryToken |
Admin | 3rd party tool | "Це дозволить користувачу імітувати токени та підвищити привілеї до системи nt, використовуючи такі інструменти, як potato.exe, rottenpotato.exe та 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 | Читати чутливі файли за допомогою robocopy /b |
- Може бути більш цікавим, якщо ви можете прочитати %WINDIR%\MEMORY.DMP |
SeCreateToken |
Admin | 3rd party tool | Створити довільний токен, включаючи права локального адміністратора, за допомогою NtCreateToken . |
|
SeDebug |
Admin | PowerShell | Дублювати токен lsass.exe . |
Script to be found at FuzzySecurity |
SeLoadDriver |
Admin | 3rd party tool | 1. Завантажити помилковий драйвер ядра, такий як |
1. Вразливість |
SeRestore |
Admin | PowerShell | 1. Запустіть PowerShell/ISE з присутнім привілеєм SeRestore. |
Атаку можуть виявити деякі антивірусні програми. Альтернативний метод ґрунтується на заміні бінарних файлів служб, збережених у "Program Files", використовуючи той же привілей |
SeTakeOwnership |
Admin | Built-in commands | 1. |
Атаку можуть виявити деякі антивірусні програми. Альтернативний метод ґрунтується на заміні бінарних файлів служб, збережених у "Program Files", використовуючи той же привілей. |
SeTcb |
Admin | 3rd party tool | Маніпулювати токенами, щоб включити права локального адміністратора. Може вимагати SeImpersonate. Потрібно перевірити. |
Reference
- Take a look to this table defining Windows tokens: https://github.com/gtworek/Priv2Admin
- Take a look to this paper about privesc with tokens.
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.