1月21日,中国发生大规模的网站断网,涉及数千万用户。
美国动态网公司发表声明称,这是由于中共DNS劫持发生的大规模网站断网。
(AFP/Getty Images)

1月21日,中国发生大规模的网站断网,涉及数千万用户。大陆媒体报导,境内用户访问.com、.net全球顶级域名时,指向了美国公司动态网(DIT)的IP地址。22日,DIT发表声明称,这是由于中共DNS劫持发生的大规模网站断网。以下是该公司声明全文:

中共于2002年开始使用DNS劫持技术封锁网站。动态网络技术公司(DIT)于2002年10月2日发布一份报告演示这种技术如何运作。这些年来,我们对于中国如何使用这种DNS劫持技术有了更多的了解。2014年1月21日,中国由于DNS劫持发生大规模网站断网。我们觉得现在是发布关于这个系统的更多信息的好时候。

什么是DNS

DNS是将域名翻译成IP地址的服务。互联网上的电脑依靠IP地址找到彼此以互通信息。DNS服务就好像寻号台服务,把人们熟悉的人名翻译成电话号码。当用户使用浏览器比如火狐浏览器浏览网页时,比如想上大纪元网站 http://www.epochtimes.com,火狐浏览器会与DNS服务器通话,找到大纪元网站www.epochtimes.com的IP地址。然后火狐浏览器才能上到大纪元网站。

什么是DNS劫持

当有DNS劫持发生时,用户可能会看到错误信息,或警告信息,或者上到错误的网站。

DNS 劫持的过程是这样的:一台恶意的电脑会监控用户与DNS服务器之间的对话,然后代表真正的DNS服务器给用户返回一个错误的IP地址。这个过程有点像电影《十一罗汉》中的情节:盗贼控制了赌场的电话系统,当赌场打电话紧急求救时,盗贼接听了电话,然后派一个盗贼团队进入了赌场的金库。

这种攻击需要攻击者有能力监控用户的所有数据流,并需要CPU资源处理这些数据。这种情形在很多针对小公司网络安全的书籍中都解释过。但是这种攻击从未在网络服务商ISP范围发生过。ISP的网络更复杂,没有一个单一的点可以监控所有的数据流。

在家里演示DNS劫持

2014年1月21日发生在中国的大规模网站断网事件大部份已经恢复正常了。但是DNS劫持仍在持续中。我们可以通过被劫持的网站,了解一下断网时的情形。

2002年,DIT列出12个域名被劫持的网站。时至今日,其中7个仍然域名被劫持。这7个网站如下:

www.renminbao.com
www.bignews.org
www.minghui.org
www.kanzhongguo.com
www.peacehall.com
www.epochtimes.com
www.tibet.net

如果你可以操作一个位于中国的电脑。在Linux操作系统下,可以打这个指令:

host -t A epochtimes.com.dwlc 8.8.8.1

你会得到一个类似这样的回答:

epochtimes.com.dwlc has address 203.98.7.65

这个返回的IP地址是错误的,原因如下:

1)8.8.8.1 并不是一个DNS服务器。如果你在一台美国的电脑打这个指令,返回的是超时错误。

2)epochtimes.com.dwlc 并不是一个有效的域名。DNS服务器应该回答说“找不到”而不是返回一个IP地址。这个回答一定是来自长城防火墙的DNS劫持系统。

在Windows操作系统下做这个测试,可以打这个指令:

nslookup epochtimes.com.dwlc 8.8.8.1

据我们观察,DNS劫持系统可能会返回过几个不同的IP地址。这是我们收集到的一些IP地址:

159.106.121.75
203.98.7.65
243.185.187.39
37.61.54.158
46.82.174.68
59.24.3.173
78.16.49.15
8.7.198.45
93.46.8.89

这个列表会慢慢的变化,有时不同的ISP返回不同的IP地址。

以上这个测试暴露了DNS劫持系统的一个漏洞。它会匹配“epochtimes.com”这个字符串。如果找不到“epochtimes.com”,就不会返回假IP地址。如果域名中包括“epochtimes.com”,比如“epochtimes.com.cn”,这个域名也会被劫持。

如果DNS劫持系统的黑名单中有一个空的字符串,所有的域名都会被劫持。这就是2014年1月21日发生的事情。

可以理解,在一个文本文件中,最后加一个空行很难看得出来。

在美国演示DNS劫持

在一台美国的Linux电脑上, 打这个指令:

host -t A epochtimes.com.dwlc 163.com

163.com是中国的一个网站,不是一个DNS服务器。而且,“epochtimes.com.dwlc”这个域名根本不存在。但是,打上面这个指令会收到以下回复:

epochtimes.com.dwlc has address 203.98.7.65

这是因为DNS劫持系统有另外一个缺陷。它不能分辨DNS询问是进中国还是出中国的。它监控所有进出中国的流量,一旦发现域名与黑名单有匹配,就返回一个错误的IP地址。这样我们就可以在中国以外研究DNS劫持系统。

DNS劫持系统的部署

因为DNS劫持系统所针对的域名都在海外,部署DNS劫持系统最有效的地方是在国际网关,从那里监控所有进出中国的流量。

根据2013年12月的CNNIC报告,进出中国的流量是3400Gbps,年增长是79.3%。要监控这样一个迅速增长的流量,DNS劫持系统必须持续升级服务器和加新的CPU。

2014年1月21日,所有的域名都被指向一个自由门的IP地址,只有DNS劫持系统才有充足的资源和地理位置这么做。没有黑客有能力部署和控制资源,对3400Gbps的流量进行如此精确操作,来只改变与DNS有关的通信。

21日事件的更多细节

关于这个所有域名都被指向一个IP地址,网上有很多关于这个IP的拥有者的信息。这些混乱的信息是因为IP地址被不同的公司层层转卖造成的。这个IP地址是 DIT用来运行自由门相关服务的。当事件发生时,并没有网站在这个IP运行。之后,我们试图在这个IP地址运行网站,但是由于进入中国的数据流被封锁,网页在中国看不到。

关于用户体验的问题解答

事件结束了,为什么很多用户还是不能正常浏览网页?

这是DNS缓存造成的。中国的DNS服务器储存了错误的结果。在缓存被清之前,用户还是会被指向错误的地址。

我使用Google的海外DNS服务器8.8.8.8。为什么也被影响了?

DNS劫持影响所有进出中国的DNS询问。在中国,你可以在Windows电脑使用这个指令,返回的是错误的IP,这不是因为Google的8.8.8.8DNS服务器被黑了。

nslookup epochtimes.com 8.8.8.8

为什么 .cn 域名没有受影响?

因为 .cn 域名在中国国内被解析,这个过程没有经过位于国际网关的DNS劫持系统。

为什么没有ISP给一个官方的解释?

中共政府把DNS劫持系统放入每一家ISP的设施里。中共政府从不承认长城防火墙的存在,更不用说DNS劫持系统了。没有ISP敢出来确认DNS劫持系统的存在。