尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

BloodHound 主动目录攻击路径分析 API 参考:SharpHound、Cypher 查询与自动化集成实战

发布时间:2026/9/13 3:02:46

资讯中心
01
ARTICLE

BloodHound 主动目录攻击路径分析 API 参考:SharpHound、Cypher 查询与自动化集成实战

BloodHound 主动目录攻击路径分析 API 参考:SharpHound、Cypher 查询与自动化集成实战
BloodHound 主动目录攻击路径分析 API 参考SharpHound、Cypher 查询与自动化集成实战【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills本篇技术指南基于Anthropic-Cybersecurity-Skills仓库中exploiting-active-directory-with-bloodhound技能模块的 API 参考文档系统梳理从 SharpHound/BloodHound.py 数据采集、Neo4j Cypher 攻击路径查询到 BloodHound 数据格式、Python 驱动接入与 BloodHound CE 后端 API 调用的完整链路。读完本文你将掌握在授权红队测试中利用 BloodHound 定位从已控账户通向 Domain Admins 的最短攻击路径并能借助仓库自带的自动化分析脚本把查询结果固化为可复用的检测与报告能力。技能模块定位与框架映射该技能是仓库 817 个结构化网络安全技能中的一员详见仓库 index.json属于red-teaming子域围绕「利用 BloodHound 开展主动目录AD侦察与攻击路径分析」这一实战主题。其能力边界在 SKILL.md 中定义为使用图论揭示 AD 环境中隐藏的、非预期的对象关系识别从被攻陷账户到 Domain Admins 等高价值目标的提权链。模块的元数据同时映射了多个安全框架MITRE ATTCK覆盖 T1087.002域账户发现、T1069.002域组发现、T1482域信任发现、T1615组策略发现、T1018远程系统发现、T1033系统所有者/用户发现、T1016系统网络配置发现等侦察与发现类技术NIST CSF关联 ID.RA-01、GV.OV-02、DE.AE-07 等风险识别与事件分析类控制项D3FEND关联 Restore Access、Password Authentication 等防御侧对策。更详细的战术到技术的对照表含 ACL 滥用路径、BloodHound 边类型、NIST SP 800-171 与 CIS Benchmark 建议可查阅 references/standards.md。一、SharpHound 数据采集语法与采集方法SharpHound 是 BloodHound 官方数据采集器负责从域中抓取 AD 对象、ACL、会话与组成员关系等原始数据。API 参考文档给出了两种典型调用形式SharpHound.exe -c All -d domain.local SharpHound.exe -c DCOnly --ldapusername user --ldappassword pass采集方法一览Flag采集内容All采集下列所有内容DefaultGroup、Session、Trusts、ACL、ObjectPropsDCOnly仅通过 LDAP 采集不含会话数据Session活跃会话ACL访问控制列表ObjectProps用户/计算机属性实操参数扩展结合 references/workflows.md 中的完整命令集实际使用中常组合以下参数# 连续会话采集循环抓取会话数据 .\SharpHound.exe -c Session --Loop --LoopDuration 02:00:00 --LoopInterval 00:05:00 # 指定域采集 .\SharpHound.exe -c All -d targetdomain.local # 静默采集避免高噪声查询 .\SharpHound.exe -c DCOnly,Session --Stealth # 通过 LDAP 使用指定凭据 .\SharpHound.exe -c All -d targetdomain.local --LdapUsername user --LdapPassword pass # 指定输出目录 .\SharpHound.exe -c All --OutputDirectory C:\Users\Public\ # 会话采集中排除域控制器 .\SharpHound.exe -c All --ExcludeDomainControllers其中--Stealth模式下建议仅使用DCOnly,Session这类相对低噪声的方法组合--LdapUsername/--LdapPassword允许在非交互会话中提供凭据。采集完成后会生成 ZIP 数据文件需回传分析工作站导入 BloodHound。二、bloodhound-python跨平台采集在 Linux/Kali 环境下bloodhound-pythonBloodHound.pyImpacket 生态的 Python 采集器是 SharpHound 的跨平台替代方案bloodhound-python -d domain.local -u user -p pass -c all --zip -ns 10.10.10.1核心选项Flag说明-d域名-u用户名-p密码-c采集方法-ns域名服务器DC IP--zip输出为 ZIP 压缩包--hashes以 NTLM Hash 代替密码认证-dc指定域控制器主机名典型组合示例含 NTLM Hash 与定向 DC 解析# 密码认证 全量采集 bloodhound-python -d targetdomain.local -u user -p Password123 -c All -ns 10.0.0.1 # NTLM Hash 认证 bloodhound-python -d targetdomain.local -u user --hashes aad3b435b51404eeaad3b435b51404ee:hash -c All -ns 10.0.0.1 # 通过域控制器解析 DNS bloodhound-python -d targetdomain.local -u user -p Password123 -c All -dc dc01.targetdomain.local -ns 10.0.0.1 # 指定采集方法子集 bloodhound-python -d targetdomain.local -u user -p Password123 -c Group,LocalAdmin,Session -ns 10.0.0.1三、Neo4j Cypher 查询从攻击路径到高价值目标数据导入 Neo4j 后Cypher 查询是攻击路径分析的核心手段。API 参考文档提供了五类高价值查询。3.1 到 Domain Admins 的最短路径从标记为owned:true的已控用户出发寻找通往域管理员组的最短路径MATCH pshortestPath( (u:User {owned:true})-[*1..]-(g:Group {name:DOMAIN ADMINSDOMAIN.LOCAL}) ) RETURN p3.2 Kerberoastable 用户找出启用了 SPN服务主体名称且处于启用状态的账户这些账户的 TGS 票据可被请求并离线破解MATCH (u:User) WHERE u.hasspntrue AND u.enabledtrue RETURN u.name, u.serviceprincipalnames3.3 非约束委派识别开启非约束委派的计算机对象——它们可能在认证强制攻击中被利用以捕获 TGTMATCH (c:Computer {unconstraineddelegation:true}) RETURN c.name, c.operatingsystem3.4 DCSync 权限查询持有复制权限GetChanges / GetChangesAll的对象即具备 DCSync 能力的账户MATCH p(u)-[:GetChanges|GetChangesAll]-(d:Domain) RETURN u.name, d.name3.5 AS-REP Roastable 账户找出未启用 Kerberos 预认证的账户dontreqpreauth:true可直接请求 AS-REP 票据离线破解MATCH (u:User {dontreqpreauth:true}) RETURN u.name, u.enabled实战查询库扩充references/workflows.md 进一步给出了可直接落地的预置查询集例如-- Kerberoastable 用户到达 DA 的路径按路径长度升序 MATCH (u:User {hasspn:true}) MATCH pshortestPath((u)-[*1..]-(g:Group {name:DOMAIN ADMINSTARGETDOMAIN.LOCAL})) RETURN u.name, LENGTH(p) ORDER BY LENGTH(p) ASC -- 在多个计算机上拥有本地管理员的用户 MATCH (u:User)-[:AdminTo]-(c:Computer) WITH u, COUNT(c) as adminCount WHERE adminCount 1 RETURN u.name, adminCount ORDER BY adminCount DESC -- 修改本地组成员身份的 GPO MATCH (g:GPO)-[:GpLink]-(ou:OU)-[:Contains*1..]-(c:Computer) RETURN g.name, ou.name, COLLECT(c.name) -- 受限委派账户 MATCH (c) WHERE c.allowedtodelegate IS NOT NULL RETURN c.name, c.allowedtodelegateACL 滥用路径查询针对 ACL 边类型的查询用于定位可利用的对象权限完整 ACL 边与攻击潜力对照见 references/standards.md-- GenericAll 完全控制 MATCH p(n)-[:GenericAll]-(m) WHERE n m AND NOT n.name STARTS WITH DVTA RETURN p -- 对域对象持有 WriteDACL MATCH p(n)-[:WriteDacl]-(d:Domain) RETURN p -- ForceChangePassword 路径 MATCH p(n)-[:ForceChangePassword]-(m:User) RETURN p -- 向管理员组添加成员 MATCH p(n)-[:AddMember]-(g:Group) WHERE g.name CONTAINS ADMIN RETURN p -- LAPS 密码读取者 MATCH p(n)-[:ReadLAPSPassword]-(c:Computer) RETURN p四、BloodHound JSON 数据格式SharpHound / BloodHound.py 采集输出的 JSON 遵循统一结构API 参考以用户对象为例{ data: [{ Properties: { name: USERDOMAIN.LOCAL, enabled: true, admincount: true, hasspn: false }, Aces: [], MemberOf: [] }] }字段语义name为对象名称用户域格式enabled表示账户是否启用admincount标记账户是否属于受保护组高价值目标筛选依据hasspn标记是否存在 SPNKerberoasting 前置条件Aces与MemberOf分别记录对象上的访问控制项与所属组关系。仓库脚本 scripts/agent.py 中的analyze_bloodhound_json()函数即按此结构解析数据它遍历目录下users_*.json文件提取Properties中的admincount与enabled字段将特权账户作为候选攻击路径写入findings[attack_paths]并统计 users/computers/groups 数量——这正是把 JSON 原始导出转化为结构化发现的参考实现。五、Neo4j Python Driver程序化查询当需要把攻击路径分析脚本化、自动化时可直接用官方 Neo4j 驱动连接 BloodHound 的图数据库from neo4j import GraphDatabase driver GraphDatabase.driver(bolt://localhost:7687, auth(neo4j, bloodhound)) with driver.session() as session: result session.run(MATCH (n:User) RETURN count(n))仓库 scripts/agent.py 中的query_neo4j()封装了完整的驱动生命周期创建驱动、开启会话、执行查询、收集记录、关闭驱动并将常用攻击路径查询内置为字典供 CLI 直接复用ATTACK_PATH_QUERIES { shortest_to_da: MATCH pshortestPath((u:User {owned:true})-[*1..]-(g:Group {name:DOMAIN ADMINSDOMAIN.LOCAL})) RETURN p, kerberoastable: MATCH (u:User) WHERE u.hasspntrue AND u.enabledtrue RETURN u.name, u.serviceprincipalnames, unconstrained_delegation: MATCH (c:Computer {unconstraineddelegation:true}) RETURN c.name, dcsync_rights: MATCH p(u)-[:GetChanges|GetChangesAll]-(d:Domain) RETURN u.name, d.name, }若未安装neo4j驱动该函数会返回提示信息pip install neo4j体现了脚本对依赖缺失的容错处理。六、BloodHound CE 后端 APIBloodHound Community Edition 提供基于 HTTP 的后端 API支持通过脚本化方式完成登录、搜索与数据拉取适合与上述 Python 驱动组合构建全自动分析流水线。登录认证POST https://bloodhound:8080/api/v2/login Content-Type: application/json {login_method: secret, secret: api-key-here}登录成功后将返回访问令牌后续请求需在Authorization头中携带。搜索对象GET https://bloodhound:8080/api/v2/search?qadmin Authorization: Bearer {token}七、自动化分析脚本与报告生成除了 API 参考中的接口级说明仓库还提供了两条互补的自动化路径7.1 agent.py采集 查询一体化scripts/agent.py 通过subprocess调度 SharpHound 或 bloodhound-python 完成采集再对 JSON 目录执行静态分析或对 Neo4j 执行自定义 Cypher最终输出 JSON 报告# 仅通过 bloodhound-python 采集 python agent.py --collect bloodhound-python --domain targetdomain.local \ --username user --password Pass --dc-ip 10.0.0.1 # 采集后分析指定 JSON 目录并执行自定义 Cypher输出报告 python agent.py --analyze-dir ./bloodhound_data \ --cypher-query MATCH (u:User {hasspn:true}) RETURN u.name \ --output report.json值得注意的是其命令行参数使用了--ldapusername/--ldappassword见 agent.py与 SharpHound 官方参数保持一致。7.2 process.pyZIP 导入与分级报告scripts/process.py 面向更完整的分析工作流直接导入 BloodHound ZIP 导出识别 Kerberoastablehasspn、AS-REP Roastabledontreqpreauth、非约束委派unconstraineddelegation、受限委派allowedtodelegate、特权账户admincount、无 LAPS 计算机haslaps、遗留操作系统、SID History 等多类风险项并自动生成 Markdown 报告与cypher_queries.json# 导入 ZIP 并运行全量分析 python process.py --import-data bloodhound_data.zip --analyze # 生成完整报告默认输出到 ./bloodhound_report python process.py --import-data bloodhound_data.zip --generate-report # 只跑单一查询 python process.py --query kerberoastable --domain targetdomain.local依赖安装pip install rich neo4j zipfile36见 process.py。其generate_report()方法输出的报告包含环境摘要、八类高危发现、操作系统分布、推荐 Cypher 查询与按优先级排序的攻击路径建议Kerberoasting → AS-REP Roasting → 非约束委派滥用 → ACL 链式滥用。八、攻击链示例与验证清单典型利用链ACL 滥用 → Domain Admin已控用户对服务账户持有 GenericWrite → 设置 SPN 实现定向 Kerberoasting → 破解服务账户票据 → 该账户对管理员组持有 GenericAll → 将自身加入管理员组 → 组本身是 Domain Admins 成员。会话横向移动BloodHound 显示 Domain Admin 会话位于 WORKSTATION01 → 已控用户对 WORKSTATION01 拥有本地管理员 → 通过 PsExec/WMI 横向移动 → 从 LSASS 转储凭据 → 获得 DA 的 NTLM Hash 或 Kerberos 票据。GPO 滥用已控用户对 GPO 持有 WriteDACL → 修改 GPO 添加即时计划任务 → GPO 链接到包含域控制器的 OU → 计划任务在 DC 上执行载荷。受限委派滥用被攻陷服务账户对 DC 受限委派 → 请求该服务账户的 TGT → 用 S4U2Self 为高权限用户获取票据 → 用 S4U2Proxy 将票据转发给 DC 上的目标服务 → 以 Domain Admin 身份访问 DC。验证清单SharpHound 从所有可达域完成数据采集识别出从已控账户到 DA 的攻击路径记录 ACL 型攻击路径GenericAll / GenericWrite / WriteDACL / ForceChangePassword 等识别 Kerberoastable 与 AS-REP Roastable 账户制定按复杂度与隐蔽性排序的利用计划为报告捕获证据截图完整的报告撰写模板含执行摘要、攻击路径表、Kerberoasting/AS-REP 目标表、委派问题、分阶段修复建议参见 assets/template.md。使用前提与合规边界本文所有命令均面向授权安全测试、实验室环境与教育研究。仓库 SKILL.md 明确声明对非自有或无书面授权的系统使用这些技术属于非法行为可能违反计算机欺诈相关法律。采集与分析前应确认测试授权与规则边界Rules of Engagement并遵循 SECURITY.md 与 CODE_OF_CONDUCT.md 中的使用准则。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。