启用调试程序策略时如何获取SeDebugPrivilege

时间:2020-01-09 10:46:44  来源:igfitidea点击:

在上一篇文章中,我们说过,防御类似于mimikatz的实用程序的一种方法是,使用调试程序策略为系统管理员禁用调试特权。但是,最近发现,没有调试特权(Windows中为SeDebugPrivilege),本地服务器管理员将无法安装或者更新Microsoft SQL Server。问题在于,启动时,SQL Server安装程序会检查是否具有SeSecurity,SeBackup和SeDebug特权。它需要运行SQL Server进程并获取有关成功启动SQL Server的信息。这是它的样子。

在SQL Server安装过程中,安装程序将进行初步检查并确定"设置帐户特权"所存在的一些问题。

如果单击"失败"链接,则会看到以下消息:

"规则安装程序帐户特权失败。"运行SQL Server安装程序的帐户没有以下一项或者全部权利:备份文件和目录的权利,管理审核和安全日志的权利以及调试的权利程式。要继续,请使用同时拥有这两种权限的帐户。有关更多信息,请参见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"规则时,安装程序发现当前进程没有以下特权之一:

  • 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: msk-sql10
(09) 2017-12-12 11:15:13 Slp: Rule evaluation done   : Failed

我决定寻找一种无需更改或者禁用"调试程序"策略即可获取SeDebugPrivilege的解决方法。事实证明,如果我们在服务器上具有本地管理员特权,则有一种简便的方法可以绕过此策略。可以管理服务器本地安全策略的" secedit"工具将为我们提供帮助。

检查当前特权:

whoami /priv

如我们所见,用户的当前令牌中没有SeDebugPrivilege。

将组策略设置的当前用户权限导出到文本文件:

secedit /export /cfg secpolicy.inf /areas USER_RIGHTS

使用任何文本编辑器,打开" secpolicy.inf",然后在[Privilege Rights]部分中添加一个字符串,以对本地管理员组启用Debug Programs特权。

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

注意本地管理员组的SID S-1-5-32-544可以更改为任何其他SID。要将组或者用户名转换为SID,请参阅如何将SID转换为UserName和Vice Versa。

保存文件。现在应用新的用户权限:

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

注意我们必须确认覆盖当前设置。

注销并再次登录,并使用secpol.msc确保将"调试程序"特权分配给了本地管理员组。在whoami/priv命令的结果中也显示了相同的内容:

SeDebugPrivilege                Debug programs                            Enabled

现在,我们可以运行安装或者更新SQL Server。但是请记住,SeDebugPrivilege是临时分配的,它将在下一个GPO更新周期(在用户注销之后)重置。

我们应该了解,如果启用"调试程序"策略,它不会完全保护我们免受已经以本地管理员权限渗透到服务器的恶意软件获取SeDebugPrivilege的侵害,并且可能损害服务器上工作的所有用户/管理员帐户。