什么是 DNS 劫持和 DNS 污染?如何防范?
简化版
DNS 劫持:攻击者篡改 DNS 解析结果,把你要访问的域名指向错误的 IP(钓鱼、投广告)——常发生在被控制的路由器、恶意本地 DNS、或本机被改了 DNS 设置。DNS 污染(投毒):攻击者在你的查询回来前,抢先伪造一个假的 DNS 响应塞给你(DNS 用 UDP 明文、无验证,容易被冒充)。防范靠加密和验证:**DoH(DNS over HTTPS)、DoT(DNS over TLS)**加密查询,DNSSEC 给记录签名防篡改。
详细版
DNS 劫持(Hijacking):解析过程被篡改,返回错误 IP。常见途径:
- 路由器被入侵:改了路由器的 DNS 设置,所有经过它的解析都被导向恶意服务器;
- 本机被恶意软件改 DNS:改了系统 DNS 或 hosts 文件;
- 运营商劫持:个别运营商对未备案/特定域名返回自己的页面(广告、提示页)。
DNS 污染 / 缓存投毒(Pollution / Cache Poisoning):DNS 查询用 UDP 明文、无身份验证,攻击者只要在真实响应到达前,伪造一个源地址是 DNS 服务器的假响应发给你,你就会信以为真(谁先到信谁)。伪造的响应可以把域名指向错误 IP,还可能被缓存、污染更多用户。
根本弱点:传统 DNS 明文传输、不加密、不验证来源,所以既能被中途篡改(劫持),也能被伪造抢答(污染)。
完整版教学
一、劫持 vs 污染:篡改 vs 伪造抢答
两者都让你拿到错误的解析结果,但手法不同:
- DNS 劫持是篡改真实的解析链路——控制了路由器、本地 DNS 或本机设置,从源头改掉解析结果。它通常需要「控制解析路径上的某个节点」。
- DNS 污染是伪造响应抢答——不需要控制你的 DNS 服务器,只要能在网络中间监听到你的查询,抢在真实响应之前伪造一个假响应发给你(DNS 是 UDP,谁的响应先到、且匹配查询 ID 就信谁)。
一个是「改掉真答案」,一个是「用假答案抢先」。GFW 的 DNS 污染就是典型的「伪造抢答」。
二、为什么传统 DNS 这么容易被攻击
根源在于传统 DNS 的三个先天缺陷:
- 明文传输:查询和响应都是明文,中间人能看到你在查什么、也能篡改;
- 无身份验证:你收到的响应无法验证「真的来自权威服务器」,伪造的响应你分辨不出;
- 基于 UDP、无连接:无连接让伪造响应更容易(不用完成握手,直接发个包冒充即可)。
这三点让 DNS 成为网络攻击的常见突破口。防范手段就是针对性地补上「加密」和「验证」。
三、防范手段:加密查询 + 验证记录
① 加密查询链路(防劫持/污染中的窃听篡改):
- DoH(DNS over HTTPS):把 DNS 查询封装在 HTTPS 里,走 443 端口。查询内容加密,中间人看不到也改不了,还难以被识别和拦截。
- DoT(DNS over TLS):把 DNS 查询封装在 TLS 里(专用 853 端口)。同样加密,但端口独立、更容易被网络层识别/封锁。
两者都让「查询过程」加密,中间人无法窥探或篡改。
② 验证记录真实性(防篡改/伪造):
- DNSSEC:给 DNS 记录加数字签名,客户端用签名验证「这条记录确实来自权威服务器、没被改过」。伪造的响应没有正确签名,会被识破。它解决的是「响应可信」问题(但不加密内容)。
③ 其他缓解:用可信的公共 DNS(如 1.1.1.1、8.8.8.8)、保护好路由器、查杀本机恶意软件、检查 hosts 文件。
四、DoH/DoT 与 DNSSEC 的分工
它们解决不同层面的问题,常配合使用:
- DoH/DoT 保证「查询过程加密」——防窃听、防中途篡改、防污染抢答(加密后攻击者看不到查询、无法针对性伪造)。
- DNSSEC 保证「记录本身可信」——防篡改,验证数据来自权威且完整,但不加密。
记忆点:DoH/DoT 管「传输加密」,DNSSEC 管「数据可信」。 前者防偷看和抢答,后者防伪造篡改。
五、常见误区
- ❌ 把劫持和污染当成一回事——劫持是篡改解析链路,污染是伪造响应抢答。
- ❌ 以为 DNSSEC 会加密查询——它只做签名验证(防篡改),不加密;加密要靠 DoH/DoT。
- ❌ 以为用了 HTTPS 网站就不会被 DNS 攻击——DNS 解析在建立 HTTPS 之前,解析被劫持照样能把你导到钓鱼站(虽然证书验证能挡一部分)。
- ❌ 忽视路由器和本机安全——很多劫持发生在被入侵的路由器或被改了 DNS 的本机。
六、常见误区与追问
| 考点 | 正确口径 |
|---|---|
| DNS 劫持 | 解析链路被篡改,返回攻击者指定 IP |
| DNS 污染 | 伪造响应抢先到达,缓存错误结果 |
| 防护 | HTTPS、DoH/DoT、DNSSEC、可信解析与监控 |
normal: client -> resolver -> authoritative -> correct IP
attack: client <- forged DNS response with fake IP
HTTPS cert check -> blocks fake site if cert invalid
DNS 被改只能把你带错路,HTTPS 证书校验能阻止大多数“错路上的假网站”冒充成功。
- 误区:DNS 劫持一定能解密 HTTPS。 劫持解析只能导向错误 IP,若没有合法证书,浏览器会拦截 HTTPS 冒充。
- 误区:换成 8.8.8.8 就一定安全。 公共 DNS 可降低本地运营商问题,但链路仍可能被干扰,需结合加密 DNS 和 HTTPS。
- 误区:DNSSEC 能加密 DNS 内容。 DNSSEC 主要验证记录完整性和来源真实性,不负责隐藏查询内容。
- 追问:DNS 污染为什么常说“抢答”? 攻击者伪造响应比真实响应更早到达,客户端可能缓存错误结果。
- 追问:DoH 和 DoT 解决什么? 用 HTTPS/TLS 加密客户端到递归解析器的查询,降低中间链路窃听和篡改风险。
- 追问:企业如何发现 DNS 异常? 可做多地解析监控、证书告警、访问链路探测和权威记录一致性检查。
七、加强记忆
DNS 劫持 = 篡改解析链路(路由器/本地 DNS/本机被控)返回错误 IP;DNS 污染 = 伪造响应抢在真实响应前塞给你(DNS 明文、UDP、无验证的先天弱点)。防范靠加密 + 验证:DoH/DoT 加密查询过程(防窃听篡改抢答),DNSSEC 给记录签名(防伪造篡改)。DoH/DoT 管传输加密、DNSSEC 管数据可信,配合使用。