用途:Kerberoasting 是一种凭据访问技术(MITRE ATT&CK T1558.003),针对 Active Directory 中注册了 SPN 的服务账号请求 Kerberos TGS 票据。票据以服务账号的 NTLM 哈希(RC4 或 AES)加密,可离线暴力破解。Impacket 的 GetUserSPNs.py 是 Linux 环境下执行该技术的标准工具,适用于授权渗透测试、红队演练、恶意样本或攻击痕迹分析,以及基于攻击理解的检测能力建设。
前提条件:有效域凭据(任意域用户均可请求 TGS 票据)、到域控制器的网络访问(TCP/88 Kerberos、TCP/389 LDAP)、安装 Impacket(pip install impacket)、用于离线破解的 Hashcat 或 John the Ripper、字典文件(如 rockyou.txt、SecLists)。
主要操作:
- 枚举可被 Kerberoast 的账号(不请求票据):GetUserSPNs.py corp.local/jsmith:Password123 -dc-ip 10.10.10.1
- 请求 TGS 票据:加 -request 请求全部账号票据,或 -request-user svc_sql 指定单个 SPN;加 -outputfile 保存为 hashcat 兼容格式($krb5tgs$23$...)。也可用 -hashes 以 NTLM 哈希代替密码(Pass-the-Hash)。
- 离线破解:RC4 用 hashcat -m 13100,AES-256 用 hashcat -m 19700;或 john --wordlist=... 破解;用 hashcat --show 查看结果。
- 验证与使用破解凭据:crackmapexec smb 校验、psexec.py 横向移动、secretsdump.py 导出域哈希(需相应权限)。
替代工具:Windows 上的 Rubeus(kerberoast /outfile 等参数)、PowerShell 的 PowerView(Invoke-Kerberoast -OutputFormat Hashcat)。高价值目标包括 Domain Admins 中的服务账号、MSSQLSvc SQL 账号、Exchange 服务账号、AdminCount=1 及密码较旧的账号。
检测与防御:监控 Windows 事件 ID 4769(Kerberos 服务票据请求),关注 RC4(0x17)加密类型、单用户在短时间内请求大量 TGS、异常来源 IP;可使用 gMSA 自动轮换强密码、为服务账号设置 25 位以上强密码、通过 GPO 禁用 RC4 仅启用 AES、运行 BloodHound 审计、使用 Protected Users 组与蜜罐 SPN。
限制与法律提示:本技能仅限获得授权的安全测试与教育目的;未经书面许可对非自有系统使用属违法。资料未提供收费、平台支持范围或性能数据。