DNS污染与DNS劫持:原理、危害与防御方案

DNS解析基础回顾

当你在浏览器输入域名时,系统会向DNS服务器查询对应的IP地址。这个看似简单的过程,因为传统DNS协议以明文UDP传输,存在被篡改的风险。

什么是DNS污染?

DNS污染(DNS Cache Poisoning,也叫DNS缓存投毒)是指攻击者向DNS服务器的缓存中注入伪造的DNS记录,使得用户查询特定域名时得到错误的IP地址,被导向恶意服务器。

攻击原理:DNS查询使用UDP协议,事务ID仅16位(65536种可能),攻击者可通过大量伪造响应包”抢跑”,在真实响应到达前让DNS缓存接受伪造记录。

什么是DNS劫持?

DNS劫持是指攻击者直接控制或篡改DNS解析环节,包括:

  • 路由器劫持:入侵家用路由器,修改DNS服务器地址为恶意DNS
  • ISP劫持:运营商将特定域名解析到广告页或错误页(常见于宽带用户访问不存在的域名)
  • 本地hosts劫持:修改系统hosts文件,让特定域名指向恶意IP
  • 中间人攻击:在网络传输层面拦截并篡改DNS响应

DNS污染与DNS劫持的区别

DNS污染发生在DNS服务器缓存层面,是攻击DNS基础设施;DNS劫持则是直接控制解析路径,范围更广,实施也更简单。两者结果相同:用户被导向错误目标。

主要危害

  • 钓鱼攻击:用户访问银行、邮箱等网站时被导向仿冒页面,账号密码被窃取
  • 恶意软件分发:软件下载链接被替换,用户下载到木马程序
  • 广告注入:运营商在用户访问页面时强制插入广告
  • 服务不可用:企业网站被污染,用户无法正常访问

防御方案

使用加密DNS:

  • DNS over HTTPS(DoH):将DNS查询包装在HTTPS中传输,防止中间人篡改。Chrome/Firefox原生支持,可在浏览器设置中启用
  • DNS over TLS(DoT):通过TLS加密DNS,系统级支持,可在Android 9+、iOS 14+中配置”私人DNS”

推荐的加密DNS服务:Cloudflare(1.1.1.1)、Google(8.8.8.8,支持DoH)、阿里DNS(223.5.5.5)。

启用DNSSEC:DNSSEC为DNS响应添加数字签名,解析器可验证记录真实性。网站管理员可在域名注册商处开启DNSSEC,为自己的域名提供保护。

定期检查路由器DNS设置:登录路由器管理界面,确认DNS服务器是你设置的可信地址,避免被恶意篡改。

网站管理员:开启HSTS:HTTP严格传输安全(HSTS)强制浏览器使用HTTPS,即使DNS被污染导向错误IP,HTTPS证书不匹配也会让用户收到安全警告。