1. 攻击手法深度解析:DNS CNAME如何成为Kerberos中继的"暗门"
1.1 CNAME记录在AD环境中的特殊地位
活动目录(AD)环境中,CNAME记录远不止是简单的别名功能。作为微软官方推荐的资源定位方式,CNAME在AD集成DNS中承担着关键服务发现职责。当客户端查询_service._tcp.example.com这类SRV记录时,背后往往存在CNAME重定向链。攻击者正是利用这种设计特性,通过劫持CNAME解析路径实现身份中继。
在AD架构中,CNAME的解析过程存在一个关键时间窗口:当客户端首次请求某服务时,会先通过DNS查询获取CNAME记录,然后根据CNAME目标发起Kerberos认证。这个查询-认证的间隙,就是攻击者实施"中间人"的黄金时机。
1.2 Kerberos协议的身份中继漏洞
Kerberos协议设计上要求服务端必须验证客户端提供的服务票据(TGS)是否与其实际连接的服务名一致。但微软实现中存在一个致命缺陷:当服务端收到TGS票据时,仅检查SPN中的服务类型(如HTTP/)和主机名部分,却不会验证该主机名是否通过CNAME重定向而来。
攻击者可以精心构造一个恶意CNAME记录,例如:
code复制evil-service.example.com CNAME legit-service.example.com
当用户访问evil-service时,实际获得的却是针对legit-service的合法票据。由于Kerberos协议只验证legit-service的SPN有效性,而不会追溯该请求是否源自evil-service的CNAME重定向,导致身份中继成功。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 攻击链完整复现与技术细节
2.1 攻击前置条件与环境准备
要实现这种攻击,攻击者需要满足以下条件:
- 拥有普通域用户权限(无需管理员)
- 目标DNS区域允许动态更新(默认配置)
- 能够监听或诱骗用户访问恶意服务
实验环境建议使用:
- Windows Server 2019域控制器
- Windows 10/11客户端
- Wireshark + Kerberos调试工具集
2.2 分步攻击演示
步骤1:注册恶意CNAME
powershell复制# 通过PowerShe
