
autobloody 自动清理机制攻击完成后如何不留痕迹地还原环境【免费下载链接】autobloodyTool to automatically exploit Active Directory privilege escalation paths shown by BloodHound项目地址: https://gitcode.com/gh_mirrors/au/autobloodyautobloody 是一款基于 BloodHound 数据库自动规划并执行Active Directory 权限提升AD 提权路径的安全测试工具。很多安全初学者最担心的问题是提权攻击执行完后环境里留下了一堆 ACL 修改、组成员变更如何还原本文将深入讲解 autobloody 的自动清理机制带你搞懂它是如何做到攻击完成后不留痕迹地还原环境的以及这一攻击后清理设计背后的完整原理。为什么提权之后必须还原环境在红队演练或渗透测试中AD 提权攻击往往会对域内对象做出一系列脏操作给某个用户添加组成员关系、授予 GenericAll 权限、写入 DCSync 权限、甚至临时修改密码。这些操作一旦留下轻则导致域环境配置被篡改重则被蓝队直接发现攻击痕迹。传统做法是攻击者手动记录每一步操作、再手动回滚既繁琐又容易遗漏。而 autobloody 把攻击后清理做成了自动化流程的一部分它利用bloodyAD库执行提权路径同时把可逆操作全部记录进一张待还原清单在攻击完成或中途失败时自动逆序撤销。这正是本工具区别于普通一次性利用脚本的核心价值所在。自动清理机制的核心dirty_laundry 脏操作记录表在 automation.py 中autobloody 通过一个名为dirty_laundry的列表实现自动清理。每当它成功执行一个可逆的提权操作时就会把对应的撤销函数 参数追加进这张清单相当于记账self.dirty_laundry.append({f: remove.groupMember, args: [group_dn, member_sid]})比如_addMember向组里添加成员后立即记录remove.groupMember_genericAll授予权限后记录remove.genericAllShadow Credentials 攻击成功后则记录remove.shadowCredentials以便删除临时凭据。这张清单就是整个自动清理机制的地基——先记账后攻击最后统一销账。三种触发自动清理的关键场景autobloody 的清理逻辑由_washer()方法统一驱动它会在以下三种时机自动执行场景一攻击中途失败立即回滚在_unfold()遍历攻击路径时只要任何一个提权步骤抛出异常程序就会立刻调用_washer()把此前所有脏操作逆序撤销。这意味着哪怕攻击到一半出错之前造成的环境变更也会被还原干净不会把半成品脏状态留在域里。场景二需要切换用户身份时先清理提权路径往往要连续拿下多个账号比如先提权到普通用户再切换成 GMSA 账号或目标用户继续攻击。每次_switchUser()切换 LDAP 连接前都会先调用_washer()清理当前连接下产生的所有变更避免把权限和状态带到下一个身份中。场景三攻击全部完成统一还原整条路径执行完毕后dirty_laundry中累积的全部撤销操作会被逆序批量执行。逆序执行至关重要因为后添加的权限可能依赖先添加的权限先撤销后添加的、再撤销先添加的才能保证还原过程不报错、不残留。自动清理机制还原哪些操作哪些操作不可逆autobloody 的清理策略遵循一条明确原则可逆的操作全部还原不可逆的操作明确告知。根据 automation.py 的实现不同攻击边界的处理方式如下攻击操作对应 BloodHound 边界是否自动还原添加组成员AddMembers / AddSelf✅ 自动移除成员授予 GenericAll 权限GenericAll / GenericWrite✅ 自动移除 ACL写入 DCSync 权限WriteDacl / Owns✅ 自动撤销添加 Shadow CredentialsGenericWrite / AllExtendedRights✅ 自动删除临时密钥读取 GMSA 密码ReadGMSAPassword✅ 只读操作无残留强制修改密码ForceChangePassword❌ 不可逆需手动处理修改对象所有者WriteOwner / Owns❌ 不可逆不进入清单值得注意的两点一是 ForceChangePassword 属于不可逆操作工具只会用默认密码AutoBl00dy123!修改目标密码并提示你后续手动处理二是修改对象所有者setOwner同样不可逆因此这两个操作不会写入dirty_laundry需要你在攻击结束后自行评估影响。自动清理机制的完整执行流程把以上机制串起来autobloody 从攻击到还原的完整闭环是这样的连接 Neo4j通过 database.py 中的最短路径算法GDS Dijkstra找出源对象到目标对象的最优提权路径连接域控 LDAP逐条执行路径上的提权操作同时把每个可逆操作的撤销函数记入dirty_laundry某一步失败时触发_washer()逆序回滚全部已执行操作切换用户身份前先执行_washer()清理当前连接变更全部路径执行完毕统一逆序撤销所有残留变更输出还原日志。在模拟simulate模式下_washer()只会打印还原操作而不实际执行方便你在正式攻击前预览清理动作清单——这也是一个非常实用的安全审计功能。使用 autobloody 自动清理机制的实战建议先模拟后实弹正式执行前用-y之外的交互模式跑一遍 simulate观察输出的还原动作是否符合预期确认不会误删关键权限密码类操作要格外小心涉及 ForceChangePassword 的攻击路径还原后务必手动确认目标账号密码已恢复必要时在攻击前记录原始密码结合测试用例验证项目在 tests/test_automation_changes.py 中提供了针对清理逻辑的单元测试改动代码后可运行测试确认还原逻辑依然健壮注意路径边界限制自动清理只覆盖 README.md 中列出的 17 种受支持边界遇到不支持的提权边如 GPO 相关时工具会明确报错提示需要其他工具辅助。小结攻击后清理是专业 AD 提权工具的必备素养对于 AD 域渗透和红队演练来说能打进去只是第一步打完还原才是专业与业余的分水岭。autobloody 通过dirty_laundry记录 _washer()逆序回滚这套自动清理机制把攻击后还原环境从繁琐的手工操作变成了自动化闭环同时诚实地把不可逆操作暴露给使用者。理解了这套机制你不仅能更放心地使用 autobloody 做权限提升测试也能在阅读源码时快速把握它的设计精髓——安全工具的价值从来不只在攻更在于攻完还能全身而退。【免费下载链接】autobloodyTool to automatically exploit Active Directory privilege escalation paths shown by BloodHound项目地址: https://gitcode.com/gh_mirrors/au/autobloody创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考