Abusing Tokens
Last updated
Last updated
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Якщо ви не знаєте, що таке Токени Доступу Windows, прочитайте цю сторінку перед продовженням:
Access TokensМожливо, ви зможете підвищити привілеї, зловживаючи токенами, які у вас вже є
Це привілей, який має будь-який процес, що дозволяє зловживання (але не створення) будь-яким токеном, якщо можна отримати дескриптор до нього. Привілейований токен можна отримати з Windows-сервісу (DCOM), спонукаючи його виконати NTLM-аутентифікацію проти експлойту, що, в свою чергу, дозволяє виконання процесу з привілеями SYSTEM. Цю вразливість можна експлуатувати за допомогою різних інструментів, таких як juicy-potato, RogueWinRM (який вимагає, щоб winrm був вимкнений), SweetPotato та PrintSpoofer.
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotatoJuicyPotatoЦей привілей дуже схожий на SeImpersonatePrivilege, він використовує той же метод для отримання привілейованого токена. Потім цей привілей дозволяє призначити первинний токен новому/призупиненому процесу. З привілейованим токеном зловживання ви можете отримати первинний токен (DuplicateTokenEx). З токеном ви можете створити новий процес за допомогою 'CreateProcessAsUser' або створити призупинений процес і встановити токен (в загальному, ви не можете змінити первинний токен працюючого процесу).
Якщо ви активували цей токен, ви можете використовувати KERB_S4U_LOGON для отримання токена зловживання для будь-якого іншого користувача без знання облікових даних, додати довільну групу (адміністратори) до токена, встановити рівень цілісності токена на "середній" і призначити цей токен поточному потоку (SetThreadToken).
Цей привілей дозволяє системі надавати весь доступ для читання до будь-якого файлу (обмеженого операціями читання) за допомогою цього привілею. Він використовується для читання хешів паролів локальних облікових записів адміністратора з реєстру, після чого такі інструменти, як "psexec" або "wmiexec", можуть бути використані з хешем (техніка Pass-the-Hash). Однак ця техніка не спрацьовує за двох умов: коли обліковий запис локального адміністратора вимкнено або коли існує політика, яка позбавляє адміністративних прав локальних адміністраторів, які підключаються віддалено. Ви можете зловживати цим привілеєм за допомогою:
слідуючи IppSec на https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
Або, як пояснено в розділі підвищення привілеїв з Операторами Резервного Копіювання:
Цей привілей надає дозвіл на запис до будь-якого системного файлу, незалежно від Списку Контролю Доступу (ACL) файлу. Це відкриває численні можливості для підвищення привілеїв, включаючи можливість модифікувати сервіси, виконувати DLL Hijacking та встановлювати дебагери через параметри виконання образу серед інших технік.
SeCreateTokenPrivilege є потужним дозволом, особливо корисним, коли користувач має можливість зловживати токенами, але також і за відсутності SeImpersonatePrivilege. Ця можливість залежить від здатності зловживати токеном, який представляє того ж користувача і рівень цілісності якого не перевищує рівень цілісності поточного процесу.
Ключові моменти:
Зловживання без SeImpersonatePrivilege: Можливо використовувати SeCreateTokenPrivilege для EoP, зловживаючи токенами за певних умов.
Умови для зловживання токенами: Успішне зловживання вимагає, щоб цільовий токен належав тому ж користувачу і мав рівень цілісності, який менший або дорівнює рівню цілісності процесу, що намагається зловживати.
Створення та модифікація токенів зловживання: Користувачі можуть створювати токен зловживання та покращувати його, додаючи SID (ідентифікатор безпеки) привілейованої групи.
Цей привілей дозволяє завантажувати та вивантажувати драйвери пристроїв з створенням запису реєстру з конкретними значеннями для 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
).
Більше способів зловживання цим привілеєм у https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
Це схоже на SeRestorePrivilege. Його основна функція дозволяє процесу приймати власність на об'єкт, обходячи вимогу явного дискреційного доступу шляхом надання прав доступу WRITE_OWNER. Процес включає спочатку отримання власності на запланований ключ реєстру для запису, а потім зміну DACL для дозволу операцій запису.
Ця привілегія дозволяє налагоджувати інші процеси, включаючи читання та запис у пам'ять. Можна використовувати різні стратегії для ін'єкції пам'яті, здатні обходити більшість антивірусних та рішень для запобігання вторгненням на хост, з цією привілегією.
Ви можете використовувати ProcDump з SysInternals Suite, щоб захопити пам'ять процесу. Зокрема, це може стосуватися процесу Local Security Authority Subsystem Service (LSASS), який відповідає за зберігання облікових даних користувача після успішного входу користувача в систему.
Потім ви можете завантажити цей дамп у mimikatz, щоб отримати паролі:
Якщо ви хочете отримати NT SYSTEM
оболонку, ви можете використати:
Токени, які з'являються як Вимкнені, можуть бути увімкнені, ви насправді можете зловживати Увімкненими та Вимкненими токенами.
Якщо у вас є токени, що вимкнені, ви можете використовувати скрипт EnableAllTokenPrivs.ps1 для увімкнення всіх токенів:
Or the script embed in this post.
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.
SeAssignPrimaryToken
Admin
3rd party tool
"Це дозволить користувачу імітувати токени та підвищити привілеї до системи nt, використовуючи такі інструменти, як potato.exe, rottenpotato.exe та juicypotato.exe"
Дякую Aurélien Chalot за оновлення. Я спробую перефразувати це на щось більш схоже на рецепт найближчим часом.
SeBackup
Threat
Вбудовані команди
Читати чутливі файли за допомогою robocopy /b
- Може бути більш цікавим, якщо ви можете прочитати %WINDIR%\MEMORY.DMP
- SeBackupPrivilege
(і robocopy) не допомагає, коли йдеться про відкриті файли.
- Robocopy вимагає як SeBackup, так і SeRestore для роботи з параметром /b.
SeCreateToken
Admin
3rd party tool
Створити довільний токен, включаючи права локального адміністратора, за допомогою NtCreateToken
.
SeLoadDriver
Admin
3rd party tool
1. Завантажити помилковий драйвер ядра, такий як szkg64.sys
2. Використати вразливість драйвера
Альтернативно, привілей може бути використаний для вивантаження драйверів, пов'язаних із безпекою, за допомогою вбудованої команди ftlMC
. тобто: fltMC sysmondrv
1. Вразливість szkg64
зазначена як CVE-2018-15732
2. szkg64
код експлуатації був створений Parvez Anwar
SeRestore
Admin
PowerShell
1. Запустіть PowerShell/ISE з привілеєм SeRestore. 2. Увімкніть привілей за допомогою Enable-SeRestorePrivilege. 3. Перейменуйте utilman.exe в utilman.old 4. Перейменуйте cmd.exe в utilman.exe 5. Заблокуйте консоль і натисніть Win+U
Атаку можуть виявити деякі антивірусні програми.
Альтернативний метод ґрунтується на заміні бінарних файлів служб, збережених у "Program Files", використовуючи той же привілей
SeTakeOwnership
Admin
Вбудовані команди
1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. Перейменуйте cmd.exe в utilman.exe
4. Заблокуйте консоль і натисніть Win+U
Атаку можуть виявити деякі антивірусні програми.
Альтернативний метод ґрунтується на заміні бінарних файлів служб, збережених у "Program Files", використовуючи той же привілей.
SeTcb
Admin
3rd party tool
Маніпулювати токенами, щоб включити права локального адміністратора. Може вимагати SeImpersonate.
Потрібно перевірити.
Take a look to this table defining Windows tokens: https://github.com/gtworek/Priv2Admin
Take a look to this paper about privesc with tokens.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)