互联网灾难回顾(一)

来自:车小胖谈网络 (微信号:chexiaopangnetwork),作者:车小胖谈网络

文章里提到了,如果第三方设备想解密TLS加密的流量,需要满足两个条件:

 

  • 流量需要途径第三方设备

  • 第三方设备需要替换证书

 

只要满足了以上2个条件,解密流量如同小菜一碟。

 

由于游客的流量必须经酒店网络出口,员工的流量需经企事业单位网络出口进入互联网,所以很容易满足条件1,至于条件2只需要替换一下证书而已,非常简单。

 

所以最最关键的还是条件1,即一定要将用户的流量劫持到自己的网络设备上

 

2018年互联网发生的灾难,其实就是这个思路。先来考考大家,当我们在浏览器里输入一个网址时,浏览器做的第一件事什么?

 

有一点点互联网基础的读者都会知道,当然是域名解析了。即将网站的域名通过DNS解析成网站的IP地址,然后才建立TCP连接、再建立TLS安全连接、最后完成HTTP交易。

 

下一个问题是,DNS解析得到的IP地址,是否真的就是你要访问的服务器的IP?

这个无法确定,有可能是,有可能不是。

 

如果域名数据库,没有人为的污染(Poisoning),域名查询结果在返回的路上,也没有被人为的替换(Replacing),那么解析结果就是真正服务器的IP。如果被污染或替换成第三方的IP,那么返回的IP就是第三方的IP。

 

攻击方想劫持互联网流量,首先要对DNS查询报文动手,使得攻击方能够将服务器真正的IP替换成自己的IP,接下来浏览器会盲目地和攻击方的IP建立连接。

 

问题又来了,互联网上的用户遍布全球,用户的DNS查询报文在网络管道里穿梭,攻击方纵有天大的本领,也鞭长莫及啊!攻击方手再长,也伸不到遍布全球的网线里替换DNS查询结果啊!

 

攻击方灵机一动,诚然无法将手伸到全球大大小小的网络里,但可以迫使DNS查询流量乖乖地流到攻击方的网络设备上来啊。什么方法呢?

 

操控路由!

 

互联网由大大小小的运营商、大型机构互联而成,运营商之间通过BGP路由协议互相分发全球路由表。

 


有一个DNS服务器,它的IP = 1.1.1.1,这个域名服务器很多人都在用。这个IP在全球路由表的呈现方式是 1.1.1.1吗?


并不是,如果每一个独立的IP都能进入全球路由表,那么全球的路由表条目将有20亿+,这个庞大的路由表条目数量,将会把全球几乎所有路由器内存撑爆。所以这种方法是非常不现实的。

 

可以将连续的一段IP,可能包含几百、几千、几万个IP,做为一个整体进入路由表,只占据一个条目的内存空间。

 

比如1.1.1.x,这就代表一个连续的IP,其中“x”可以是0-255中的任意值,一共代表256个连续的IP。

 

网络掩码的长度表达形式为:1.1.1.0/24。

 

Okay,这个“1.1.1.0/24”通过Verizon,通过BGP协议进入了全球路由表,并扩散到互联网的各个角落。

 

正常DNS查询路线

用户访问1.1.1.1做DNS查询时,路由最长匹配原则,匹配到“1.1.1.0/24”(匹配长度为24位),然后流量就导流到Verizon的网络里,并最终到达1.1.1.1,返回正常的查询结果,这是没有劫持的场景。

 

攻击方注入非法路由

攻击方偷偷摸摸向BGP注入一条路由“1.1.1.0/25”,并扩散到互联网的各个角落。

 

DNS劫持路线

用户访问1.1.1.1做DNS查询时,路由最长匹配原则,匹配到“1.1.1.0/25” (匹配长度为25位),然后流量被导流到攻击方的网络里,攻击方将流量劫持设备的IP,以DNS查询结果返回给用户,用户的流量就被劫持到攻击方的设备上来了,这就是劫持的场景。

 

未完待续。。。

推荐↓↓↓
程序员的那点事
上一篇:为何TCP被动关闭端不需要TIME_WAIT状态? 下一篇:IPv6会取代MAC地址吗?