APP下载

一种针对BGP会话的低速率分布式拒绝服务攻击模拟研究

2020-04-29张源良

智能计算机与应用 2020年2期
关键词:令牌会话线程

张源良, 张 宇

(哈尔滨工业大学 计算机科学与技术学院, 哈尔滨 150001)

0 引 言

BGP 是目前互联网实际使用的标准域间路由协议,可将为数众多、拓扑各异、大小不一的自治域连接在一起并相互交换路由信息。BGP 使用TCP 作为路由交换的底层传输协议,通常工作在互联网提供商(ISP)搭建的大型BGP路由之间,在自治域之间建立BGP会话,使得自治域之间可达。

在互联网中针对不同的网络有各种不同的攻击手段,其中拒绝服务(DoS)攻击是一种常见的网络攻击手段,攻击者利用可达到受害者的机器对受害者发送大量流量使得受害者的正常工作受阻,达到攻击的目标。其中,受害者可以是网络服务器、网络链接或路由器、ISP等等。几乎所有互联网服务都容易受到拒绝服务攻击。攻击者往往会感染足够多的终端主机,使很多终端主机变为可控制的僵尸机,利用足够多的散布整个网络的僵尸机对受害者进行拒绝服务攻击,这种攻击方法被称为分布式拒绝服务(DDos)攻击。

拒绝服务攻击的种类有很多,包括利用软件漏洞的Ping of death和Teardrop、耗尽应用资源的Fork bomb、耗尽操作系统资源的TCP SYN flood、LAND攻击、HTTP SlowPOST、BlackNurse等[1]。本文要讨论的是低速率分布式拒绝服务(Low-rate DDos)攻击。与普通的DDos攻击最大的区别是,Low-rate DDos攻击不会长时间地发送攻击流量,而是周期性地发送短暂的攻击流量,在2个攻击周期之间不发送任何攻击流量。这样的特性使得Low-rate DDos在统计流量特征中与普通用户的流量区别不明显,较难检测[2]。

Low-rate DDos在实施上也比DDos复杂很多,需要针对攻击的受害者服务特性进行分析,选择合适的攻击周期,达到设定的攻击效果。本文研究的是针对BGP会话的Low-rate DDos。

1 针对BGP会话的低速率分布式拒绝服务攻击原理

根据低速率分布式拒绝服务攻击周期性发送汇聚攻击流量的特性以及BGP会话周期性发送保活包的特性,自然地可以想到如何针对BGP会话进行低速率分布式拒绝服务攻击,其原理包括3个部分,对此可分述如下。

(1)2个自治域在建立BGP会话后,会周期性(holdtime时间通常为120 s)地发送Keepalive包。

(2)如果BGP路由在会话过程中对于一个路由器的连续3个Keepalive包都没有收到,BGP路由会认为会话已经失效,会发送Notification包,表示会话断开,并且向周围的BGP路由发送Update包,更新自治域的互连情况。

(3)使用Low-rate DDos攻击在攻击BGP会话时,在攻击峰值周期时有概率拥塞BGP路由器的接受队列,使得其他BGP路由发送的Keepalive包被丢弃。

综合以上原理,理论上,使用Low-rate DDos攻击对BGP会话的Keepalive包进行阻塞即可打断BGP会话,进而使2个自治域之间的通信受到影响。在应用中实施此攻击时还需要考虑组织DDos攻击流量的方法和攻击参数的确定。

2 模拟攻击研究

由于BGP路由往往是ISP间用于自治域互连的大型路由器,如果在其上进行Low-rate DDos攻击,会使得正常的自治域通信出现问题,因此本文在虚拟的网络环境中对攻击进行模拟,验证其攻击效果。

2.1 虚拟的网络环境

本文使用的虚拟网络环境,包括若干完全可控的僵尸主机Bot和若干建立BGP会话互连的BGP路由。整个网络由若干个自治域构成,每个自治域包括若干僵尸主机Bot和BGP路由Router,自治域之间通过BGO路由互连,使得整个网络互通。

2.2 僵尸机调度的方法

僵尸机调度方法如图1所示,欲攻击的BGP连接为Target Link,发送攻击流量f1,f2,…,fn的僵尸机为Bot1,Bot2,…,Botn。给僵尸机下达攻击命令的控制机为Controller C。

调度僵尸机攻击过程可阐释论述如下。

(1)选取控制机。控制机应该满足每个僵尸机都有到达控制机C的路径,而且每条路径都经过被攻击连接Target Link,经过Target Link后通过同样的路径Route 2,…,RouteZ到达控制机。这是最优的控制机选取,因为攻击机从被攻击链路到达控制机的路径相同,时钟同步时只需考虑攻击机到被攻击链路的网络延迟。

图1 僵尸机调度方法

(2)时钟同步。为了保证僵尸机的攻击流量同时到达被攻击链路,需要进行时钟同步。控制机对每台僵尸机发送时钟同步请求,僵尸机返回其当前时间Tsi,控制机收到Ts时根据本机当前时间Tri计算时间差,计算公式表示为:

Di=Tri-Tsi,

(1)

将Di发送给僵尸机,每个僵尸机实际的开始时间bot_start_timei=strat_time-Di,其中start_time为控制机发送的开始攻击时间。

(3)环境参数的设定。对于BGP连接之间的BGP协议的keepalive发送间隔、holdtime时间和reconnect时间等参数,以及被攻击链路带宽大小,在攻击前可通过读取配置文件中设定参数来求得。

(4)攻击参数的设定。攻击前从配置文件中读取开始时间、攻击流量、持续时间等参数,以此对僵尸机下达攻击指令。其中,产生攻击流量的方法为组装UDP包。以14字节以太网头,20字节IP包头,8字节UDP包头,32字节数据组装UDP包。使用数据报套接字发包。指定接收方IP地址和端口,开启多个线程,用SOCK_DGRM类型套接字发送UDP包。

在此基础上,还需设定发包速率大小。设定预期发送流量大小为flow,可以计算出发包速率为:

rate=(flow*1 024*1 024)/(8*(42+length)).

(2)

每个线程中循环发包,设定全局变量记录发包数量,每发送一百个包判断当前速率是否达到设定值rate,若达到,此次循环不发送包;未达到,则继续发包。

(5)攻击结果的分析。攻击的同时使用tcpdump抓包,待攻击结束后将抓包结果进行分析,将结果存为日志文件。

2.3 带宽限制

考虑到普通的BGP链路带宽为百兆或千兆带宽,僵尸机汇聚的攻击流量很难达到阻塞BGP链路的目的,所以在模拟实验中对BGP带宽链路进行限制。

本文的虚拟网络带宽限制采用Linux内核Traffic Control中的令牌桶算法。其原理如图2所示,主要有以下要点:

(1)每过1/rs, 桶中增加一个令牌。

(2)桶中最多存放b个令牌,如果桶满了,新放入的令牌会被丢弃。

(3)当一个n字节的数据包到达时,消耗n个令牌,然后发送该数据包。

(4)如果桶中可用令牌小于n,则该数据包将被缓存。

(5)缓存区满后,后续的包会被丢弃。

图2 令牌桶算法

本文在令牌桶算法的实际实施中采用集成tc的tcconfig模块,例如控制端口eth1带宽为1Mb/s的命令为tcset --device eth1 --rate 1 024 K,等价于表1中的Linux流量控制命令。首先在端口eth1上建立htb令牌桶,接着设置令牌速率rate,单位存储cile为1 024 Kbit,缓冲区burst和子缓冲区cburst为12.8 KB,最后设置进出口列表为0.0.0.0/0,表示规则对所有IP地址有效。

表1 流量控制方法

2.4 间隔发送流量

根据Low-rate DDos攻击的原理,模拟攻击对BGP会话采用如图3所示的间隔发送流量的方式。BGP会话在建立连接后会周期性地发送Keepalive包,发送流量的方法即在Keepalive包发送的前后覆盖一段时间进行流量发送。因为模拟攻击时为理想情况,如此一来就可以在BGP路由的端口进行抓包,确定Keepalive包的发送具体时间,根据该时间和holdtime参数设定确定持续发送流量发起的时间和间隔需要的时间。

图3 间隔发送流量

3 发送流量参数确定及模拟攻击结果

在确定虚拟网络以及攻击方法后需要对每个僵尸机开启多少攻击线程,采用多少僵尸机,在哪个攻击范围内有打断BGP连接的可能等参数进行确定,然后使用确定后的攻击参数进行模拟攻击,分析模拟攻击结果。

3.1 僵尸机发送流量

分别设定发送30 Mb/s、50 Mb/s、80 Mb/s、100 Mb/s的流量,用ifstat在接收端口流量日志文件,流量发送控制是否精确。研究结果表明,4种设定攻击流量时的接收端流量确切值与预期偏差不超过1 Mb/s,达到了流量设定控制预期效果。特别地,跨路由发送流量的情况下与直接相连路由发送流量结果相同。

3.2 僵尸机发送流量参数确定

在调度僵尸机发送汇聚流量前,需要确定发送流量参数。首先确定单个僵尸机的攻击流量参数,然后确定同主机多个僵尸机攻击流量汇聚的参数,最后改变汇聚攻击流量和带宽限制确定有可能攻击成功的参数。

(1)单个僵尸机发送流量瓶颈。从1~8增加线程数量(高于8个线程内存占用过多),每个线程永真循环发包,与使用ifstat写日志记录不同线程数下最大发包值,线程从1~8时的最大入口流量如图4所示。由图4中可以看到单个虚拟僵尸机发送最大流量所需的线程数为4。

(2)多个僵尸机汇聚流量。通过多个连接相同BGP路由的僵尸主机,汇聚流量发送到与连接的BGP路由直连的BGP路由器,变化僵尸主机的数量,记录汇聚攻击流量的大小。

多僵尸机汇聚流量的情况如图5所示,改变僵尸机数量,得到不同的僵尸机汇总流量大小,每个结果均为多次测试得到,仿真结果表明4台僵尸机时候达到瓶颈汇聚流量。

图4 不同线程数发送流量

图5 多僵尸机汇聚流量

3.3 间隔发送流量结果

以之前步骤测得的每个僵尸主机开启4个线程,使用4个僵尸主机的实验拓扑,链路带宽从10 Mb/s到100 Mb/s进行变化,攻击流量从40 Mb/s变化到之前测试的瓶颈汇聚流量260 Mb/s,进行攻击测试。每个参数进行10次实验,每次实验时设定最大攻击时间为2 h,2 h内若BGP连接断开则计数加1,进行下一次实验,超过2 h则直接进行下一次实验。

带宽为10 Mb/s、20 Mb/s、40 Mb/s和60 Mb/s时的流量范围实验结果见表2,带宽大于60 Mb/s时与60 Mb/s的实验结果相同。故只有10 Mb/s、20 Mb/s和40 Mb/s有被打断的可能。

表2 发送流量范围实验结果

Tab. 2 Send traffic range experiment results %

带宽 攻击流量4060801001401802202601000303030505040200020020103020400000102010206000000000

得到指导实验参数范围后,在能够打断BGP连接的参数范围内进行实验,每组参数进行10次攻击实验,每次实验攻击中记录BGP数据包,直到BGP连接断开为止,记录BGP连接断开所需的时间。实验结果记录如图6所示。该结果说明测试得能打断的BGP链路带宽为10 Mb/s、20 Mb/s、40 Mb/s。其中,10 Mb/s时可以用100 Mb/s攻击流量打断,其他带宽只能用大于140 Mb/s的攻击流量。大部分成功攻击参数下可以在120 s内打断BGP连接。

图6 不同参数打断所需时间

4 结束语

本文研究了针对BGP会话的低速率分布式拒绝服务攻击,按照低速率分布式拒绝服务攻击周期性攻击的特性,对BGP会话的周期性Keepalive包进行周期性阻断,达到攻击BGP会话的目的,并对此攻击进行模拟。模拟结果说明在对网络进行相应带宽限制的情况下,按照一定攻击流量和频率,低速率分布式拒绝服务攻击可以打断BGP会话。

猜你喜欢

令牌会话线程
5G终端模拟系统随机接入过程的设计与实现
称金块
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
QQ和微信会话话轮及话轮转换特点浅析
用绘画导入英语教学
年龄大小的种种说法
Java的多线程技术探讨
《道教法印令牌探奥》出版发行