黄金票据(Golden Ticket)是内网渗透和域安全领域里最经典的攻击手法之一。它利用的是Kerberos协议中一个天然的信任缺陷:KDC只认KRBTGT账户的密钥,而不验证票据本身的来源。一旦攻击者拿到了KRBTGT的NTLM哈希,就可以离线伪造出任意用户的TGT票据,即使该用户根本不存在,域控也会照单全收。理解黄金票据的原理,是做好Active Directory防御的基础。

一、先弄懂Kerberos认证流程中的关键环节
要理解黄金票据,必须先搞清楚Kerberos的三方交互模型。客户端登录域时,第一步是向KDC的AS服务发送AS-REQ请求,用自己的NTLM哈希加密时间戳来证明身份。AS验证通过后,会返回一个由KRBTGT账户哈希加密的TGT票据,这就是整个体系的信任根基。
之后客户端拿着TGT去访问文件服务器、数据库等服务时,向TGS发起TGS-REQ请求,TGS用自己的KRBTGT密钥解密TGT,确认合法后下发服务票据ST,客户端再用ST访问目标服务。注意一个细节:TGT的整个生命周期内,域控不会每次都重新校验用户账户状态。
问题就出在这里。KDC对TGT的校验方式只有一个——用KRBTGT哈希解密。它默认能解开的票据就是自己签发的票据,因为理论上只有KDC自己知道KRBTGT的密钥。可一旦这个密钥泄露,攻击者就拥有了和KDC同等的话语权。
二、黄金票据的伪造原理与技术特征
黄金票据的本质是攻击者绕过AS验证环节,直接自己构造TGT。伪造时需要几个关键参数:域名、域SID、KRBTGT的NTLM哈希,以及想要冒充的用户名。攻击者通常在拿到域控权限或通过DCSync导出KRBTGT哈希后,用Mimikatz完成伪造:
# 提取KRBTGT哈希(需要域管或DCSync权限) mimikatz # lsadump::dcsync /domain:corp.local /user:krbtgt # 伪造黄金票据 mimikatz # kerberos::golden /user:Administrator /domain:corp.local /sid:S-1-5-21-1004336710-2011219185-2311893561 /krbtgt:<krbtgt的NTLM哈希> /ptt
伪造出来的票据有几个显著特征:用户名可以随意编造,甚至可以是域内不存在的账户;用户ID通常设置为500(默认管理员的RID),从而获得域管权限;票据的生存周期可以任意指定,理论上能设置为十年;并且可以伪造给任意服务使用,突破了一般票据只针对特定SPN的限制。这些特征也反过来给检测提供了线索。
还需要区分黄金票据和白银票据(Silver Ticket)。黄金票据伪造的是TGT,由KRBTGT密钥签名,能通吃域内所有服务;白银票据伪造的是ST,用的是具体服务账户的密钥,只能访问特定服务,但连KDC都不经过,更隐蔽。两者的防御重点不同,前者必须重置KRBTGT密码才能失效,后者重置对应服务账户密码即可。
三、检测手段:从流量和日志中找异常
黄金票据在流量层面有一些可识别的指纹。例如伪造票据的加密类型可能与域策略不一致,Kerberos报文中出现了RC4-HMAC(0x17)而域内已经全面启用AES;或者票据中出现了异常的PAC字段。用工具从pcap流量中提取Kerberos信息是常见的排查方式:
# 使用krb2pcap或Wireshark过滤Kerberos流量
# Wireshark过滤表达式:显示所有AS-REP和TGS-REP交互
kerberos || krb5
# 检查事件日志中的4769事件(服务票据请求)
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4769} |
Where-Object { $_.Properties[5].Value -eq '0x17' } |
Select-Object -First 20 TimeCreated, Message
日志层面重点关注Windows事件ID 4624和4768、4769。如果发现某个从未登录过的账户突然以管理员身份访问域控,或者票据加密降级、票据生存周期异常长、账户RID显示为500但用户名不是真实的内置Administrator,都应高度怀疑票据伪造。此外微软的ATA(Advanced Threat Analytics)和一些EDR产品内置了异常TGT检测规则,建议在关键环境部署。
四、防御方案:从根上斩断伪造链条
黄金票据一旦签发,唯一能使其失效的办法是重置KRBTGT密码。建议至少重置两次,因为KRBTGT账户会保留当前密钥和上一个历史密钥,只重置一次旧的黄金票据仍然有效。重置操作要分批执行并规划好回滚方案,避免影响正在进行的Kerberos会话。
日常加固可以从以下几个层面入手:
- 保护KRBTGT哈希:严格限制DCSync权限,默认只有Domain Admins和Domain Controllers组的成员可以执行目录复制,定期用BloodHound或AdFind检查是否存在异常的复制权限委派。
- 启用组策略中的“计算机配置\Windows设置\安全设置\安全选项\网络安全:配置Kerberos允许的加密类型”,只保留AES256,禁用RC4,从加密层面增加伪造难度。
- 部署微软2014年11月的补丁(KB3011780)并开启Kerberos PAC校验,让KDC对PAC签名做完整验证。
- 启用账户防护:对特权账户开启“此账户敏感且不能被委派”属性,配合认证策略(Authentication Policies)限制TGT生命周期。
- 纵深防御:域控上部署EDR、限制域管登录范围、定期轮转特权凭证,即使单点失陷也能及时止损。
最后要强调,黄金票据攻击的前提是攻击者已经拿到KRBTGT哈希,这通常意味着域控已经沦陷或存在严重的权限配置问题。所以防御的本质不只是对抗票据伪造本身,而是要把域控隔离好、把权限管好、把凭证保护好。定期做域内权限审计和红蓝对抗演练,才能真正把这类域持久化攻击的风险降下来。
Golden Ticket域控安全Kerberos认证修改时间:2026-09-12 08:36:33