DNS是什么?DNS 原理、DNS 污染与 DNS 劫持详解
DNS是什么?DNS 原理、DNS 污染与 DNS 劫持详解
一、DNS 基本原理
1.1 什么是 DNS
DNS(Domain Name System,域名系统)是互联网的核心基础设施之一,它将人类可读的域名(如 freenode.osbooting.com)转换为机器可识别的 IP 地址(如 93.184.216.34)。没有 DNS,我们只能通过记忆复杂的数字 IP 地址来访问网站。
1.2 DNS 层级结构
DNS 采用分层分布式数据库结构,从上到下分为:
1 | |
1.3 DNS 查询过程
当用户访问一个网站时,DNS 查询过程如下:
sequenceDiagram
participant Client as 客户端
participant LocalDNS as 本地DNS
participant Root as 根服务器
participant TLD as TLD服务器
participant Auth as 权威DNS
Client->>LocalDNS: 查询 freenode.osbooting.com
LocalDNS->>LocalDNS: 检查缓存
alt 缓存命中
LocalDNS-->>Client: 返回IP地址
else 缓存未命中
LocalDNS->>Root: 查询 .com 的 TLD 服务器
Root-->>LocalDNS: 返回 .com TLD 服务器地址
LocalDNS->>TLD: 查询 osbooting.com 的权威服务器
TLD-->>LocalDNS: 返回权威DNS服务器地址
LocalDNS->>Auth: 查询 freenode.osbooting.com
Auth-->>LocalDNS: 返回IP地址
LocalDNS->>LocalDNS: 缓存结果
LocalDNS-->>Client: 返回IP地址
end
1.4 DNS 记录类型
| 记录类型 | 用途 | 示例 |
|---|---|---|
| A | 将域名映射到 IPv4 地址 | freenode.osbooting.com → 93.184.216.34 |
| AAAA | 将域名映射到 IPv6 地址 | freenode.osbooting.com → 2606:2800:220:1:248:1893:25c8:1946 |
| CNAME | 域名别名 | freenode.osbooting.com → osbooting.com |
| MX | 邮件服务器 | osbooting.com → mail.osbooting.com |
| TXT | 文本记录(常用于 SPF、DKIM) | osbooting.com → "v=spf1 include:_spf.google.com ~all" |
| NS | 指定该域名的权威 DNS 服务器 | osbooting.com → ns1.osbooting.com |
二、DNS 污染
2.1 什么是 DNS 污染
DNS 污染(DNS Poisoning),又称 DNS 投毒,是指通过篡改 DNS 响应,将用户访问的域名解析到错误的 IP 地址。这种攻击通常发生在 DNS 查询过程中,攻击者伪造 DNS 响应包,使其先于真实响应到达客户端。
2.2 DNS 污染的原理
graph TD
A[用户发起DNS查询] --> B[攻击者监听网络]
B --> C{攻击者检测到查询}
C -->|是| D[伪造DNS响应包]
D --> E[伪造响应先于真实响应到达]
E --> F[客户端接受伪造响应]
F --> G[用户被重定向到恶意网站]
C -->|否| H[正常DNS解析流程]
2.3 DNS 污染的常见场景
- 网络审查:某些国家或地区通过 DNS 污染屏蔽特定网站
- 恶意广告:将用户重定向到广告页面
- 钓鱼攻击:将银行、支付网站重定向到伪造页面
- 恶意软件分发:将软件更新域名解析到恶意服务器
2.4 DNS 污染的检测方法
1 | |
如果不同 DNS 服务器返回的 IP 地址不一致,可能存在 DNS 污染。
三、DNS 劫持
3.1 什么是 DNS 劫持
DNS 劫持(DNS Hijacking)是指攻击者通过控制用户的 DNS 解析过程,将域名解析到攻击者指定的 IP 地址。与 DNS 污染不同,DNS 劫持通常涉及对 DNS 服务器或用户设备的直接控制。
3.2 DNS 劫持的类型
3.2.1 本地 DNS 劫持
攻击者通过恶意软件修改用户设备上的 DNS 设置:
flowchart LR
A[恶意软件感染] --> B[修改网络适配器DNS设置]
B --> C[修改 hosts 文件]
C --> D[修改路由器 DNS 设置]
D --> E[所有 DNS 查询被劫持]
3.2.2 路由器 DNS 劫持
攻击者利用路由器漏洞或弱密码修改路由器的 DNS 设置:
| 攻击方式 | 描述 |
|---|---|
| 默认密码攻击 | 使用路由器默认密码登录 |
| 固件漏洞利用 | 利用路由器固件漏洞获取控制权 |
| DNS 重绑定 | 通过恶意网页修改路由器 DNS |
3.2.3 中间人攻击
攻击者在用户与 DNS 服务器之间拦截并篡改 DNS 请求:
sequenceDiagram
participant Client as 客户端
participant Attacker as 攻击者
participant DNS as DNS服务器
Client->>Attacker: DNS 查询请求
Attacker->>Attacker: 篡改查询或响应
Attacker->>DNS: 转发查询(可选)
DNS-->>Attacker: 真实响应
Attacker-->>Client: 伪造响应
3.2.4 ISP DNS 劫持
某些互联网服务提供商(ISP)会劫持 DNS 查询,将不存在的域名解析到广告页面或搜索页面。
3.3 DNS 劫持的危害
- 隐私泄露:攻击者可以记录用户访问的所有网站
- 钓鱼攻击:将用户重定向到伪造的登录页面
- 恶意软件传播:将软件更新域名解析到恶意服务器
- 广告注入:在用户访问的网页中注入广告
- 流量劫持:将用户流量引导到攻击者控制的服务器
四、DNS 污染与 DNS 劫持的区别
| 特征 | DNS 污染 | DNS 劫持 |
|---|---|---|
| 攻击方式 | 伪造 DNS 响应包 | 控制 DNS 服务器或设备 |
| 攻击位置 | 网络传输层 | 设备或服务器层 |
| 持续性 | 临时性(依赖网络环境) | 持续性(直到被修复) |
| 检测难度 | 较难(需要对比多个 DNS) | 较易(检查 DNS 设置) |
| 常见场景 | 网络审查、中间人攻击 | 恶意软件、路由器攻击 |
五、防范措施
5.1 使用安全的 DNS 服务器
| DNS 服务 | 提供商 | 特点 |
|---|---|---|
| 8.8.8.8 / 8.8.4.4 | 全球分布,速度快 | |
| 1.1.1.1 / 1.0.0.1 | Cloudflare | 注重隐私,支持 DoH/DoT |
| 223.5.5.5 / 223.6.6.6 | 阿里云 | 国内访问快 |
| 119.29.29.29 | 腾讯 DNSPod | 国内访问快 |
5.2 使用 DNS over HTTPS (DoH) 或 DNS over TLS (DoT)
graph LR
A[客户端] -->|加密的 DNS 查询| B[DoH/DoT 服务器]
B -->|加密的 DNS 响应| A
B -->|正常查询| C[权威 DNS]
C -->|正常响应| B
style A fill:#e1f5ff
style B fill:#fff4e1
style C fill:#e1ffe1
DoH/DoT 的优势:
- 加密 DNS 查询,防止中间人攻击
- 防止 ISP 监控和篡改
- 绕过某些 DNS 污染
5.3 检查和修复 DNS 设置
Windows 系统:
1 | |
macOS/Linux 系统:
1 | |
5.4 检查 hosts 文件
1 | |
如果 hosts 文件中有可疑的域名映射,应该删除或注释掉。
5.5 保护路由器安全
- 修改默认管理员密码
- 定期更新路由器固件
- 关闭远程管理功能
- 启用 WPA3 加密
- 定期检查 DNS 设置
5.6 使用 DNSSEC
DNSSEC(DNS Security Extensions)为 DNS 提供数据来源验证和数据完整性保护:
graph TD
A[权威 DNS] -->|签名 DNS 记录| B[添加 DNSSEC 签名]
B --> C[DNS 查询请求]
C --> D[返回签名记录]
D --> E[客户端验证签名]
E -->|验证成功| F[接受 DNS 响应]
E -->|验证失败| G[拒绝 DNS 响应]
5.7 使用 VPN 或代理
VPN 可以加密所有网络流量,包括 DNS 查询,有效防止 DNS 污染和劫持。
六、总结
DNS 是互联网的基础设施,但其设计之初并未充分考虑安全性,导致 DNS 污染和 DNS 劫持成为常见的安全威胁。
关键要点:
- DNS 污染通过伪造响应包实现,通常发生在网络传输层
- DNS 劫持通过控制 DNS 服务器或设备实现,危害更持久
- 防范措施包括使用安全 DNS、启用 DoH/DoT、保护路由器等
- 定期检查 DNS 设置和 hosts 文件是必要的维护习惯
随着 DoH、DoT 和 DNSSEC 等技术的普及,DNS 安全性正在逐步提高,但用户仍需保持警惕,采取适当的防护措施。