Получение привилегии SeDebugPrivilege при включенной политике Debug Program

В предыдущей статье мы рассказывали, что одной из техник защиты от извлечения паролей из памяти Windows mimikatz-like утилитами является запрет получения debug-привилегии для администраторов системы с помощью групповой политики Debug Program. Однако недавно обнаружилось, что без прав отладки (в Windows это привилегия SeDebugPrivilege), локальный администратор сервера не может установить или обновлять Microsoft SQL Server. Дело в том, что установщик SQL Server при запуске проверяет наличие привилегий SeSecurity. SeBackup и SeDebug, которые нужны ему для запуска процесса SQL Server и получения информации об успешном запуске SQL Server. Вот как это выглядит.

Во время установки SQL Server при выполнении предварительных проверок установщик спотыкается на проверке Setup account privileges.

Установка SQL Server прерывается при проверке Setup account privilegesЩелкнув по ссылке “Failed”, можно увидеть такое сообщение:

Rule “Setup account privileges” failed.
The account that is running SQL Server Setup does not have one or all of the following rights: the right to back up files and directories, the right to manage auditing and the security log and the right to debug programs. To continue, use an account with both of these rights. For more information, see https://msdn.microsoft.com/en-us/library/ms813696.aspx, https://msdn.microsoft.com/en-us/library/ms813959.aspx and https://msdn.microsoft.com/en-us/library/ms813847.aspx.

Rule “Setup account privileges” failed
Откроем теперь отчет установки SystemConfigurationCheck_Report.htm.

:журнал установки sql server SystemConfigurationCheck_Report.htmКак вы видите, установщик при проверке правила HasSecurityBackupAndDebugPrivilegesCheck установил, что у текущего процесса отсутствует одна из следующих привилегий:

  • SeSecurity – управление журналами аудита и безопасности
  • SeBackup – права на резервное копирование файлов и каталогов
  • SeDebug — право отладки программ

В логе есть более детальная информация, указывающая, что у процесса установки отсутствует флаг SeDebug:

(09) 2017-09-12 14:25:13 Slp: Initializing rule : Setup account privileges

(09) 2017-09-12 14:25:13 Slp: Rule is will be executed : True
(09) 2017-09-12 14:25:13 Slp: Init rule target object: Microsoft.SqlServer.Configuration.SetupExtension.FacetPrivilegeCheck
(09) 2017-09-12 14:25:13 Slp: Rule ‘HasSecurityBackupAndDebugPrivilegesCheck’ Result: Running process has SeSecurity privilege, has SeBackup privilege and does not have SeDebug privilege.
(09) 2017-09-12 14:25:13 Slp: Evaluating rule : HasSecurityBackupAndDebugPrivilegesCheck
(09) 2017-09-12 14:25:13 Slp: Rule running on machine: msk-sql10
(09) 2017-09-12 14:25:13 Slp: Rule evaluation done : Failed

Я решил поискать обходной путь получения прав SeDebugPrivilege без изменения или отключения политики Debug programs. И как оказалось, имеется довольно простой способ обхода этой политики при наличии прав локального администратора на сервере. В этом нам поможет утилита secedit, позволяющая управлять локальными политиками безопасности сервера.

Проверяем текущие привилегии:

whoami /priv

whoami privКак вы видите, сейчас в текущем токене пользователя отсутствует привилегия SeDebugPrivilege .

Экспортируем текущие права пользователей, настроенные групповыми политиками в текстовый файл:

secedit /export /cfg secpolicy.inf /areas USER_RIGHTS

Теперь с помощью любого тестового редактора нужно открыть на редактирование файл secpolicy.inf и в секцию [Privilege Rights] добавить строку, предоставляющую права Debug Programs группе локальных администраторов.

SeDebugPrivilege = *S-1-5-32-544

SeDebugPrivilege = *S-1-5-32-544

Примечание. SID группы локальных администраторов S-1-5-32-544 можно заменить на любой другой. Процесс преобразования имени группы или пользователя в SID описан в статье Как узнать SID пользователя по имени и наоборот

Сохраните файл. Теперь нужно применить новые пользовательские права:

secedit /configure /db secedit.sdb /cfg secpolicy.inf /overwrite /areas USER_RIGHTS

Примечание. Необходимо подтвердить перезапись текущих настроек.

secedit /configure /db secedit.sdb /cfg secpolicy.inf /overwrite /areas USER_RIGHTSТеперь нужно выполнить логофф/логон и с помощью secpol.msc убедиться, что для группы локальных администраторов назначены права Debug Program. Это же подтверждает команда whoami /priv:

SeDebugPrivilege                Debug programs                            Enabled

получение привелегии SeDebugPrivilegeТеперь можно запускать установку/обновлений SQL Server. Но стоит иметь в виду, что привилегия SeDebugPrivilege в данном случается назначается лишь временно и они будут сброшены при следующем обновлении групповых политик (но уже после logoff пользователя).

Как вы понимаете, включение запретительной политики Debug programs не является панацей от получения права SeDebugPrivilege вредоносными программами, которые уже проникли на сервер с правами локального администратора, что может скомпрометировать все учетные записи пользователей/администраторов, работящих на сервере.


Предыдущая статья Следующая статья


Комментариев: 7 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)