01 · 体系总览
检测体系遵循"纵深防御"原则,按"发现差异 → 验证真伪 → 识别异常 → 阻断狩猎"四步组织。下图给出六类手段各自能覆盖的攻击类别(H-1~H-6),可见没有任何单一手段全覆盖,必须组合:
判定逻辑闭环:检测到"解析差异"只是起点,不是结论。差异须经过"DNSSEC验证 / 权威回源 / 历史基线 / 证书透明度"四道中的至少一道"真伪判定",方可升级为事件——这正是第1页KQ-1(差异与恶意判别)的工程落地。
02 · 多解析器交叉验证
2.1 方法
对同一域名,从多个相互独立的递归解析器并发查询,比较返回的IP集合。若某解析器系统性地返回与"可信基线"不同的结果,且排除CDN/Anycast/智能解析等合理差异,则提示该解析器或其所处链路被劫持(覆盖H-3/H-5/H-6)。建议至少包含:①本机/运营商默认解析器;②≥2个公共DNS(如 Google 8.8.8.8、Cloudflare 1.1.1.1、Quad9 9.9.9.9);③必要时从若干地理分布的探针查询。
2.2 判定阈值(缓解KQ-1误报)
| 现象 | 可能解释 | 处置 |
|---|---|---|
| 仅1个解析器返回不同IP | CDN/智能解析(合理)或该解析器被劫持(可疑) | 查该IP归属 + 权威回源比对,再定级 |
| 全部公共DNS一致、仅本机运营商异常 | 本地递归被污染/注入(H-3/H-6)或本机网关被改(H-2) | 优先核查本机hosts/网关DNS |
| 多地探针结果分布离散且无规律 | 策略性污染(按地域返回不同结果) | 按"最小一致集"判定,升级监测 |
| 返回IP为明显无效/保留地址 | 主动阻断/污染(如127.0.0.1、0.0.0.0) | 直接判异常并取证 |
# 多解析器并发比对(示例) for r in 8.8.8.8 1.1.1.1 9.9.9.9; do printf "%s -> " "$r"; dig +short A www.example.com "@$r" done
03 · DNSSEC验证
对已签名的域,DNSSEC提供密码学级真伪判定:解析器用信任锚(根/DS)逐级验证RRSIG,伪造应答通不过验证即被拒。这是检测H-3/H-5/H-6对签名域最可靠的手段。
3.1 实操命令
# 查看签名记录(RRSIG 应随答案返回) $ dig +dnssec www.example.com # 专用验证工具 delv:成功则末尾显示 "; fully validated" $ delv www.example.com $ delv +vtrace www.example.com # 显示逐级验证轨迹 # DNSViz 在线可视化(dnsviz.net):输入域名即可看签名链是否完整
结果判读:① delv 末尾"fully validated"= 通过;②解析器报告"BOGUS"= 签名验证失败,判定篡改;③"insecure"(无签名)= 该域未部署DNSSEC,须退回多解析器/被动DNS等降级手段。注意:DNSSEC只保"域已签名且未被改NS",不保证"注册商账户没被盗"(见第2页§5.3)。
04 · 被动DNS(Passive DNS)
被动DNS通过长期观测解析行为,积累"域名↔IP"的历史映射库。当某域名突然出现历史未见、且无法用正常变更解释的IP时,即触发异常。常用数据源:Farsight DNSDB、SecurityTrails、VirusTotal Passive DNS、RiskIQ等(多为商业/需授权)。其在检测H-4(权威被改)、H-3(递归被控)上尤其有效——因为这些手法最终都会体现为"权威/长期稳定的IP发生异常变更"。
与多解析器互补:多解析器是"实时快照比对",被动DNS是"历史趋势比对"。前者发现"此刻异常",后者发现"偏离长期基线",二者结合可区分"临时投毒"(TTL到期即恢复)与"权威被持久篡改"(长期异常)。
05 · 证书透明度(CT)监控
攻击者若要对被劫持的域名呈现"合法证书"(尤其H-4注册劫持、H-2路由器钓鱼配合非法证书),证书会被写入证书透明度日志。监控CT日志可在用户被骗前发现针对目标域名的非法/异常证书。常用:crt.sh、Google Certificate Transparency、certificate.transparency.dev。这与"多解析器比对"形成"解析层 + 证书层"双锚点——即便解析被改,证书一旦出现异常也能独立告警。
局限:CT监控能发现"证书异常",但不能直接证明"解析被劫持";且部分私有CA/日志未强制纳入。应作为独立信号与解析检测交叉印证,而非唯一依据。
06 · TTL/一致性分析
投毒/篡改记录常带异常TTL:攻击者可能设定较短TTL以"快速翻面",或设定特殊值。将实时TTL与"该域名历史TTL分布"比对,偏离即辅助识别(尤适H-5缓存投毒)。一致性分析还包括:同一权威在不同时间返回的NS/SOA是否突变、CNAME链是否指向异常目标。
# 观察TTL与权威记录 $ dig +noall +answer www.example.com $ dig NS example.com @a.gtld-servers.net # 核对NS是否被改 $ dig SOA example.com @ns1.example.com # 核对序列号/主机的合理性
07 · RPZ与流量日志
7.1 RPZ(响应策略区)
DNS防火墙(如ISC BIND的Response Policy Zone)可根据策略对特定应答做阻断、重定向或改写。将已知的恶意解析结果(来自威胁情报/被动DNS异常)写入RPZ,解析器即可在"答案返回用户前"拦截,是检测后的处置闭环手段(覆盖H-3/H-5/H-6)。
7.2 流量与日志监测
在出口/解析器侧采集DNS流量,监测:①某域名解析IP的突变频率;②异常高的NXDOMAIN率(可能投毒探测);③指向已知恶意IP段的解析占比。结合SIEM/日志平台实现威胁狩猎(关联ATT&CK T1071.004 DNS信道)。端点侧则核查hosts、网卡DNS、网关DNS配置(覆盖H-1/H-2)。
08 · 补充检测维度
8.1 EDNS Client Subnet(ECS)与智能解析差异
RFC 7871 定义的 ECS 会把客户端子网(/24 或 /56)随查询携带给权威,使CDN可按地理/运营商"就近"返回IP。这把"多解析器交叉"的判定复杂度进一步推高:同一解析器、不同ECS前缀可能得到不同结果。检测对策:①交叉比对时固定发送一致的ECS前缀,或显式+noedns排除ECS影响;②把ECS前缀作为比对维度之一(同一前缀下结果应稳定);③权威侧若发现异常来源的子网前缀被用于探测,应纳入观测。ECS还带来隐私外溢(客户端网段暴露给权威与递归),企业可考虑在出口递归处剥离ECS。
8.2 DNS Rebinding(域名重绑定)——劫持的"近亲"
Rebinding 不是解析被改,而是攻击者控制合法域名,先返回攻击者IP、后返回受害者内网IP,绕过浏览器同源策略攻击内网设备。虽不属于本课题H-1~H-6,但检测手段高度相关:①内网递归应拒绝把外网域名解析到私网/保留地址(BIND response-policy 或 dnsmasq stop-dns-rebind);②对 TTL 极短(<5秒)且IP频繁变化的域名告警;③内网服务强制鉴权、浏览器启用 DNS rebinding 防护。
8.3 加密DNS(DoH)绕行与降级检测
攻击者也可能利用 DoH 作为隐蔽信道:恶意软件使用硬编码的公共DoH端点(如 malware 直连 dns.google)绕过企业内网DNS监控(RPZ失效),或伪造"需要升级证书/降级为明文"的提示诱使用户接受降级。检测对策:①在企业出口对 dns.google / cloudflare-dns.com / mozilla.cloudflare-dns.com 等公共DoH端点做白名单管控,未授权的一律阻断并触发告警;②对"本应走DoT/DoH却被明文53端口接管"的客户端告警(降级特征);③将DoH流量特征(TLS SNI、证书指纹)纳入NDR/日志分析,与已知C2的DoH端点情报比对(见第7页企业加密DNS管控)。
边界说明:上述三类并非新的劫持类别,而是第4页六类手段在"ECS环境、内网环境、加密DNS环境"下的具体化——补齐它们,检测体系才覆盖现代生产环境的真实形态。
09 · 工具清单
| 类别 | 工具 | 用途 |
|---|---|---|
| 命令行 | dig / delv / kdig / drill | 查询、DNSSEC验证(delv为专用验证器;kdig支持DoH/DoT) |
| 可视化 | DNSViz (dnsviz.net)、Verisign DNSSEC Debugger | DNSSEC签名链完整性与错误定位 |
| 被动DNS | Farsight DNSDB、SecurityTrails、VirusTotal | 历史解析基线比对 |
| 证书透明度 | crt.sh、certificate.transparency.dev | 针对域名的非法证书早发现 |
| 测量 | OONI Probe、RIPE Atlas、dnsdiag | 多地域解析测量、resolver性能/路径(dnsping/dnsroute) |
| DNS防火墙 | ISC BIND RPZ、商业威胁情报网关 | 基于策略的应答阻断/改写 |
| 抓包 | Wireshark / tcpdump | 链路层DNS报文取证(H-6 on-path分析) |
| 枚举/测绘 | dnsrecon、dnsenum、Amass | 区域传送检查、子域枚举(授权范围内,支撑资产与暴露面核查) |
| Rebinding防护 | dnsmasq stop-dns-rebind、BIND RPZ 私网地址策略 | 阻断外网域名解析到RFC1918/保留地址(§8.2) |
本节参考来源(第4页)
RFC 4033/4034/4035(DNSSEC 验证原理):datatracker.ietf.org/doc/html/rfc4033
ISC, BIND 文档与 RPZ(Response Policy Zone)说明:bind9.readthedocs.io(ISC官方文档)
DNSViz(DNSSEC可视化与验证):dnsviz.net
证书透明度:crt.sh(crt.sh)、Google Certificate Transparency(certificate.transparency.dev)
OONI, DNS注入测量方法:ooni.org/nettest/dns-injection;RIPE Atlas:atlas.ripe.net
dnsdiag(dnsping/dnsroute/dnstraceroute):github.com/farrokhi/dnsdiag