ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

autobloody 支持哪些 BloodHound 边?14 种可利用攻击关系的详细清单

autobloody 支持哪些 BloodHound 边?14 种可利用攻击关系的详细清单

autobloody 支持哪些 BloodHound 边?14 种可利用攻击关系的详细清单

【免费下载链接】autobloodyTool to automatically exploit Active Directory privilege escalation paths shown by BloodHound项目地址: https://gitcode.com/gh_mirrors/au/autobloody

autobloody 是一款开源的Active Directory 提权自动化工具,它能直接读取 BloodHound 数据库中已发现的攻击路径,并自动执行每一步利用动作。很多安全初学者第一次接触它时都会问:autobloody 到底支持哪些 BloodHound 边(Edge)?本文为你整理当前版本支持的全部 14 种可利用攻击关系,并用通俗易懂的方式解释每条边的作用、利用方式与风险等级,帮你快速上手这个 AD 提权神器。


一、先搞懂:什么是 BloodHound 边?🕸️

BloodHound 通过 SharpHound 等采集器收集 Active Directory 环境中的对象(用户、组、计算机、域、OU、GPO 等)及其相互关系,这些关系在图形数据库中被称为边(Edge),例如:

  • A -> MemberOf -> B:表示用户 A 是组 B 的成员
  • A -> GenericAll -> B:表示 A 对 B 拥有完全控制权

autobloody 会调用 Neo4j 图数据库中的 Dijkstra 最短路径算法,在你拥有的源对象(Source)和想要拿下的目标对象(Target)之间找出一条成本最低、最易利用的边链,然后借助底层 bloodyAD 库自动执行攻击。相关逻辑可参考 database.py 中的路径查找实现。

💡 简单理解:BloodHound 负责"画地图找路",autobloody 负责"沿着路自己走过去"。


二、14 种支持的 BloodHound 边:完整清单 📋

官方在 README.md 中明确列出了当前支持自动利用的全部边。为了便于记忆,我把它们分成4 大类

🧑‍🤝‍🧑 第一类:组成员关系类(3 种)

边名称目标对象攻击效果
MemberOfGroup把目标加入高权限组
AddSelfGroup把自身加入目标组
AddMembersGroup向组中添加指定成员

这类边是提权链中最常见的"跳板":攻击者通过把自己或受控账户加入 Domain Admins 等高权限组,一步跨越权限边界。执行逻辑位于 automation.py 的_addMember方法,利用完成后还会自动调用remove.groupMember进行清理还原,降低被发现的概率。

🔑 第二类:凭据获取类(4 种)

边名称目标对象攻击效果
ForceChangePasswordUser / Computer直接重置目标密码
ReadGMSAPasswordGMSA 账户读取托管服务账户密码哈希
DCSyncDomain模拟域控复制,离线导出 NTDS.dit
GetChanges / GetChangesAllDomain授予目录复制变更权限,配合 DCSync 使用

这类边的"含金量"最高:

  • ForceChangePassword会强制把目标密码改成默认值AutoBl00dy123!(定义在PASSWORD_DEFAULT常量中),随后用新密码接管目标身份;
  • ReadGMSAPassword会直接读取msDS-ManagedPassword属性拿到 GMSA 账户的 NT 哈希;
  • DCSyncGetChanges/GetChangesAll是域渗透的王牌组合,拿到后 autobloody 会提示你用secretsdump.py离线 dump 整个域的密码哈希。

🛡️ 第三类:ACL 权限控制类(6 种)

边名称目标对象攻击效果
GenericAll任意对象完全控制目标(等价于所有权限)
GenericWrite任意对象可写目标任意属性
WriteDacl任意对象可修改目标的 DACL 访问控制列表
WriteOwner任意对象可夺取目标对象的所有权
Owns任意对象你已经是目标的所有者
AllExtendedRights任意对象拥有目标全部扩展权限

ACL 类是攻击面最广的一类,autobloody 会根据目标类型选择不同的后续动作:

  • 目标是用户或计算机时,优先尝试Shadow Credentials(影子凭据)攻击,失败则回退到强制改密(见_shadowCredentialsOrForceChange方法);
  • 目标是组或域时,先通过add.genericAllset.owner改写 ACL,再顺势执行加成员、加 DCSync 权限等后续操作;
  • 目标是OU / GPO时,通过_ownerContainer先夺所有权、再授予 GenericAll,实现容器级控制。

🏗️ 第四类:层级结构类(1 种)

边名称目标对象攻击效果
ContainsOU / 容器利用包含关系获得对子对象的控制

Contains表示一个容器"包含"其子对象。当攻击者对一个 OU 或容器拥有写入权限时,就可以通过它影响到 OU 内继承权限的所有子对象,是横向扩展的重要路径。


三、autobloody 如何"挑选"最优攻击路径?🧠

光知道支持哪些边还不够,理解选路逻辑才能用好它。在 database.py 的_setWeight方法中,每种边都被赋予了一个bloodycost成本值,规则如下:

  • 成本越低 = 越优先尝试:例如MemberOf成本为 0(无需写 LDAP,最安全),域级DCSync/GenericAll成本为 1;
  • 写操作越多成本越高:如WriteOwner需要 3 次写入,成本相应提高;
  • 可能影响业务的操作成本更高:如强制改密会干扰正常服务,因此ForceChangePassword的成本被设为 110000;
  • 没被赋权重的边默认成本为 9999999999,等价于"不可利用"。

autobloody 会在这张加权图上运行 Dijkstra 算法,找到源到目标之间总成本最低的边链,然后按顺序执行。整个执行与回滚(cleanup)机制都封装在 automation.py 中。

⚠️ 注意:如果路径中出现了未被支持的边(例如 GPO 相关的 LinkGPO 等),autobloody 会报错提示"该路径无法由 autobloody 单独利用",需要配合其他工具完成。


四、快速上手:一条命令跑通攻击链 🚀

安装后(pip install autobloody),配合已导入数据的 Neo4j 数据库,一条命令即可完成从"源账户"到"目标对象"的自动提权:

autobloody -p 'Password123!' --host 192.168.10.2 -dp 'neo4jP@ss' -ds 'JOHN.DOE@BLOODY.LOCAL' -dt 'BLOODY.LOCAL'
  • -ds指定源对象(你拥有的账户)
  • -dt指定目标对象(你想拿下的对象)
  • 默认会先进入模拟模式(simulate)展示即将执行的动作,确认后输入y才会真正执行;加上-y参数可直接执行

命令行参数定义可参考 main.py。


五、使用建议与注意事项 ⚠️

  1. 仅限授权测试:autobloody 是红队与安全评估工具,请务必在获得授权的环境中使用,切勿用于非法入侵;
  2. 部分操作不可还原:README 明确指出,除了ForceChangePasswordsetOwner之外,其他操作都会在利用后自动清理还原,但改密与夺权操作会留下痕迹;
  3. 性能优化:在 Neo4j 中安装 GDS 图数据科学插件可以大幅提升路径查找速度,没有它 autobloody 会退回较慢的原生 CYPHER 查询;
  4. 掌握 14 种边 = 掌握 AD 提权地图:把这张清单当作你的检查表,结合 BloodHound 的图形界面分析,你就能快速判断一条提权路径是否可以被 autobloody 全自动打通。

希望这份BloodHound 边详细清单能帮你更高效地使用 autobloody。如果你在实战中遇到"路径不可利用"的提示,不妨对照上面的分类检查一下——也许只是这条链上混入了一条暂时不支持的关系而已。

【免费下载链接】autobloodyTool to automatically exploit Active Directory privilege escalation paths shown by BloodHound项目地址: https://gitcode.com/gh_mirrors/au/autobloody

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表