微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 一种可靠检测低速率DDoS攻击的异常检测系统

一种可靠检测低速率DDoS攻击的异常检测系统

时间:12-01 来源:互联网 点击:

引 言

现代社会对计算机网络(如互联网)的依赖性愈来愈强,从而,网络安全的重要性不言而喻。在网络安全方面,检测分布式拒绝服务攻击(Distributed Denialof Service,DDoS)一直是重要研究内容。在入侵检测方面有两类系统:基于主机的入侵检测系统(IDS)和基于网络的IDS。基于网络的IDS以网络流量为检测对象,它又可分为两类:误用检测和异常检测。误用检测基于以往攻击事件的特征库,故误用检测的IDS能准确检测旧式攻击。误用检测对新变种的DDoS攻击显得无力,因为新变种的DDoS攻击的新特征尚不在特征库内,故可以百分之百地逃避误用检测。本文工作属异常检测。

异常检测适合新变种的DDoS攻击。但是,若把异常流量判别为正常则出现漏报。对于一次报警,把异常流量识别为异常的概率有多大?漏报概率有多大?这些是异常检测的可靠报警问题,也是异常检测的棘手问题。所谓可靠报警,是指所采用的异常检测器在原理上就具备那样的特性,用户可预先设定报警概率和漏报概率。可靠报警是该文研究的IDS的主要特点。

传统DDoS攻击的基本特点是数据速率特别高。故IDS常按高速率检测,包括以前的工作。近年来,出现了一种低速率DDoS攻击,其目的是逃避常规IDS。因此,如何可靠地检测低速率DDoS攻击成了有意义的研究。本文提出一种可靠检测低速率DDoS攻击的IDS。它由三部分组成:网络流量的实时采集模块;检测决策模块;报警模块。整个系统,其输入是网络流量,输出是就异常流量发出的报警信号。该系统的主要特点是能按用户指定的检测概率做出决策和报警。

1低速率DDoS攻击的特点

这里讨论的低速率攻击,是攻击者以TCP协议为目标,通过RTO计时器,在链接中制造运行中断,从而导致TCP控制机构拥塞。进行攻击的数据流是具有一定周期的方波。攻击流量的速率低,却有高的攻击效率。

TCP协议中,RTO是个重要的值。采用RTO是为了保证网络有足够的时间从拥塞中恢复过来。如果RTO过大,出现报文丢失,TCP需要等待过长的时间才能重传报文,增加了TCP报文传输时间。如果RTO过小,会引起不必要的重传,同时会错误地触发TCP的超时重传算法,降低了TCP的发送速率,从而降低了TCP的性能。下面介绍攻击的原理。

设TCP的RTO值为1 s,攻击者在0时刻制造了一个运行中断。TCP发送者要等待1 s重传并且将RTO加倍。如果攻击者在1 s和RTT间又制造了一个运行中断,将迫使TCP再等2 s,攻击者可以利用KAM算法,在3 s,7 s,15 s,…时通过制造相似的运行中断。如此,就能用很低的平均速率进行攻击,使服务器对TCP流拒绝服务。可见,若DDoS周期和RTO相近,则TCP会一直发生丢包事件。于是,结束超时重传的状态就一直不变,最终导致吞吐量几乎为0。因此,低速率攻击的关键就是攻击者能否对RTO进行准确预测。另外,脉冲持续时间长短也很重要。文献[5]指出,当l=maxi{RTTi}且T=RTO时,攻击效率很高。

简言之,和高速率攻击相比,低速率DDoS攻击的一个最大特点就是集中在某一小时间范围内发送恶意数据,从而使得攻击数据流的平均速率比较小,以逃避常规IDS的检测。

2 IDS结构及功能

系统结构与功能

本文讨论的IDS主要由三个模块组成,各模块的名称及功能如下:

数据采集与萃取模块 此模块是基于LIBPCAP函数库实现的。封装为C++类,可方便嵌入入侵检测系统,作为前端流量采集与信息萃取模块。考虑到IDS是一类实时系统,该模块的设计原则是所测流量足够后面的异常检测用即可。就本文讲述的系统,信息萃取是从测得的数据包中提取包长度信息。

攻击识别与决策模块 由用户按设定的识别概率和漏报概率做异常流量检测。

报警模块 根据用户设定的识别概率和漏报概率对发生的攻击采取多种方式进行报警。系统结构如图1所示。下面分别描述各模块的结构。

2.2数据采集与萃取模块

网络数据包捕获

利用LIBPCAP函数库实现网络数据包的捕获,该库所提供的主要功能函数有(见LIBPCAP手册):

pcap_open_live():获取捕获数据包的描述符,用于查看网络数据包的传输;

pcap_lookupdev():返回供pcap_open_live()使用的设备指针;

pcap_open_offline():打开数据包文件以供离线分析;

pcap_dump_open():打开文件以供写入数据包;

pcap_setfilter():设置数据包过滤器程序;

pcap_loop():启动数据包捕获。

数据包捕获过程如图2所示。



2.2.2 数据包信息萃取

进行了包捕获之后,需要将捕获到的数据包通过回调函数进行数据包的解析。因此在对回调函数进行封装时,必须借助一解析流程,实现回调函数和线程类间的数据共享,再根据TCP/IP协议族层次结构图及各层数据包格式的定义,对各层加入的头和控制信息进行解封装。详细过程见文献[9]。图3是该解析流程的过程。


上述实时采集及信息萃取模块采用基于GUI的可重用设计方法。其流量解析结果以GUI界面输出,进行对入侵检测系统的接口操作,实现下一模块:攻击识别与决策的数据包采集与萃取的预处理过程。

2.3攻击识别与决策模块

此模块的关键问题有两个:一是根据识别方法选择合适的检测特征;另一是如何实现可靠识别。可靠识别的意思是指,用户可事先设定所需要的识别概率和漏报概率。

设x(t)为到达流量函数。其最小流量约束函数记做f(I)(I>0)。则在区间[0,I]内,到达的累积流量不会小于f(I)=min[x(t+I)-x(t)]。在时间区间[(n-1)I,nI](n=1,2,…,N)内,f(I,n)就是该区间内的最小流量约束函数。它是关于n的随机序列。把各区间[(n-1)I,nI]都分成M段。每段长度为L。对第m段(m=1,2,…,M),取平均值E[f(I,n)]m。则当M>10时,E[f(I,n)]m符合高斯分布



设置信系数为1-a1,则统计下限为:



于是,得到模板η=E[f(I,n)]。令阈值Vt=bf(M,α1),则低速率检测概率和丢失概率分别为:



由此,用户可以预先设置α1值来得到给定的检测概率和漏报概率。当η≥Vl时,视数据流为正常。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top