DNS 污染研究
一句话定义
DNS 污染(又称 DNS 缓存投毒、DNS Spoofing)是一种通过向 DNS 服务器或解析链路注入虚假域名解析结果,导致用户访问域名时被导向错误 IP 的攻击或干扰手段。被投毒的缓存数据会一直保留到 TTL 过期或被手动清除。(来源:Cloudflare、西安工业大学网络信息中心)
DNS 基础回顾
- DNS(Domain Name System)把人类可读域名(如 example.com)解析为机器可读 IP 地址
- 解析流程:本地缓存 → 配置的递归解析器(ISP 或公共 DNS 如 1.1.1.1 / 8.8.8.8)→ 根服务器 → TLD 服务器 → 权威服务器 → 结果缓存返回
- 传统 DNS 全程不加密、不认证——响应无法验证来源是否真实,这是污染的根源
污染原理与实现方式
- 核心缺陷:DNS 查询/响应使用 UDP(端口 53),无握手、无连接状态;攻击者可以伪造响应头,冒充合法服务器应答
- 解析器对收到的响应无条件信任并缓存,因为没有任何机制验证数据真伪
- 典型实现方式:
- 伪造 DNS 响应:向解析器或客户端发送伪造的应答包,返回错误 IP
- 中间人攻击:在网络传输链路中拦截并篡改 DNS 查询结果
- 本地劫持:通过恶意软件或路由器漏洞篡改本地 DNS 配置
- 解析器失陷:攻击者控制/入侵 DNS 服务器本身,直接改缓存
- 知名案例:Kaminsky 攻击(2008 年,Dan Kaminsky 演示)——向解析器洪泛伪造应答,只要伪造包先于真实应答到达,缓存即被投毒
- 攻击难度因素:攻击者需要猜测/获知查询 ID、源端口(现在多为随机端口)、目标权威服务器、未被缓存的查询
DNS 污染 vs DNS 劫持
- DNS Spoofing(污染/欺骗):伪造 DNS 应答数据本身,注入虚假解析结果
- DNS Hijacking(劫持):改变查询去向——篡改 DNS 设置/重定向查询流量(如恶意软件改 DNS 服务器、路由器被黑),或运营商级别的重定向
- 两者常被混用,但攻击层次不同:污染针对「应答内容」,劫持针对「查询路径/配置」
危害
- 无法访问目标网站:被导向无效/虚假 IP,正常服务中断
- 钓鱼与隐私泄露:被导向仿冒网站(如假银行页面),敏感信息被窃取
- 内容审查与封锁:部分国家/地区政府有意投毒 DNS,限制访问特定内容(Cloudflare 明确记载该用途)
- 破坏信任体系:长期污染削弱用户对域名系统的信任
- 企业服务中断:内网 DNS 被污染可致内部系统瘫痪或数据泄露
检测方法(DNS 日志分析)
- 建立「正常行为基线」,从异常中定位:
- 返回 IP 不在预期范围(如本应 172.67.x.x,却出现 37.x.x.x / 203.x.x.x)
- TTL 异常偏短或偏长
- 同一查询短时间内被应答多次(伪造包特征)
- Flags 中缺少 AD(Authenticated Data)位
- Authority Section 出现伪造的 SOA 信息、响应包大小异常
- 常见污染手法:UDP 本地注入、ISP 出口干扰、跨境链路劫持
防御与解决方案
加密 DNS 协议(防篡改)
| 协议 | 加密层 | 端口 | 特点 |
|---|---|---|---|
| DoH(DNS over HTTPS) | HTTPS/TLS | 443 | 与网页流量混在一起,难被识别封锁;浏览器/App 常用 |
| DoT(DNS over TLS) | TLS | 853 | 系统级 DNS,便于企业监控;较易被指纹识别 |
| DoQ(DNS over QUIC) | QUIC/TLS | 853(UDP) | 更低的加密握手延迟 |
| DNSCrypt | 自定义加密 | 443/udp | 传统加密方案 |
- 公共加密 DNS 服务:Cloudflare 1.1.1.1、Google 8.8.8.8(均支持 DoH/DoT)
DNSSEC(防伪造、验真伪)
- 用公钥密码学对 DNS 记录做数字签名:权威区用私钥签名,解析器沿信任链(root → TLD → 权威)用公钥验证
- 签名无效/缺失 → 查询失败而非返回假数据,能阻断整类投毒攻击
- 局限:DNSSEC 不加密流量,只保证完整性与来源真实性;配置复杂(密钥轮换、DS 委派);2005 年发布但至今未全面普及
其他措施
- 更换可信公共 DNS(避开默认运营商 DNS)
- 修改 Hosts 文件手动绑定域名与正确 IP(适用于少量关键网站,需定期更新)
- 代理/加密隧道:加密全部流量(含 DNS 查询),绕过本地污染;选择带 DNS 泄漏保护的服务
- 注意:部分国家/地区对加密 DNS 或 VPN 有法律限制,需遵守当地法规
协议设计层面的深层原因
- DNS 诞生于互联网早期(大学与研究中心互信环境),基于「信任原则」设计,未考虑恶意伪造
- 明文传输 + UDP 无连接 + 无认证机制 → 天生易被投毒,类似 BGP 的信任缺陷
- 完整修复依赖 DNSSEC 普及 + 加密 DNS 推广,两者目前均未完全落地
参考资料
- Cloudflare - What is DNS cache poisoning?: https://www.cloudflare.com/learning/dns/dns-cache-poisoning/
- 西安工业大学网络信息中心 - 什么是DNS污染?有什么危害?如何解决?
- RandomSecure - DNS Attacks Explained: Spoofing, Hijacking, and Poisoning
- UptimeRobot - DNS Security: How to Protect the Internet’s Most Targeted System in 2026
- DNS.COM - How to use DNS logs to investigate DNS poisoning and attack events
- DN.org - Securing DNS Traffic with Encryption Methods in Enterprise Environments
(内容由AI生成,仅供参考)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 琉璃幻彩的博客!
评论

