域渗透之Kerberos FAST突破
字数 1625 2025-08-18 17:33:16
域渗透之Kerberos FAST突破技术详解
1. Kerberos认证回顾
Kerberos认证过程关键步骤:
- 用户向DC请求TGT (Ticket Granting Ticket)
- KDC返回使用krbtgt账户密钥加密的TGT
- 用户携带TGT向KDC请求服务票据(ST)
- KDC验证TGT后返回使用服务账户密码加密的ST
- 用户使用ST访问服务
- 服务端验证ST有效性
2. AS-REP Roasting攻击
攻击原理
当域用户设置了"不需要Kerberos预身份验证"时,攻击者可以直接请求该用户的TGT,KDC会返回使用用户密码加密的会话密钥,可进行离线爆破。
攻击演示
- 使用Rubeus进行AS-REP Roasting获取hash:
Rubeus.exe asreproast - 使用John the Ripper对hash进行离线爆破
3. Kerberoasting攻击
攻击原理
服务票据(ST)使用目标服务的NTLM HASH加密(RC4-HMAC算法),攻击者可申请ST后进行离线枚举。
攻击步骤
- 查找域内SPN
- 使用合法账户申请TGT
- 使用TGT申请服务票据
- 对票据进行离线爆破
4. FAST安全机制
FAST介绍
Flexible Authentication Secure Tunneling (FAST)是Windows Server 2012引入的安全功能:
- 在客户端和KDC之间建立受保护的传输通道
- 有效防御NoPac等漏洞
- 使强制获取密钥变得困难
FAST配置方法
- 组策略中设置"KDC支持声明、复合身份认证和Kerberos Armoring"为"失败的非armoring身份验证请求"
- 启用"Kerberos客户端支持声明、复合身份认证和Kerberos Armoring"
- 更新组策略:
gpupdate
FAST效果验证
- 开启FAST后常规TGT请求失败
- AS-REP Roasting攻击失败
- Kerberoasting攻击失败
5. FAST绕过技术
绕过原理
研究员Charlie Clark发现:
- 在AS-REQ请求中将req-body中的sname指定为SPN时,AS会直接返回ST票据
- 机器账户的AS-REQ请求不受FAST保护
绕过步骤
- 创建机器账户:
Import-Module .\powermad.ps1 New-MachineAccount -MachineAccount fastbypass -Domain jctest.com -DomainController dc.jctest.com - 使用机器账户申请TGT(可绕过FAST)
- 使用修改版Rubeus(添加/service参数)向AS请求指定SPN的ST票据
限制
虽然可以绕过FAST申请TGT,但仍无法通过S4USelf协议申请ST票据
6. 向AS申请服务票据的拓展技术
无SPN信息的Kerberoasting
研究员Sharoglazov发现:
- 在不知道SPN名称的情况下,将AS-REQ中的sname值改为SPN所属用户的samAccountName值,仍可成功请求ST票据
- 该技术已集成到Impacket和Rubeus中
攻击场景
域外机器无任何凭证,但发现配置了"不需要预认证"的用户时:
- 使用kerbrute枚举域用户
- 探测不需要预认证的用户
- 使用Rubeus进行Kerberoasting攻击
- 使用hashcat破解密码
技术要点
- 每次AS-REQ请求的cname都是配置了不需要预认证的用户
- 将sname改为SPN所属用户的samAccountName值可绕过SPN未知的限制
7. 防御建议
- 禁用所有用户的"不需要Kerberos预身份验证"选项
- 监控异常Kerberos请求,特别是机器账户的异常活动
- 实施强密码策略,特别是对服务账户
- 定期审计SPN配置
- 监控TGT和ST票据的异常请求模式
8. 工具更新
最新版Rubeus和Impacket已集成上述绕过技术:
- Rubeus添加/service参数可直接向AS请求ST
- Impacket支持无SPN信息的Kerberoasting攻击
通过深入理解这些技术原理,安全团队可以更好地防御此类攻击,而红队则可以更有效地测试域环境的安全性。