Kerberos认证协议中的白银票据与黄金票据攻击详解
字数 2520 2025-12-06 09:39:12

Kerberos认证协议中的白银票据与黄金票据攻击详解

1. 知识点描述
白银票据(Silver Ticket)和黄金票据(Golden Ticket)是攻击Kerberos网络认证协议的两种高级持久化技术。这两种攻击不直接窃取用户密码,而是通过伪造Kerberos票证(Ticket)来获取对特定服务(白银票据)或整个域(黄金票据)的持久访问权限。理解这两种攻击,需要先掌握Kerberos协议的基本流程,然后分析攻击者如何在已攻陷部分系统组件的前提下,利用协议弱点伪造票证,实现权限维持和横向移动。

2. 预备知识:Kerberos认证协议核心流程回顾

  • 核心角色:客户端(Client)、密钥分发中心(KDC,包含认证服务AS和票据授予服务TGS)、服务(Service)。
  • 核心凭证
    • TGT:票据授予票据,由AS颁发,用于向TGS申请服务票据。TGT用KDC的密钥(krbtgt账户的NTLM哈希)加密。
    • ST:服务票据,由TGS颁发,用于访问特定服务。ST用目标服务账户的NTLM哈希加密。
  • 简化流程
    1. AS_REQ/AS_REP:用户输入密码,本地计算密码哈希,向AS请求TGT。AS验证后,返回用用户密钥加密的部分(包含会话密钥)和用krbtgt密钥加密的TGT。
    2. TGS_REQ/TGS_REP:客户端用TGT向TGS请求访问某服务的ST。TGS验证TGT后,返回用服务密钥加密的ST和用会话密钥加密的部分。
    3. AP_REQ/AP_REP:客户端向服务出示ST。服务用自己的密钥解密ST,验证通过后提供服务。

3. 攻击前提与核心差异
两种攻击的共同前提是:攻击者已获得域内一台主机的管理员权限(即已“立足”)。

  • 白银票据:需要获取目标服务账户的NTLM哈希(例如,文件服务器CIFS/、Web服务器HTTP/等)。
  • 黄金票据:需要获取**krbtgt账户**的NTLM哈希。这是域的密钥,一旦泄露危害极大。

4. 白银票据攻击详解

  • 攻击原理
    由于服务在验证ST时,只使用自己的密钥解密并验证其中的PAC(特权属性证书)等信息,而不会与KDC通信验证。因此,如果攻击者获取了服务账户的哈希,就可以直接伪造该服务的ST,绕过KDC。
  • 攻击步骤
    1. 信息收集:在已控制的主机上,通过Mimikatz等工具转储本地SAM或LSASS内存,或利用其他漏洞,获取特定服务账户的NTLM哈希。同时,需要知道目标服务的SPN(服务主体名称,如CIFS/fileserver.domain.com)和要伪造的域用户SID、用户名。
    2. 伪造票据:使用工具(如Mimikatz)和获取的服务账户哈希,直接生成一个有效的ST。这个票据包含伪造的用户信息和PAC,并用服务账户的哈希正确加密。
    3. 传递与使用:将伪造的ST注入到当前会话或新创建的进程中,然后直接访问目标服务(如文件共享)。由于ST是有效的,服务会正常授权访问。
  • 特点
    • 作用范围有限:仅针对获取了哈希的特定服务。
    • 不需要与KDC交互:在生成和使用票据时完全离线,隐蔽性高。
    • KDC无法检测:因为服务不向KDC报告,KDC不知道有伪造票据在使用。
    • 票据有效期可设很长:攻击者可以设置很长的票据生存时间。

5. 黄金票据攻击详解

  • 攻击原理
    由于TGT是由KDC的krbtgt账户密钥加密的,如果能获取krbtgt的哈希,就可以伪造任意用户的TGT。拥有一个有效的TGT,就可以向TGS请求访问域内任何服务的ST,从而获得完全的域控制权。
  • 攻击步骤
    1. 获取krbtgt哈希:这是最关键也是最难的一步。通常需要已获得域控制器(DC)的管理员权限,然后在DC上使用Mimikatz等工具转储NTDS.dit文件或LSASS内存,提取krbtgt账户的NTLM哈希。同时,需要获取域的SID。
    2. 伪造TGT:使用工具,输入krbtgt哈希、域名、域SID,以及要伪造的任意用户名(甚至是域中不存在的用户)和所属组(通常伪造为域管理员组)。工具会生成一个伪造的TGT。
    3. 传递与使用:将伪造的TGT注入内存。之后,攻击者就可以像正常域用户一样,使用这个TGT向TGS请求任何服务的ST,从而访问域内所有资源,包括域控制器。
  • 特点
    • 作用范围极广:获得对整个域的完全控制权。
    • 可伪造任意用户:包括不存在的“幽灵账户”,这为溯源带来极大困难。
    • 持久性极强krbtgt密码默认很少更改(通常仅在从旧域功能级别升级时才必须更改)。即使更改了域管理员密码,只要krbtgt哈希未变,黄金票据依然有效。
    • 同样离线操作:生成和使用TGT的过程也不需要与KDC通信。

6. 防御措施

  • 保护关键凭证
    • 黄金票据防御:严格保护域控制器安全。定期(如每30-60天)更改krbtgt账户密码两次(因为KDC会保存新旧两个密钥)。启用Credential Guard(Windows)等技术保护LSASS。
    • 白银票据防御:实施最小权限原则,为服务账户使用强密码/组托管服务账户(gMSA),并定期轮换。避免服务账户拥有过高权限。
  • 检测与监控
    • 监控KDC事件日志(事件ID 4769)中异常的高权限票据请求(如普通用户请求管理员服务的票据)。
    • 使用高级安全解决方案(如Microsoft ATA、Azure ATP或第三方EDR)检测异常的Kerberos活动模式,例如:使用了krbtgt哈希的解密操作、来自非常用主机的TGS请求、票据生存时间异常等。
    • 对服务账户的行为进行基线监控,检测异常登录。
  • 架构与策略
    • 实施网络分段,限制关键服务的访问路径。
    • 启用Kerberos审计,并集中管理日志。

总结:白银票据和黄金票据攻击是内网渗透中危害极大的权限维持手段。它们利用了Kerberos协议中服务端不验证票据来源、仅验证加密有效性的设计特点。防御的核心在于保护krbtgt和服务账户的哈希,并通过强大的监控手段发现基于伪造票据的异常认证活动。

Kerberos认证协议中的白银票据与黄金票据攻击详解 1. 知识点描述 白银票据(Silver Ticket)和黄金票据(Golden Ticket)是攻击Kerberos网络认证协议的两种高级持久化技术。这两种攻击不直接窃取用户密码,而是通过伪造Kerberos票证(Ticket)来获取对特定服务(白银票据)或整个域(黄金票据)的持久访问权限。理解这两种攻击,需要先掌握Kerberos协议的基本流程,然后分析攻击者如何在已攻陷部分系统组件的前提下,利用协议弱点伪造票证,实现权限维持和横向移动。 2. 预备知识:Kerberos认证协议核心流程回顾 核心角色 :客户端(Client)、密钥分发中心(KDC,包含认证服务AS和票据授予服务TGS)、服务(Service)。 核心凭证 : TGT :票据授予票据,由AS颁发,用于向TGS申请服务票据。TGT用KDC的密钥( krbtgt 账户的NTLM哈希)加密。 ST :服务票据,由TGS颁发,用于访问特定服务。ST用目标服务账户的NTLM哈希加密。 简化流程 : AS_ REQ/AS_ REP :用户输入密码,本地计算密码哈希,向AS请求TGT。AS验证后,返回用用户密钥加密的部分(包含会话密钥)和用 krbtgt 密钥加密的TGT。 TGS_ REQ/TGS_ REP :客户端用TGT向TGS请求访问某服务的ST。TGS验证TGT后,返回用服务密钥加密的ST和用会话密钥加密的部分。 AP_ REQ/AP_ REP :客户端向服务出示ST。服务用自己的密钥解密ST,验证通过后提供服务。 3. 攻击前提与核心差异 两种攻击的共同前提是:攻击者已获得域内一台主机的管理员权限(即已“立足”)。 白银票据 :需要获取 目标服务账户 的NTLM哈希(例如,文件服务器 CIFS/ 、Web服务器 HTTP/ 等)。 黄金票据 :需要获取** krbtgt 账户** 的NTLM哈希。这是域的密钥,一旦泄露危害极大。 4. 白银票据攻击详解 攻击原理 : 由于服务在验证ST时,只使用自己的密钥解密并验证其中的PAC(特权属性证书)等信息, 而不会与KDC通信验证 。因此,如果攻击者获取了服务账户的哈希,就可以直接伪造该服务的ST,绕过KDC。 攻击步骤 : 信息收集 :在已控制的主机上,通过Mimikatz等工具转储本地SAM或LSASS内存,或利用其他漏洞,获取 特定服务账户 的NTLM哈希。同时,需要知道目标服务的SPN(服务主体名称,如 CIFS/fileserver.domain.com )和要伪造的域用户SID、用户名。 伪造票据 :使用工具(如Mimikatz)和获取的服务账户哈希,直接生成一个有效的ST。这个票据包含伪造的用户信息和PAC,并用服务账户的哈希正确加密。 传递与使用 :将伪造的ST注入到当前会话或新创建的进程中,然后直接访问目标服务(如文件共享)。由于ST是有效的,服务会正常授权访问。 特点 : 作用范围有限 :仅针对获取了哈希的特定服务。 不需要与KDC交互 :在生成和使用票据时完全离线,隐蔽性高。 KDC无法检测 :因为服务不向KDC报告,KDC不知道有伪造票据在使用。 票据有效期可设很长 :攻击者可以设置很长的票据生存时间。 5. 黄金票据攻击详解 攻击原理 : 由于TGT是由KDC的 krbtgt 账户密钥加密的,如果能获取 krbtgt 的哈希,就可以伪造任意用户的TGT。拥有一个有效的TGT,就可以向TGS请求访问 域内任何服务 的ST,从而获得完全的域控制权。 攻击步骤 : 获取 krbtgt 哈希 :这是最关键也是最难的一步。通常需要已获得域控制器(DC)的管理员权限,然后在DC上使用Mimikatz等工具转储 NTDS.dit 文件或LSASS内存,提取 krbtgt 账户的NTLM哈希。同时,需要获取域的SID。 伪造TGT :使用工具,输入 krbtgt 哈希、域名、域SID,以及要伪造的任意用户名(甚至是域中不存在的用户)和所属组(通常伪造为域管理员组)。工具会生成一个伪造的TGT。 传递与使用 :将伪造的TGT注入内存。之后,攻击者就可以像正常域用户一样,使用这个TGT向TGS请求任何服务的ST,从而访问域内所有资源,包括域控制器。 特点 : 作用范围极广 :获得对整个域的完全控制权。 可伪造任意用户 :包括不存在的“幽灵账户”,这为溯源带来极大困难。 持久性极强 : krbtgt 密码默认很少更改(通常仅在从旧域功能级别升级时才必须更改)。即使更改了域管理员密码,只要 krbtgt 哈希未变,黄金票据依然有效。 同样离线操作 :生成和使用TGT的过程也不需要与KDC通信。 6. 防御措施 保护关键凭证 : 黄金票据防御 :严格保护域控制器安全。定期(如每30-60天)更改 krbtgt 账户密码 两次 (因为KDC会保存新旧两个密钥)。启用Credential Guard(Windows)等技术保护LSASS。 白银票据防御 :实施最小权限原则,为服务账户使用强密码/组托管服务账户(gMSA),并定期轮换。避免服务账户拥有过高权限。 检测与监控 : 监控KDC事件日志(事件ID 4769)中异常的高权限票据请求(如普通用户请求管理员服务的票据)。 使用高级安全解决方案(如Microsoft ATA、Azure ATP或第三方EDR)检测异常的Kerberos活动模式,例如:使用了 krbtgt 哈希的解密操作、来自非常用主机的TGS请求、票据生存时间异常等。 对服务账户的行为进行基线监控,检测异常登录。 架构与策略 : 实施网络分段,限制关键服务的访问路径。 启用Kerberos审计,并集中管理日志。 总结 :白银票据和黄金票据攻击是内网渗透中危害极大的权限维持手段。它们利用了Kerberos协议中服务端不验证票据来源、仅验证加密有效性的设计特点。防御的核心在于保护 krbtgt 和服务账户的哈希,并通过强大的监控手段发现基于伪造票据的异常认证活动。