域渗透之Kerberos FAST突破
字数 1625 2025-08-18 17:33:16

域渗透之Kerberos FAST突破技术详解

1. Kerberos认证回顾

Kerberos认证过程关键步骤:

  1. 用户向DC请求TGT (Ticket Granting Ticket)
  2. KDC返回使用krbtgt账户密钥加密的TGT
  3. 用户携带TGT向KDC请求服务票据(ST)
  4. KDC验证TGT后返回使用服务账户密码加密的ST
  5. 用户使用ST访问服务
  6. 服务端验证ST有效性

2. AS-REP Roasting攻击

攻击原理

当域用户设置了"不需要Kerberos预身份验证"时,攻击者可以直接请求该用户的TGT,KDC会返回使用用户密码加密的会话密钥,可进行离线爆破。

攻击演示

  1. 使用Rubeus进行AS-REP Roasting获取hash:
    Rubeus.exe asreproast
    
  2. 使用John the Ripper对hash进行离线爆破

3. Kerberoasting攻击

攻击原理

服务票据(ST)使用目标服务的NTLM HASH加密(RC4-HMAC算法),攻击者可申请ST后进行离线枚举。

攻击步骤

  1. 查找域内SPN
  2. 使用合法账户申请TGT
  3. 使用TGT申请服务票据
  4. 对票据进行离线爆破

4. FAST安全机制

FAST介绍

Flexible Authentication Secure Tunneling (FAST)是Windows Server 2012引入的安全功能:

  • 在客户端和KDC之间建立受保护的传输通道
  • 有效防御NoPac等漏洞
  • 使强制获取密钥变得困难

FAST配置方法

  1. 组策略中设置"KDC支持声明、复合身份认证和Kerberos Armoring"为"失败的非armoring身份验证请求"
  2. 启用"Kerberos客户端支持声明、复合身份认证和Kerberos Armoring"
  3. 更新组策略:gpupdate

FAST效果验证

  • 开启FAST后常规TGT请求失败
  • AS-REP Roasting攻击失败
  • Kerberoasting攻击失败

5. FAST绕过技术

绕过原理

研究员Charlie Clark发现:

  1. 在AS-REQ请求中将req-body中的sname指定为SPN时,AS会直接返回ST票据
  2. 机器账户的AS-REQ请求不受FAST保护

绕过步骤

  1. 创建机器账户:
    Import-Module .\powermad.ps1
    New-MachineAccount -MachineAccount fastbypass -Domain jctest.com -DomainController dc.jctest.com
    
  2. 使用机器账户申请TGT(可绕过FAST)
  3. 使用修改版Rubeus(添加/service参数)向AS请求指定SPN的ST票据

限制

虽然可以绕过FAST申请TGT,但仍无法通过S4USelf协议申请ST票据

6. 向AS申请服务票据的拓展技术

无SPN信息的Kerberoasting

研究员Sharoglazov发现:

  • 在不知道SPN名称的情况下,将AS-REQ中的sname值改为SPN所属用户的samAccountName值,仍可成功请求ST票据
  • 该技术已集成到Impacket和Rubeus中

攻击场景

域外机器无任何凭证,但发现配置了"不需要预认证"的用户时:

  1. 使用kerbrute枚举域用户
  2. 探测不需要预认证的用户
  3. 使用Rubeus进行Kerberoasting攻击
  4. 使用hashcat破解密码

技术要点

  • 每次AS-REQ请求的cname都是配置了不需要预认证的用户
  • 将sname改为SPN所属用户的samAccountName值可绕过SPN未知的限制

7. 防御建议

  1. 禁用所有用户的"不需要Kerberos预身份验证"选项
  2. 监控异常Kerberos请求,特别是机器账户的异常活动
  3. 实施强密码策略,特别是对服务账户
  4. 定期审计SPN配置
  5. 监控TGT和ST票据的异常请求模式

8. 工具更新

最新版Rubeus和Impacket已集成上述绕过技术:

  • Rubeus添加/service参数可直接向AS请求ST
  • Impacket支持无SPN信息的Kerberoasting攻击

通过深入理解这些技术原理,安全团队可以更好地防御此类攻击,而红队则可以更有效地测试域环境的安全性。

域渗透之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: 使用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保护 绕过步骤 创建机器账户: 使用机器账户申请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攻击 通过深入理解这些技术原理,安全团队可以更好地防御此类攻击,而红队则可以更有效地测试域环境的安全性。