一句话定义

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),无握手、无连接状态;攻击者可以伪造响应头,冒充合法服务器应答
  • 解析器对收到的响应无条件信任并缓存,因为没有任何机制验证数据真伪
  • 典型实现方式:
    1. 伪造 DNS 响应:向解析器或客户端发送伪造的应答包,返回错误 IP
    2. 中间人攻击:在网络传输链路中拦截并篡改 DNS 查询结果
    3. 本地劫持:通过恶意软件或路由器漏洞篡改本地 DNS 配置
    4. 解析器失陷:攻击者控制/入侵 DNS 服务器本身,直接改缓存
  • 知名案例:Kaminsky 攻击(2008 年,Dan Kaminsky 演示)——向解析器洪泛伪造应答,只要伪造包先于真实应答到达,缓存即被投毒
  • 攻击难度因素:攻击者需要猜测/获知查询 ID、源端口(现在多为随机端口)、目标权威服务器、未被缓存的查询

DNS 污染 vs DNS 劫持

  • DNS Spoofing(污染/欺骗):伪造 DNS 应答数据本身,注入虚假解析结果
  • DNS Hijacking(劫持):改变查询去向——篡改 DNS 设置/重定向查询流量(如恶意软件改 DNS 服务器、路由器被黑),或运营商级别的重定向
  • 两者常被混用,但攻击层次不同:污染针对「应答内容」,劫持针对「查询路径/配置」

危害

  1. 无法访问目标网站:被导向无效/虚假 IP,正常服务中断
  2. 钓鱼与隐私泄露:被导向仿冒网站(如假银行页面),敏感信息被窃取
  3. 内容审查与封锁:部分国家/地区政府有意投毒 DNS,限制访问特定内容(Cloudflare 明确记载该用途)
  4. 破坏信任体系:长期污染削弱用户对域名系统的信任
  5. 企业服务中断:内网 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生成,仅供参考)