Abusing Tokens
Токени
Якщо ви не знаєте, що таке токени доступу Windows, прочитайте цю сторінку перед продовженням:
pageAccess TokensМожливо, ви зможете підвищити привілеї, зловживаючи токенами, які вже маєте
SeImpersonatePrivilege
Це привілегія, яку має будь-який процес, що дозволяє імітацію (але не створення) будь-якого токена, за умови, що можна отримати до нього доступ. Привілегований токен можна отримати від служби Windows (DCOM), спонукавши її виконати аутентифікацію NTLM проти експлойту, що подальше дозволяє виконати процес з привілеями SYSTEM. Цю уразливість можна використовувати за допомогою різних інструментів, таких як juicy-potato, RogueWinRM (який вимагає вимкнення winrm), SweetPotato та PrintSpoofer.
pageRoguePotato, PrintSpoofer, SharpEfsPotato, GodPotatopageJuicyPotatoSeAssignPrimaryPrivilege
Це дуже схоже на SeImpersonatePrivilege, воно використовуватиме той самий метод для отримання привілегованого токена. Потім ця привілегія дозволяє призначити первинний токен новому/призупиненому процесу. З привілегованим токеном імітації можна похідно створити первинний токен (DuplicateTokenEx). З цим токеном можна створити новий процес за допомогою 'CreateProcessAsUser' або створити процес призупинено та встановити токен (загалом, ви не можете змінювати первинний токен запущеного процесу).
SeTcbPrivilege
Якщо у вас увімкнено цей токен, ви можете використовувати KERB_S4U_LOGON, щоб отримати токен імітації для будь-якого іншого користувача без знання облікових даних, додати довільну групу (адміністратори) до токена, встановити рівень цілісності токена на "середній" та призначити цей токен поточному потоці (SetThreadToken).
SeBackupPrivilege
Система змушується надавати всім доступ на читання до будь-якого файлу (обмежено на операції читання) за допомогою цієї привілегії. Вона використовується для читання хешів паролів локальних облікових записів адміністратора з реєстру, після чого можна використовувати інструменти, такі як "psexec" або "wmicexec" з хешем (техніка Pass-the-Hash). Однак ця техніка не працює у двох випадках: коли обліковий запис локального адміністратора вимкнено або коли існує політика, яка забороняє адміністративні права для локальних адміністраторів, які підключаються віддалено. Ви можете зловживати цією привілегією за допомогою:
слідуючи IppSec в https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
Або як пояснено в розділі підвищення привілеїв з операторами резервного копіювання:
SeRestorePrivilege
Ця привілегія надає дозвіл на запис доступу до будь-якого системного файлу, незалежно від списку керування доступом (ACL) файлу. Вона відкриває безліч можливостей для підвищення привілеїв, включаючи можливість змінювати служби, виконувати DLL Hijacking та встановлювати відлагоджувачі через параметри виконання файлу зображення серед інших різних технік.
SeCreateTokenPrivilege
SeCreateTokenPrivilege є потужним дозволом, особливо корисним, коли користувач має можливість імітувати токени, але також у відсутності SeImpersonatePrivilege. Ця можливість залежить від здатності імітувати токен, який представляє того ж користувача і чиїй рівень цілісності не перевищує рівня цілісності поточного процесу.
Ключові моменти:
Імітація без SeImpersonatePrivilege: Можливо використовувати SeCreateTokenPrivilege для підвищення привілеїв за певних умов імітації токенів.
Умови для імітації токенів: Успішна імітація вимагає, щоб цільовий токен належав тому ж користувачеві та мав рівень цілісності, який менше або дорівнює рівню цілісності процесу, який намагається імітувати.
Створення та зміна токенів імітації: Користувачі можуть створювати токен імітації та покращувати його, додавши ідентифікатор безпеки привілегованої групи.
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
).
Додаткові способи зловживання цим привілеєм за посиланням https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
SeTakeOwnershipPrivilege
Це схоже на SeRestorePrivilege. Його основна функція дозволяє процесу припустити власність об'єкта, обійшовши вимогу до явного доступу за допомогою надання прав доступу WRITE_OWNER. Процес полягає в спочатку забезпеченні власності потрібного ключа реєстру для запису, а потім зміні DACL для можливості виконання запису.
SeDebugPrivilege
Ця привілея дозволяє налагоджувати інші процеси, включаючи читання та запис у пам'ять. З цією привілеєю можна використовувати різні стратегії для впровадження в пам'ять, здатні ухилятися від більшості антивірусів та рішень для запобігання вторгнення на хост.
Вивантаження пам'яті
Ви можете використовувати ProcDump з SysInternals Suite, щоб захопити пам'ять процесу. Зокрема, це може стосуватися процесу Local Security Authority Subsystem Service (LSASS), який відповідає за зберігання облікових даних користувача після успішного входу користувача до системи.
Після цього ви можете завантажити це вивантаження в mimikatz, щоб отримати паролі:
RCE
Якщо ви хочете отримати оболонку NT SYSTEM
, ви можете використовувати:
Перевірка привілеїв
Токени, які з'являються як вимкнені, можуть бути увімкнені, ви можете фактично зловживати Увімкненими та Вимкненими токенами.
Увімкнути всі токени
Якщо у вас вимкнені токени, ви можете використати скрипт EnableAllTokenPrivs.ps1, щоб увімкнути всі токени:
Або скрипт вбудований у цей пост.
Таблиця
Повний шпаргалка привілеїв токенів за посиланням https://github.com/gtworek/Priv2Admin, нижче наведено лише прямі способи використання привілеїв для отримання сеансу адміністратора або читання чутливих файлів.
Привілегія | Вплив | Інструмент | Шлях виконання | Примітки |
---|---|---|---|---|
| Адмін | Інструмент стороннього розробника | "Це дозволить користувачеві імітувати токени та підвищувати привілеї до nt системи за допомогою таких інструментів, як potato.exe, rottenpotato.exe та juicypotato.exe" | Дякую Aurélien Chalot за оновлення. Спробую переформулювати це на щось більш схоже на рецепт незабаром. |
| Загроза | Вбудовані команди | Читання чутливих файлів за допомогою | - Може бути цікавіше, якщо ви зможете прочитати %WINDIR%\MEMORY.DMP
- |
| Адмін | Інструмент стороннього розробника | Створення довільного токену, включаючи права локального адміністратора за допомогою | |
| Адмін | PowerShell | Подвоїти токен | Скрипт можна знайти на FuzzySecurity |
| Адмін | Інструмент стороннього розробника | 1. Завантажте помилковий драйвер ядра, такий як | 1. Вразливість |
| Адмін | PowerShell | 1. Запустіть PowerShell/ISE з привілеєм SeRestore присутнім. 2. Увімкніть привілегію за допомогою Enable-SeRestorePrivilege). 3. Перейменуйте utilman.exe на utilman.old 4. Перейменуйте cmd.exe на utilman.exe 5. Заблокуйте консоль і натисніть Win+U | Атаку може виявити деяке антивірусне програмне забезпечення. Альтернативний метод полягає в заміні службових бінарних файлів, збережених у "Program Files", використовуючи ту ж саму привілегію |
| Адмін | Вбудовані команди | 1. | Атаку може виявити деяке антивірусне програмне забезпечення. Альтернативний метод полягає в заміні службових бінарних файлів, збережених у "Program Files", використовуючи ту ж саму привілегію. |
| Адмін | Інструмент стороннього розробника | Маніпулювати токенами, щоб включити права локального адміністратора. Може знадобитися SeImpersonate. Підлягає перевірці. |
Посилання
Подивіться цю таблицю, що визначає токени Windows: https://github.com/gtworek/Priv2Admin
Ознайомтеся з цією статтею про підвищення привілеїв за допомогою токенів.
Last updated