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哈希加密。
- TGT:票据授予票据,由AS颁发,用于向TGS申请服务票据。TGT用KDC的密钥(
- 简化流程:
- 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,验证通过后提供服务。
- AS_REQ/AS_REP:用户输入密码,本地计算密码哈希,向AS请求TGT。AS验证后,返回用用户密钥加密的部分(包含会话密钥)和用
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是有效的,服务会正常授权访问。
- 信息收集:在已控制的主机上,通过Mimikatz等工具转储本地SAM或LSASS内存,或利用其他漏洞,获取特定服务账户的NTLM哈希。同时,需要知道目标服务的SPN(服务主体名称,如
- 特点:
- 作用范围有限:仅针对获取了哈希的特定服务。
- 不需要与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),并定期轮换。避免服务账户拥有过高权限。
- 黄金票据防御:严格保护域控制器安全。定期(如每30-60天)更改
- 检测与监控:
- 监控KDC事件日志(事件ID 4769)中异常的高权限票据请求(如普通用户请求管理员服务的票据)。
- 使用高级安全解决方案(如Microsoft ATA、Azure ATP或第三方EDR)检测异常的Kerberos活动模式,例如:使用了
krbtgt哈希的解密操作、来自非常用主机的TGS请求、票据生存时间异常等。 - 对服务账户的行为进行基线监控,检测异常登录。
- 架构与策略:
- 实施网络分段,限制关键服务的访问路径。
- 启用Kerberos审计,并集中管理日志。
总结:白银票据和黄金票据攻击是内网渗透中危害极大的权限维持手段。它们利用了Kerberos协议中服务端不验证票据来源、仅验证加密有效性的设计特点。防御的核心在于保护krbtgt和服务账户的哈希,并通过强大的监控手段发现基于伪造票据的异常认证活动。