autobloody 4 种认证方式快速上手指南:1 条命令连上域控,自动执行 BloodHound 提权路径
【免费下载链接】claude-quickstartsA collection of projects designed to help developers quickly get started with building deployable applications using the Claude API项目地址: https://gitcode.com/GitHub_Trending/an/claude-quickstarts
autobloody 是一款自动执行 BloodHound 提权路径的 AD 域安全测试工具,上手的第一个门槛就是选对认证方式——一共 4 种:明文密码、Pass-the-Hash、Pass-the-Ticket、证书。
连上域控 LDAP 服务之前,它会先从 Neo4j 读取 BloodHound 关系数据,用 Dijkstra 最短路算法找出从你控制的账号到目标的最优提权路径,再交给 bloodyAD 在真实域控上逐步执行——加组成员、改密码、DCSync、Shadow Credentials,完成后自动清理可逆痕迹。整个流程只有"找路径"和"打路径"两步,而认证方式选哪种,完全取决于你手上握有什么凭据。
🔑 手上有哪种凭据:一张决策表选认证方式
先看拿到了什么,再决定参数,这是最快的路径:
| 你手上的凭据 | 参数 | 格式 | 适用场景 |
|---|---|---|---|
| 账号明文密码 | -p | 明文字符串 | 最常规的入门场景 |
| 只有 NTLM Hash | -p | LMHASH:NTHASH | Pass-the-Hash,免破解 |
| Kerberos 票据 ccache | -k | KRB5CCNAME环境变量指向文件 | 纯 Kerberos 环境、绕开 NTLM 限制 |
| PKI 私钥 + 证书 | -c | key路径:cert路径 | 证书伪造、AD CS 滥用链路 |
⚠️
--host(域控地址)在所有方式下都是必填;域名-d和用户名-u不填时,会自动从-ds源节点推导。
代码层面:路径查询在 database.py(Neo4j 查询),攻击执行与自动回滚在 automation.py,参数定义全部集中在 main.py 的 argparse 配置(约 54~129 行)。
-p 双用法:明文密码与 Pass-the-Hash
有密码就直接填;只有 NTLM Hash 时不必破解,同样用-p,格式改成:NTHASH:
autobloody -p 'Password123!' --host 192.168.10.2 -dp 'neo4jP@ss' -ds 'JOHN.DOE@BLOODY.LOCAL' -dt 'BLOODY.LOCAL'-p:明文或LMHASH:NTHASH,走 NTLM 认证(main.py 帮助文本原话:"Cleartext password or LMHASH:NTHASH for NTLM authentication")--host:域控主机名或 IP-dp:Neo4j 数据库密码-ds/-dt:BloodHound 中的源、目标节点标签,⚠️ 大小写敏感
只有 NT Hash 时 LM 段留空、前面加冒号,仍走 NTLM 通道,由 bloodyAD 统一处理:
autobloody -p ':aad3b435b51404eeaad3b435b51404ee' --host 192.168.10.2 -dp 'neo4jP@ss' -ds 'JOHN.DOE@BLOODY.LOCAL' -dt 'BLOODY.LOCAL'更巧妙的是执行途中它还能自动换身份:通过 ReadGMSAPassword 读到 GMSA 账号的 NT Hash 后,按:hash格式拼接密码并调用_switchUser换账号继续攻击,细节见 automation.py 中的_readGMSAPassword方法。
🎫 -k 票据认证:先把 ccache 路径放进环境变量
纯 Kerberos 环境、或想绕开 NTLM 限制时用票据:让KRB5CCNAME指向 ccache 文件,再打开-k:
export KRB5CCNAME=/path/to/ticket.ccache autobloody -k --host dc.bloody.local -d BLOODY.LOCAL -u john.doe -dp 'neo4jP@ss' -ds 'JOHN.DOE@BLOODY.LOCAL' -dt 'BLOODY.LOCAL'-k:store_true开关,默认False,加上即启用 Kerberos 认证KRB5CCNAME:指向 ccache 票据文件的环境变量,须先导出--host:建议写域名而非 IP,否则 Kerberos 解析可能失败- 先用
kinit或gettgtpkinit.py拿到 TGT;tests/test_functional.py 里有官方用gettgtpkinit.py生成 ccache 再配合测试的完整思路
🪪 -c 证书认证:私钥在前、证书在后
拿到 PKI 签发的证书后,即使不知道密码也能完成认证,这是证书伪造、AD CS 滥用等攻击链的典型入口:
autobloody -c '/path/to/priv.key:/path/to/cert.pem' --host 192.168.10.2 -dp 'neo4jP@ss' -ds 'JOHN.DOE@BLOODY.LOCAL' -dt 'BLOODY.LOCAL'-c:格式为私钥路径:证书路径,key 在前、cert 在后、冒号分隔(帮助文本中给出示例);其余参数同上节
⚠️ certificate、kerberos 与 password 是互斥的三类凭据来源,bloodyAD 会根据传入参数自动选择认证协议,不要同时混用。
🛡️ -s 与 --timeout:加密连接和超时控制
默认明文 LDAP、60 秒超时,多数测试环境够用;审计合规场景建议加-s走加密链路,网络不稳时调大超时:
-s, --secure:尝试 LDAP over TLS(LDAPS)加密连接,默认是明文 LDAP--timeout:连接超时秒数,默认 60,差网络下可写--timeout 120;该参数的默认值与解析逻辑在 tests/test_timeout.py 有专门测试覆盖
🚨 常见报错排查:找不到路径、-ds 总报错
高频问题就两类:数据里没有可利用路径、节点标签对不上。
- "No path exploitable by autobloody found":不是认证失败,而是 BloodHound 数据里没有可自动利用的路径;autobloody 目前仅支持 MemberOf、ForceChangePassword、DCSync、GenericAll、WriteDacl 等十几种边,完整清单见 README.md 的 Limitations 章节
-ds/-dt一直报错:必须与 BloodHound 中的 name 属性完全一致且区分大小写,别漏@符号,如JOHN.DOE@BLOODY.LOCAL- 4 种方式怎么选:有密码用
-p明文,只有 Hash 用-p的:NTHASH,有票据用-k,有证书用-c
【免费下载链接】claude-quickstartsA collection of projects designed to help developers quickly get started with building deployable applications using the Claude API项目地址: https://gitcode.com/GitHub_Trending/an/claude-quickstarts
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考