什么是DNS欺骗攻击?
DNS 欺骗攻击(DNS Spoofing / DNS Cache Poisoning)
一、先一句话点透本质
DNS 欺骗就是:让你问"www.bank.com的 IP 是多少?",收到的答案被篡改成攻击者的 IP——你以为在访问真网站,其实连的是假站点。
它不是"黑进你的电脑"那么重,而是污染名字解析这个信任链条中的某一环,让域名→IP 这张对照表在关键环节上"指错路"。
二、为什么 DNS 天然脆弱?(理解攻击面)
正常 DNS 查询链路大概是这样:
浏览器 → 本机 DNS 缓存 → hosts 文件
↓ 未命中
系统配置的 DNS 服务器(如 8.8.8.8 / 企业 DNS)
↓ 未命中
递归查询 → 根 → .com → 权威 NS → 拿到真实 IP
关键弱点有三个:
|
弱点 |
说明 |
|---|---|
|
早期 DNS 协议无验证 |
原始 DNS(UDP 53)靠一个 16-bit Transaction ID(2^16=65536)匹配"这是哪次查询的回答",但查询内容和应答都明文,不验证身份 |
|
信任关系 |
你的电脑/路由器无条件相信DNS服务器的回答;下级DNS部分相信上级DNS的回答 |
|
缓存放大效应 |
一个错误答案一旦被接受,会被缓存一段时间(TTL),期间所有用户都被骗 |
三、DNS 欺骗发生在哪几层?(四类攻击位置)
① 本地 Hosts 文件篡改(最原始)
C:\Windows\System32\drivers\etc\hosts
— 或 —
/etc/hosts
攻击者如果能写你机器的 hosts 文件:
203.0.113.99 www.bank.com
→ 操作系统查 DNS 时 hosts 优先级最高,直接返回假 IP。
本质:不是"骗 DNS",而是绕过 DNS。
-
需要:主机已经被入侵(恶意软件/提权写入)
-
危害:精准、持久(除非被发现清掉)
② 本地 DNS 缓存投毒(本机级)
你本机维护一个 DNS 缓存(ipconfig /displaydns/ systemd-resolve --statistics)。
某些恶意脚本/广告软件/木马可以在本机注入假缓存条目,或通过本地监听端口劫持。
现实中这块通常要配合主机入侵或浏览器恶意扩展,单独靠远程投毒本机缓存比较受限(因为现代系统做了随机源端口 + Transaction ID)。
③ DNS 服务器缓存污染(Cache Poisoning)——经典意义上的 DNS 欺骗
这才是教科书里的主角。
攻击思路(核心逻辑)
假设受害者用企业 DNS 服务器 192.168.1.1,它还没缓存 www.bank.com。
攻击者同时向这台 DNS 服务器:
-
发一个合法查询(或诱使它发):"嘿 DNS 服务器,帮我查 www.bank.com"
-
DNS 服务器向外递归查询……
-
攻击者狂轰滥炸伪造应答包:
假装是 bank.com 的权威 DNS 服务器,回复:
"www.bank.com → 203.0.113.99"
并猜测正确的 Transaction ID + 源端口,抢在真权威服务器之前到达。
→ 如果猜中,DNS 服务器说:"哦,这就是答案",缓存 下来
→ 接下来公司里所有人查 www.bank.com都得到假 IP
受害者 PC → 企业 DNS(已中毒)
"www.bank.com 的 IP?"
→ 缓存答:203.0.113.99(攻击者)
受害者 → 连上假银行站点 → 账号密码被盗
为什么历史上能成功?
|
条件 |
老 DNS 实现 |
现代缓解 |
|---|---|---|
|
Transaction ID 可预测 |
弱随机 |
✅ 强随机 0~65535 |
|
源端口固定(53) |
早期很多实现 |
✅ 随机源端口(1024~65535) |
|
不复验来源 |
收到就信 |
✅ 校验是否来自正在等的上游 |
|
允许额外记录注入 |
应答中带"附加记录"自动采信 |
✅ 严格校验 authority section |
经典的 Kaminsky 漏洞(2008) 就是把"猜中概率"从几十年提升到几分钟级别,迫使全球 DNS 升级。
④ 中间人(MITM)/ 链路层欺骗(局域网内最实用)
如果攻击者和你在同一 WiFi / 同一交换机域:
-
ARP 欺骗 → 把你流量引到自己
-
然后拦截你的 DNS 请求(UDP 53),直接回复假答案
你的 PC: "www.taobao.com → ?"
攻击者(MITM)截获 → 伪造 DNS response → 203.0.113.99
这在公共 WiFi 场景特别有效——因为:
-
UDP 无连接、无认证
-
大多数设备默认用 DHCP 下发的 DNS(攻击者通过 DHCP 还能把自己的 DNS 塞给你)
四、攻击完整链条(以中间人型为例)
① 攻击者接入同一网段
↓ ARP Spoofing / Rogue AP
② 你的 DNS 请求(UDP 53)流经攻击者
↓
③ 攻击者拦截 OR 让请求到自己的假 DNS
↓
④ 回复:www.alipay.com = 203.0.113.99(攻击者搭的钓鱼站)
↓
⑤ 浏览器显示 "http://www.alipay.com"(没绿锁 → 警觉用户会发现)
但如果是 HTTP(非 HTTPS)→ 用户可能无感被钓鱼
⑥ 账号/Cookie/表单数据 → 攻击者收走
⚠️ 注意:如果目标是 HTTPS 站点,光 DNS 欺骗还不够——浏览器会报证书不匹配(
NET::ERR_CERT_COMMON_NAME_INVALID),除非攻击者还能搞定伪造证书(需要 CA 被攻破或用户点"继续忽略")。所以 DNS 欺骗常配合 SSL Stripping(把 https:// 降级为 http://)一起用。
五、危害到底有多大?
|
场景 |
影响 |
|---|---|
|
银行/支付/邮箱登录页 |
钓鱼→凭证窃取 |
|
软件更新检查域名 |
指向恶意包 → 供应链投毒 |
|
内网域名(ldap、git、jenkins) |
转向内网钓鱼 → 横向移动 |
|
缓存污染企业 DNS |
整个公司同时受害,一个投毒影响几百人 |
六、防御体系(分层)
1)协议层(最根本)
|
技术 |
做什么 |
|---|---|
|
DNSSEC |
给 DNS 记录加数字签名, resolver 可验证"这个答案确实来自真正的权威所有者,未被改" |
|
DoH / DoT(DNS over HTTPS / TLS) |
加密 + 防链路篡改,防止 MITM 直接读/改 DNS 报文 |
但:DNSSEC 部署率至今仍不理想(需要权威侧配、运维复杂度),DoH/DoT 引入新的隐私与管控争议(企业想看员工 DNS 还是不想看?)
2)网络层
-
交换机开 DHCP Snooping + ARP Inspection(防 ARP 欺骗)
-
企业 DNS 服务器:
-
随机源端口 ✅
-
严格校验 Transaction ID ✅
-
不以"附加记录"盲信非授权域 ✅
-
限速递归、隔离递归器与外网 ✅
-
3)终端/用户侧
-
用 HTTPS Everywhere / HSTS 机制——证书校验是 DNS 欺骗的终极防线
-
不忽略浏览器证书警告
-
公共 WiFi 走 VPN
4)架构
-
内网关键服务尽量用 IP + 证书 pinning 或内部 CA 签的正式证书,别只靠"域名解析可信"
-
监控:异常 TTL、同一域名突然解析到境外异常 IP → 告警
七、一句话总结
DNS 欺骗的本质是破坏"名字→地址"这个信任锚:要么改你本机的对照表(hosts/缓存),要么抢答你的 DNS 查询(MITM),要么污染你依赖的 DNS 服务器的缓存(缓存投毒)——最终让你把信任交给攻击者。防御靠三层:DNSSEC/加密(协议信任)、防 ARP+DHCP 欺骗(链路隔离)、HTTPS 证书校验(最后一道铁壁)。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)