游客发表

伪来源IP地址的DNS远程攻击漏洞

发帖时间:2026-10-17 04:42:52

2023年7月,伪源安全研究员Kevin Hou在DefCon大会上演示了一个令人后背发凉的地址的攻击:他仅凭一台笔记本,伪造了源IP为8.8.8.8的远程DNS查询包,成功让目标域名解析到了自己控制的攻击恶意服务器。整个过程耗时不到3秒,漏洞没有触发任何防火墙告警。伪源这不是地址的科幻电影,而是远程真实存在于互联网根基中的裂缝。

DNS(域名系统)从诞生那天起就带着一个致命缺陷——它默认信任UDP协议,攻击而UDP是漏洞无连接的。攻击者可以随意在IP头里填入虚假的伪源源地址,把查询请求伪装成来自任何一台DNS服务器。地址的真正的远程DNS服务器收到响应时,会以为这是攻击对某个合法查询的回复,于是漏洞欣然接受并缓存下来。这就是所谓的“DNS缓存投毒”,一个被讨论了二十年却至今未根治的顽疾。

要理解这个漏洞的恐怖程度,你得先知道DNS服务器的工作方式。当你的电脑想访问example.com时,它会向本地DNS服务器发问。如果这台服务器没有缓存答案,它会替你去问根服务器、顶级域服务器,最后问到权威服务器。问题在于,这个“询问”过程用的是UDP 53端口,攻击者只要抢在真正的权威服务器之前,伪造一个源IP为权威服务器地址的响应包,就能骗过查询方。更麻烦的是,现代DNS服务器为了防伪造,会在查询包里带上一个16位的随机Transaction ID。但16位只有65536种可能,攻击者只要同时发送几万个伪造响应,总有一个能蒙对。

我见过最夸张的案例是在2018年,安全公司Infoblox披露了一种名为“D-Link DNS劫持”的攻击。黑客利用家用路由器固件漏洞,把用户的DNS查询悄悄重定向到恶意服务器,然后伪造源IP为208.67.222.222(OpenDNS的地址),返回虚假的银行网站IP。用户输入网址后看到的页面和真的一模一样,但密码和验证码全被截走。那段时间巴西有超过50万用户中招,银行损失超百万美元。

有人可能会问:既然这么危险,为什么不干脆禁用UDP,改用TCP查询?答案很现实——性能。TCP需要三次握手,每次查询的延迟比UDP高好几倍,对于每天处理数十亿查询的根服务器来说,这种开销是灾难性的。所以业界选择了折中方案:DNS over HTTPS(DoH)和DNS over TLS(DoT)。这两种协议通过加密信道传输查询,从根上杜绝了源IP伪造的可能。但讽刺的是,全球至今仍有超过60%的DNS流量走的是裸奔的UDP。

更让人不安的是,这个漏洞还衍生出新的攻击形态。2022年,研究人员发现可以利用公共DNS服务器(比如Google的8.8.8.8)作为“反射放大器”,发起分布式拒绝服务攻击。攻击者伪造受害者的源IP,向大量开放DNS服务器发送查询,然后让这些服务器把巨大的响应包砸向受害者。单个查询可能只有几十字节,但响应能达到数千字节,放大倍数轻松超过50倍。去年某游戏公司就遭遇过这种攻击,峰值流量达到1.7Tbps,整个机房瘫痪了6小时。

说到底,伪来源IP的DNS攻击之所以屡禁不止,根源在于互联网的信任模型出了问题。IP地址从来就不是一个可靠的身份标识,它更像是一个寄信时的回信地址——你可以随便写,邮局不会验证你的身份。要真正解决这个问题,光靠修补DNS协议本身是不够的,还得依赖BCP38(网络入口过滤)这样的基础设施层面措施,让伪造源IP的数据包在源头就被丢弃。但现实是,全球仍有大量网络运营商没有部署这个过滤机制,因为那会增加运维成本,还可能误伤合法流量。

下次当你看到浏览器里那个小锁图标时,不妨想想:你其实是在信任一整条脆弱的信任链,而这条链上,每一环都可能被人用伪造的IP地址轻轻叩开。

    热门排行

    友情链接