APP下载

基于分类与特征匹配的应用层协议识别方法

2012-07-25刘秋菊刘书伦冯艳茹

计算机工程与设计 2012年7期
关键词:应用层数据流数据包

刘秋菊,刘书伦,冯艳茹

(1.重庆大学 自动化学院,重庆400044;2.济源职业技术学院 信息工程系,河南 济源459000)

0 引 言

网络的迅速发展和应用使得信息交流更加便捷,但同时也带来了日益严重的网络安全问题,越来越多的用户对信息的安全性提出了更高的要求,人们也越来越关注内网的安全。传统的防火墙、入侵检测等技术,只能抵御网络外部的攻击,内部网络安全成为了一个亟待解决的问题,网络安全监控就是在这种情况下应运而生的。网络安全监控通过对网络流量的应用层数据进行监测与分析,识别出各种不同的应用层数据,根据不同的数据采取不同的安全策略,从而在不影响网络开放性和灵活性的同时,保证网络内部敏感数据信息的安全。

在实施网络安全监控过程中,只有首先确认目标网络流量所采用的应用层协议,然后才能对数据流进行分析,进而获取协议存在的漏洞或协议传输的内容[1]。因此,应用层协议的识别是网络安全监控的基础技术,也是实现安全监控的前提条件。正是由于协议识别在安全监控中的重要地位,应用层协议识别法得到不断的开发和研究,本文在对传统协议识别分析的基础上,结合安全监控中对于识别效率要求比较高的特点,提出了一种基于分类和特征匹配的应用层协议识别法。

1 传统的应用层协议识别法

1.1 基于端口协议识别法

基于端口协议识别法是指根据每个应用层协议在IANA中注册的端口号来对协议进行标识的一种算法[2]。应用层协议识别的对象是流而不是单个报文,如果网络中的某个数据流使用的端口号为25或110,则根据基于端口协议识别就将其标记为邮件传输流,若端口号为80或8080则为Web流。该方法实现简单,消耗系统资源少,对于一些使用固定端口的协议识别率比较高,但对于采用随机端口通信的应用层协议则无能为力[3]。随着研究人员对应用层协议的不断研究与探索,新的应用层协议不断出现,这些新的应用层协议不在IANA中注册,导致基于端口协议识别法失效。正因如此,基于端口协议识别算法的正确率逐渐降低,其错误率高于正确率。该算法计算简单,所需信息量较少,其时间复杂度和空间复杂度是所有应用层协议识别算法中最低的。

1.2 基于负载协议识别法

基于负载协议识别法主要是通过检查数据流中每个报文TCP首部之后的负载数据,将负载数据与事先分析的应用层协议特征相匹配,如果匹配成功,则标记为相应的协议[4-6]。因此,从理论上说,只要能够分析协议规范足够多,并且能够提取到参与交互的报文的足够多协议的特征,通过该类算法就可以识别所有的应用层协议。基于负载协议识别法对协议的识别准确率比较高,但是其识别是建立在对整个数据流应用层数据负载的匹配基础之上的,其时空复杂度是目前所有应用层协议识别算法中最高的。

1.3 基于关键字协议识别法

基于关键字协议识别法是指对检测到的每一个数据包按照关键字进行搜索,搜索到的关键字需要与在应用层协议中出现的关键字进行精确匹配,具有很高的检测率和很低的误报率[7]。但是该方法对关键字匹配算法的效率要求很高,而且为了识别后续的数据流需要持续保持网络连接。

2 基于分类与特征匹配的应用层协议识别法

由于应用层协议种类繁多,并且随着互联网的不断发展,新的应用层协议不断地加入进来,采用传统的识别技术已经很难满足实际应用的需要,为了更加快速的识别现有应用层协议[8],本文提出了一个基于分类与特征匹配的应用层协议识别方案。

2.1 识别方案

基于分类与特征匹配的应用层协议识别系统主要包括分类器和识别器两大组件。该协议识别流程为:数据流首先经过分类器的粗粒度分类,然后进入识别器,识别器针对不同的数据流采取不同的协议特征进行匹配,从而实现应用层协议的识别。具体来说,分类器是依据数据流的一些基本特征和端口对应表来对其进行分类;识别器是在数据流分类之后,结合协议特征库进行匹配查询,对不同种类的数据流进行不同协议特征的识别。其中,协议特征的选取首先要对待识别协议进行详细的分析,然后选取其在交互过程中不同于其他任何协议的字段作为该协议的特征。基于分类与特征匹配的应用层协议识别流程图如图1所示。

图1 协议识别流程

2.2 数据流分类

对网络数据流进行分类可以通过使用分类器来实现,由于本次网络安全监控的重点是对网络传输文件内容的监控,所以只需要识别用于文件传输的协议,通过对几十种应用层协议的分析,本文将目前能用于文件传输的应用层协议,大致分为3类,见表1。

表1 协议类型与应用层协议对应

在分类中要考虑的问题是:对某个数据流来说,从获得其中第一段数据到该流所承载的协议过程全部结束这段时间内,分类器应抽取哪些相关信息来进行处理,然后才可以对数据流进行抽象,这些抽象就决定了一个数据流所归属的类别。为此,我们定义如下基本元素:

·M= {m0,m1,m2}—数据流类别集合,m0为传统经典类,m1表示P2P类,m2为其他类。

·SrcIP= {srcip1,srcip2,…srcipn}表 示 源 IP集合。

·DstIP= {dstip1,dstip2,…dstipn}为 目 的 IP集合。

·SrcPort= {srcportn|1≦srcportn≦65535}表示源端口集合。

·DstPort= {dstportn|1≦dstportn≦65535}为目的端口集合。

·P= {SrcIP×DstIP×SrcPort×DstPort}表示数据包集合,以Pi= {srcipi,dstipi,srcporti,dstporti}表示IP地址为srcipi的主机使用其srcporti端口将数据包Pi传递给IP地址为dstipi的dstporti端口。

·PT= {25,110,21,80…}为传统经典协议端口集合。

·F= {fsrc(srcipn,srcportn),fdst(dstipn,dstportn)}为函数集合,fsrc(srcipn,srcportn)表示源IP地址和源端口分别为srcipn和srcportn的数据包的个数,fdst(dstipn,dstportn)表示表示目的IP地址和目的端口分别为dstipn和dstportn的数据包的个数。

·数据流S是一段长度为有限整字节数的二进制数据,它由有限个长度一定的数据包P构成。

以上是一些基本变量与函数的定义,下面讨论分类的过程。

对于大部分P2P主机来说,当其利用P2P进行下载时,它是从多个资源主机中去下载所需要的数据,即采用一个端口与多个主机的端口进行通信和数据传输。因此数据流中会出现单个 {dstipn,dstportn}对应多个 {srcipn,srcportn}的现象[9],而对于大部分协议来讲,则没有这样的特征,因此当数据流中出现这样的特征时,就基本可以判定该流为P2P数据流,因此有以下判定规则。

规则1:当数据流S中的数据包Pi,fdst(dstipn,dstportn)与fsrc(srcipn,srcportn)两值之差大于一个所规定的阈值,该数据流是 P2P数据流[10-12]。

通过实验验证,当阈值大于10时,利用规则1进行分类的准确率可以达到90%。

对于传统经典类协议的分类,虽然目前出现的很多应用层协议都已经不在IANA中注册其端口,但是仍然有很多协议采用固定的端口通信。对于这一部分协议,本文仍然可以采用一定的技术手段找出其通信端口,因此有以下判定规则:

规则2:数据流S是传统经典数据流,指数据流S不是P2P数据流,但对于其数据包Pi,有srcporti∈PT或者dstporti∈PT。

由规则2得知,通过端口对应表的匹配可以实现对端口固定协议数据流的分流,同时本文也将这一类协议归结为传统经典类协议,与HTTP、FTP等协议一起在后续的特征匹配中进行更细粒度的识别。

规则3:数据流S是其他类数据流,当数据流既不是P2P数据流又不是传统经典数据流时,则S为其他数据流。

由以上3个判定规则可知,可以在只分析传输层协议头的前提下,将数据流进行一个粗粒度的分类,从而为后续的特征识别减少工作量。

2.3 基于特征的识别

特征识别的实现主要是在提取待识别协议的特征之后,将这些特征归结为相应的特征类。因此,当数据流经过分类后,基于特征的识别就可以根据不同的数据流采取不同的特征类进行匹配,对于传统的特征匹配与经过分类后的特征匹配,其流程分别如图2所示。由图可知,经过分类后再进行协议特征的匹配,由于缩小了特征匹配的范围,因此可以提高特征识别的速度。在特征串的选取方面,本文在文献 [4]的基础上进行了改进,使得识别更加精确。

图2 分类特征匹配与传统特征匹配流程

本文主要增加了对Gnutella协议的识别,虽然Gnutella协议完全使用HTTP规范进行文件的传输,但是通过对Gnutella协议流的分析与监测,发现如果待检测数据流为Gnutella流,那么:

(1)紧跟在TCP文件头之后的负载数据中的第一个字符串为 ‘GNUTELLA’、‘GET’或者是 ‘HTTP’;

(2)如果 (1)中所描述的字符串不是 ‘GNUTELLA’,那么在后面的负载数据中肯定会有如下的字符串出现:

User-Agent:<Name>

UserAgent:<Name>

Server:<Name>

其中<Name>为如下字符集中的一个成员:

{LimeWire, BearShare, Gnucleus, MorpheusOS,XoloX,MorpheusPE,gtkgnutella,Acquistion, Mutella-0.4.1, Qtella, AquaLime, NapShare,Comeback, Go,PHEX, SwapNut, Mutella-0.4.0, Shareaza, Mutella-0.3.9b,Morpheus,FreeWire,Openext, Mutella-0.3.3,Phex}

因此只要将该字符集加入到协议特征库中作为P2P类的特征即可以识别出Gnutella协议。

3 实验设计及分析

3.1 实验设计

利用以上分析方法,进行对比实验来验证方法的性能。本次实验采用的协议为8种国内常用的应用层协议,用来进行算法识别,实验分别从准确率和执行效率两方面进行验证,分别与基于端口识别法和文献 [4]中所提方法进行比较,实验采用的数据为校园网上的数据采集器获取的网络流量数据,比较的总报文数为11.0G。

3.2 结果分析

从对8种常用的应用层协议的识别正确率上比较,结果如图3所示。从图中可以明确地看到,基于端口识别法对BT、eDonkey和Gnutella这3种P2P协议几乎一个都没有识别出来,识别正确率几乎为零,说明端口识别法对于P2P协议的识别不能仅仅依赖于端口进行判定。而特征串匹配的方法对于HTTP流量的识别要高于本文所提出的识别法。

图3 识别的正确率比较结果

根据分析比较,特征串匹配法对HTTP流量的识别与本文所提方法对HTTP流量的识别数量的差,与本文所提方法对Gnutella协议的识别比较接近,可以由此推断出文献 [4]中所提的特征串匹配方法是把Gnutella协议流归结为HTTP流量,而文中所提方法是先进行分类,然后把Gnutella协议划分为P2P类,再结合特征库对Gnutella协议进行识别,由此可以看出文中所提方法在对Gnutella协议的识别上明显优于文献 [4]的特征串匹配法。

从识别效率上进行比较,结果见表2。从表中可以看出,特征串匹配法及本文所提方法在空间及时间消耗上均高于端口识别法,而本文所提方法要高于特征串匹配法。因为本次设置的实验环境是在局域网环境中进行的,并且协议的数量以及协议流的特征串在负载中的位置基本是固定的,因此不管是本文所提方法还是直接进行文献 [4]中所提的特征串匹配,其所消耗的时间都不会太大。但是,如果在广域网中进行实验,随着协议特征串的不断增加,本文提出的这种识别方法在时间复杂度上会越来越小。

表2 识别效率的比较结果

4 结束语

本文通过对传统应用层协议优缺点的分析,同时结合数据流分类思想提出了一种新型的协议识别方法。该方法首先对待识别数据流进行一个粗粒度的分类,然后再针对不同的分类采取不同的特征匹配。经过实验测试证明,本文提出的方法在识别的准确率上要高于基于端口识别法,而在执行效率上则要高于基于特征串匹配识别法。但该识别法的不足之处在于没有涵盖所有的应用层协议,如何尽可能多的涵盖应用层协议,以便更准确地获取应用层协议的特征数据,进而提高应用层协议识别的正确率和效率,这也是下一步需要重点解决的问题所在。

[1]Network ICE.Protocol analysis and command parsing vs.pattern matching in intrusion detection systems [EB/OL].http://www.chineselinuxuniversity.net/courses/netsec/articles/3114.shtml,2011.

[2]IANA [S].http://www.iana.org/assignments/port-numbers(RFC 6335),2011.

[3]WANG Jie,SHI Chenghui.Dynamic application layer protocol identification program based on regular expressions [J].Computer Engineering and Applications,2010,46 (18):103-106(in Chinese).[王杰,石成辉.基于正则表达式的动态应用层协议识别方案 [J].计算机工程与应用,2010,46 (18):103-106.]

[4]CHEN Liang,GONG Jian,XU Xuan.Identification of application-level protocols using characteristic [J].Computer Engineering and Applications,2006,42 (24):16-19 (in Chinese). [陈亮,龚俭,徐选.基于特征串的应用层协议识别[J].计算机工程与应用,2006,42 (24):16-19.]

[5]GE Yusen.Study and implementation of IDS based on application layer protocol identification [D].Chongqing:Thesis for Master Degree of Chongqing University,2008:30-32 (in Chinese). [葛玉森.基于应用层协议识别的IDS研究与实现[D].重庆:重庆大学硕士论文,2008:30-32.]

[6]LIU Yuanxun,XU Qiuliang,YUN Xiaochun.Research on IDS-faced general-purpose application-level protocol identification technology [J].Journal of Shandong University (Engineering Science),2007,37 (1):65-69 (in Chinese). [刘元勋,徐秋亮,云晓春.面向入侵检测系统的通用应用层协议识别技术研究 [J].山东大学学报 (工学版),2007,37 (1):65-69.]

[7]XIE Bolin,YU Shunzheng.Application layer anomaly detection based on application layer protocols’keyword sequences[J].Journal of Computer Research and Development,2011,48 (1):159-168 (in Chinese). [谢柏林,余顺争.基于应用层协议关键词序列的应用层异常检测方法 [J].计算机研究与发展,2011,48 (1):159-168.]

[8]MU Qiao.A suite of precise and efficient analyzing techniques for application protocols [J].Computer Engineering and Science,2010,32 (8):39-45 (in Chinese). [牟乔.准确高效的应用层协议分析识别方法 [J].计算机工程与科学,2010,32 (8):39-45.]

[9]LIN Zhenbiao.Research on key technologies of file networkleakage prevention based on data stream analysis [D].Zhengzhou:Thesis for Master Degree of The PLA Information Engineering University,2009:20-23 (in Chinese). [林臻彪.基于数据流分析的防文件网络泄露关键技术研究 [D].郑州:解放军信息工程大学硕士论文,2009:20-23.]

[10]TAN Wei,WU Jian.P2Pclassification using semi-supervised learning [J].Computer Engineering and Design,2009,30(2):291-293 (in Chinese). [谭炜,吴健.基于半监督学习的P2P协议识别 [J].计算机工程与设计,2009,30 (2):291-293.]

[11]ZHANG Shun,CHEN Xingshu,DU Min,et al.Method of P2Ptraffic identification based on immune-PSO [J].Computer Engineering and Design,2011,32 (10):3301-3304(in Chinese).[张顺,陈兴蜀,杜敏,等.基于免疫粒子群的P2P协议识别方法 [J].计算机工程与设计,2011,32(10):3301-3304.]

[12]SEN S,Spatscheck O,Wang D.Accurate,Scalable in-network identification of P2Ptraffic using application signatures[C].Proceedings of the 13th International Conference on World Wide Web.NY:ACM Press,2007:512-521.

猜你喜欢

应用层数据流数据包
二维隐蔽时间信道构建的研究*
汽车维修数据流基础(上)
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
汽车维修数据流基础(下)
C#串口高效可靠的接收方案设计
基于数据流特性的MPTCP数据流调度算法研究
基于分级保护的OA系统应用层访问控制研究
物联网技术在信息机房制冷系统中的应用
北医三院 数据流疏通就诊量
Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair