BGP路径挟持攻击样例 | SDNLAB | 专注网络创新技术
SDN SD-WAN DPU NFV Cloud Edge Computing 5G IoT AI Network Security
BGP路径挟持攻击样例

1 实验目的

  • 掌握如何mininet内模拟AS。
  • 掌握BGP路径挟持的原理和分析过程。

2 实验原理

互联网是由相互连接的自治系统AS组成的,通过一个通用的边界网关协议(BGP)进行交互彼此的路由信息。如果利用BGP进行特殊攻击,比如一个伪装的AS伪造了一个更短的路径到前缀P,其他的AS要路由到前缀P时就会选择这个更短的路径,受到感染的AS会把该攻击信息继续向其他的AS传播,使得更多的AS受到感染,逐渐形成了BGP劫持攻击。

3 实验任务

通过创建下图所示的网络拓扑,包括四个AS(AS1,AS2,AS3,AS4)。每个AS都有它的路由守护进程(R1,R2,R3,R4),守护路由的对接情况如下:
1.R1和R2,R4对接
2.R2和R1,R3对接
3.R3和R2对接

BGP路径挟持攻击样例 图1

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

2.每个as的配置信息存放在实验代码包的conf文件夹中

3.因为mininet使用网络域名,每个容器的路由表都是相互独立的,因此改变AS1的路由表不会影响AS2的路由表。

4.AS是通过静态路由规则中分离的网络接口互相连接的。

4 实验步骤

4.1 搭建环境

步骤1.创建虚网。
1.在首页单击“创建虚网”。虚网名称以“Slice1”为例,虚网名称只能包括数字,字母和下划线。

BGP路径挟持攻击样例 图2

2.单击“下一步”选择网络拓扑。如果要创建虚拟机,则必须要选择一个计算存储服务器,双击选中设备。

BGP路径挟持攻击样例 图3

3.单击“下一步”确认虚网清单。

BGP路径挟持攻击样例 图4

4.单击“创建”成功创建虚网。

BGP路径挟持攻击样例 图5

5.单击虚网名称链接进入“虚网详情”页面。

BGP路径挟持攻击样例 图6

步骤4.添加控制器。
1.在“虚网详情”页面单击控制器部分的“Firewall REST API实验 图24”按钮,请根据实际情况选择要添加的控制器。

BGP路径挟持攻击样例 图7

2.单击“下一步”选择控制器配置。

BGP路径挟持攻击样例 图8

3.单击“创建”。
步骤5.在“虚网详情”页面单击网关部分的“Firewall REST API实验 图24”按钮添加网关。

BGP路径挟持攻击样例 图9

步骤6.创建虚拟机mininet。
1.在“虚网详情”页面虚拟机部分单击“+”创建虚拟机。

BGP路径挟持攻击样例 图10

2.单击“下一步”,选择镜像。

  • 此处建议选择mininet_bgp的镜像,该镜像中已经下载了相关的实验代码,进行了对应的环境配置。
  • 如果用户需要选择其他mininet镜像,建议参考附录进行环境配置。
BGP路径挟持攻击样例 图11

3.单击“下一步”,选择配置。此处建议选择至少2G内存,2核CPU。

BGP路径挟持攻击样例 图12

4.单击“下一步”确认填写基本信息。

BGP路径挟持攻击样例 图13

5.单击“创建”。创建好的虚拟机如下图所示:

BGP路径挟持攻击样例 图14

步骤7.启动虚网和虚拟机。
1.单击“虚网详情”页面网络拓扑右上角的“Firewall REST API实验 图12”按钮启动虚网。虚网启动后,控制器也会启动成功。
2.在“虚网详情”页面单击“网关”部分的“Firewall REST API实验 图12”按钮启动网关。
3.选择mininet虚拟机,单击虚拟机部分的“Firewall REST API实验 图12”按钮启动。

BGP路径挟持攻击样例 图15

4.2实验验证

步骤1.选择虚拟机mininet,单击“搭建Mininet环境实验 图12”远程登录虚拟机。

步骤2.请根据实际情况输入用户名和密码,例如root/123。

执行以下命令启动quagga

步骤1.切换到/home/bgp目录执行以下命令创建实验拓扑。

BGP路径挟持攻击样例 图16

步骤2.执行ctrl+a+d切换到系统操作界面。

步骤3.执行以下命令启动登录AS1的路由R1。

请根据提示输入密码en登录。

BGP路径挟持攻击样例 图17

步骤4.执行命令sh ip bgp查看AS1的路由表信息。

BGP路径挟持攻击样例 图18

从上图中可以看出,要到达“13.0.0.0/8”选择的AS路径是“2 3”(例如通过AS2和AS3)。

步骤5.执行exit退出到系统操作界面。

步骤6.执行以下脚本访问mininet开启在AS3中的一个默认web服务器,并判定可以直接从AS的host1-1直接访问。

在代码目录下有一个“website.sh”,这个脚本执行后会在AS1上循环执行curl -s 13.0.1.1这个命令。

BGP路径挟持攻击样例 图19

步骤7.执行ctrl+a+d切换到系统操作界面。

步骤8.执行以下命令开启伪装的AS。

这个AS连接到AS1并通知它一条路由到“13.0.0.0/8”的更短的路径(例如一个直接从AS1到AS4的路径),这样AS1就会的选择这个更短的路径。

BGP路径挟持攻击样例 图20

步骤9.查看website.sh的执行结果。

1.执行screen –r选择登录website的执行界面。

BGP路径挟持攻击样例 图21

当前有两个界面,其中1895为mininet的操作界面进程,2422为website.sh的界面进程,此处选择2422。

2.执行以下命令登录website的执行界面。

可以看出原来的“default web server”变成了“Attacker web server”。
说明实际的进程号可能会不一样,请会根据实际情况操作。

BGP路径挟持攻击样例 图22

步骤10.执行ctrl+a+d切换到系统操作界面。

步骤11.执行以下命令启动登录AS1的路由R1。

请根据提示输入密码en登录。

BGP路径挟持攻击样例 图23

步骤12.执行命令sh ip bgp查看AS1的路由表信息。

BGP路径挟持攻击样例 图24

可以在AS1的路由表中看出AS4的选择路径和AS3的路径。因为通过AS4到达“13.0.0.0/8”是比较短的,所以R1选择了AS4作为它的下一跳。

步骤13.执行以下脚本关闭R4的路由进程。

BGP路径挟持攻击样例 图25

步骤14.登录website.sh的执行界面查看界面变化。

可以看出原来的“Attacker web server”又变成了“default web server”。
说明2422为website.sh的界面进程,实际的进程号可能会不一样,请会根据实际情况操作,可执行screen -r命令查看进程号。

BGP路径挟持攻击样例 图26

步骤15.登录到mininet的操作界面退出拓扑。

在mininet操作命令行中输入exit退出拓扑结束实验。
说明1895为mininet的界面进程,实际的进程号可能会不一样,请会根据实际情况操作,可执行screen -r命令查看进程号。

5 实验结论

在BGP消息通告中把BGP邻居作为完全可信的实体,并认为所有从邻居学习到的路由信息都是当前网络拓扑的真实状况。因此当一个攻击者将不属于自己的IP前缀宣告到其他的组织,接收到通告的组织也只是依据自身策略决定到达该IP前缀的下一跳AS,没有机制可以用来验证发布该前缀的组织是否真的拥有该IP前缀。如果选择了攻击者AS作为到达该IP前缀的下一跳地址,则所有到达该IP前缀的流量都会被劫持到攻击者AS,并且受到感染的AS会把该攻击信息继续向其他的AS传播,使得更多的AS受到感染,逐渐形成了BGP劫持攻击。

6 附录(手动配置环境)

如果用户需要自行配置实验环境,可参考以下步骤获取实验代码并进行其他环境配置。

步骤1.执行以下命令安装easy_install,如果已经安装请跳过此步骤。

步骤2.执行以下命令获取实验代码。

步骤3.切换到bgp目录下,修改run.py中的如下代码。

修改内容在第19行,修改前:

BGP路径挟持攻击样例 图27

修改后:

BGP路径挟持攻击样例 图28

修改完成后请保存退出。

步骤4.执行以下命令安装termcolor和quagga。

步骤5.执行以下步骤配置quagga。

1.编辑/etc/quagga目录下的daemons文件。

将zebra和bgpd对应的值设置为yes后保存退出
zebra=yes
bgpd=yes

2.执行以下命令创建zebra、bgp以及vtysh对应的配置文件。

3.执行以下命令重新启动quagga。

步骤6.执行以下命令安装telnet,如果已经安装请跳过此步骤。

weibo

微信公众号:搜索"SDNLAB"
或扫描上面的二维码。

Andretoto Andretoto Atatoto Atatoto Situs Toto Slot Thailand Toto Slot