// 红队渗透 · 2024-12-21

深入剖析Kerberos认证中的黄金票据与白银票据攻击

引言

在现代企业网络中,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认证流程如下:

  1. 用户登录,向AS提交用户名和密码,获取TGT。
  2. 使用TGT向TGS请求特定服务的ST。
  3. 将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 伪造条件

生成黄金票据需满足以下条件:

  1. 域名称:如corp.com,标识目标域。
  2. 域SID(Security Identifier):域的唯一标识符,可从域内主机提取。
  3. krbtgt账户的NTLM哈希:域控制器的核心密钥,通常通过提权或内存抓取获取。
  4. 伪造用户名:如administrator,定义票据的身份。

2.4 实际利用流程

以下是以Mimikatz工具实现黄金票据攻击的步骤:

  1. 提取krbtgt哈希:
    • 假设攻击者已入侵域控制器(如DC1),使用Mimikatz执行:
    mimikatz # lsadump::dcsync /user:krbtgt
    NTLM: 502a3e5a7b8c4f1d9d238bc8e4a8f8b8
  2. 生成伪造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
  3. 验证访问:
    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 伪造条件

生成白银票据需满足以下条件:

  1. 域名称:如corp.com。
  2. 服务主体名称(SPN, Service Principal Name):如CIFS/web04.corp.com,标识目标服务。
  3. ** 服务账户NTLM哈希**:如WEB04的机器账户哈希。
  4. 伪造用户名:如administrator。
  5. 域SID:确保票据与域兼容。

3.4 实际利用流程

以下是白银票据攻击示例:

  1. 提取服务账户哈希:
    • 假设攻击者入侵WEB04,提取其机器账户哈希:
    mimikatz # sekurlsa::logonpasswords
    Username: WEB04$
    NTLM: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
  2. 生成伪造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
  3. 访问服务:
    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