乐闻世界logo
搜索文章和话题

DNS 劫持和 DNS 污染是什么,如何防范

3月6日 22:53

DNS 劫持(DNS Hijacking)DNS 污染(DNS Poisoning/Spoofing) 是两种常见的 DNS 安全攻击手段,它们都旨在篡改 DNS 解析结果,将用户引导到恶意网站。

DNS 劫持详解

什么是 DNS 劫持

DNS 劫持是指攻击者通过各种手段控制或篡改 DNS 解析过程,使用户访问恶意网站而非目标网站。

DNS 劫持的类型

1. 本地劫持

攻击方式

  • 修改本地 hosts 文件
  • 篡改路由器 DNS 设置
  • 恶意软件修改系统 DNS 配置

常见场景

shell
# 攻击者修改 hosts 文件 192.168.1.100 www.bank.com # 指向钓鱼网站

2. 路由器劫持

攻击方式

  • 利用路由器默认密码或漏洞
  • 修改路由器 DNS 服务器地址
  • 所有通过该路由器的设备都受影响

3. ISP 劫持

攻击方式

  • ISP 级别的 DNS 服务器被攻击或恶意配置
  • 返回错误的解析结果
  • 某些 ISP 甚至会劫持不存在的域名到广告页面

4. 权威 DNS 劫持

攻击方式

  • 攻击域名注册商账户
  • 篡改域名的 NS 记录
  • 将域名指向攻击者控制的 DNS 服务器

DNS 劫持的危害

危害类型具体表现
钓鱼攻击用户访问伪造的银行、电商网站
信息窃取窃取用户账号密码、个人信息
广告注入强制插入广告或重定向到广告页面
恶意软件分发诱导下载木马、病毒

DNS 污染/欺骗详解

什么是 DNS 污染

DNS 污染(又称 DNS 缓存投毒)是指攻击者向 DNS 服务器注入虚假的 DNS 记录,污染 DNS 缓存,使后续查询返回错误结果。

DNS 污染的工作原理

shell
1. 攻击者向本地 DNS 服务器发送大量伪造的 DNS 响应 2. 在合法响应到达之前,伪造响应被缓存 3. 后续用户查询该域名时,返回错误的 IP 地址 4. 用户被重定向到恶意网站

DNS 污染 vs DNS 劫持

特性DNS 劫持DNS 污染
攻击目标DNS 配置或服务器控制DNS 缓存
攻击位置客户端、路由器、DNS 服务器主要是 DNS 服务器缓存
持久性长期有效(直到配置恢复)受 TTL 限制
影响范围取决于被攻击的层级影响使用该缓存的所有用户

防范措施

1. 使用 DNSSEC(DNS Security Extensions)

原理

  • 为 DNS 记录添加数字签名
  • 验证 DNS 响应的真实性和完整性
  • 防止 DNS 欺骗和缓存投毒

工作流程

shell
1. 权威 DNS 服务器对记录进行数字签名 2. 解析器使用公钥验证签名 3. 验证通过才使用解析结果

局限性

  • 部署复杂,需要整个链路支持
  • 增加 DNS 响应大小
  • 部分域名和 ISP 尚未支持

2. 使用 HTTPS(DoH)和 TLS(DoT)

DNS over HTTPS (DoH)

shell
客户端 ←──HTTPS 加密隧道──→ DoH 服务器(如 Cloudflare 1.1.1.1)
  • 通过 HTTPS 协议加密 DNS 查询
  • 防止中间人窃听和篡改
  • 端口 443,难以被识别和拦截

DNS over TLS (DoT)

shell
客户端 ←──TLS 加密隧道──→ DoT 服务器
  • 通过 TLS 协议加密 DNS 查询
  • 专用端口 853
  • 更轻量级,但容易被识别

3. 使用可信的 DNS 服务器

推荐的公共 DNS

服务商IPv4特点
Cloudflare1.1.1.1速度快,支持 DoH/DoT
Google8.8.8.8稳定可靠,全球覆盖
Quad99.9.9.9内置恶意域名拦截
阿里223.5.5.5国内访问速度快

4. 定期检查和加固

客户端防护

bash
# 检查 hosts 文件是否被篡改 cat /etc/hosts # 检查 DNS 配置 cat /etc/resolv.conf # 使用 dig 验证解析结果 dig @1.1.1.1 www.example.com

路由器防护

  • 修改默认管理密码
  • 禁用远程管理功能
  • 定期更新固件
  • 使用可靠的 DNS 服务器

5. 应用层防护

HTTP Strict Transport Security (HSTS)

http
Strict-Transport-Security: max-age=31536000; includeSubDomains
  • 强制使用 HTTPS 连接
  • 防止 SSL 剥离攻击

Certificate Pinning

  • 应用程序内置服务器证书指纹
  • 验证服务器身份,防止中间人攻击

检测 DNS 劫持的方法

1. 多 DNS 服务器对比

bash
# 对比不同 DNS 服务器的解析结果 dig @8.8.8.8 www.example.com dig @1.1.1.1 www.example.com dig @223.5.5.5 www.example.com

2. 在线检测工具

  • DNSChecker.org
  • WhatsMyDNS.net
  • Google Admin Toolbox

3. 监控和告警

  • 监控域名解析结果变化
  • 设置 DNS 记录变更告警
  • 定期检查域名 WHOIS 信息

总结

防护措施防护对象实施难度推荐程度
DNSSECDNS 欺骗中等⭐⭐⭐⭐
DoH/DoT中间人攻击简单⭐⭐⭐⭐⭐
可信 DNS各类攻击简单⭐⭐⭐⭐⭐
定期检查本地劫持简单⭐⭐⭐⭐
HSTS协议降级简单⭐⭐⭐⭐

标签:DNS