Kerberos认证协议中的票据传递攻击(Pass-the-Ticket Attack)详解
字数 2650 2025-12-08 10:28:40

Kerberos认证协议中的票据传递攻击(Pass-the-Ticket Attack)详解

描述:
票据传递攻击是Kerberos网络认证协议中的一种横向移动技术。攻击者在已攻陷的客户端上窃取到有效的Kerberos服务票据(Service Ticket,通常是TGS票据),然后将其传递到另一台机器上使用,以冒充合法用户身份访问网络中的特定服务,而无需知道用户的密码或长期密钥。这种攻击利用了Kerberos票据本身的可移植性,是内网渗透中常见的手段。

解题/讲解过程:

第一步:理解攻击依赖的Kerberos核心概念

  1. Kerberos票据(Ticket):是由密钥分发中心(KDC)签发的一种临时凭证,用于证明用户对特定服务的访问权限。最重要的两种票据是:
    • 票据授予票据(TGT):用于向KDC申请其他服务票据的“门票”。
    • 服务票据(ST,或TGS票据):用于直接访问特定服务(如文件共享、数据库等)。
  2. 票据缓存:为了用户体验,客户端操作系统(如Windows的LSASS进程,Linux的ccache文件)会将获取到的TGT和ST缓存在内存或磁盘中。
  3. 可重用性:在票据的有效期内(通常默认为10小时),它可以被多次使用来访问对应的服务,而无需用户重新输入密码。

第二步:攻击前提与目标

  • 前提:攻击者已经通过某种方式(如钓鱼、漏洞利用)在目标网络中的一台主机上获得了执行代码的权限(即立足点)。
  • 目标:利用从当前主机窃取的票据,访问网络中其他主机上受Kerberos保护的服务,实现权限提升或横向移动,同时避免了在网络中传递密码哈希或明文密码可能触发的警报。

第三步:攻击步骤分解

阶段1:票据窃取
攻击者在已控制的主机上,从票据缓存中提取有效的Kerberos票据。

  1. 定位缓存
    • Windows:票据由本地安全机构子系统服务(LSASS)进程在内存中维护。可以使用klist命令查看当前会话的票据。
    • Linux/Unix:票据通常存储在/tmp/krb5cc_<UID>文件中或由KEYRING:persistent管理。
  2. 提取工具
    • Mimikatz(Windows):经典工具。命令mimikatz # sekurlsa::tickets /export可以导出内存中所有用户的票据,并以.kirbi格式文件保存。
    • Rubeus(Windows):.NET工具。命令Rubeus.exe dump 可以列出并导出票据。
    • klistkinit(Linux):结合脚本或手动复制缓存文件。

阶段2:票据传递
攻击者将窃取到的票据文件(如.kirbi)传输到攻击者控制的另一台主机(跳板机或已攻陷的另一台内网机器)上。

  1. 选择票据:通常优先选择具有高权限(如域管理员)账户的票据,或者是针对特定目标服务(如cifs/文件服务器$MSSQLSvc/数据库服务器)的服务票据。
  2. 文件传输:通过HTTP、SMB、FTP或编码后通过DNS/ICMP隧道等方式,将票据文件从受害主机传到攻击者控制的机器。

阶段3:票据注入与使用
在攻击者控制的目标机器上,将窃取的票据注入到当前会话的Kerberos缓存中,然后使用该票据访问服务。

  1. 票据注入
    • Mimikatzmimikatz # kerberos::ptt <票据文件路径.kirbi>。此命令将票据“传递”到当前会话的内存中。
    • RubeusRubeus.exe ptt /ticket:<票据文件路径.kirbi>
  2. 验证与使用
    • 注入后,可以立即使用klist命令查看当前缓存,确认票据已加载。
    • 随后,无需提供密码,即可使用标准网络工具访问目标服务。例如,使用dir \\目标服务器\share$访问文件共享,或使用PsExec.exe进行远程命令执行。

第四步:攻击变种与进阶

  1. 白银票据 vs. 票据传递
    • 票据传递是窃取并使用合法的、由KDC签发的票据。
    • 白银票据是伪造的服务票据,需要事先知道服务账户的密码哈希(NTLM Hash),但无需与KDC交互。票据传递的门槛更低,因为它不要求获取服务账户的哈希。
  2. 过期的黄金票据:如果窃取到的TGT(在票据传递攻击中较少单独使用,因为TGS_REQ仍需与KDC通信)来自一个已被管理员在KDC端撤销(重置密码)的账户,它依然可能在缓存有效期内被用于票据传递攻击,因为服务端在验证服务票据时,不直接与KDC通信校验吊销状态。

第五步:防御与检测措施

  1. 防御
    • 最小权限原则:严格限制用户和服务的权限,降低票据被窃取后的影响范围。
    • 票据保护:启用Credential Guard(Windows 10/11, Server 2016+),它利用虚拟化安全技术隔离和保护LSASS中的密钥材料,使Mimikatz等工具无法直接读取。
    • 缩短票据生命周期:在域策略中减少票据的最大有效期最长续订期限,使被盗票据更快失效。
    • 强制注销:对敏感账户,在可疑活动后立即强制注销其所有会话,清除票据缓存。
    • 限制票据缓存:对于非交互式服务账户,考虑使用DoNotStoreDelegatedCredentials等策略限制其缓存票据。
  2. 检测
    • SIEM告警:监控异常事件,例如:
      • 同一用户票据从多个不同IP地址或主机名在短时间内使用。
      • 使用Kerberos Ticket Granting Ticket请求的事件(4768)与Kerberos Service Ticket请求的事件(4769)在时间、IP上存在不合理关联。
    • 审计日志:确保启用Kerberos服务票据请求(事件ID 4769)的详细日志记录,并分析其中的Client AddressService Name等信息。
    • 终端检测:使用EDR/AV工具检测Mimikatz、Rubeus等攻击工具的内存行为或命令行参数。

总结
票据传递攻击本质上是一种“凭证盗窃”在Kerberos协议中的具体体现。它不破解密码,而是滥用合法的、短期的会话凭证。防御的核心在于保护凭证缓存、缩短凭证寿命、加强权限控制,并通过日志分析检测异常的票据使用模式。理解此攻击有助于深刻认识到,在复杂的认证协议中,即使密码从未泄露,会话凭证本身也可能成为攻击链条中的关键一环。

Kerberos认证协议中的票据传递攻击(Pass-the-Ticket Attack)详解 描述: 票据传递攻击是Kerberos网络认证协议中的一种横向移动技术。攻击者在已攻陷的客户端上窃取到有效的Kerberos服务票据(Service Ticket,通常是TGS票据),然后将其传递到另一台机器上使用,以冒充合法用户身份访问网络中的特定服务,而无需知道用户的密码或长期密钥。这种攻击利用了Kerberos票据本身的可移植性,是内网渗透中常见的手段。 解题/讲解过程: 第一步:理解攻击依赖的Kerberos核心概念 Kerberos票据(Ticket) :是由密钥分发中心(KDC)签发的一种临时凭证,用于证明用户对特定服务的访问权限。最重要的两种票据是: 票据授予票据(TGT) :用于向KDC申请其他服务票据的“门票”。 服务票据(ST,或TGS票据) :用于直接访问特定服务(如文件共享、数据库等)。 票据缓存 :为了用户体验,客户端操作系统(如Windows的LSASS进程,Linux的 ccache 文件)会将获取到的TGT和ST缓存在内存或磁盘中。 可重用性 :在票据的有效期内(通常默认为10小时),它可以被多次使用来访问对应的服务,而无需用户重新输入密码。 第二步:攻击前提与目标 前提 :攻击者已经通过某种方式(如钓鱼、漏洞利用)在目标网络中的一台主机上获得了执行代码的权限(即立足点)。 目标 :利用从当前主机窃取的票据,访问网络中 其他主机 上受Kerberos保护的服务,实现权限提升或横向移动,同时避免了在网络中传递密码哈希或明文密码可能触发的警报。 第三步:攻击步骤分解 阶段1:票据窃取 攻击者在已控制的主机上,从票据缓存中提取有效的Kerberos票据。 定位缓存 : Windows :票据由本地安全机构子系统服务(LSASS)进程在内存中维护。可以使用 klist 命令查看当前会话的票据。 Linux/Unix :票据通常存储在 /tmp/krb5cc_<UID> 文件中或由 KEYRING:persistent 管理。 提取工具 : Mimikatz (Windows):经典工具。命令 mimikatz # sekurlsa::tickets /export 可以导出内存中所有用户的票据,并以 .kirbi 格式文件保存。 Rubeus (Windows):.NET工具。命令 Rubeus.exe dump 可以列出并导出票据。 klist 和 kinit (Linux):结合脚本或手动复制缓存文件。 阶段2:票据传递 攻击者将窃取到的票据文件(如 .kirbi )传输到 攻击者控制的另一台主机 (跳板机或已攻陷的另一台内网机器)上。 选择票据 :通常优先选择具有高权限(如域管理员)账户的票据,或者是针对特定目标服务(如 cifs/文件服务器$ , MSSQLSvc/数据库服务器 )的服务票据。 文件传输 :通过HTTP、SMB、FTP或编码后通过DNS/ICMP隧道等方式,将票据文件从受害主机传到攻击者控制的机器。 阶段3:票据注入与使用 在攻击者控制的目标机器上,将窃取的票据注入到当前会话的Kerberos缓存中,然后使用该票据访问服务。 票据注入 : Mimikatz : mimikatz # kerberos::ptt <票据文件路径.kirbi> 。此命令将票据“传递”到当前会话的内存中。 Rubeus : Rubeus.exe ptt /ticket:<票据文件路径.kirbi> 。 验证与使用 : 注入后,可以立即使用 klist 命令查看当前缓存,确认票据已加载。 随后,无需提供密码,即可使用标准网络工具访问目标服务。例如,使用 dir \\目标服务器\share$ 访问文件共享,或使用 PsExec.exe 进行远程命令执行。 第四步:攻击变种与进阶 白银票据 vs. 票据传递 : 票据传递是 窃取 并使用合法的、由KDC签发的票据。 白银票据是 伪造 的服务票据,需要事先知道服务账户的密码哈希(NTLM Hash),但无需与KDC交互。票据传递的门槛更低,因为它不要求获取服务账户的哈希。 过期的黄金票据 :如果窃取到的TGT(在票据传递攻击中较少单独使用,因为TGS_ REQ仍需与KDC通信)来自一个已被管理员在KDC端撤销(重置密码)的账户,它依然可能在缓存有效期内被用于票据传递攻击,因为服务端在验证服务票据时,不直接与KDC通信校验吊销状态。 第五步:防御与检测措施 防御 : 最小权限原则 :严格限制用户和服务的权限,降低票据被窃取后的影响范围。 票据保护 :启用Credential Guard(Windows 10/11, Server 2016+),它利用虚拟化安全技术隔离和保护LSASS中的密钥材料,使Mimikatz等工具无法直接读取。 缩短票据生命周期 :在域策略中减少票据的 最大有效期 和 最长续订期限 ,使被盗票据更快失效。 强制注销 :对敏感账户,在可疑活动后立即强制注销其所有会话,清除票据缓存。 限制票据缓存 :对于非交互式服务账户,考虑使用 DoNotStoreDelegatedCredentials 等策略限制其缓存票据。 检测 : SIEM告警 :监控异常事件,例如: 同一用户票据从多个不同IP地址或主机名在短时间内使用。 使用 Kerberos Ticket Granting Ticket 请求的事件(4768)与 Kerberos Service Ticket 请求的事件(4769)在时间、IP上存在不合理关联。 审计日志 :确保启用Kerberos服务票据请求(事件ID 4769)的详细日志记录,并分析其中的 Client Address 、 Service Name 等信息。 终端检测 :使用EDR/AV工具检测Mimikatz、Rubeus等攻击工具的内存行为或命令行参数。 总结 : 票据传递攻击本质上是一种“凭证盗窃”在Kerberos协议中的具体体现。它不破解密码,而是滥用合法的、短期的会话凭证。防御的核心在于 保护凭证缓存、缩短凭证寿命、加强权限控制 ,并通过日志分析检测异常的票据使用模式。理解此攻击有助于深刻认识到,在复杂的认证协议中,即使密码从未泄露,会话凭证本身也可能成为攻击链条中的关键一环。