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

Во время установки SQL Server программа установки выполняет предварительные проверки и выявляет некоторые проблемы с Привилегии учетной записи установки.

Ошибка настройки sql-сервера: Не удалось установить привилегии учетной записи

Если щелкнуть ссылку Failed, можно увидеть следующее сообщение:

Правило «Настройка привилегий учетной записи» не удалось.
Учетная запись, под которой выполняется установка SQL Server Setup, не имеет одного или всех следующих прав: права на резервное копирование файлов и каталогов, права на управление аудитом и журналом безопасности и права на отладку программ. Чтобы продолжить, используйте учетную запись с обоими этими правами. Дополнительные сведения см. на сайтах https://msdn.microsoft.com/en-us/library/ms813696.aspx, https://msdn.microsoft.com/en-us/library/ms813959.aspx и https://msdn.microsoft.com/en-us/library/ms813847.aspx.

Правило

Теперь откройте SystemConfigurationCheck_Report.htm отчет.

HasSecurityBackupAndDebugPrivilegesCheck failed

Как вы можете видеть, при проверке HasSecurityBackupAndDebugPrivilegesCheck правило, программа установки обнаружила, что текущий процесс не имеет ни одной из следующих привилегий:

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

В журнале есть подробная информация о том, что процесс установки не имеет флага SeDebug.

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

Я решил поискать обходное решение для получения SeDebugPrivilege без изменения или отключения политики отладочных программ. Оказалось, что существует довольно простой способ обойти эту политику, если у вас есть привилегии локального администратора на вашем сервере. Адрес 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 для группы локальных администраторов

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

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

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

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

secedit overwrite USER_RIGHTS

Выйдите из системы и снова войдите в нее, и с помощью secpol.msc убедитесь, что привилегии Debug Program назначены группе локальных администраторов. То же самое показано в результатах команды whoami /priv:

SeDebugPrivilege                Debug programs                            Enabled

Получение привилегий SeDebugPrivilege

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

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