关于 analyzing-active-directory-acl-abuse
面向 Active Directory 安全调查的技能,使用 ldap3 检查对象安全描述符,发现非管理员主体持有的危险 ACL 权限,并输出攻击路径和修复报告。
主要功能
- 01通过 LDAP 查询 AD 对象
- 02解析安全描述符和 ACE
- 03识别危险权限配置
- 04筛选非管理员主体
- 05生成攻击路径与修复报告
适用场景
- 01排查 Active Directory ACL 滥用风险
- 02审计敏感对象的权限配置
- 03整理 ACL 攻击路径及修复措施
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill analyzing-active-directory-acl-abuse安装后在 Claude Code 中输入/analyzing-active-directory-acl-abuse确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
分析 Active Directory ACL 滥用
概述
Active Directory 访问控制列表(ACL)通过包含访问控制条目(ACE)的自由访问控制列表(DACL)定义 AD 对象上的权限。配置错误的 ACE 可能授予非特权用户危险权限,例如对 Domain Admins 组、域控制器或 GPO 等敏感对象的 GenericAll(完全控制)、WriteDACL(修改权限)、WriteOwner(取得所有权)和 GenericWrite(修改属性)。
本技能使用 ldap3 Python 库连接到域控制器,查询对象及其 nTSecurityDescriptor 属性,将二进制安全描述符解析为 SDDL(安全描述符定义语言)格式,并识别向非管理主体授予危险权限的 ACE。这些错误配置是 BloodHound 等工具发现的基于 ACL 的攻击路径的基础。
何时使用
- 在调查需要分析 Active Directory ACL 滥用的安全事件时
- 在为该领域构建检测规则或威胁狩猎查询时
- 当 SOC 分析师需要针对此类分析的结构化流程时
- 在验证相关攻击技术的安全监控覆盖范围时
先决条件
- Python 3.9 或更高版本,并安装 ldap3 库(
pip install ldap3) - 具有 AD 对象读取权限的域用户凭据
- 到域控制器端口 389(LDAP)或 636(LDAPS)的网络连接
- 了解 Active Directory 安全模型和 SDDL 格式
步骤
-
连接到域控制器:使用 ldap3 通过 NTLM 或简单身份验证建立 LDAP 连接。在生产环境中使用 LDAPS(端口 636)进行加密连接。
-
查询目标对象:在目标 OU 或整个域中搜索对象,包括用户、组、计算机和 OU。请求
nTSecurityDescriptor、distinguishedName、objectClass和sAMAccountName属性。 -
解析安全描述符:将二进制 nTSecurityDescriptor 转换为其 SDDL 字符串表示形式。解析 DACL 中的每个 ACE,以提取被授权者 SID、访问掩码和 ACE 类型(允许/拒绝)。
-
将 SID 解析为主体:使用针对域的 LDAP 查找,将安全标识符(SID)映射为可读的账户名称。识别内置组的众所周知 SID。
-
检查危险权限:将每个 ACE 的访问掩码与危险权限位掩码进行比较:GenericAll(0x10000000)、WriteDACL(0x00040000)、WriteOwner(0x00080000)、GenericWrite(0x40000000),以及针对特定扩展权限的 WriteProperty。
-
过滤非管理被授权者:排除预期的管理被授权者(Domain Admins、Enterprise Admins、SYSTEM、Administrators),并标记非特权用户或组持有危险权限的 ACE。
-
映射攻击路径:对于每个发现,记录潜在的攻击链(例如,对用户的 GenericAll 允许重置密码,对组的 WriteDACL 允许将自己添加到组中)。
-
生成修复报告:输出 JSON 报告,包含所有危险 ACE、受影响的对象、非管理被授权者以及建议的修复步骤。
预期输出
{
"domain": "corp.example.com",
"objects_scanned": 1247,
"dangerous_aces_found": 8,
"findings": [
{
"severity": "critical",
"target_object": "CN=Domain Admins,CN=Users,DC=corp,DC=example,DC=com",
"target_type": "group",
"trustee": "CORP\\helpdesk-team",
"permission": "GenericAll",
"access_mask": "0x10000000",
"ace_type": "ACCESS_ALLOWED",
"attack_path": "GenericAll on Domain Admins group allows adding arbitrary members",
"remediation": "Remove GenericAll ACE for helpdesk-team on Domain Admins"
}
]
}