浅谈HTTP劫持、DNS污染的影响及解决办法(仅个人理解)

本文最后更新于 2017年1月20日 20:26 可能会因为没有更新而失效。如已失效或需要修正,请留言!

首先我们说一下“墙:防火长城”,它是由 互联网科学家(比如:方滨兴)、工作人员、五毛、分布式超级计算机、三大运营商组成的。

我们可以看到,墙并不是一个独立的单独存在的一个组织,而是由国内各领域的互联网重要结构组成的。

互联网科学家:专门研究如何低成本高效率的更有效的过滤审核。

工作人员:一些非机器替代的人工操作,比如人工审核。

五毛:五毛。

分布式超级计算机:要知道每一秒经过大陆各国际出口经过的流量是非常庞大的,需要很多超级计算机进行运算过滤。

三大运营商:这个是最重要的组成部分,没有运营商的支持,墙就是个屁。大陆各国际出口都是三大运营商建立和控制的,如果他们不点头,墙又如何在“大门口”(国际宽带出口处)建立“过滤审核检查站”,当然运营商也是国家控制的,所以还是一家人。

所以,墙就相当于在 大陆的各个国际宽带出口处建立的 过滤审核检查站


还有我发现一个很有趣的事情,很多人以为只有中国和朝鲜存在墙,这很无知。

如果你把 屏蔽Google、Facebook、Youtube、Twitter的国家 就当作这个国家存在墙的话,那我无话可说。

墙或者说 互联网防火长城,是任何一个拥有互联网主权国家的必备组成。

如果你的国家没有墙,没有信息审核过滤机制,那政权随时可能推翻,这不是吹牛,有好几个国家的总统或者总理因为不注重这个问题,导致不仅下位还坐牢了。

美国是个自称最自由的国家,所以他就没有墙了吗?不,他们对盗版网站,儿童色情网站等也是屏蔽。

还有韩国,在互联网方面最发达的国家之一,同样也是针对色情行业大力清理屏蔽。就算是越南、缅甸、泰国,这种互联网相对不发达的国家,依然存在墙。

墙是必然的,你不可能阻止墙的存在,只是我们的墙更高一些,我并不是为 中国防火长城 开脱什么,我只是阐述墙必须存在的事实。

我们之所以感觉我们的墙更高,一是,我们生活在这个国家的墙内,我们经常碰触到墙;二是,我们也是属于审查最严格的那一类国家。

同时墙也是一种变相的保护国内互联网产业的发展,否则微博,百度哪那么容易发展起来。

因为一些话太敏感,不能说的太直白,否则就要拆水表了,理解不了就反过来站在领导人的角度思考,所以上面说的你们能理解多少那就是多少吧。

HTTP劫持

大家都知道,我的 dou-bi.com 域名在前段时间的G20期间被HTTP劫持和DNS污染了,而我也简单的研究了一下这两个。

HTTP劫持很容易理解,因为HTTP传输协议是明文的,并且我的网站服务器是在海外,要访问我的网站就要通过中国的国际宽带出口,出去与我的网站建立连接。

但是那G20期间因为戒严,所以加强了HTTP关键词审查,我的网站也是因为关键词的原因在经过出口的时候,被“检查站:墙”扫描到了违规关键词,于是掐断了TCP链接。

所以当时用户访问网站会遇到:链接已重置、该网站已永久移动到其他地址等等。

解决方法

而HTTP劫持很容易解决,那就是加上SSL证书,网站链接全部内容加密,这样“检查站:墙”就无法解密数据分析关键词了。

但是这不是绝对能解决这个问题的,如果你的网站只是误杀或者违规擦边球,那还好,如果是大型网站,就会特殊对待了。

HTTPS在建立加密连接的时候,需要一次握手,也就是达成链接协议建立加密连接,但是这次握手是明文的(建立加密链接首先就是链接双方信任,比如网站的SSL证书是自己签的,或者SSL证书到期或伪造的,在访问这个网站的时候浏览器就会进行提示,表示此网站不安全啥的。)

握手是明文的就意味着,如果你的域名被重点关注,即使你加上了SSL证书,也会在首次握手的时候,被关键词匹配然后掐断链接。

还有一种方式,就是域名备案,使用国内服务器。这样用户在访问你的网站时,根本不需要经过墙,自然也没有了拦截。

DNS污染

DNS污染,又称为域名服务器缓存污染(DNS cache pollution)或者域名服务器快照侵害(DNS cache poisoning)。

DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址。

一般来说,网站在互联网上一般都有可信赖的域名服务器,但为减免网络上的交通,一般的域名都会把外间的域名服务器数据暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有相关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。

原理解析

我们假设 A为用户端也就是你的电脑设备,B为DNS服务器,C为A到B链路中一个节点的网络设备(路由器、交换机、网关等)。

然后我们模拟一次被污染的DNS请求过程。

A访问一个网站,比如 google.com ,然后,A向B通过UDP方式发送查询请求,比如查询内容 A google.com ,这个数据库在前往B的时候要经过数个节点网络设备比如C,然后继续前往DNS服务器B。

然而在这个传输过程中,C针对这个数据包进行特征分析,(DNS端口为53,进行特定端口监视扫描,对UDP明文传输的DNS查询请求进行特征和关键词匹配分析,比如“google.com”是关键词,也或者是“A记录”),从而立刻返回一个错误的解析结果(比如返回了 A 233.233.233.233 )。

众所周知,作为链路上的一个节点,网络设备C 必定比真正的 DNS服务器B 更快的返回结果到 用户电脑A,而目前的DNS解析机制策略有一个重要的原则,就是只认第一。因此 节点网络设备C所返回的查询结果就被 用户电脑A当作了最终结果,于是用户电脑A因为获得了错误的IP,导致无法正常访问 google.com

验证污染

我的 doub.iom 主域名虽然在大部分地区解除了DNS污染,但是我的两个SS站域名并没有,所以我尝试对我的SS 子域名进行nslookup测试。

C:/Users/Administrator>nslookup ss.dou-bi.com 8.8.8.8
服务器: google-public-dns-a.google.com
Address: 8.8.8.8

非权威应答:
名称: ss.dou-bi.com
Addresses: 200:2:9f6a:794b::
8.7.198.45

我使用的是谷歌的 8.8.8.8 DNS,但是我得到的A记录 IP却是8.7.198.45,这个明显不是我的IP,看一下其他被DNS污染的域名就会发现都会有这个IP。

所以很明显,我的 ss.dou-bi.com 域名受到了DNS污染。

解决方法

  1. 使用加密代理,比如Shadowsocks,在加密代理里进行远程DNS解析,或者使用VPN上网。
  2. 修改hosts文件,操作系统中Hosts文件的权限优先级高于DNS服务器,操作系统在访问某个域名时,会先检测HOSTS文件,然后再查询DNS服务器。
    可以在hosts添加受到污染的DNS地址来解决DNS污染和DNS劫持。
  3. 通过一些软件编程处理,可以直接忽略返回结果是虚假IP地址的数据包,直接解决DNS污染的问题。
  4. 如果你是Firefox用户,并且只用Firefox,又懒得折腾,直接打开Firefox的远程DNS解析就行了。在地址栏中输入:about:config
    找到 network.proxy.socks_remote_dns 一项改成true
  5. 使用DNSCrypt软件,此软件与使用的OpenDNS直接建立相对安全的TCP连接并加密请求数据,从而不会被污染。

对于被DNS污染的网站站长来说,最有效的方法就是 换域名或者IP 了。

污染攻击大事记

2010年3月,当美国和智利的用户试图访问热门社交网站如 http://facebook.com 和 http://youtube.com 还有 http://twitter.com 等域名,他们的域名查询请求转交给中国控制的DNS根镜像服务器处理,由于这些网站在中国被封锁,结果用户收到了错误的DNS解析信息,这意味着防火长城的DNS域名污染域名劫持已影响国际互联网。

2010年4月8日,中国大陆一个小型ISP的错误路由数据,经过中国电信的二次传播,扩散到了整个国际互联网,波及到了AT&T、Level3、Deutsche Telekom、Qwest Communications和Telefonica等多个国家的大型ISP。

2012年11月9日下午3点半开始,防火长城对Google的泛域名 http://google.com 进行了大面积的污染,所有以 http://google.com 结尾的域名均遭到污染而解析错误不能正常访问,其中甚至包括不存在的域名,而Google为各国定制的域名也遭到不同程度的污染(因为Google通过使用CNAME记录来平衡访问的流量,CNAME记录大多亦为 http://google.com 结尾),但Google拥有的其它域名如 http://googleusercontent.com 等则不受影响。有网友推测这也许是自防火长城创建以来最大规模的污染事件,而Google被大面积阻碍连接则是因为18大 。

——摘取自:知乎

当然,DNS污染的大事件肯定不会只有这几个,但是这也说明了DNS污染的力量和危害之大。

IP黑名单

即使没有DNS污染 或者 你获得了正确的IP,你就能正常访问这些被屏蔽的网站了吗?

不,墙目前已经有了IP黑名单,针对谷歌这种网站已经不再是普通的DNS污染了,因为总会有办法访问被DNS污染的网站(比如指定Hosts)。

那么就直接把所有的谷歌IP拉黑不就好了?就算你获得了正确的谷歌IP,但是当你去访问这个IP的时候,墙会发现这个IP存在于黑名单中,于是直接阻断,于是浏览器就会提示:www.google.com的响应时间过长等等。

当然谷歌的IP非常多,而且有很多都是隐藏的。

像Goagent、XX-NET、Hosts方式访问谷歌或者其他被屏蔽的网站,都是使用的谷歌IP,当大量谷歌IP被拉黑后,这三种方式就会衰败。

现在这三种方式依然在不停的扫描那些隐藏的谷歌IP,但是谷歌IP再多也不是无穷无尽的,迟早会消耗完毕,坐吃山空。到时候就是这几种方法的死期了。

在普通用户扫描的时候,“墙”中的工作人员和超级计算机何尝也不是在扫描?正是看到了这种依赖于谷歌IP方式的末路,所以我网站到现在也没有一篇和这几种方式有关的教程和文章。


以上的言论仅为个人理解,只为共享以方便讨论交流,具体事实是如何,自行探索。

转载请超链接注明:月下博客 » 浅谈HTTP劫持、DNS污染的影响及解决办法(仅个人理解)
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

留言评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code