1

图片描述

一、概述

斯坦福大学计算机网络CS144课程实验:基于Mininet实现BGP路径劫持攻击演示。

1、1 BGP概述

首先互联网整体上来说是一个分布式的网络,并没有整个网络的中心。但是整个互联网实际上是由成百上千个不同的ISP的子网络组成的。

这些子网络互相连接,通过BGP协议告诉对方自己子网络里都包括哪些IP地址段,自己的AS编号(AS Number)以及一些其他的信息。

这里又要扯到互联网的IP地址分配方式。互联网的IP地址分配是中心化的,ICANN这个机构把IP地址大段分给Regional Internet Registries(RIR),区域互联网注册管理机构。RIR再把IP地址段细分后分给ISP们。

大部分情况下,AS Number和分给该AS什么IP段是没有任何关系的。

下面问题来了,BGP协议里虽然有一些简单的安全认证的部分,但是对于两个已经成功建立BGP连接的AS来说,基本会无条件的相信对方AS所传来的信息,包括对方声称所拥有的IP地址范围。

对于ISP分配给大公司客户的地址段,ISP往往会对BGP做一些有限的过滤。但是对于大型ISP来说,因为对方所拥有的IP地址段可能过于分散,所以一般是按最大范围设置BGP prefix 地址过滤。比如假设ISP A拥有地址段20.1.0.0/1620.200.0.0/16,那么ISP B可能会设置过滤对方传来的20.0.0.0/8以外的路由。

当然这种情况比较极端,一般ISP分配到的IP地址段都是连续的,但是基本也都有可操作的空间,可以把数百到几万个不属于自己的IP合法加到自己的BGP信息里。

多数ISP甚至都没有把自己本身的IP段过滤掉,也就是说如果其他AS声称拥有该ISP自己的IP段,这个ISPBGP路由也会相信。

为了解决这个问题,有人发明了一个叫Internet Routing Registry (IRR)的东西,相当于一个开放式的数据库,像DNS 根服务器一样采用分布式镜像服务器放在世界各地。

ISP可以向IRR注册自己的IP地址段和路由策略,其他ISP就可以查询IRR从而对自己的BGP路由器做过滤。这样做的确防止了一些由于无意而导致的路由劫持。

但是IRR这个东西本身也是不靠谱的。IRR里存了大约10万条记录,如果全部加载进路由器的话是个不小的负担。另外IRR基本没人管,任何人可以可以往里面注册任何路由记录。

所以在大部分ISP都无条件相信IRR的时代,IRR也带来了不少的麻烦。

最简单的方式就是通过Whois找到目标IP段的 管理员邮箱,如果该邮箱或者邮箱所在的域名已经过期,那么就自己注册一个,然后就可以随便通过邮件向IRR修改记录了。

或者直接通过BGP路由向ISP发送,反正大家都不care……

边界网关协议 via百度百科

1、2 实验原理

利用BGP进行特殊攻击,使用伪装的AS伪造一个更短的路径到前缀P,其他的AS要路由到前缀P时就会选择这个更短的路径,受到感染的AS会把该攻击信息继续向其他的AS传播,使得更多的AS受到感染,从而造成BGP劫持攻击。

1、3 相关工具简介:Mininet

Mininet creates a realistic virtual network, running real kernel, switch and application code, on a single machine (VM, cloud or native), in seconds, with a single command:

Because you can easily interact with your network using the Mininet CLI (and API), customize it, share it with others, or deploy it on real hardware, Mininet is useful for development, teaching, and research.

Mininet is also a great way to develop, share, and experiment with OpenFlow and Software-Defined Networking systems.

Mininet is actively developed and supported, and is released under a permissive BSD Open Source license.

Mininet: An Instant Virtual Network on your Laptop (or other PC) - Mininet http://mininet.org/

1、4 参考资料:

网络与信息安全学报, 2016, 2(8): 54-61 BGP路由泄露研究

http://www.infocomm-journal.c...

BlackHat议题分析:浅析BGP劫持利用 - FreeBuf.COM | 关注黑客与极客

http://www.freebuf.com/articl...

BGP Path Hijacking Attack Demo · mininet/mininet Wiki · GitHub

https://github.com/mininet/mi...

加密货币攻击之比特币:已成为可能?(含演示视频) - FreeBuf.COM | 关注黑客与极客

http://www.freebuf.com/news/1...

二、拓扑构建

2、1 拓扑和网络实现原理

我们在mininet中进行拓扑构建,我们需要构建如下拓扑:


拓扑中涉及具体的主机在上图中不做标识。

包含4个ASAS1AS2AS3AS4流氓AS)。每个AS都有它的路由守护进程(R1,R2,R3,R4

守护路由的连接情况:

R1R2、R4是对等的

R2R1、R3是对等的

R3R4是对等的

BGP网络构建脚本:jvimal / bgp — Bitbucket https://bitbucket.org/jvimal/bgp(实验环境已经下载好实验所需的脚本)

图片来源:合天网安实验室

网络实现原理:

1)使用开源组件Quagga为每个AS节点创建容器,每个容器都有一个路由守护进程。运行bgpd来承载BGP,通过zebra来配置linux内核中的路由转发规则。

2)每个AS的配置存储在conf目录中(实验文件目录中)

3)Mininet使用了Linux的网络命名空间,所以每个AS容器的路由表都是独立的,也就是说改变AS1的路由表不会影响AS2的路由表。

4)AS之间使用独立的网口通过静态路由表项进行相连。R1的IP地址是9.0.0.1R2的是9.0.0.2,其他类似。

2、2 构建BGP网络

打开Shell终端

图片来源:合天网安实验室

使用写好的Python脚本构建所需的网络环境,命令如下:

cd ~/bgp
sudo python bgp.py

等待构建完成

图片来源:合天网安实验室
当看到 mininet> 提示符 就表示网络构建完成了

2、3 mininet基本操作

查看网络信息

查看全部节点:nodes 命令

图片来源:合天网安实验室
查看链路信息:net

图片来源:合天网安实验室
如果想要对某个节点的虚拟机单独进行命令操作,也十分简单,格式为 node cmd。例如查看R1上的网络信息,只需要在执行的ifconfig命令前加上R1主机标志即可,比如R1 ifconfig

图片来源:合天网安实验室
整个实验过程请保持mininet在前台运行

接下来打开另外一个shell窗口完成接下来的操作。

在会话窗口上右键选择New Window新开一个shell会话窗口

图片来源:合天网安实验室

三、BGP路径劫持攻击验证

3、1 正常情况下的路由情况

1.连接到AS1的路由器R1

在新开的shell会话窗口中执行如下命令:

cd ~/bgp/
./connect.sh

图片来源:合天网安实验室

输入密码 en 回车(注意这里的密码不会回显)


输入en 进入路由器特权模式

并再次输入密码 : en 回车

图片来源:合天网安实验室
2.查看 AS1的路由表

命令如下:

sh ip bgp (show ip bgp的简写)

图片来源:合天网安实验室
可以看到,在AS1上,到达13.0.0.0/8的所选AS路径是2 3(即通过AS2AS3)。
3.在AS3中开启一个Default Web站点,并模拟从主机h1-1访问这个站点

再新开一个Shell会话窗口

图片来源:合天网安实验室
执行如下命令:

cd ~/bgp/
./website.sh

图片来源:合天网安实验室
可以看到,现在h1-1主机访问的是AS3中的Default Web Server

3、2 BGP路径劫持攻击验证

4.启动流氓AS进行路径劫持

保持上面的Shell会话窗口,新开一个窗口,执行如下命令

cd ~/bgp/
./start_rogue.sh

图片来源:合天网安实验室

这个流氓AS连接到AS1并通知它一条路由到13.0.0.0/8的更短的路径(即AS1AS4的路径),这样AS1就会的选择这个更短的路径。

5.观察网络访问和AS1的路由表变化

切换到模拟h1-1主机访问AS3站点的Shell窗口

图片来源:合天网安实验室

可以看到,原本访问是 Default Web Server,现在已经变成了 Attacker web server 了。

再来看看AS1的路由表

使用 ./connect.sh 连接到R1路由器,按提示输入密码 en

然后使用 sh ip bgp 查看路由表

图片来源:合天网安实验室

我们在AS1的路由表中可以看出AS4的选择路径和AS3的路径。由于通过AS4到达13.0.0.0/8AS路径长度较短,所以R1选择AS4作为下一跳,而不再选择AS2AS3再到13.0.0.0/8
6.关闭流氓AS

./stop_rogue.sh

关闭之后,你会发现路由收敛非常快,访问又正常了

图片来源:合天网安实验室

图片来源:合天网安实验室
7.停止网络

切换到mininet> 会话窗口

输入 exit 即可结束

图片来源:合天网安实验室

BGP路径劫持攻击实验完成。

戳下面的链接即可进行在线体验 BGP路径劫持攻击

?????

BGP路径劫持攻击

四、说明

本文由合天网安实验室原创,转载请注明来源。

关于合天网安实验室

合天网安实验室(www.hetianlab.com)-国内领先的实操型网络安全在线教育平台
真实环境,在线实操学网络安全 ;
实验内容涵盖:系统安全,软件安全,网络安全,Web安全,移动安全,CTF,取证分析,渗透测试,网安意识教育等。

(本文来源:合天网安实验室--领先的实操型网络安全在线教育平台)


蚁景网安实验室
53 声望45 粉丝

蚁景网安实验室(www.yijinglab.com)-领先的实操型网络安全在线教育平台 真实环境,在线实操学网络安全 ;内容涵盖:系统安全,软件安全,网络安全,Web安全,移动安全,CTF,取证分析,渗透测试,网安意识教育等。