域渗透——AdminSDHolder
字数 1341 2025-08-25 22:58:34
AdminSDHolder 域渗透技术详解
1. AdminSDHolder 概述
AdminSDHolder 是 Active Directory 中一个特殊的容器对象,作为特权组成员对象的安全模板。每个 AD 域中都有一个 AdminSDHolder 对象,位于域的 System 容器中,其 DN 为:
CN=AdminSDHolder,CN=System,DC=domain,DC=com
2. 受保护的 AD 账户和组
2.1 默认受保护组
AdminSDHolder 默认保护以下组:
- 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 上的属性具有写权限。
2.2 受保护对象的特征
受保护的 AD 账户和组具有 AdminCount 属性值为 1 的特征。
重要说明:AdminCount=1 不能保证当前仍然是受保护对象,因为从受保护组中删除用户后,该属性值不会自动重置。
3. 枚举受保护对象
3.1 使用 PowerView
# 查找受保护的所有用户
Get-NetUser -AdminCount
# 只筛选用户名
Get-NetUser -AdminCount | select samaccountname
# 查找受保护的所有组
Get-NetGroup -AdminCount
3.2 使用 AdFind
# 查找受保护的所有用户
AdFind.exe -b DC=domain,DC=com -f "&(objectcategory=person)(samaccountname=*)(admincount=1)" -dn
# 查找受保护的所有组
AdFind.exe -b DC=domain,DC=com -f "&(objectcategory=group)(admincount=1)" -dn
3.3 使用 ActiveDirectory 模块
# 查找受保护的所有用户和组
Import-Module ActiveDirectory
Get-ADObject -LDAPFilter "(&(admincount=1)(|(objectcategory=person)(objectcategory=group)))" | select name
备用方法:如果域中没有安装 ActiveDirectory 模块,可以下载并导入 DLL:
import-module .\Microsoft.ActiveDirectory.Management.dll
4. 操作 AdminSDHolder 对象的 ACL
4.1 查看 ACL
Import-Module .\PowerView.ps1
Get-ObjectAcl -ADSprefix "CN=AdminSDHolder,CN=System" | select IdentityReference
4.2 添加 ACL
# 添加用户对 AdminSDHolder 的完全访问权限
Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -PrincipalSamAccountName username -Verbose -Rights All
# 验证添加结果
Get-ObjectAcl -ADSprefix "CN=AdminSDHolder,CN=System" | select IdentityReference
4.3 删除 ACL
Remove-DomainObjectAcl -TargetSearchBase "LDAP://CN=AdminSDHolder,CN=System,DC=domain,DC=com" -PrincipalIdentity username -Rights All -Verbose
5. SDPROP 机制
5.1 SDPROP 概述
安全描述符传播器(SDPROP)是一个后台任务,负责将可继承 ACE 的更改传播到后代对象。该任务在以下情况下触发:
- 修改对象的安全描述符
- 移动对象
5.2 修改 SDPROP 运行频率
默认情况下,SDPROP 进程在 PDC 模拟器上每 60 分钟运行一次。
修改运行频率(范围:1-120 分钟):
reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 60
警告:修改频率过高会增加 CPU 处理 LSASS 的开销,可能导致系统卡顿。
5.3 强制 SDPROP 运行
- 运行 LDP.exe
- 连接 -> 连接,输入服务器名(当前机器名),端口 389
- 绑定凭证(选择"绑定为当前登录的用户"或提供凭据)
- 浏览 -> 修改
- 在"属性"选项卡中输入
FixUpInheritance - 在"值"字段中输入
Yes - 操作选择"添加",然后单击"输入",最后运行
6. 渗透测试应用
6.1 攻击角度
- 通过修改 AdminSDHolder 的 ACL 实现域权限维持
- 即使不在特权组中,也能控制特权组的成员资格
6.2 防御角度
- 定期检查 AdminSDHolder 中的可疑 ACL
- 监控对 AdminSDHolder 对象的修改
- 检查异常注册表修改(特别是 SDPROP 频率)