Kerberos中继攻击新手法:利用DNS CNAME绕过安全防护,PoC已发布
Windows Kerberos 认证中存在一个关键漏洞,显著扩大了 Active Directory 环境中凭据中继攻击的攻击面。
通过滥用 Windows 客户端在处理 DNS CNAME 响应时获取 Kerberos 服务票据的行为,攻击者可以诱骗系统为攻击者控制的服务请求票据,从而绕过传统的安全防护措施。
攻击流程图 (来源: Cymulate)
攻击向量
该漏洞的核心在于 Windows 的一个基本行为:当 Windows 客户端收到 DNS CNAME 记录时,它会遵循这个别名。随后,客户端在构建 Ticket Granting Service (TGS) 请求时,会将 CNAME 中的主机名作为 Service Principal Name (SPN) 来使用。
一个能够进行中间人攻击(例如通过 ARP 投毒、DHCPv6 投毒即 MITM6,或类似方法)以拦截 DNS 流量的攻击者,可以利用此行为强制受害者为攻击者选择的目标请求服务票据。
当受害者尝试访问一个合法的域内资产时,恶意的 DNS 服务器会响应一个指向攻击者控制的主机名的 CNAME 记录,并附带一个将该主机名解析为攻击者 IP 地址的 A 记录。
这将导致受害者使用原本应为攻击者目标服务生成的票据,向攻击者的基础设施进行身份认证。
攻击能力与影响
| 影响范围 | 描述 |
|---|---|
| RCE | 通过 ADCS Web 注册(ESC8)实现远程代码执行 |
| 中继攻击 | 跨协议中继(HTTP→SMB, HTTP→LDAP) |
| 横向移动 | 未经授权的访问和网络内部扩散 |
| 身份伪造 | 无需密码即可模拟用户 |
测试证实,该利用手法在 Windows 10、Windows 11、Windows Server 2022 和 Windows Server 2025 的默认配置下均能成功。
当未强制启用签名或 Channel Binding Tokens (CBT) 时,该攻击能成功针对未受保护的服务,包括 SMB、HTTP 和 LDAP。该漏洞已于 2025 年 10 月向 Microsoft 进行了负责任地披露。
DNS投毒将受害者重定向至恶意目标,强制产生Kerberos TGS请求 (来源: Cymulate)
作为回应,Microsoft 为 HTTP.sys 增加了 CBT 支持,并在 2026 年 1 月的安全更新中,为所有受支持的 Windows Server 版本发布了补丁,漏洞编号为 CVE-2026-20929。
然而,此缓解措施仅解决了 HTTP 中继场景。底层的 DNS CNAME 强制利用原语并未改变,这使得其他协议仍处于易受攻击的状态。
概念验证 (PoC)
研究人员已在 GitHub 上发布了一个带有 CNAME 投毒功能的 MITM6 工具修改版本。该工具支持针对特定域或所有 DNS 查询进行有针对性的 CNAME 投毒。
该工具包含用于集成 ARP 投毒的纯 DNS 模式,并支持对关键基础设施的流量进行透传。利用此漏洞需要 Python 3.x 和 Linux 操作系统。
指向攻击者IP的adcs-server.mycorp.local A记录 (来源: Cymulate)
Cymulate 研究实验室建议组织实施分层防御:
| 安全层 | 推荐的控制措施 | 目的 |
|---|---|---|
| SMB安全 | 在所有服务器(不仅仅是域控制器)上强制启用 SMB 签名 | 防止 SMB 中继和中间人攻击 |
| 目录服务 | 要求 LDAP 签名,并在支持的情况下强制启用 LDAPS 通道绑定令牌 (CBT) | 防止 LDAP 中继和凭据拦截 |
| Web服务 | 对所有内部 HTTP 服务强制使用带有 CBT 的 HTTPS | 缓解基于 HTTP 的 NTLM 中继攻击 |
| DNS基础设施 | 加固 DNS 服务器,并考虑使用 DNS over HTTPS (DoH) | 减少 DNS 欺骗和流量篡改的风险 |
| Kerberos监控 | 监控指向异常 SPN 的可疑 TGS 请求 | 检测潜在的 Kerberos 滥用或横向移动行为 |
| 威胁检测 | 对跨协议的身份认证模式进行告警 | 识别 NTLM/Kerberos 中继和协议滥用尝试 |
这项研究揭示了一个关键的安全现实:Kerberos 协议本身并不能固有地防止中继攻击。防护的落地实施在于服务层面。
DNS投毒后,受害者连接到攻击者的恶意HTTP或SMB服务器 (来源: Cymulate)
仅禁用 NTLM 是不够的;组织必须明确地在每一个启用 Kerberos 的服务上强制实施反中继保护措施,才能有效消除中继风险。FINISHED 7hswXONgCtRjzi/o0oH4xWPjCv3h9FlQ3qC0cwMUsuevCO3Vpvkv2V5E8JlTo8QfWAcwN24qbd6R/YZWWLa6eX43Xug0y0stcH0Vuk7d68M=