Kerberos认证机制与PtH/PtT攻击原理
TOPIC SOURCE
横向移动技术详解:PtH、PtT 与黄金票据
Kerberos 作为 Windows 域环境的核心身份验证协议,看似只在登录对话框里闪现,却在整个网络安全链条中扮演了不可或缺的角色。它的设计初衷是“无密码传输”,但正因为依赖对称密钥和票据(Ticket)的交互,给攻击者提供了可乘之机——尤其是 PtH(Pass‑the‑Hash)和 PtT(Pass‑the‑Ticket)这两种凭证重用手法。
Kerberos 基础流程概览
- AS(Authentication Service):客户端提交用户名,KDC(Key Distribution Center)使用用户密码派生的密钥生成 TGT(Ticket‑Granting Ticket),并用用户的长期密钥加密返回。
- TGS(Ticket‑Granting Service):持有 TGT 的客户端向 TGS 请求服务票据(Service Ticket),KDC 用目标服务的密钥加密票据后返回。
- 服务验证:服务收到 Service Ticket,使用自身密钥解密并校验其中的时间戳、客户端标识等信息,随后建立会话密钥供后续通信。
整个过程的安全依赖于 Kerberos 密钥派生函数(KDF) 的强度以及 时间同步 的准确性。只要这两个环节出现偏差,攻击者就可以借助已泄露的哈希或票据突破身份校验。
PtH(Pass‑the‑Hash)攻击原理
PtH 并不需要明文密码,而是直接把用户的 NTLM 哈希 当作凭证提交。典型步骤如下:
- 通过 Mimikatz、PowerSploit 等工具在已被渗透的机器上提取
NTLM hash(常见于 LSASS 进程内存)。 - 使用
sekurlsa::pth /user:admin /domain:corp.local /ntlm:<hash>将哈希注入当前进程的安全上下文。 - 随后在该进程中执行
cmd.exe、psexec或wmic,目标系统会把哈希当作合法的 NTLM 响应,完成横向移动。
因为 Kerberos 在 Windows 10 以后默认采用 Kerberos 认证,但在混合环境下仍保留 NTLM 回退路径,导致即使 Kerberos 本身未被破坏,PtH 仍能凭借 NTLM 哈希打开后门。
PtT(Pass‑the‑Ticket)攻击原理
PtT 的目标是直接利用 Kerberos 票据(Ticket),而不是密码哈希。攻击流程概括为:
- 在受害机器上使用
kerberos::ptt admin.ccache将捕获的 TGT(或 Service Ticket)加载进当前进程的票据缓存。 - 随后发起对域资源的访问请求,系统会直接使用已加载的票据完成身份验证,绕过密码检查。
- 若攻击者进一步获取 krbtgt 账户的哈希并生成 黄金票据(Golden Ticket),则可以伪造任何用户、任意有效期的 TGT,实现持久化控制。
与 PtH 不同,PtT 直接利用 Kerberos 的核心机制——票据的可携带性和时间窗口,使得防御更为困难。尤其在 票据缓存泄漏(如 LSASS 记忆体被 dump)时,攻击者可以一次性获取多个服务的访问权。
防御要点的细化思考
- 禁用 NTLM 回退:通过组策略强制所有身份验证走 Kerberos,并在不兼容的旧系统上启用 “拒绝 NTLM”。
- 限制票据生命周期:将 TGT 默认有效期从 10 小时降至 2‑4 小时,并开启 Kerberos 受限委派 以防止票据被随意转发。
- 监控票据异常:利用 Windows 事件 ID 4768/4769 检测异常的 TGT 请求次数或来源 IP,配合 SIEM 实时告警。
- 保护 LSASS:启用 Credential Guard、Restrict Remote Desktop Services 等硬化手段,阻止非授权进程读取内存。
当 Kerberos 与 NTLM 共存时,攻击者往往在两者之间切换刀锋;而一旦票据被窃取,后果往往比密码泄露更具破坏性。理解这些底层原理,才能在防御策略上做到“先发制人”。

参与讨论
这玩意儿听着就头大,但好像确实挺危险的🤔