作为法国互联网主动监测的一部分,ANSSI监视器从2011年开始主动监测互联网中的BGP行为。其主要是为了对付一些路由异常,比如前缀劫持,因为这将会影响法国的网络,其中有一些异常甚至会对互联网造成不可逆的影响。
这样的路由异常有时候很难被发现,因为它本身是完全合法的,所以必须小心翼翼的监测。比如DDOS缓解提供商可能会公布他们的客户端前缀。
而为了区分合法的和不正常的路由行为,我们开发了一种方法论。
当方法论和数据能够被任何人使用时,就能够更好的实施了。几个星期前我们发布了两款开源工具使得我们能够更容易发现前缀劫持,他们都使用RIPE NCC路由信息服务商收集的路由数据。
如何工作的?
MaBo是MRT解析工具TaBi是BGP劫持监测工具,它们是协同工作的。MaBo将MRT文件中的BGP二进制消息数据转换成JSON格式的中间数据,然后TaBi枚举这些全局路由基础信息来检测路由异常。
MaBo
MaBo是Observatory团队在2011年开发的第一个工具。最初,它是一款用来学习BGP协议和MRT格式的教学程序。不可否认的是,对于更好的理解协议来说这是一个很好的想法。它是使用OCaml语言编写的,所以有很好的安全性能和执行效率。
事实上,解析BGP畸形报文真的很重要。我们对解析器的健壮性相当满意,它每天能够处理大量的数据。它是我们处理MRT文件的“瑞士军刀”,请允许我举个ASN示例。
bash$ wget -c http://data.ris.ripe.net/rrc01/latest-bview.gz bash$ mabo prefixes --asn-list <(echo 202214) latest-bview.gz 202214 185.50.64.0/22 202214 185.50.66.0/24 202214 185.50.67.0/24 202214 2a01:a6a0::/32
第一条命令从位于伦敦的RIS路由收集器(RRC01)下载BGP表并且第二次启动会列出AS202214源前缀。
TaBi
TaBi是一个独立的应用同时又是一个python模块。它的主要目标就是检测BGP前缀劫持攻击。它在大量的路由收集器上运行,然后在节点上收集大量的BGP更新数据并进行排序。事实上,很多异常都是本地的,所以为了能够更好的检测到路由冲突,从大量节点上收集BGP更新是非常重要的。
在程序内部,BGP更新会通过专门的radix树这种数据结构来进行排序,这就将节点给出的ASN源数据连接在一起。这种数据结构允许快速的前缀劫持监测,比如路由器有相同长度的前缀或者不确定的前缀但是来源于不同的ASN节点。用文字描述的话,这些事件有时候被命名为混合源AS(MOAS)或者子MOAS。
此时,它仍然是低层级的网络工具,没有提供好的web接口,但据我所知,这是第一个开源的能够检测到这些事件的工具。
$ tabi -m live rrc01 -a <(echo 3462) results latest-bview.gz | head -n 1 | json_pp { "collector" : "rrc01", "peer_as" : 29611, "asn" : 3462, "peer_ip" : "2001:7f8:4::73ab:1", "timestamp" : 1451606400, "announce" : { "as_path" : "29611 3356 9680", "type" : "F", "asn" : 9680, "prefix" : "1.35.128.0/24" }, "conflict_with" : { "asn" : 3462, "prefix" : "1.35.0.0/16" } }
下面的例子将展示AS3462发布的第一路由前缀冲突。
案例
技术上,我们将RIS上得到的MRT文件有规律的使用MaBo进行解析。然后放到MapReduce集群上以便于TaBi能够并行的工作。更多细节在2014年的NSC资料上可以找到。
现在,我们用这个工具来生成每天的BGP异常报告。由于我们只专注运行在法国的网络环境,所以我们会用对法国互联网环境的理解来分析法国安全事件。我们希望我们的工作能给其他分析前缀的人提供帮助,这就是为什么TaBi是python模块,因为我们希望用户能够在此之上开发新的工具。
实时监测
最近,RIPE NCC公布了他们支持实时BGP消息流的新架构。我们很激动由于这些特性为网络使用者提供了超级快速的响应当前缀被劫持的时候。
上个月,在出席CAIDA GBP编程马拉松的时候,我们有机会进入这个系统并围绕TaBi前缀劫持检测工具开发出了POC。我们跟PEERING研究组一起工作,他们也出现了编程马拉松,并用他们的路由冲突模拟控制器公布了前缀。这非常有意思,因为我们可以测量检测机制的延迟,特别印象深刻的是,事件被检测到在几秒之后被公布。
另外一个团队公布了自动防御BGP劫持的POC,这看起来非常有前景并且我们相信更多强大的工具将会出现。这些还没有产品化的代码可以在github上找到。我们欢迎大家下载这些代码来获取更多信息,并且希望你在下面留言。