BGP路径劫持攻击

1、概述

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

一、1 BGP概述

首先互联网总体上来讲是一个分布式的网络,并无整个网络的中心。可是整个互联网其实是由成百上千个不一样的ISP的子网络组成的。node

这些子网络互相链接,经过BGP协议告诉对方本身子网络里都包括哪些IP地址段,本身的AS编号(AS Number)以及一些其余的信息。python

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

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

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

对于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之外的路由。web

固然这种状况比较极端,通常ISP分配到的IP地址段都是连续的,可是基本也都有可操做的空间,能够把数百到几万个不属于本身的IP合法加到本身的BGP信息里。shell

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

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

ISP能够向IRR注册本身的IP地址段和路由策略,其余ISP就能够查询IRR从而对本身的BGP路由器作过滤。这样作的确防止了一些因为无心而致使的路由劫持。

可是IRR这个东西自己也是不靠谱的。IRR里存了大约10万条记录,若是所有加载进路由器的话是个不小的负担。另外IRR基本没人管,任何人能够能够往里面注册任何路由记录。

因此在大部分ISP都无条件相信IRR的时代,IRR也带来了很多的麻烦。

最简单的方式就是经过Whois找到目标IP段的 管理员邮箱,若是该邮箱或者邮箱所在的域名已通过期,那么就本身注册一个,而后就能够随便经过邮件向IRR修改记录了。

或者直接经过BGP路由向ISP发送,反正你们都不care……

边界网关协议 via百度百科

一、2 实验原理

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

一、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/

一、4 参考资料:

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

http://www.infocomm-journal.com/cjnis/article/2016/2096-109X/2096-109X-2-8-00054.shtml

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

http://www.freebuf.com/articles/network/75305.html

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

https://github.com/mininet/mininet/wiki/BGP-Path-Hijacking-Attack-Demo

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

http://www.freebuf.com/news/155287.html

2、拓扑构建

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

咱们在mininet中进行拓扑构建,咱们须要构建以下拓扑:

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

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

守护路由的链接状况:

R1R二、R4是对等的

R2R一、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 构建BGP网络

打开Shell终端

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

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

cd ~/bgp
sudo python bgp.py
复制代码

等待构建完成

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

二、3 mininet基本操做

查看网络信息

查看所有节点:nodes 命令

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

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

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

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

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

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

3、BGP路径劫持攻击验证

三、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

三、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路径劫持攻击

4、说明

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

关于合天网安实验室

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

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

相关文章
相关标签/搜索