who is dns 劫持 or 污染?
对 劫持 和 污染 这两个名词的理解一直都很混淆,这里就简单的记录一下他俩到底有哪些本质上的区别吧~
DNS 劫持
DNS劫持 即: DNS Hijacking
指用户访问一个被标记的地址时,DNS服务器故意将此地址指向一个错误的IP地址的行为。
网通、电信、铁通的某些用户有时候会发现自己打算访问一个地址,却被转向了各种推送广告等网站,这就是DNS劫持。
劫持过程
假现在存在两个网站: 一个是A(正规网站) ,另一个是 B(钓鱼网站)
用户访问A网站 但是打开的却是B网站
用户 –(打开)–> A –(劫持到)–> B
案例
Dns劫持我们其实是经常可以遇到的,只不过碰到的时候我们不知道 那就是DNS劫持罢了
比如说早些年拨号上网之后 首次打开任何页面都指向ISP提供的“电信互联星空”、“网通黄页广告”等内容页面。
还有就是曾经出现过用户访问Google域名的时候出现了百度的网站。这些都属于DNS劫持。
解决方法
对于DNS劫持,可以采用使用国外免费公用的DNS服务器解决。
例如OpenDNS(208.67.222.222)或GoogleDNS(8.8.8.8)。
DNS污染
dns污染 即:网域服务器缓存污染(DNS cache pollution) 又称域名服务器缓存污染(DNS cache poisoning)
DNS污染是一种让一般用户由于得到虚假目标主机IP而不能与其通信的方法,是一种DNS缓存投毒攻击(DNS cache poisoning)
原理
由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,因此DNS的查询非常容易被篡改,
通过对UDP端口53上的DNS查询进行入侵检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器(NS,Name Server)给查询者返回虚假结果。
案例
这里不得不提一下咱们国家最最🐂🍺的GFW
为什么咱们国内无法访问 google 和 youtube 这些网站呢,那当然全是我们GFW的功劳(DNS污染)
解决方法
DNS污染一般个人用户很难单单靠设置解决,
可以通过使用VPN(翻墙)或者SSH,也可以通过手动修改host 手动绑定域名正确的IP。
总结
DNS 劫持 一般用于跳转到第三方网站(钓鱼/诈骗网站)
DNS 污染 一般用于禁止访问某网站
拓展
today,一个小伙伴突然问我,被运营商劫持了 是否可以通过修改本地DNS地址来绕过?
我挠了挠头皮,感觉问题没有这么简单,运营商难道就这么好对付吗?
运营商劫持
在验证是否可以通过修改dns来绕过地址之前,我们需要先深度解析这个问题
什么是运营商劫持?
运营商劫持用的是什么方法?
一般情况下分两种
- DNS劫持
- HTTP劫持
- DNS劫持上文已经说过了,这里就不多讲了
HTTP劫持
运营商在路由器节点上,设置协议检测,一旦发现是HTTP请求,而且是html类型请求,则拦截处理。
后续做法往往分为2种 (URL劫持跳转 和 网页内容篡改)
- 类似DNS劫持返回302让用户浏览器跳转到另外的地址
- 在服务器返回的HTML数据中插入js或dom节点(广告)
危害 : 在用户角度,这些劫持的表现分为:
- 网址被无辜跳转,多了推广尾巴;
- 页面出现额外的广告(iframe模式或者直接同页面插入了dom节点)。
归根结底,由于HTTP是明文传输的,同时流量的获利空间巨大,所以流量劫持的现象才会越来越严重。
这里再多深入一下,isp只是旁路监听http请求而不是拦截,这个请求(图步骤2)还是会到达真实服务器的,只是真实服务器发回来的响应慢过劫持设备伪造的302响应。
解决方法
DNS劫持可以通过 修改dns
或者 本地host文件
HTTP劫持的话, 最好的办法就是使用 https
或者使用加密代理
来访问网页