内网渗透之kerberos协议分析
字数 2376 2025-08-20 18:17:47

Kerberos协议内网渗透分析教学文档

1. Kerberos协议概述

Kerberos是一种网络认证协议,设计目标是通过密钥系统为客户/服务器应用程序提供强大的认证服务。该协议要解决的核心问题是身份认证问题:当客户机访问服务器上的服务时,服务器如何验证客户机的访问权限,同时保证通讯安全性。

2. 核心概念

2.1 主要组件

  • Client:访问服务的客户机
  • Server:提供服务的服务器
  • KDC(Key Distribution Center):密钥分发中心,包含两个子服务:
    • AS(Authentication Service):身份验证服务
    • TGS(Ticket Granting Service):票据授予服务
  • AD(Active Directory):活动目录
  • DC(Domain Controller):域控制器

2.2 关键票据

  • TGT(Ticket-granting ticket):票据授予票据,由AS发放
  • TGC(Ticket-granting cookie):存放用户身份认证凭证的cookie
  • ST(Server Ticket):服务票据,由TGS发放

3. Kerberos认证流程详解

3.1 整体流程

  1. Client向KDC的AS请求TGT票据(AS_REQ)
  2. AS验证通过后发放TGT票据(AS_REP)
  3. Client带上TGT票据向TGS请求ST服务票据(TGS_REQ)
  4. TGS验证通过后发放ST服务票据(TGS_REP)
  5. Client使用ST服务票据向服务端请求服务(AP_REQ)
  6. Server验证PAC(可选步骤)
  7. KDC返回Client权限信息(可选步骤)
  8. Server返回访问结果(AP_REP)

3.2 AS_REQ & AS_REP阶段

AS_REQ请求包内容:

  • Pvno:kerberos协议版本号(05 Hex)
  • MSG-TYPE:AS_REQ对应0a(Hex)
  • PA-DATA:预认证信息数据
    • ENC_TIMESTAMP:用户hash加密的时间戳
    • PA_PAC_REQUEST:启用PAC支持的扩展
  • REQ_BODY:
    • cname:请求的用户名
    • sname:krbtgt
    • realm:域名
    • from/till:发送/到期时间
    • nonce:随机数
    • etype:加密类型

AS_REP响应包内容:

  • TGT票据:由krbtgt的NTLM hash加密生成
  • Login Session Key:用户NTLM Hash加密,用于下一阶段通信安全

关键点

  • AS验证Client身份的方式:使用用户hash解密时间戳
  • TGT票据可用于黄金票据攻击(伪造票据)
  • 用户名存在与否会影响返回包,可用于枚举域内用户名

3.3 TGS_REQ & TGS_REP阶段

TGS_REQ请求包内容:

  • AP-REQ:携带AS_REP获取的TGT票据
  • Authenticator:Login Session key加密的时间戳
  • REQ_BODY:
    • padding
    • kdc-options
    • realm
    • sname:请求的服务名
    • till
    • nonce
    • etype

TGS_REP响应包内容:

  • ST票据:包含客户端信息和原始Server Session key
  • Server Session Key:由Login-Session-Key加密

关键点

  • 只要TGT解密无误,无论用户是否有权限都将返回ST票据
  • 微软扩展S4U2SELF和S4U2PROXY在此阶段使用
  • 攻击者可利用此特性获取任意服务的ST票据

3.4 ST票据使用阶段

  • 需要双向验证:
    • 服务端验证客户端:防止非法用户
    • 客户端验证服务端:防止恶意服务
  • PAC验证:
    • 不是所有服务都开启PAC验证
    • 未验证PAC可能导致白银票据攻击

4. Kerberos协议攻击面

4.1 黄金票据攻击(Golden Ticket)

  • 原理:获取krbtgt的hash后伪造TGT票据
  • 条件:需要域控krbtgt账户的NTLM hash
  • 影响:可伪造任意用户访问任意服务

4.2 白银票据攻击(Silver Ticket)

  • 原理:伪造特定服务的ST票据
  • 条件:需要服务账户的NTLM hash
  • 限制:仅能访问特定服务

4.3 票据传递攻击(Pass-the-Ticket)

  • 原理:重用合法票据进行认证
  • 实现:通过内存提取或伪造票据

4.4 AS-REP Roasting

  • 原理:针对禁用预认证的账户
  • 方法:获取AS-REP响应进行离线破解

5. 防御措施

  1. 保护krbtgt账户密码,定期更换(建议每6个月)
  2. 启用PAC验证
  3. 限制域管理员账户使用
  4. 监控异常Kerberos活动:
    • 异常的TGT请求频率
    • 异常的票据使用模式
  5. 实施LSA保护防止内存票据提取
  6. 启用Kerberos审计日志

6. 检测工具与技术

  1. Mimikatz:提取票据和hash
  2. Rubeus:Kerberos攻击框架
  3. Kekeo:Kerberos利用工具
  4. Wireshark:分析Kerberos流量
  5. 检测特征
    • 异常的nonce值(如12381973或1818848256)
    • 异常的till时间(如20370913024805Z)

7. 实验环境搭建建议

  • 域控:Windows Server 2008 R2(10.10.10.10)
  • 域成员:Windows 7(10.10.10.80)
  • 测试账户:hunter1/1qaz@WSX
  • 工具准备:Wireshark、Mimikatz

8. 参考资源

  1. Kerberos协议RFC文档
  2. Microsoft Kerberos技术文档
  3. Mimikatz使用指南
  4. Active Directory安全最佳实践
Kerberos协议内网渗透分析教学文档 1. Kerberos协议概述 Kerberos是一种网络认证协议,设计目标是通过密钥系统为客户/服务器应用程序提供强大的认证服务。该协议要解决的核心问题是身份认证问题:当客户机访问服务器上的服务时,服务器如何验证客户机的访问权限,同时保证通讯安全性。 2. 核心概念 2.1 主要组件 Client :访问服务的客户机 Server :提供服务的服务器 KDC(Key Distribution Center) :密钥分发中心,包含两个子服务: AS(Authentication Service) :身份验证服务 TGS(Ticket Granting Service) :票据授予服务 AD(Active Directory) :活动目录 DC(Domain Controller) :域控制器 2.2 关键票据 TGT(Ticket-granting ticket) :票据授予票据,由AS发放 TGC(Ticket-granting cookie) :存放用户身份认证凭证的cookie ST(Server Ticket) :服务票据,由TGS发放 3. Kerberos认证流程详解 3.1 整体流程 Client向KDC的AS请求TGT票据(AS_ REQ) AS验证通过后发放TGT票据(AS_ REP) Client带上TGT票据向TGS请求ST服务票据(TGS_ REQ) TGS验证通过后发放ST服务票据(TGS_ REP) Client使用ST服务票据向服务端请求服务(AP_ REQ) Server验证PAC(可选步骤) KDC返回Client权限信息(可选步骤) Server返回访问结果(AP_ REP) 3.2 AS_ REQ & AS_ REP阶段 AS_ REQ请求包内容: Pvno:kerberos协议版本号(05 Hex) MSG-TYPE:AS_ REQ对应0a(Hex) PA-DATA:预认证信息数据 ENC_ TIMESTAMP:用户hash加密的时间戳 PA_ PAC_ REQUEST:启用PAC支持的扩展 REQ_ BODY: cname:请求的用户名 sname:krbtgt realm:域名 from/till:发送/到期时间 nonce:随机数 etype:加密类型 AS_ REP响应包内容: TGT票据:由krbtgt的NTLM hash加密生成 Login Session Key:用户NTLM Hash加密,用于下一阶段通信安全 关键点 : AS验证Client身份的方式:使用用户hash解密时间戳 TGT票据可用于黄金票据攻击(伪造票据) 用户名存在与否会影响返回包,可用于枚举域内用户名 3.3 TGS_ REQ & TGS_ REP阶段 TGS_ REQ请求包内容: AP-REQ:携带AS_ REP获取的TGT票据 Authenticator:Login Session key加密的时间戳 REQ_ BODY: padding kdc-options realm sname:请求的服务名 till nonce etype TGS_ REP响应包内容: ST票据:包含客户端信息和原始Server Session key Server Session Key:由Login-Session-Key加密 关键点 : 只要TGT解密无误,无论用户是否有权限都将返回ST票据 微软扩展S4U2SELF和S4U2PROXY在此阶段使用 攻击者可利用此特性获取任意服务的ST票据 3.4 ST票据使用阶段 需要双向验证: 服务端验证客户端:防止非法用户 客户端验证服务端:防止恶意服务 PAC验证: 不是所有服务都开启PAC验证 未验证PAC可能导致白银票据攻击 4. Kerberos协议攻击面 4.1 黄金票据攻击(Golden Ticket) 原理:获取krbtgt的hash后伪造TGT票据 条件:需要域控krbtgt账户的NTLM hash 影响:可伪造任意用户访问任意服务 4.2 白银票据攻击(Silver Ticket) 原理:伪造特定服务的ST票据 条件:需要服务账户的NTLM hash 限制:仅能访问特定服务 4.3 票据传递攻击(Pass-the-Ticket) 原理:重用合法票据进行认证 实现:通过内存提取或伪造票据 4.4 AS-REP Roasting 原理:针对禁用预认证的账户 方法:获取AS-REP响应进行离线破解 5. 防御措施 保护krbtgt账户密码,定期更换(建议每6个月) 启用PAC验证 限制域管理员账户使用 监控异常Kerberos活动: 异常的TGT请求频率 异常的票据使用模式 实施LSA保护防止内存票据提取 启用Kerberos审计日志 6. 检测工具与技术 Mimikatz :提取票据和hash Rubeus :Kerberos攻击框架 Kekeo :Kerberos利用工具 Wireshark :分析Kerberos流量 检测特征 : 异常的nonce值(如12381973或1818848256) 异常的till时间(如20370913024805Z) 7. 实验环境搭建建议 域控:Windows Server 2008 R2(10.10.10.10) 域成员:Windows 7(10.10.10.80) 测试账户:hunter1/1qaz@WSX 工具准备:Wireshark、Mimikatz 8. 参考资源 Kerberos协议RFC文档 Microsoft Kerberos技术文档 Mimikatz使用指南 Active Directory安全最佳实践