ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

BloodHound CE 内网侦察 API 实战指南:Python 驱动、Cypher 攻击路径查询与自动化采集

2026/9/11 19:44:43 拓冰建站 浏览量
BloodHound CE 内网侦察 API 实战指南:Python 驱动、Cypher 攻击路径查询与自动化采集 BloodHound CE 内网侦察 API 实战指南Python 驱动、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导读本指南以 conducting-internal-reconnaissance-with-bloodhound-ce 技能包中的 API 参考文档为骨架系统讲解如何利用 Python 生态对 BloodHound Community EditionCE进行程序化侦察从neo4j、bloodhound、requests三个核心库的安装与分工到 Neo4j 驱动方法、关键 Cypher 攻击路径查询再到bloodhound-python采集器命令行与仓库内置自动化脚本。读完本文你将能够搭建一套采集 AD 数据 → 导入图数据库 → 用 Cypher 找出通往域管的最短攻击路径 → 自动生成侦察报告的完整内网侦察链路。核心 Python 库三层架构下的分工API 参考文档给出的库清单构成了 BloodHound CE 程序化侦察的三层基础。下表完整继承自 api-reference.md并补充了各自在链路中的职责库安装命令用途在侦察链路中的角色neo4jpip install neo4jNeo4j 图数据库驱动的 Cypher 查询客户端分析层直连 BloodHound CE 的图数据库执行攻击路径查询bloodhoundpip install bloodhoundPython 版 AD 数据采集器BloodHound.py采集层从域控拉取用户、计算机、ACL、会话等对象requestspip install requestsBloodHound CE REST API 客户端交互层通过 CE 的 REST API 上传数据包、读取任务状态等三者对应了侦察链路的三个阶段先用 bloodhound 库采集再通过 CE 的 REST APIrequests导入最后用 neo4j 驱动做图分析。仓库中的 agent.py 正是这一分工的落地实现——它用subprocess调用bloodhound-python完成采集再用neo4j驱动连接图库执行查询两个环节在同一个脚本中串联。Neo4j 驱动核心方法连接图库的四个动作要对 BloodHound CE 背后的 Neo4j 图数据库执行 Cypher 查询只需掌握 API 参考文档列出的四个驱动方法方法说明使用要点GraphDatabase.driver(uri, auth(user, pass))建立到 Neo4j 的连接URI 默认协议为bolt://需同时传入用户名与密码driver.session()打开一个查询会话会话内可执行多条语句用完后随 driver 一起关闭session.run(cypher, **params)执行 Cypher 查询支持参数化查询避免字符串拼接注入风险driver.close()关闭驱动连接分析结束后必须调用释放连接资源这些方法在仓库脚本中有完全对应的真实调用。以 agent.py 的run_recon为例它展示了完整的连接生命周期driver GraphDatabase.driver(neo4j_uri, auth(neo4j_user, neo4j_password)) # ... 依次执行多条侦察查询 ... driver.close()其中 URI 默认值为bolt://localhost:7687见 agent.py用户名默认neo4j密码必须显式传入这正对应 CE 图库的默认连接方式。值得注意的一点是该脚本将所有查询封装为带with driver.session() as session:上下文的独立函数例如query_shortest_path_to_da使用session.run配合$group参数占位符执行参数化查询agent.py这是生产环境中推荐的写法——参数化不仅能复用查询计划也避免了将域名字符串直接拼进 Cypher 带来的语法与注入风险。关键 Cypher 查询五大侦察模式的完整实现API 参考文档给出了一组开箱即用的关键查询模式覆盖内网侦察最核心的五大场景。下面的表格逐条保留自原文档查询目的Cypher 模式到域管的路径MATCH pshortestPath((u:User)-[*1..]-(g:Group {name:DOMAIN ADMINS...}))可 KerberoastingMATCH (u:User) WHERE u.hasspn true AND u.enabled true非约束委派MATCH (c:Computer) WHERE c.unconstraineddelegation true可 AS-REP RoastingMATCH (u:User) WHERE u.dontreqpreauth trueDCSync 权限MATCH p(u)-[:GetChanges|GetChangesAll]-(d:Domain)从模式到可执行查询仓库中的实战版本API 参考中的模式是最小骨架要真正可执行还需要补全返回字段、过滤条件和目标节点名。仓库 SKILL.md 与 agent.py 给出了可直接复制的完整版本// 从已控主体到域管的最短路径 MATCH pshortestPath((n {owned:true})-[*1..]-(m:Group {name:DOMAIN ADMINSDOMAIN.LOCAL})) RETURN p // 可 Kerberoasting 且可达域管的用户同时过滤启用状态 MATCH (u:User {hasspn:true}) MATCH pshortestPath((u)-[*1..]-(g:Group {name:DOMAIN ADMINSDOMAIN.LOCAL})) RETURN p // 域管成员会话所在的计算机会话劫持候选 MATCH (c:Computer)-[:HasSession]-(u:User)-[:MemberOf*1..]-(g:Group {name:DOMAIN ADMINSDOMAIN.LOCAL}) RETURN c.name, u.name // ACL 滥用路径GenericAll / GenericWrite / WriteDacl / WriteOwner / ForceChangePassword MATCH p(u:User)-[:GenericAll|GenericWrite|WriteDacl|WriteOwner|ForceChangePassword*1..]-(t) WHERE u.owned true RETURN p // 可 DCSync 的用户含经由组传递的权限 MATCH (u)-[:MemberOf*0..]-()-[:DCSync|GetChanges|GetChangesAll*1..]-(d:Domain) RETURN u.name, d.name // 非管理员可读 LAPS 密码的计算机 MATCH (c:Computer {haslaps:true}) MATCH p(u:User)-[:ReadLAPSPassword]-(c) RETURN p对比可见两个增强点其一原模式中的DOMAIN ADMINS...需要替换为真实域名格式如DOMAIN ADMINSDOMAIN.LOCAL其二SKILL.md 版本加入了u.enabled true、u.owned true这类状态过滤能显著减少噪声——例如 agent.py 的路径查询限定WHERE u.enabled true并在结果中按跳数升序取前 10 条result session.run( MATCH pshortestPath((u:User)-[*1..]-(g:Group {name: $group})) WHERE u.enabled true RETURN u.name AS user, length(p) AS hops ORDER BY hops LIMIT 10, groupDOMAIN ADMINSDOMAIN.LOCAL, )查询字段背后的对象属性语义Cypher 模式中的属性名对应 BloodHound 采集到的 AD 对象属性理解其语义才能正确解读结果hasspn用户是否注册了服务主体名称SPN为true即存在 Kerberoasting 面dontreqpreauth用户是否不需要 Kerberos 预认证为true即存在 AS-REP Roasting 面unconstraineddelegation计算机是否配置了非约束委派攻击者可借此窃取 TGTadmincount对象是否属于特权组AdminCount 标记haslaps计算机是否启用 LAPS 本地管理员密码管理。这些属性的解析逻辑在 process.py 中有系统化的实现它读取 BloodHound JSON 导出后按hasspn、dontreqpreauth、admincount、unconstraineddelegation等字段批量归类用户与计算机正是把 Cypher 查询逻辑平移到了离线的 JSON 分析场景。BloodHound Python IngestorLinux 侧的采集命令行当侦察机是 Linux 而非 Windows 时API 参考文档推荐的采集工具是 BloodHound.py 命令行采集器bloodhound-python -d domain.local -u user -p pass -ns DC_IP -c all --zip各参数含义参数说明-d目标 AD 域名如domain.local-u/-p采集所用的域账号与密码低权限账号即可-ns域名服务器 IP通常指向域控用于 DNS 解析-c采集方法见下表--zip将结果打包为 ZIP 文件便于回传分析工作站采集方法Collection Methods原文档列出了 7 种采集方法all、group、localadmin、session、trusts、objectprops、acl。它们的覆盖范围如下all完整采集包含其余所有方法的数据group组及其成员关系MemberOf 边localadmin各计算机上的本地管理员关系AdminTo 边session当前登录会话HasSession 边trusts域信任关系TrustedBy 边objectprops对象的基础属性用户、计算机、OU、GPO 等acl对象级 ACL 关系GenericAll、WriteDACL、ForceChangePassword 等攻击边。其中acl是识别 ACL 滥用路径的数据基础而session采集对实时性敏感适合用循环模式持续收集。仓库 workflows.md 专门给出了低噪声采集建议优先用DCOnly模式只查域控 LDAP用--searchbase限定 OU 范围定向采集用--loop --loopduration周期性采集会话。agent.py 对采集器的封装agent.py 将上述命令行封装为collect_bloodhound_data函数它以 domain、username、password、dc_ip、method 为参数通过subprocess调用bloodhound-python并带 300 秒超时当本机未安装 bloodhound 库时返回Install: pip install bloodhound的明确提示采集超时则返回{status: timeout}。脚本同时提供--collect开关与--domain、--ad-user、--ad-pass、--dc-ip参数可在分析前先触发采集形成采集 → 分析的一键流程。从查询到报告仓库内置的两段式自动化API 参考文档聚焦于查询接口而仓库脚本补全了它的下游——把查询结果与离线导出转成可交付的侦察报告。agent.py实时查询侦察报告run_recon按固定顺序执行四类查询agent.py到域管的最短路径列出用户及跳数按跳数升序可 Kerberoasting 用户附 SPN 列表与 AdminCount 标记取前 10 条非约束委派计算机附操作系统信息可 AS-REP Roasting 用户附 AdminCount 标记。输出以分隔线分节打印并可通过--output参数将结构化结果paths_to_da、kerberoastable、unconstrained_delegation、asrep_roastable写入 JSON 文件。其运行前提是 BloodHound CE 图库可达、且已完成数据导入。process.py离线导出分析报告当需要离线分析采集的 JSON 导出时process.py 提供了第二套分析管线python process.py bloodhound_users.json [bloodhound_computers.json]它从 JSON 中抽取对象属性对用户统计总数、启用数、可 Kerberoasting、可 AS-REP Roasting、AdminCount、密码不必需passwordnotreqd等指标对计算机统计非约束/约束委派、LAPS 启用状态、过时操作系统Windows 2003/2008/XP/Vista/7、域控数量等指标process.py。最终生成的报告内置了优先级攻击向量排序Kerberoasting → AS-REP Roasting → 非约束委派 → ACL 路径 → GPO 路径 → 过时系统利用同时自动落盘为带时间戳的bloodhound_analysis_*.txt文件。两套脚本互为补充agent.py 面向在线图库做实时查询process.py 面向离线导出做批量盘点覆盖了 API 参考文档中neo4j驱动与bloodhound采集器两条主线。采集 → 分析 → 规划完整侦察工作流把 API 参考文档嵌入更大的任务上下文仓库 SKILL.md 与 workflows.md 给出了从部署到报告的标准六阶段流程部署用 Docker Compose 拉起 BloodHound CEdocker compose up -d从docker compose logs | grep Initial Password获取初始密码并立即修改采集Windows 上用 SharpHound v2.\SharpHound.exe -c All --outputdirectory C:\TempLinux 上用bloodhound-python会话类数据用--loop --loopduration 02:00:00循环收集ZIP 回传分析机导入与标记Web 界面 File Ingest 上传将失陷账号标记为 Owned设置高价值目标分析运行内置查询最短路径到域管、Kerberoastable、AS-REP Roastable、DCSync 权限、非约束委派与本指南所述的自定义 Cypher攻击规划按跳数、隐蔽性、工具可用性与检出概率为路径打分排序报告用 template.md 结构化呈现包括 Engagement Details、Collection Summary、Attack Paths Identified、High-Value Findings 与 Remediation Priority 五个区块。其中第五阶段的路径优先排序原则跳数越少优先级越高、优先选择低噪声技术、逐跳确认工具与 OPSEC 措施直接决定了 API 查询结果的价值排序方式——查询只是发现规划才是产出。MITRE ATTCK 映射API 参考文档将侦察行为映射到三个 MITRE ATTCK Discovery 战术技术仓库 standards.md 则给出了更完整的七项映射技术 ID名称战术T1087.002Account Discovery: Domain AccountDiscoveryT1069.002Permission Groups Discovery: Domain GroupsDiscoveryT1482Domain Trust DiscoveryDiscoveryT1615Group Policy DiscoveryDiscoveryT1018Remote System DiscoveryDiscoveryT1033System Owner/User DiscoveryDiscoveryT1016System Network Configuration DiscoveryDiscovery这套映射的价值在于双重视角攻击者视角下它说明 BloodHound 侦察在 ATTCK 中的战术定位全部属于 Discovery 阶段是横向移动与提权的前置动作防御者视角下它可用于对照检测日志——例如 T1069.002域组枚举与 T1482信任发现对应的 LDAP 查询模式往往是攻击者开始画地图的信号。技能元数据中同时还声明了 NIST CSFID.RA-01、GV.OV-02、DE.AE-07与 D3FEND 技术的映射可结合 SKILL.md 头部 frontmatter 查阅。使用前提与合法边界本技能及文中所有命令均面向已获授权的渗透测试与教育环境。SKILL.md 与两个脚本头部都明确声明未获对方书面许可对系统实施侦察属违法行为。使用前请确认具备对目标环境的安全测试授权使用实验室/测试环境验证流程所有采集与分析行为在授权范围内进行。文中命令展示的凭据、域名、IP 均为占位符须按实际环境替换。小结本文以 API 参考文档为骨架串联了 BloodHound CE 程序化侦察的完整技术栈三个 Python 库的分工与安装、Neo4j 驱动的四个核心方法、五类关键 Cypher 查询模式及其完整可执行版本、bloodhound-python采集器的参数与采集方法语义并通过仓库内置的 agent.py 与 process.py 展示了从查询到报告的一体化落地。无论是需要快速验证 AD 加固效果还是要从低权限立足点出发绘制通往域管的攻击路径这套采集器 图数据库 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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考