DNS 劫持和 DNS 污染是什么,如何防范
DNS 劫持和 DNS 污染是两种常见但机制不同的 DNS 安全威胁,面试中经常被放在一起考察。核心区别在于:劫持是"改配置",污染是"投缓存"。下面逐一拆解。
DNS 劫持:篡改解析配置,将用户引向恶意站点
DNS 劫持的实质是攻击者控制了 DNS 解析链路上的某个环节,把域名指向非预期的 IP 地址。用户以为自己访问的是银行官网,实际到达的却是钓鱼页面。
劫持的四种典型路径
本地劫持——修改 /etc/hosts 或系统 DNS 配置,影响范围仅限单机。恶意软件常用这种方式,一行 192.168.1.100 www.bank.com 就能把用户导流到钓鱼站。
路由器劫持——利用路由器默认密码或固件漏洞,将 WAN 口的 DNS 服务器地址改成攻击者控制的地址。所有连入该路由器的设备全部受影响,这是家用场景中最常见的形式。
ISP 劫持——运营商级别的 DNS 服务器被篡改或故意配置,返回错误解析结果。某些 ISP 甚至会把不存在的域名解析到自己的广告页面,这就是典型的 NXDOMAIN 劫持。
权威 DNS 劫持——攻击者入侵域名注册商账户,修改 NS 记录,把整个域名的解析权交给自己的 DNS 服务器。2016 年 Dyn 攻击事件中,大量知名网站因此无法访问。
DNS 劫持的危害
一旦劫持成功,用户面临的风险包括:被导向钓鱼网站窃取账号密码、遭遇广告注入、被诱导下载恶意软件,以及隐私信息被窃听。
DNS 污染:向缓存注入假记录,让错误解析扩散
DNS 污染(又称 DNS 缓存投毒 / DNS Spoofing)的攻击目标不是配置,而是 DNS 服务器的缓存。攻击者抢在合法响应到达之前,向递归 DNS 服务器发送大量伪造的 DNS 响应,让虚假记录被缓存,后续所有查询该域名的用户都会拿到错误的 IP。
Kaminsky 攻击:DNS 污染的经典案例
2008 年 Dan Kaminsky 发现了一个影响整个互联网的 DNS 漏洞。传统 DNS 查询使用固定源端口和可预测的事务 ID,攻击者只需伪造一个匹配的响应即可投毒成功。Kaminsky 攻击利用这一弱点,通过大量并行请求和暴力猜测事务 ID,在数秒内就能污染递归服务器的缓存。这一发现直接推动了 DNSSEC 的加速部署,也促使 DNS 实现引入了源端口随机化和事务 ID 随机化。
DNS 污染与 DNS 劫持的对比
| 对比维度 | DNS 劫持 | DNS 污染 |
|---|---|---|
| 攻击目标 | DNS 配置或服务器控制权 | DNS 递归服务器的缓存 |
| 攻击手段 | 修改 hosts / 路由器 / 注册商账户 | 伪造 DNS 响应抢占缓存 |
| 持续性 | 持续有效,直到配置被恢复 | 受 TTL 约束,过期后需重新投毒 |
| 影响范围 | 取决于被攻陷的层级 | 影响所有使用该缓存的用户 |
| 检测难度 | 相对容易,配置可对比 | 较难,缓存内容不易察觉 |
防范措施:从协议层到应用层的多层防御
DNSSEC:从协议层保障解析可信
DNSSEC 通过为 DNS 记录添加数字签名,让解析器能验证响应的真实性和完整性。工作流程:权威服务器用私钥签名记录 → 解析器用公钥验证签名 → 验证通过才采纳结果。DNSSEC 能有效抵御缓存投毒和欺骗攻击,但部署需要整条信任链支持,且会增加响应包大小,部分老旧基础设施可能不兼容。
加密 DNS 查询:DoH / DoT / DoQ
DNS 查询默认使用明文 UDP 传输,很容易被中间人窃听和篡改。加密传输是解决这一问题的直接手段。
DNS over HTTPS (DoH):通过 HTTPS 加密 DNS 查询,使用 443 端口,流量混在普通 Web 流量中,难以被识别和拦截。Cloudflare 的 1.1.1.1 和 Google 的 8.8.8.8 都已支持 DoH。
DNS over TLS (DoT):使用 TLS 加密,专用 853 端口,协议更轻量但容易被识别和过滤。
DNS over QUIC (DoQ):基于 QUIC 协议,兼具加密和低延迟优势,2022 年成为 IETF 标准(RFC 9250),是目前最新的加密 DNS 传输方案。QUIC 的连接迁移特性还解决了传统 UDP 查询在网络切换时丢包的问题。
使用可信的公共 DNS
| 服务商 | IPv4 地址 | 特点 |
|---|---|---|
| Cloudflare | 1.1.1.1 | 速度快,支持 DoH/DoT/DoQ |
| 8.8.8.8 | 稳定可靠,全球覆盖 | |
| Quad9 | 9.9.9.9 | 内置恶意域名拦截 |
| 阿里 DNS | 223.5.5.5 | 国内访问速度快 |
定期检查与加固
客户端层面,定期检查 hosts 文件和 DNS 配置是否被篡改,用 dig @1.1.1.1 example.com 对比可信 DNS 的解析结果。路由器层面,修改默认管理密码、禁用远程管理、保持固件更新。企业环境还应部署内部递归解析器,强制 DNSSEC 验证,并在网络边界封锁直连 53 端口的流量。
应用层防护
HSTS(HTTP Strict Transport Security)通过响应头 Strict-Transport-Security: max-age=31536000; includeSubDomains 强制浏览器使用 HTTPS,防止 SSL 剥离攻击。
Certificate Pinning 在应用内内置服务器证书指纹,即使 DNS 被劫持,恶意站点的证书也无法通过验证。
RPKI(Resource Public Key Infrastructure)通过验证 BGP 路由公告的合法性,防止 BGP 劫持间接导致的 DNS 解析异常,是 2026 年网络基础设施安全的重要组成。
检测 DNS 异常的方法
多 DNS 对比是最直接的方式:分别用 dig 向不同 DNS 服务器查询同一域名,结果不一致就说明存在异常。在线工具如 DNSChecker.org 和 WhatsMyDNS.net 可以从全球多个节点检测解析结果。企业环境建议部署 PassiveDNS 建立解析基线,监控 NXDOMAIN 请求激增和关键域名 TTL 异常变化,设置告警。
总结
DNS 劫持改配置,DNS 污染投缓存,两者攻击路径不同但都指向同一个目标——把用户导到错误的地方。防御的核心思路是多层叠加:DNSSEC 验证响应真实性,DoH/DoT/DoQ 加密查询防篡改,可信 DNS 减少被攻击面,HSTS 和 Certificate Pinning 在应用层兜底。面试中讲清楚"劫持改配置、污染投缓存"这个核心区别,再补充 Kaminsky 攻击和加密 DNS 的演进,基本就够了。