
Пути эксплуатации, позволяющие (зло)употреблять привилегиями Windows для повышения своих прав в операционной системе.
Идея заключается в "переводе" привилегий Windows OS на путь, ведущий к:
Привилегии перечислены и описаны по адресу: https://learn.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
Если цель может быть достигнута несколькими способами, приоритет следующий:
Вы можете проверить свои привилегии с помощью whoami /priv. Отключенные привилегии так же хороши, как и включенные. Единственное, что важно — есть ли у вас привилегия в списке или нет.
Примечание 1: Всякий раз, когда путь атаки заканчивается созданием токена, можно предположить, что следующим шагом будет создание нового процесса с использованием такого токена и последующий захват контроля над ОС.
Примечание 2:
а. Для прямого вызова NtQuerySystemInformation()/ZwQuerySystemInformation() необходимые привилегии можно найти здесь.
б. Для NtSetSystemInformation()/ZwSetSystemInformation() необходимые привилегии перечислены здесь.
Примечание 3: Я сосредотачиваюсь только на ОС. Если привилегия работает в AD, но не в самой ОС, я описываю её как неиспользуемую в ОС. Было бы неплохо, если бы кто-то глубже изучил сценарии, ориентированные на AD.
Не стесняйтесь вносить свой вклад и/или обсуждать представленные идеи.
| Привилегия | Влияние | Инструмент | Путь выполнения | Примечания |
|---|---|---|---|---|
SeAssignPrimaryToken | Администратор | Сторонний инструмент | "Это позволило бы пользователю олицетворять токены и повысить привилегии до nt system с помощью таких инструментов, как potato.exe, rottenpotato.exe и juicypotato.exe" | Спасибо Aurélien Chalot за обновление. Я постараюсь перефразировать это в более похожий на рецепт вид в ближайшее время. |
SeAudit | Угроза | Сторонний инструмент | Запись событий в журнал безопасности для обмана аудита или перезаписи старых событий. | Запись собственных событий возможна с помощью API Authz Report Security Event.- см. PoC от @daem0nc0re |
SeBackup | Администратор | Сторонний инструмент | 1. Сделать резервную копию разделов реестра HKLM\SAM и HKLM\SYSTEM 2. Извлечь хеши локальных учетных записей из базы данных SAM 3. Pass-the-Hash от имени члена локальной группы Администраторы Альтернативно можно использовать для чтения конфиденциальных файлов. | Для получения дополнительной информации обратитесь к файлу SeBackupPrivilege.- см. PoC от @daem0nc0re |
SeChangeNotify | Нет | - | - | Привилегия есть у всех. Её отзыв может сделать ОС (Windows Server 2019) незагружаемой. |
SeCreateGlobal | ? | ? | ? | |
SeCreatePagefile | Нет | Встроенные команды | Создать hiberfil.sys, прочитать его офлайн, найти конфиденциальные данные. | Требует офлайн-доступа, что в любом случае приводит к правам администратора. - См. PoC от @daem0nc0re |
SeCreatePermanent | ? | ? | ? | |
SeCreateSymbolicLink | ? | ? | ? | |
SeCreateToken | Администратор | Сторонний инструмент | Создание произвольного токена, включая права локального администратора, с помощью NtCreateToken.- см. PoC от @daem0nc0re | |
SeDebug | Администратор | PowerShell | Дублировать токен lsass.exe. | Скрипт можно найти на FuzzySecurity. - См. PoC от @daem0nc0re |
SeDelegateSession-UserImpersonate | ? | ? | ? | Имя привилегии разбито для сужения столбца. |
SeEnableDelegation | Нет | - | - | Привилегия не используется в Windows OS. |
SeImpersonate | Администратор | Сторонний инструмент | Инструменты из семейства Potato (potato.exe, RottenPotato, RottenPotatoNG, Juicy Potato, SweetPotato, RemotePotato0), RogueWinRM, PrintSpoofer и т.д. | Аналогично SeAssignPrimaryToken, позволяет по замыслу создавать процесс в контексте безопасности другого пользователя (используя дескриптор токена этого пользователя). Для получения необходимого токена можно использовать множество инструментов и методов. |
SeIncreaseBasePriority | Доступность | Встроенные команды | start /realtime SomeCpuIntensiveApp.exe | Может быть более интересно на серверах. |
SeIncreaseQuota | Доступность | Сторонний инструмент | Изменить лимиты процессора, памяти и кэша на некоторые значения, делающие ОС незагружаемой. | - Квоты не проверяются в безопасном режиме, что делает восстановление относительно лёгким. - Та же привилегия используется для управления квотами реестра. |
SeIncreaseWorkingSet | Нет | - | - | Привилегия есть у всех. Проверяется при вызове функций тонкой настройки управления памятью. |
SeLoadDriver | Администратор | Сторонний инструмент | 1. Загрузить уязвимый драйвер ядра, например szkg64.sys2. Эксплуатировать уязвимость драйвера Альтернативно привилегию можно использовать для выгрузки драйверов безопасности с помощью встроенной команды fltMC, например: fltMC sysmondrv | 1. Уязвимость szkg64 указана как CVE-2018-157322. Код эксплойта для szkg64 создан Parvez Anwar |
SeLockMemory | Доступность | Сторонний инструмент | Истощить системный раздел памяти, перемещая страницы. | PoC опубликован Walied Assar (@waleedassar) |
SeMachineAccount | Нет | - | - | Привилегия не используется в Windows OS. |
SeManageVolume | Администратор | Сторонний инструмент | 1. Включить привилегию в токене 2. Создать дескриптор для \.\C: с SYNCHRONIZE | FILE_TRAVERSE3. Отправить FSCTL_SD_GLOBAL_CHANGE для замены S-1-5-32-544 на S-1-5-32-5454. Перезаписать utilman.exe и т.д. | FSCTL_SD_GLOBAL_CHANGE можно выполнить с помощью этого фрагмента кода. |
SeProfileSingleProcess | Нет | - | - | Привилегия проверяется перед изменением (и в очень ограниченном наборе команд — перед запросом) параметров Prefetch, SuperFetch и ReadyBoost. Влияние может быть скорректировано, так как реальный эффект неизвестен. |