焦文欢,冯兴杰
(中国民航大学a.信息网络中心;b.教务处,天津 300300)
随着Internet在全球的迅速发展和各种互联网应用的快速普及,网络已成为人们日常工作、生活中不可或缺的信息承载工具[1]。然而,网络给人们的工作与生活带来便利的同时,其安全问题也日益突出。入侵检测(intrusion detection)技术作为网络信息安全领域的关键技术,对保护网络与系统的安全起到了至关重要的作用[2]。
目前,通过对网络流量进行检测分析来识别入侵仍然是研究的一个热点。基于求解Hurst参数[3]并根据其变化情况来检测异常的方法有效地提高了检测率,但是由于正常的突变流量也会引起Hurst参数的异常变化,从而导致该方法无法区分突变的正常流量与异常流量;另外,直接对报文类型进行统计分析虽然具有一定的有效性,但是在大部分情况下,网络处于正常状态,频繁地对网络报文进行统计分析不仅没必要,而且一定程度上也会影响检测系统的实时性,降低检测效率。
针对以上提出的入侵检测领域存在的不足,本文从对TCP流的检测出发,设计了一种面向TCP流的异常检测模型。由于网络流量的自相似性,首先采用小波法求解自相似参数(即Hurst参数),并根据其变化情况判断是否存在异常流量;如果Hurst差值超过了阈值范围,则根据TCP流的3次握手和4次挥手协议对该时间段的报文类型做进一步的分析,判断TCP报文是否具有完整性,最终准确地判定该流量是否为异常流量。
由于数据流的大规模以及实时性特点,要维护所有流信息需大量内存空间,因此采用Sketch进行数据流概要存储。Sketch概要数据结构是一种高效的信息存储、查询技术,该方法主要是通过哈希函数把报文流信息映射到较小空间进行存储,不用在内存中维护整个流表信息,因此能够很好地适应数据流到达速度快、海量和单遍扫描等特点。Krishnamurthy等人将Sketch用于异常检测并提出一种启发式方法自动设置Sketch的参数[4]。该数据处理技术并不保存整个数据集,仅维护一个远小于其原始规模的概要数据结构,因而能够常驻内存[5]。
为了降低哈希函数的冲突率,现有方法大多采用多函数多空间来处理冲突问题。这里引入具有异或运算的哈希函数[6]来提高随机性,并且为每个哈希函数单独配备一个独立的存储空间,从而可在很少的哈希函数映射下减少哈希冲突,在保证较低冲突率的同时有效地节省存储空间。文献[7]中提出了一种高效的哈希大顶堆算法解决哈希冲突,但是由于该算法需要得到数据流信息出现的先验概率,所以不适合网络流的异常检测。概要数据结构如图1所示。
图1 概要数据结构示意框图Fig.1 Schematic diagram of synopsis data structure
假设 x={xj,j=1,2,…}为一协方差平稳随机序列,即x具有恒定均值μ=E[xj]和有限方差σ2=E[(xjμ)2],其自相关函数
仅与k有关,即r(k)~k-βL1(k),k→∞,其中0<β<1;
对于∀x>0,L1满足
2018年6月15日,在河南省郑州市郑东新区,位于七里河南路与康平路交叉口的宏光意中大厦配楼同文酒店的门前人潮涌动。所有的来宾都满怀期待地迈向二楼,在两侧摆满祝贺花篮的大厅正中是一面墙,墙上呈现河南著名书法家王澄所题的“国学博览馆”五个行楷大字。这一天是宏光集团公司历时5年,由王澄呕心沥血、殚精竭虑担纲策划,开创国学博览馆开馆揭幕的大喜之日。
H被称为Hurst参数,反映网络流量长相关以及自相似性的重要指标,能很好地反映自相似度。大量研究表明,正常网络流量具有自相似性,而异常流量的产生会对网络流量的自相似性产生明显影响。为此,通过持续监测网络流量的Hurst参数,并分析其变化即可判定当前网络是否发生了异常。
常用的Hurst参数求解方法有:小波分析法、R/S分析法、Variance-time法、残差方差法等。在小波分析法中,主要有3种利用小波分析求解Hurst值的方法:能量法、谱估计法和小波系数方差法,都是基于能量的方法来分析自相似信号。本文将使用小波系数方差法求解Hurst参数,其基本思想是对自相似信号进行离散小波变换后的小波系数求方差,然后根据该方差与小波分解尺度的关系求出Hurst参数值。小波系数方差法的算法实现过程可参考文献[8]。
TCP报文完整性是指通过TCP 3次握手建立连接和4次挥手断开连接时产生的若干种TCP报文必须满足TCP协议的数量比例关系,否则TCP建立连接或者断开连接就是不完整的,而恶意的网络入侵是造成TCP报文不完整的重要原因。
在研究中发现,通过Hurst指数法可以判断大部分的异常网络流量,但对一些突变的正常流量,仍被视为异常流量,这将增加模型的误报率。为了解决该问题,需对经过Hurst指数判断并且被认为是异常的流量做进一步分析。由于网络中大约有90%的流量为传输控制协议(TCP)流,这使得TCP流的变化情况在很大程度上主导了网络流量的变化,因此为了更准确地掌握网络流量的状态,本文将根据TCP协议的特点,从TCP建立连接、拆除连接过程中报文的完整性出发,进一步判断该流量是否是异常流量。
在获取TCP报文概要计数之后,可采用多种方法来分析判断TCP报文是否完整。常用的方法是进行数值比较,如比较SYN报文量是否与SYN+ACK报文量匹配、RST和FIN数量是否存在异常等。由于实际网络里会存在服务质量问题或不正确的用户行为,这会导致网络存在一些不完整的TCP连接,因而实际的TCP各类报文间的数量关系会比理论情况更为复杂。对于完整的TCP流,本文在一个观测时间段内,采用以下约束对报文数量进行检测分析
本文提出的异常检测模型主要分为2个部分:数据流的概要存储部分和异常入侵检测部分。模型的具体实现流程,如图2所示。
图2 面向TCP流的异常检测模型Fig.2 Anomaly detection model oriented to TCP flow
为了实现数据流的概要存储,采用哈希函数DEK、JS等将IP字符串哈希到相应的哈希桶内,并将字符串添加到相应的键值链表中,具体流程如图3所示。
图3 概要数据结构生成过程Fig.3 Formation of synopsis data structure
步骤如下:
2)将该TCP报文的信息字符串添加到对应Key值后面的List中,作为异常地址的溯源。重复1)、2)步直到一个观测单位时间结束。
3)将概要映射的结果输出到异常检测部分,作为小波系数方差法求解Hurst参数和进行TCP报文完整性验证的数据源。
4)清空该概要数据结构,进行下一个时间段的概要映射。
模型的异常检测部分,如图4所示。
图4 异常检测部分流程图Fig.4 Anomaly detection flow chart
步骤如下:
1)对从概要数据结构中读取的统计数据做小波系数方差分析,求得在该时间段上的自相似Hurst参数。
2)计算当前Hurst参数值与同时间段正常网络流量的Hurst参数差值,如果该差值没有超过阈值范围,则认为该时间段的流量为正常流量,返回第1)步;如果该差值超过了阈值范围,则对该时间段的SYN、SYN+ACK、FIN+ACK等报文进行完整性验证分析,进一步判断此时的TCP报文是否完整。
3)如果根据TCP报文的类型判断得出该时间段的TCP报文完整,则可认定,虽然该时间段的网络流量发生很大变化,但主要是由于突变的正常流量引起的,不应当视为异常流量,返回第1)步;如果TCP报文的内容显示TCP连接极不完整,则可断定此时出现了异常流量,应当采取有效措施阻止异常的继续发生。
实验一 基于TCP流的异常检测中,所采用的数据集应体现出随时间变化的特点,以便能够更准确地对入侵检测模型进行评价,因此本次实验选择DARPA 1999数据集[9]作为测试集。DARPA数据集包含7个星期网络流量的tcpdump数据,经过处理大约有500万条连接记录。数据中包含4种主要的攻击类型:①DoS,拒绝服务攻击;②R2L,对远程主机的未授权的访问;③U2R,对本地超级用户权限的未授权的访问;④Probe,扫描与探测行为。
首先,实验选用DARPA数据集中第1周第1天的正常数据进行分析。为了实现小波系数的快速提取,实验以10 s为单位统计各TCP报文数量,以100 s(即10个统计单位)为一个时间窗计算Hurst值。另外,在小波系数方差法求Hurst参数时,采用误差较小的Db3[8]小波进行Hurst参数的计算。Hurst值求解结果,如图5所示。
图5 正常网络流量的Hurst参数曲线Fig.5 Hurst line of normal network flow
其次,实验对第4周星期一的异常数据集做检测分析。由于该数据集比较大,大约1 400 000个报文。为此,截取其中80 min左右的Trace数据进行分析,仍以10 s为单位统计TCP报文数量,以100 s为一个时间窗计算Hurst值,并将检测数据的Hurst参数绘制,如图6所示。
图6 检测数据的Hurst参数曲线Fig.6 Hurst line of test data
实验将阈值定为0.2,即如果正常流量的Hurst参数与检测流量的Hurst参数差值小于0.2,则该时间段的网络流量为正常流量;否则,应当对该时段的TCP报文完整性做进一步的验证。验证结果如下:
表1第1列的内容为异常时刻点,是由基于Hurst参数的异常检测模型检测出来的,其中包含了大部分的正确检测结果和小部分的误报时刻点。后面的列显示的是TCP各类报文的数量统计值。标有记号的时刻点是进行TCP报文完整性验证后得到新的异常时刻点。
表1 TCP报文完整性验证结果Tab.1 Result of TCP message integrity
通过建模验证实验得出,对一些超过阈值的准异常点,经过报文完整性验证后发现其仍然不符合TCP连接和断开时的协议规则,可以断定这些时间点存在异常流量,很可能是网络遭到入侵后的反应;而对于另外一些时间点,虽然经过网络自相似检测以后被确认为异常点,但是从TCP协议的角度分析,其满足正常通信时报文的完整性,很可能是突变的正常流量或是其他原因造成的正常流量。因此,这些流量不应当被视为异常流量。
从实验的最终结果可以发现,通过采用TCP报文完整性验证的方法,模型在不显著提高算法时间复杂度的基础上,检测率相比基于自相似指数模型有了明显的提高。
实验二 为了对模型做进一步的验证,实验选用真实的网络数据流进行异常检测。模型通过Sniffer软件从校园网服务器上采集流量数据,集中在星期一的早上网络繁忙时进行,仍采用10 s为一个统计单位,持续监测30 min。检测数据集包含2个高峰正常流量,异常流量部分使用模拟软件向测试服务器发起DOS攻击形成,攻击共有8次,每次2 min。对该测试数据集采用上述相同的步骤进行TCP流的异常检测分析,最后与小波Hurst参数模型进行比较,结果如表2所示。
表2 实验结果对比Tab.2 Comparision of two experiments
从表2可以看出,模型在检测异常流量时能正确地区分突变正常流量和异常流量,有效地降低误报率,准确率较高。
通过2组实验验证了本文模型的有效性,分别从异常流量部分和突变正常流量部分进行了对比验证。实验结果进一步说明,本方法在对TCP流进行异常检测时能有效地区分突变正常流量和异常流量。
通过对网络流量的检测分析,讨论了一种面向TCP流的异常检测方法,该方法能够在有限系统资源的情况下,以较快的速度保存与维护网络流的概要统计信息,并利用该统计信息实现对网络异常和入侵行为的检测,改善了以往模型直接对数据流进行统计分析而导致检测效率低的状况。由于该模型根据网络流量的自相似性和基于TCP建立连接与断开连接时报文完整性来检测TCP流是否出现异常,因此在保证较高运算效率的同时,有效解决了对突变正常流量与异常流量进行区分的问题,降低了模型的误检率。
理论分析与实验验证的结果显示,该方法能够有效地检测DDoS、扫描等攻击行为,并且具有较高的检测率和较低的误检率,因此能够较好地应用于网络异常检测。
[1]肖志新,杨岳湘,杨 霖.基于小波技术的网络异常流量检测与实现[J].计算机科学,2006,33(10):116-118.
[2]俞 研,郭山清,黄 皓.基于数据流的异常入侵检测[J].计算机科学,2007,34(5):66-71.
[3]张小明,许晓东,朱士瑞.基于Hurst指数方差分析的DDoS攻击检测方法[J].计算机工程,2008,34(14):149-151.
[4]KRISHNAMURTHY B,SEN S,ZHANG Y,et al.Sketch-Based Change Detection:Methods,Evaluation,and Applications[C]//Proc of the ACM SIGCOMM Internet Measurement Conf.New York:ACM Press,2003:234-247.
[5]金澈清,钱卫宁,周傲英.流数据分析与管理综述[J].软件学报,2004,15(8):1172-1180.
[6]ARASH PARTOW.General Purpose Hash Function Algorithms[EB/OL].[2012-07-01].http://www.partow.net.
[7]张朝霞,刘耀军.有效的哈希冲突解决办法[J].计算机应用,2010,30(1):2965-3004.
[8]任勋益,王汝传,王海艳,等.基于自相似检测DDOS攻击的小波选择[J].南京航空航天大学学报,2007,39(5):588-592.
[9]DARPA.DARPA 1999 Intrusion Detection Evaluation[EB/OL].[2013-06-09].http://www.ll.mit.edu/mission/communications/cyber/CSTcorpora/ideval/data/1999data.html.