
正文
DNS 劫持、HTTP 劫持与 DNS 污染
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
本文为本人的学习笔记,不保证正确。
DNS 劫持
指DNS服务器被控制,查询DNS时,服务器直接返回给你它想让你看的信息。这种问题常为 ISP 所为。
由于一般的的电脑的 DNS 服务器 的配置都为自动获取,实际上会由 ISP 分配,因此通常会默认使用 ISP 的 DNS 服务器。ISP 控制该服务器,可实现 DNS 劫持。
ISP 使用 DNS 劫持的目的,通常是插入广告,说白了就是想赚钱。
当 ISP 的 DNS 服务器 收到你的 DNS 查询时,其实际上会返回一个中间服务器的IP,该服务器内容是你访问的网站的缓存,但是运营商通常会在该缓存中 "加料",浏览器显示的域名是正确的,可实际访问的却不是真正的服务器。
解决方法
:可通过使用可信DNS服务器来解决。
HTTP 劫持
由于 HTTP 是明文通信,运营商可直接拦截 response,将广告插入其中或修改为302重定向响应来添加推广链接。
解决方法
:无技术上的应对方案,打电话举报可能有效。或者使用 https
DNS 污染
也称做:DNS 缓存投毒攻击(DNS cache poisoning)
DNS 污染,指 GFW、或黑客通过技术手段将虚假数据插入 非权威 DNS 缓存中,使用户查询到虚假信息。
由于 DNS 使用明文通信,一般使用的是基于 UDP 不可靠协议,只接受最先收到的格式正确的 response,因此该查询很容易被篡改。
针对DNS的污染具有传染性,但是由于 TTL 的限制,DNS 污染具有短时性,过了时间若不进行再污染,污染就会消失。
举例 - GFW:防火长城對所有经过骨干出口路由的在UDP的53端口上的域名查询进行IDS入侵检测,一經發現與黑名單關鍵詞相匹配的域名查詢請求,防火长城會馬上伪装成目标域名的解析服务器给查询者返回虚假结果。由于通常的域名查询没有任何认证机制,而且域名查詢通常基于的UDP協議是无连接不可靠的协议,查询者只能接受最先到达的格式正确结果,并丢弃之后的结果。用户若改用TCP在53端口上进行DNS查询,虽然不会被防火长城污染,但可能会遭遇连接重置,导致无法获得目标网站的IP地址。
解决方法
:
- 需要绕过这些被污染的 DNS 服务器,并骗过国际网关处的 GFW,也就是使用加密代理。使用加密代理还可绕过 IP 黑名单机制,因为访问该 IP 的是你的国外代理。
- 或者将已知的可用 IP 存入本地 hosts 文件中,这样就不需要 DNS 服务。但是由于 GFW 的 IP 黑名单在不断更新,你的 hosts 也需要不断更新。
劫持与污染的区别
DNS记录污染同劫持的不同之处,在于污染针对的是 DNS 缓存或用户,是在查询信息到达目标 DNS 服务器前,经过的的节点上做手脚 ,而劫持是 DNS 服务器自己把记录改成错误的内容。对于GFW来说,DNS劫持用于国内服务器,而对于国外服务器GFW无法更改其内容,故采用DNS污染方式篡改用户收到的信息。
GFW的DNS污染过程,是当你向国外DNS服务器查询DNS记录时候,这些流量走到国外出口处即会遭到GFW的关键字审查,如果上了黑名单,GFW会立即向你返回一个虚假的DNS记录。由于默认的DNS查询方式是UDP,加上DNS查询结果只认最快返回的结果,所以你一定是先收到了GFW给你返回的虚假DNS记录;就算100ms后你收到了真正的来自国外DNS的回复,那也会被你的系统无视掉。如果GFW想彻底污染一个域名,那么不只是普通用户,连国内所有的DNS服务器也会收到虚假的DNS纪录导致全国性的DNS污染。
中间人攻击
中间节点 通过对于DNS包的拦截,返回恶意地址,然后将用户引向恶意的源地址。
该种方式可以通过向一些DNS服务器中发送伪造的记录,从而造成一个区域内的某些域收到感染。(这么说GFW做的DNS污染,也算在这个类别里了)
其他
IP 黑名单:GFW 将已知的 google、youtube 等的 IP 加入黑名单,在网关处直接封锁。这样即使你绕过了 GFW 的 DNS 劫持或污染,仍然无法访问这些网站。
参考
【HTTP劫持和DNS劫持】
DNS-解析、劫持、污染
维基百科 - 防火长城(FQ可看)







