当前位置: 首页 > news >正文

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),仅供参考

http://www.jsqmd.com/news/1406815/

相关文章:

  • IDEA注释模板深度配置:从Live Template到File Template的自动化实践
  • 从理论到实践:非欧几何如何在noeuclid中变成可玩的游戏机制
  • 深度学习训练稳定性:从随机性控制到可复现实验的完整指南
  • 揭秘AOSC说话人缓存:diar_streaming_sortformer_4spk-v2如何高效记住每位说话人的声音
  • Nextcloud aio 非标准端口 非443端口安装
  • ClimaX进阶实践:完整复现论文中的全球天气预报实验
  • WebRTC生态之流媒体传输协议简介(一):RTMP、HLS、MPEG-DASH、HTTP-FLV、SRT、WHIP、WHEP、RTSP、RTP、RTCP、SDP
  • YOLOv5目标检测模型训练全流程:从数据标注到模型部署实战
  • mesh-llm 新手避坑清单:10 个最常见问题与解决方案
  • UI 着色器指南:URP-LWRP-Shaders 中圆角、描边与动画纹理 UI 特效实现
  • LFM2.5-1.2B-Instruct-4bit 常见问题排查:5 大踩坑与快速解决方案
  • mesh-llm 自动调优指南:benchmark tune 帮你找到最优推理参数
  • 覆盖12+编程语言:palenight.vim 多语言语法高亮适配详解
  • Android x86 安装与优化指南:在电脑上运行安卓系统
  • rtlamr 实测:RTL-SDR 收 900MHz 智能电表 ERT 广播,三行命令跑起来
  • VS Code配置第三方C库:从uthash到头文件与库链接实战
  • 实战演练:用 readme-checklist 把一份糟糕的README改写成爆款文档
  • Windows 10 跑安卓应用别再靠模拟器,WSA-Windows-10 完整上手记录
  • ControlNet-v1-1_fp16_safetensors 终极实战指南:五步解决“结构准、质感差“的图像控制难题
  • 16款提升Java开发效率的IDEA插件实战指南
  • 多语言能力测评:NVIDIA-Nemotron-3.5-Lightning-30B-A3B-mxfp8中英日法德西6语对话对比
  • PyQt-Frameless-Window 自定义标题栏完全指南:从 TitleBar 到 StandardTitleBar
  • GRUB引导故障修复:解决normal.mod not found错误与双系统引导修复
  • Windows 11 Git所有权错误:dubious ownership的根源与5种解决方案
  • CellChat单细胞通讯分析:从原理到实战,解锁细胞社会网络
  • 如何把任意网页元素一键导出为高清图片?零依赖 DOM 截图引擎实战
  • Linux Cron定时任务实战:编写可靠每分钟执行的Shell脚本
  • IDEA中Git Merge Request全流程操作指南与最佳实践
  • 如何用TYZRNEditor获取编辑内容:getContentString与getTitleString方法实战
  • 排列难题的优雅解法:diar_streaming_sortformer_4spk-v2按到达顺序还原说话人身份的底层原理