一种应用层协议特征的识别方法

文档序号:7722807阅读:209来源:国知局

专利名称::一种应用层协议特征的识别方法
技术领域
:本发明属于互联网
技术领域
,具体地说,是涉及一种对应用层的协议特征进行识别的系统和方法。
背景技术
:随着互联网的逐步发展,网上用户和业务流量在不断增长,除传统数据业务外,P2P、网络游戏、IPTV等新兴业务占用了互联网的大部分带宽,一方面使得运营商的服务质量出现问题,另一方面也使得运营商的基础网络建设陷入了"拥塞_扩容_再拥塞"的非正常局面,盈利能力相应降低。在同一网络内,如果某些用户严重占用带宽进行网游、BT下载等活动,就会影响别人对网络资源的正常使用,或者对他人的工作造成影响。毕竟现在互联网的发展,已经使很多工作都要求在网络上交互和完成。应用层软件造成的带宽拥塞问题已经引起了中小型企业,多分支机构企业和网络运营商的注意,而他们就是促使网络带宽产品不断发展的最大推动者。随着市场的不断发展,网络带宽控制产品具有极大的市场潜力,而且市场份额也越来越大。目前,国内的主要带宽管理和流量控制产品包括Panabit、P2P终结者、聚生网管等。但是,这些产品只能从网络流量控制方面给用户提供流量控制方面的应用。当然普通用户也不会关心其内部的识别原理和方法,更不用说应用层的协议特征了。但另一方面,一些应用和分析应用层协议的企业和公司,提出了分析应用层协议和获取相应协议特征的需求,而现有的网络流量控制产品只提供了流量控制的功能,并没有提供应用层协议提取和分析功能的方法和接口。而且如果聘请专门人员手动分析应用层协议特征,将会影响工作效率和进度,并给企业和公司带来人力资源的负担。当前,最流行的流量监测技术为DPI(De印PacketInspection)深度包检测技术,相对于传统的基于端口、协议类型的流量检测技术,DPI增加了应用层分析功能,是一种基于应用层的流量检测和控制技术,它通过深入读取IP包载荷的内容来对0SI7层协议中的应用层信息进行重组,从而得到整个应用的内容,然后按照系统定义的管理策略对流量进行整形操作,通过识别各种应用层的内容达到高效地识别出网络上的各种应用的目的。数据挖掘技术作为一种数据信息处理关键技术,其主要特点是对数据库中的海量数据进行抽取、转换、分析和其他模型化处理,从中提取关键性和决策性的数据。将数据挖掘技术运用到网络流量分析,在极度膨胀地网络带宽需求中,根据用户的网络带宽使用情况、实时地对带宽进行分配,从占据带宽重要比重的应用层软件中提取和挖掘出应用层协议和软件的重要识别特征,以分析出影响网络带宽的软件和用户,具有重大的意义。很多学者从数据挖掘的角度对DPI技术进行了理论和科学实验研究。但是,随着网络流量分析和特征提取工程应用需求的增加,对理论研究转换成实际工程应用提出了市场需求。
发明内容本发明的目的在于提供一种适于实际工程应用的应用层协议特征识别方法,以克服现有应用层协议特征识别在工程应用中的不足,提高协议特征识别的准确率和有效性。为解决上述技术问题,本发明采用以下技术方案予以实现—种应用层协议特征的识别方法,包括以下步骤(1)捕获待监听的流量数据包,并对捕获的网络流量进行上行网络流量和下行网络流量的分流;(2)对分流后的网络流量进行预处理,去除上行网络流量和下行网络流量中的每一个流量数据包的链路层、网络层、传输层的头文件信息,只保留应用层数据信息,并且截取所述数据信息中的控制信息部分,形成应用层协议信息数据包;(3)将上行网络流量的应用层协议信息数据包中的数据信息依次与特征数据库中保存的各个协议的上行网络流量的特征集合进行匹配,若在与某一个特征集合进行匹配的过程中,该网络数据包协议特征的匹配率高于设定的匹配阈值M,则认为该网络数据包为符合该协议特征的数据包;(4)将下行网络流量的应用层协议信息数据包中的数据信息依次与特征数据库中保存的各个协议的下行网络流量特征集合进行匹配,若在与某一个特征集合进行匹配的过程中,该网络数据包协议特征的匹配率高于设定的匹配阈值M,则认为该网络数据包为符合该协议特征的数据包;最终,总体网络流量识别率最高的应用层协议,即为当前网络流量所代表的协议。其中,所述特征的匹配率定义为当前应用层协议信息数据包包含的某一个特征集合的特征的个数与该特征集合的特征总数的比值。所述的总体网络流量识别率定义为满足匹配率M的属于某一个特征集合的网络数据包总数与当前研究的网络数据包总数的比值。为了提高识别的准确率,在所述步骤(3)、(4)中,若应用层协议信息数据包中的数据信息与特征数据库中的多个特征集合的匹配率均高于设定的匹配阈值M,则选择匹配率最高的特征集合所代表的协议作为当前网络数据包的应用层协议。优选的,所述匹配阈值M优选在0.2到0.5之间取值;其中,所述对网络流量进行上行网络流量和下行网络流量的分流的过程为根据客户端主机的IP地址为源IP地址或目的IP地址对网络流量进行分流。从客户端向服务器端发送的流量,分流为上行网络流量;从服务器端向客户端发送的流量,分流为下行网络流量。进一步的,所述数据信息的截取过程可以具体采用以下方式实现结合控制信息的最大长度设置一个合适的长度阈值L,然后根据设定的长度阈值L对应用层数据信息进行截取,使得形成的每一个应用层协议信息数据包只保留长度为L的数据信息。所述长度阈值L可以在200byte到400byte之间取值,即可包含一个应用层流量数据包中的全部控制信息。又进一步的,在所述步骤(1)、(2)之间还包括对识别方式进行选择的步骤;若选择在线识别方式,则直接将步骤(1)分流后的上行流量数据包和下行流量数据包,分别与特征数据库中保存的各个协议的上行流量特征集合和下行流量特征集合进行匹配,以进行协议识别;若选择离线识别方式,则执行步骤(2)、(3)、(4)。同样的,为了提高在线识别的准确率,若特征数据库中存在多个特征集合与捕获的流量数据包的匹配率均高于设定的匹配阈值M,则选择匹配率最高的特征集合所代表的协议作为当前网络数据包的应用层协议。为了实现特征数据库的及时更新,所述特征数据库中的特征集合在每一轮流量数据包的捕获、识别过程中,通过应用层协议特征提取步骤对每一轮流量数据包中的协议特征进行提取,进而对特征数据库中的特征集合进行更新。再进一步的,所述应用层协议特征提取步骤包括a、提取应用层协议信号数据包中的频繁1项集,所述频繁1项集的长度设定为2的整数倍;b、采用如下合并过程将频繁k项集合并成候选k+l项集,k>1:、=Lines[x]+Lines[y].substring(Lines[y].length0_1,Lines[y].length());b2=Lines[y]+Lines[x].substring(Lines[x].length()_1,Lines[x].length());其中,Lines[x]、Lines[y]分别为第x个和第y个频繁k项集,频繁k项集的长度为LEN;substring(p,q)表示提取从序列的第p位开始到第q位的子序列,^和b2为得到的候选k+l项集,其长度为LEN+2;c、计算候选k+l项集的支持度su卯ort,提取满足支持度条件su卯ort^minimum—sup的候选k+l项集,作为频繁k+l项集;所述minimum—sup为频繁项集支持度的最小阈值;d、根据频繁k+l项集,删除频繁k项集中冗余的频繁项集,其过程为令fz为一个频繁k+l项集;fx和fy为两个频繁k项集,且fx=fz.substring(1,fz.length()-2),fy=fz.substring(3,fz.length()),那么删除频繁k项集fx和fy;由步骤a、b、c、d获取的各个频繁项集即构成该应用层协议的特征集合,将其与特征数据库中保存的相应协议的特征集合进行比较,如果有新的协议特征产生,则将新的协议特征保存到特征数据库中,完成对特征数据库中该协议的特征集合的更新。更进一步的,在获取到当前应用层协议的特征集合后,对所述特征集合进行优化,删除协议特征集合中不具代表性的协议特征和应用层通用的协议特征,然后对特征数据库进行更新。与现有技术相比,本发明的优点和积极效果是本发明从工程应用角度提出了一套较完整的应用层协议特征提取识别方法,丰富了应用层协议特征提取识别在工程中的应用,克服了手动分析的不足,促进了企业和公司应用层协议分析工作的信息化和智能化,为企业和公司减轻了人力资源的负担,提高了工作效率。通过在协议识别的过程中同时进行应用层协议特征的提取,并对特征数据库进行周期性更新,以不断丰富应用层特征数据库的内容,从而提高了应用层协议识别的准确率。结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。图1是本发明所提出的应用层协议特征识别方法的一种实施例的流程图2是应用层协议特征提取方法的一种实施例的流程图;图3是基于图1、图2所示协议特征提取和识别方法所构建的应用层协议特征识别系统的一种实施例的系统架构示意图。具体实施例方式下面结合附图对本发明的具体实施方式进行详细地描述。本发明针对现有应用层协议特征提取和识别方法在工程应用中的不足,及其企业和公司提出用智能方法(即自动分析方法)分析应用层协议的需求,提出了一种适于工程应用的应用层协议特征提取和识别的数据挖掘系统和方法。将数据挖掘的思想和方法实际应用到应用层协议特征的提取和识别过程中,并根据应用层协议流量数据量大的特点,从应用层协议数据包的有效包长、有效流量和无用流量等角度出发,提出了对流量数据包进行限制预处理的策略。通过周期性地更新特征数据库中的协议特征集合,可以有效地提高应用层协议识别的准确率。下面通过一个具体的实施例来详细阐述所述应用层协议特征提取和识别方法的具体设计过程以及基于该设计思想所构建的应用层协议特征识别系统的具体组建结构。实施例一,参见图1所示,本实施例的应用层协议特征识别方法主要由以下步骤设计实现St印l、设置使用权限,对系统的安全使用进行管理;出于对系统使用的安全性考虑,本实施例优选在系统正常运行前,对登录用户的合法身份进行验证,即要求用户输入用户名和密码,进行身份验证,进而根据事先保存的权限信息验证用户输入的用户名和密码是否正确,如果用户名和密码与保存的权限信息相符,则用户通过验证,进入系统;如果用户名或密码错误,则提醒用户确认输入的用户名或密码是否正确,并重新要求用户输入用户名和密码,直到身份验证通过后,再执行后续步骤。St印2、捕获待监听的流量数据包;用户在选择启动应用层协议特征提取功能时,首先选择需要监听的网卡,并设置流量数据包的过滤条件,然后启动流量捕获功能,开始捕获待监听网卡的流量数据包。与此同时,对捕获的网络流量数据包进行分流根据客户端主机的IP地址为源IP地址或目的IP地址对网络流量进行分流。从客户端向服务器端发送的流量,分流为上行网络流量;从服务器端向客户端发送的流量,分流为下行网络流量。所述流量捕获功能可以直接应用现有的Pc即功能函数库进行软件开发应用,对应用层协议的网络流量进行实时捕获。在调用该函数库时,输入捕获网络流量数据包的过滤条件,比如捕获全部网络数据包、捕获TCP数据包和捕获UDP数据包等,即可获得满足过滤条件的流量数据包。根据经验获悉应用层的协议特征主要存在于协议进行连接时的前几个数据包中,而在下载时的流量数据包包含的协议特征信息较少。因此,只需要提取应用协议在连接时的流量数据包的特征,即可以达到较好的特征提取和识别效果。对下载时的流量数据包7进行特征提取,反而会增加数据处理和特征提取的难度。基于此,本实施例优选只捕获应用协议连接时的流量数据包。在本实施例中,根据用户选择的协议识别方式可以设计两种流量数据包传输方式,即当用户选择在线识别方式,则将捕获到的流量数据包直接传送到应用层协议识别分析模块,对应用层协议进行识别,跳转至St印4;若用户选择离线识别方式,则将捕获到的流量数据包另存为.pcap文件,进而将该文件传送到应用层协议流量预处理模块进行离线预处理后,再进行协议识别,转到St印3执行。St印3、对捕获到的流量数据包进行预处理;本步骤是为了提高后续协议特征提取和识别速度而专门设计的,主要对接收到的.pc即文件做以下两部分流量预处理(1)提取应用层数据信息。通过步骤St印2捕获到的网络流量数据包其实包括了0SI7层模型的全部数据,而只有应用层部分的网络数据对我们研究应用层协议特征有用。所以,在该数据预处理阶段对捕获到的流量数据包(即.pcap文件)进行应用层协议信息的提取,即将捕获到的每一个流量数据包的链路层、网络层、传输层的头文件信息去除,只保留应用层协议数据,进而形成应用层协议信息数据包供后续步骤使用。(2)对应用层协议信息数据包的大小进行限制。应用层协议信息数据包由两部分组成控制信息+数据。当前应用层协议的有用信息基本集中在控制信息部分,而数据部分基本是下载时的数据信息,提供特征的信息较少。所以,在流量预处理阶段可以根据协议的定义或者特点设置一个阈值L,以对应用层协议信息数据包的大小进行限制和截取,使得每个应用层协议信息数据包只保留从数据包开始到长度为L的数据信息,即包括全部的控制信息部分和少量的数据部分,并保存到.txt文件中。其中,阈值L的大小范围是根据各应用层协议的定义而确定的,不同的应用层协议其控制信息的有效长度L也是不一样。一般来讲,L在200byte到400byte之间取值即可满足控制信息的提取要求,比如L=380byte。St印4、应用层协议的识别过程;在此过程中,若用户选择在线识别方式,则直接将步骤St印2分流后的网络流量数据包分别与特征数据库中保存的各个协议的上行流量特征集合和下行流量特征集合进行匹配,若在与某一个特征集合进行匹配的过程中,其匹配率高于设定的匹配阈值M,则认为当前网络数据包的应用层协议为该特征集合所代表的协议。经试验证明所述匹配阈值M在0.2和0.5之间(包括端点),基本能满足识别要求。所述特征的匹配率M定义为当前应用层协议信息数据包包含的某一个特征集合的特征的个数与该特征集合的特征总数的比值。为了进一步提高在线协议识别的准确率,在将捕获到的流量数据包依次与特征数据库中的多个特征集合进行匹配的过程中,如果存在有多个特征集合在匹配过程中其匹配率均高于设定的匹配阈值M的情况时,那么应选择匹配率最高的特征集合所代表的协议作为当前流量数据包的应用层协议。最终,总体网络流量识别率最高的应用层协议,即为当前网络流量所代表的协议。所述的网络流量识别率I定义为满足匹配率M的属于某一个特征集合的网络数据包总数与当前研究的网络数据包总数的比值。在识别过程中,将满足匹配率的流量数据包标记为l,不满足匹配率的流量数据包标记为0。然后将识别结果(包括用户IP、协议类别信息等)以柱状图、饼图等方式进行展示,并将识别结果保存到识别结果数据库中。若用户选择离线识别方式,则将通过步骤St印3生成的上行流量和下行流量的应用层协议信息数据包(即.txt文件)与特征数据库中保存的各个协议的上行流量特征集合和下行流量特征集合进行匹配,选择匹配率高于设定的匹配阈值M的特征集合所代表的协议作为当前网络数据包的应用层协议。所述匹配阈值M可以在0.2到0.5之间取值(包括端点)。同样的,为了进一步提高离线协议识别的准确率,在将传送来的应用层协议信息数据包依次与特征数据库中的多个特征集合进行匹配的过程中,如果存在多个特征集合的匹配率均高于设定的匹配阈值M,则应选择匹配率最高的特征集合所代表的协议作为当前网络数据包的应用层协议。最终,总体网络流量识别率最高的应用层协议,即为当前网络流量所代表的协议。在识别过程中,将匹配成功的应用层协议信息数据包标记为l,未匹配成功的应用层协议信息数据包标记为0,并记录标记为1和标记为0的数据包个数。利用识别结果和流量的统计量(以包或者byte为单位)作识别准确性的分析比较,最后将准确率等结果以柱状图、饼图等方式进行展示,并将识别结果保存到识别结果数据库中。应用层协议的准确识别有赖于特征数据库中保存的应用层协议的特征集合。为了实现应用层协议的准确识别,对特征数据库中的特征集合进行及时更新至关重要。基于此,本实施例在设计协议特征识别方法的过程中,对每一轮捕获到的流量数据包都进行了协议特征的提取过程,以此来对特征数据库中的特征集合进行及时更新。下面对应用层协议特征的具体提取过程进行详细阐述。为了实现应用层协议特征的准确、快速提取,本实施例对现有的Apriori频繁模式挖掘算法进行改进,提出了一种基于Apriori的数据挖掘算法,并命名为AC(AprioriFrequentSignatureandConstraint)算法,以完善应用层协议特征的提取设计。Apriori算法作为数据挖掘中关联规则挖掘算法的典型代表,由Agrawal等人在1993年提出。Apriori算法分为两部分频繁项集产生+关联规则挖掘。频繁项集产生过程用于挖掘海量数据中频繁出现的数据项,为关联规则的建立提供数据对象。频繁模式挖掘算法的基本原理如下频繁模式挖掘是关联规则挖掘里的一个重要内容,挖掘待研究事务的频繁项集,是产生关联规则的重要前提和保证。应用关联规则里产生频繁项集的方法来提取应用层流量数据包中的协议特征。其基本思想是不考虑流量数据的结构信息,只关注流量数据的内容,而内容具体含义事先也不考虑,在这种模糊的条件下,提取流量数据包的频繁子串,并作为待考虑的应用层协议特征。频繁项集挖掘的数据集和支持度定义频繁模式挖掘的数据集定义如下令I=Upi2,....id}是数据中所有项的集合,T=&,t2,....td}是所有事务的集合,每个事务ti包含的项集都是I的子集,包含O个或多个项的集合S被称为项集。如果一个项集S包含k个项,则称它为k项集。项集S在事务中的出现频率用支持度support来描述,support=P&(S)/T),分子ti(S)表示项集S在事务中出现的次数,分母T表示事务个数。给定一个支持度的最小阈值minimum—sup,若support>minimum_sup,那么项集S为频繁项集。频繁项集挖掘过程频繁项集挖掘过程都是根据原创性算法Apriori衍生出来的,因此他们的总体挖掘过程都大同小异。Apriori算法使用一种逐层搜索的迭代方法,用k项集探索(k+1)项集。第一次迭代挖掘所有长度为1且支持度support大于等于最小支持度minimum—sup的项集作为频繁1项集。第二次迭代挖掘长度为2的频繁2项集。在第二次迭代过程中,算法会基于第一次迭代的结果来生成长度为2的候选2项集,然后计算每个候选2项集的支持度su卯ort,将满足su卯ort>minimum_sup的候选2项集选出来作为频繁2项集。重复第二次迭代过程可以挖掘大小分别为3、4、5...的频繁项集,直到没有满足最小支持度条件support>minimum_sup的项集产生为止。本实施例所提出的应用层协议特征提取方法采用AC算法实现,AC算法定义的应用层流量数据包的频繁项集数据模型为令I={ipi2,....ij,每个项ig(g二l到d)由两位十六进制数组成,是应用层流量数据包的最小单位;T={、,t2,....td}为所有数据包的集合,ti={I的子集构成的序列},为一个应用层协议信息数据包;令S=substring(ti),S表示应用层协议信息数据包ti的一个子串,为I的项集;频繁项集的支持度su卯ort=P(ti(S)/T);若su卯ort>minimum—sup,那么应用层流量数据包ti的项集S为该应用层的协议特征。AC算法相比其它算法的独特之处体现在以下两个方面—、引入BloomFilter函数改进Apriori算法,产生频繁1项集,以加快产生频繁项集的过程。引入BloomFilter算法对Apriori算法进行改进,BloomFilter算法用多个哈希函数(即Hash函数)提高识别频繁项的准确性。BloomFilter算法最初是由FangHao等人提出来的,目的是加快对频繁项集的提取。AC算法引入BloomFilter的思想对Apriori算法产生频繁1项集的过程进行改进,在执行效率和精确度方面都有了很大的提高。二、在AC算法中引入产生协议特征即频繁项集的限制条件,以加快应用协议特征的提取过程。By皿g-ChulPark等人提出LASER(IXS-based(Longestcommonsubsequence)ApplicationSignatureExtRactionalgorithm)算法,艮卩基于最长公共子序列的应用特征提取算法,来提取应用层特征。在LASER算法产生应用层特征的过程中,引入最小子串长度的限制条件算法将要产生的特征的最小长度进行限制。AC算法在沿用最小子串长度的限制条件,即协议特征长度的限制条件的基础上,再提出了两个限制条件屏蔽不提供协议特征的应用层协议信息数据包和删除冗余的应用层协议特征,以对Apriori算法进行改进,从而加快协议特征的提取过程和优化提取得到的应用层协议特。下面结合图2对将AC算法应用于应用层协议特征提取过程的具体实现步骤阐述如下本实施例的应用层协议特征提取过程在St印3之后进行。101、导入经过步骤St印3预处理后的应用层协议信息数据包,即.txt文件。2、设定频繁1项集的长度len。由于流量数据包是按原始捕获的流量数据格式即十六进制的格式保存的,每两个十六进制符号表示一个十进制ASCII码字符,因此,频繁1项集的长度取值应该为2的整数倍。此处引入协议特征长度的限制条件在频繁项集的产生过程中,前面的项集的产生是为后面项集的产生服务的,但是这些前面的项集往往是些过渡项集,对最终项集的产生很少或不产生影响。如果在产生频繁l项集时,项集的大小|S|=2,产生频繁2项集时,项集的大小|S|=4...,那么将会影响后续项集的递增处理效率,而且协议特征过短没有实际意义和参考价值。因此,本实施例通过对频繁1项集的长度len进行限制,从而对协议特征最小长度进行限制,使其不产生过短的没有实际意义的协议特征。这样不但可以提高提取效率,也为最终产生更高质量的协议特征提供重要保障。基于此,本实施例提出将频繁1项集的长度len设定为2的整数倍,且大于等于4的值,优选len=4。3、提取频繁1项集。即提取应用层协议信息数据包中满足支持度条件support>minimum_sup的频繁项集。在频繁l项集的提取过程中,引入BloomFilter算法来判断重复频繁项集,以提高产生频繁1项集的效率。BloomFilter算法提取频繁1项集的原理和过程为BloomFilter是一个M位的二进制字符串,每位初始为0。为每个候选1项集设定h个哈希函数,h个哈希函数的值与BloomFilter的二进制字符串的位置相对应。当判断一个候选1项集是否已经为频繁1项集时,只要计算这h个Hash函数的值,然后根据得到的函数值去寻找BloomFilter二进制字符串的对应位,如果h个对应位的值都为l,则说明该候选1项集已经为频繁1项集,这样BloomFilter就将其过滤掉,而不用做进一步的支持度计算来判断该候选1项集是否为频繁1项集;如果h个对应位的值只要有一位不为l,则说明要做进一步的支持度计算才能判断该候选1项集是否为频繁1项集。BloomFilter算法过滤候选1项集的准确度和错误率由Hash函数的个数h决定,FangHao等人已证明h=6时BloomFilter算法过滤的错误率已接近极小化。BloomFilter算法使用的Hash函数定义为假设候选1项集为C=(Q,C2,...,Ck),根据以下的哈希函数计算候选1项集C所有长度为k(k>1)的子集的哈希值。假设一个素数q,则第一个长度为k的子集的哈希函数为&=Ciqk—^(^qk—2+...+Ck—iq+Ck(ModM)其中,M为BloomFilter的二进制字符串的长度;第二个长度为k的子集的哈希函数为H2=C2qk—'+C3qk—2+...+Ckq+Ck+1(ModM)。最小支持度阈值minimum—sup的取值范围根据具体的应用而定,不同的应用层协议数据其最小支持度阈值也不同,根据实验经验可知minimUm_SUp的取值范围优选为0.2<minimum—sup<0.8。11此处引入限制条件屏蔽不提供协议特征的应用层协议信息数据包。如果已提取的频繁1项集没有一个包含在一个应用层协议信息数据包中,那么该应用层协议数据包被认为是不包含频繁1项集的数据包,则在以后的频繁项集的挖掘过程中,该应用层协议信息数据包也不会包含频繁项集。因此,将不提供协议特征的应用层协议信息数据包屏蔽,在后面的频繁项集挖掘过程中不再进行频繁项集的计算和挖掘。4、由频繁k项集提取频繁k+1项集。假设Lines[x]、Lines[y]分别为第x个和第y个频繁k项集,频繁k项集的长度为LEN。substring(p,q)表示提取从序列的第p位开始到第q位的子序列,h和b2为得到的候选k+1项集,其长度为LEN+2。我们知道流量数据包的内容是一个有序序列,各项间的顺序和位置是固定的。因此,不能简单地像集合一样合并各k项集,来产生候选(k+1)项集。而候选k+l项集是由频繁k项集间合并生成的,且在频繁k项集的基础上增加2个十六进制字符,即候选k+1项集的长度为LEN+2。根据频繁项集产生的先验原理如果一个项集是频繁的,那么它的所有子集一定也是频繁的。由此,我们知道候选k+1项集长度为LEN的子序列必为频繁k项集,艮卩Lines[x].substring(1,Lines[x].length-2)禾口Lines[x].substring(3,Lines[x].length)必为频繁k项集。因此,我们可以通过以下方式由频繁k项集合并为候选k+l项集如果Lines[x]频繁k项集从第3个字符开始到最后一个字符结束的子序列与Lines[y]频繁k项集的从第1个字符开始到倒数第三个字符结束的子序列相等,艮卩Lines[x].substring(3,Lines[x].length0)=Lines[y].substring(1,Lines[y].length()_2),那么Lines[x]和Lines[y]用以下方式合并为候选k+1项集:、=Lines[x]+Lines[y].substring(Lines[y].length()_1,Lines[y].length());如果Lines[x]频繁k项集从第1个字符开始到倒数第3个字符结束的子序列与Lines[y]频繁k项集的从第3个字符开始到最后一个字符结束的子序列相等,即Lines[x].substring(1,Lines[x].length0_2)=Lines[y].substring(3,Lines[y].length()),那么Lines[x]和Lines[y]用以下方式合并为候选k+1项集:b2=Lines[y]+Lines[x].substring(Lines[x].length()_1,Lines[x].length());HongHan等人将该合并过程应用于病毒特征的提取过程中,他们提出当产生频繁2项集时,直接由频繁1项集间的合并产生,因为此时的频繁1项集为项集的最小单位;当产生频繁3项集开始以后的项集时,根据项集间子序列的相等性来合并频繁k项集为候选k+1项集。当产生频繁3项集以后项集的方法对AC算法产生长度为2的频繁项集时已经开始适用,因为本实施例定义的应用层流量数据包的最小单位长度为2,而AC算法初始设定频繁1项集的长度len—般大于等于4,因此此时频繁1项集不是项集的最小单位,由频繁1项集生成候选2项集,可直接应用以上合并过程。然后,计算候选k项集的支持度su卯ort,将满足支持度条件support>minimum—sup的候选k项集提取出来,作为频繁k+1项集。5、根据频繁k+1项集,删除频繁k项集中的项集。此处引入限制条件删除冗余的应用层协议特征。根据提取得到的频繁k+1项集删除频繁k+1项集中已经挖掘的频繁k项集。为了得到更优的应用层协议特征集合并将冗余的应用层协议特征删除,本实施例根据频繁项集产生的先验原理如果一个项集是频繁的,那么它的所有子集一定也是频繁的,设计了删除冗余的应用层协议特征的过程,即在完成频繁K+1项集的提取过程后,紧接着进行删除冗余的频繁K项集的删除过程。因为频繁k+1项集是由频繁k项集挖掘产生的,那么每个频繁k+1项集的子序列,一定也包含在频繁k项集中,频繁k+1项集已经包含了其对应的频繁k项集的挖掘项集。相反的,频繁k项集不一定都包含在频繁k+1项集中,因为由频繁k项集产生的候选k+1项集并不一定能成为频繁k+1项集。因此在频繁k项集中删除频繁k+1项集包含的项集,即如果满足以下条件,那么对应的频繁k项集将被删除fz为一个频繁k+l项集;fx和fy为两个频繁k项集,且fx=fz.substring(1,fz.length()-2),fy=fz.substring(3,fz.length()),那么删除频繁k项集fx和fy。在这个过程中,删除了频繁k项集中重复出现的频繁k+l项集的子序列,且保留了频繁k项集中不产生频繁k+1项集的项集。6、如此反复执行步骤4和步骤5,直到没有新的频繁项集产生为止。通过以上步骤获取的各个频繁项集即构成应用层的协议特征集合。7、对获取的应用层的协议特征集合进行优化处理。在此步骤中,包括删除协议特征集合中不具代表性的协议特征和应用层通用的协议特征,使得到更优的协议特征集合。8、将经过优化处理后的协议特征结果以图表或者文字等形式进行展示。9、将经过优化处理后的协议特征与特征数据库中已保存的协议特征进行比较,以不断更新特征数据库,进而为应用层协议的准确识别提供支持。基于上述应用层协议特征提取和识别方法,本实施例又提出了一种应用层协议特征提取和识别系统,参见图3所示,具体包括以下主要组成部分权限管理模块提供系统的用户、用户组的定义及其各自权限的管理,保证数据库的安全访问,即完成St印l的功能。其中,用户管理,用于定义系统的用户及相应的用户权限;用户组管理,用于定义系统的用户组及相应的权限。设置的各权限数据保存在权限数据库中。流量捕获模块捕获待监听的网络流量数据包,并对网络数据包进行上行网络流量和下行网络流量的分流,即完成St印2的功能。应用层协议流量预处理模块根据流量数据包的特点对流量数据包进行预处理,去掉无用或不相关的流量数据,即完成St印3的功能。应用层协议识别分析模块包括在线识别和离线识别两个应用层协议识别功能。在线识别对流量捕获模块捕获得到的流量数据包进行实时识别和标记;离线识别对经过应用层协议流量预处理模块进行数据预处理后产生的应用层协议信息数据包进行识别。离线识别功能是为应用层协议识别准确率的分析提供服务的。应用层协议识别准确率分析模块分析和验证应用层协议特征提取模块提取得到的协议特征的准确率。13应用层协议识别结果与准确率展示模块以图表等形式展示应用层协议识别模块识别应用层协议的识别结果及其识别准确率。用户结合图表对识别结果进行分析,并将识别结果和用户的分析和补充说明信息输出到识别结果数据库中进行保存。应用层协议特征提取模块应用数据挖掘AC算法实现对应用层协议特征的提取功能。在此模块中还可以包括数据挖掘算法的选择、数据挖掘算法的实现与应用模块等。此模块提供一个公用的接口支持数据挖掘算法的扩展。参数配置模块提供应用层协议特征提取数据挖掘算法的参数,如特征长度len、支持度最小阈值minimUm_SUp以及选择的特征提取数据挖掘算法的其他各相关参数等。应用层协议特征优化模块优化应用层协议特征提取模块提取得到的协议特征,将冗余的和通用的协议特征删除,使得到更优的协议特征集合。应用层协议特征提取结果展示模块将经过优化后的协议特征及其流量识别准确率I(I=包含协议特征的流量数据包总数/捕获流量中总的数据包个数)以图形、表格等方式输出展示。应用层协议特征周期性更新模块实现最新协议特征数据库更新。将最新提取得到的协议特征与特征数据库相应协议特征进行比较,如果有新的协议特征产生,则将该新特征更新到特征数据库中。下面结合图1、图2、图3,以提取PPStream应用软件特征为例对本实施例的协议特征提取和识别过程进行详细的说明。以PPStream应用层软件为实例,在实验主机上必须首先打开PPStream软件。1、用户登录系统用户输入用户名和密码,系统从权限数据库查找相应的用户登录信息,并进行用户验证。用户验证通过,则允许用户进入系统,否则提醒用户再次输入用户名和密码。2、流量捕获在应用层协议流量捕获模块中,选择应用层协议提取功能,并选择当前需要监听的网卡RealtekRTL8139/810xFamilyFastEthernetNIC,输入流量数据包过滤条件"TCP&&notsmb&&notnbss",即捕获TCP数据包,开始捕获应用层协议流量数据包。流量捕获结束后,可随时点击"停止流量捕获"按钮,最后将捕获的流量数据包另存为PPStream.pc即文件。在捕获流量数据包的同时,根据客户端的IP地址做为源IP地址或目的IP地址对网络流量进行上行网络流量和下行网络流量的分流。由于本实施例要对PPStream软件特征进行准确率分析,因此选择离线识别方式。捕获的PPStream流量数据以PPStream.pc即文件的形式传送到应用层协议流量预处理模块。3、应用层协议流量预处理将PPStream.pc即文件导入应用层协议流量预处理模块,设置预处理参数截取流量数据包大小L=380byte。分流出PPStream.pcap流量数据包的上行网络流量,并提取该上行网络流量的应用层协议信息数据包,并对每个应用层协议信息数据包进行截取,只保留L长度的数据信息。然后,将流量数据预处理后的结果以PPStream.txt文件的形式发送给应用层协议特征提取模块。进行预处理后,流量数据包的格式为(每个流量数据包用#号隔开)#732F2E30362544302541312543392546322544312546342543392545442542432544422542312541392544352543373630302542312542362542372541322543412543342542322542422543352544372543362544452E6A706720485454502F312E31ODOA486F73743A20706C2E7070732E7476ODOA4163636570743A202A2F2A0DOA557365722D4167656E743A20505053747265616D2D436C69656E742F312E300DOA0DOA#302541312543392546322544312546342543392545442542432544422542312541392544352543373630302542312542362542372541322543412543342542322542422543352544372543362544452E786D6C20485454502F312E31ODOA486F73743A20706C2E7070732E74760DOA4163636570743A202A2F2AODOA557365722D4167656E743A20505053747265616D2D436C69656E742F312E300DOAODOA#6973742F6C6973742F303230362544302541312543392546322544312546342543392545442542432544422542312541392544352543373630302542312542362542372541322543412543342542322542422543352544372543362544452E68746D6C20485454502F312E31ODOA4163636570743A202A2F2AODOA4163636570742D4C616E67756167653A207A682D636EODOA55412D4350553A20783836ODOA4163636570742D456E636F64696E673A20677A69702C206465666C617465ODOA557365722D4167656E743A204D6F7A696C6C612F342E302028636F6D70617469626C653B204D53494520372E303B2057696E646F7773204E5420352E313B206166662D6B696E67736F66742D6369626129ODOA486F73743A20766F6467756964652E7070732E74760DOA436F6E6E656374696F6E3A204B6565702D416C697665ODOA436F6F6B69653A207070736C6F67696E323D2D313B207070735F636C69656E745F69643D41414E33533635554、应用层协议特征提取选择AC算法,配置AC算法的参数:频繁l项集长度len二:6,最小支持度阈值minimum_sup=0.2。启动应用层协议特征提取模块的分析功能,从PPStream.txt文件中提取出PPStream软件的特征,并将提取得到的协议特征集合输出到应用层协议特征优化模块。表1是提取得到的PPStream软件的协议特征及其支持度15<table>tableseeoriginaldocumentpage16</column></row><table>表l5、PPStream软件特征优化应用层协议特征优化模块接收应用层协议特征提取模块送来的协议特征集合,对协议特征集合进行优化处理,删除多余的、不具代表性的和应用层通用的协议特征。表2是优化后的PPStream软件的协议特征及其支持度<table>tableseeoriginaldocumentpage17</column></row><table>表26、将经过优化处理后的协议特征传送给应用层协议特征提取结果展示模块,以图表和文字的形式展示提取得到的协议特征结果。7、将协议特征结果发送给应用层协议特征周期性更新模块,通过应用层协议特征周期性更新模块对提取得到的协议特征与特征数据库的协议特征进行比较和更新。8、对应用层协议信息数据包进行识别对PPStream.txt中的流量数据包进行识别,将识别结果和流量的统计量(以包或byte为单位)发给应用层协议准确率分析模块。如果在应用层协议信息数据包中找到PPStream的协议特征,则将该数据包标记为l,否则标记为0。9、分析应用层协议识别结果的准确率通过应用层协议准确率分析模块对提取得到的应用层协议特征的准确性进行分析,最后将准确率等结果发送到应用层软件识别结果展示模块。对当前捕获得到的PPStream.txt流量,用特征数据库里的PPStream特征识别的准确率为65.1%(该准确率随捕获的网络流量数据包的不同而浮动)。10、通过应用层软件识别结果展示模块以柱状图、饼图等方式展示识别结果。本发明的应用层协议特征识别方法可以充分满足实际工程应用的需求,提高了网络协议分析处理的效率和进度,为网络运营商实时监控网络资源、解决网络拥堵问题提供了技术上的支持。当然,以上所述仅是本发明的一种优选实施方式,应当指出的是,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。权利要求一种应用层协议特征的识别方法,包括以下步骤(1)捕获待监听的流量数据包,并对捕获的网络流量进行上行网络流量和下行网络流量的分流;(2)对分流后的网络流量进行预处理,去除上行网络流量和下行网络流量中的每一个流量数据包的链路层、网络层、传输层的头文件信息,只保留应用层数据信息,并且截取所述数据信息中的控制信息部分,形成应用层协议信息数据包;(3)将上行网络流量的应用层协议信息数据包中的数据信息依次与特征数据库中保存的各个协议的上行网络流量的特征集合进行匹配,若在与某一个特征集合进行匹配的过程中,该网络数据包协议特征的匹配率高于设定的匹配阈值M,则认为该网络数据包为符合该协议特征的数据包;(4)将下行网络流量的应用层协议信息数据包中的数据信息依次与特征数据库中保存的各个协议的下行网络流量特征集合进行匹配,若在与某一个特征集合进行匹配的过程中,该网络数据包协议特征的匹配率高于设定的匹配阈值M,则认为该网络数据包为符合该协议特征的数据包;最终,总体网络流量识别率最高的应用层协议,即为当前网络流量所代表的协议。2.根据权利要求1所述的应用层协议特征的识别方法,其特征在于在所述步骤(3)和(4)中,若应用层协议信息数据包中的数据信息与特征数据库中的多个特征集合的匹配率均高于设定的匹配阈值M,则选择匹配率最高的特征集合所代表的协议作为当前应用层协议信息数据包的应用层协议。3.根据权利要求2所述的应用层协议特征的识别方法,其特征在于所述匹配阈值M在O.2到0.5之间取值。4.根据权利要求1所述的应用层协议特征的识别方法,其特征在于在所述步骤(1)中,根据客户端主机的IP地址为源IP地址或目的IP地址对捕获到的网络流量进行分流;如果为从客户端向服务器端发送的流量,则分流为上行网络流量;如果为从服务器端向客户端发送的流量,则分流为下行网络流量。5.根据权利要求1所述的应用层协议特征的识别方法,其特征在于在所述步骤(2)中,所述数据信息的截取过程为结合控制信息的最大长度设置一个长度阈值L,然后根据设定的长度阈值L对应用层数据信息进行截取,使得形成的每一个应用层协议信息数据包只保留长度为L的数据信息。6.根据权利要求1所述的应用层协议特征的识别方法,其特征在于在所述步骤(1)、(2)之间还包括对识别方式进行选择的步骤;若选择在线识别方式,则直接将步骤(1)捕获的流量数据包与特征数据库中保存的各个协议的特征集合进行匹配,以进行协议识别;若选择离线识别方式,则执行步骤(2)、(3)、(4)。7.根据权利要求6所述的应用层协议特征的识别方法,其特征在于所述在将步骤(1)捕获的流量数据包直接与特征数据库中保存的各个协议的特征集合进行匹配的过程中,若存在多个特征集合的匹配率均高于设定的匹配阈值M,则选择匹配率最高的特征集合所代表的协议作为当前流量数据包的应用层协议。8.根据权利要求1至7中任一项所述的应用层协议特征的识别方法,其特征在于所述特征数据库中的特征集合在每一轮流量数据包的捕获、识别过程中,通过应用层协议特征提取步骤对每一轮流量数据包中的协议特征进行提取,进而对特征数据库中的特征集合进行更新。9.根据权利要求8所述的应用层协议特征的识别方法,其特征在于所述应用层协议特征提取步骤包括a、提取应用层协议信号数据包中的频繁1项集,所述频繁1项集的长度设定为2的整数倍;b、采用如下合并过程将频繁k项集合并成候选k+l项集,k>1:=Lines[x]+Lines[y].substring(Lines[y].length()_1,Lines[y].length());b2=Lines[y]+Lines[x].substring(Lines[x].length()_1,Lines[x].length());其中,Lines[x]、Lines[y]分别为第x个和第y个频繁k项集,频繁k项集的长度为LEN;substring(p,q)表示提取从序列的第p位开始到第q位的子序列,^和b2为得到的候选k+l项集,其长度为LEN+2;c、计算候选k+l项集的支持度su卯ort,提取满足支持度条件support>minimum_sup的候选k+l项集,作为频繁k+l项集;所述minimUm_SUp为频繁项集支持度的最小阈值;d、根据频繁k+l项集,删除频繁k项集中冗余的频繁项集,其过程为令fz为一个频繁k+l项集;fx和fy为两个频繁k项集,且fx=fz.substring(1,fz.length()-2),fy=fz.substring(3,fz.length()),那么删除频繁k项集fx和fy;由步骤a、b、c、d获取的各个频繁项集即构成该应用层协议的特征集合,将其与特征数据库中保存的相应协议的特征集合进行比较,如果有新的协议特征产生,则将新的协议特征保存到特征数据库中,完成对特征数据库中该协议的特征集合的更新。10.根据权利要求9所述的应用层协议特征的识别方法,其特征在于在获取到当前应用层协议的特征集合后,对所述特征集合进行优化,删除协议特征集合中不具代表性的协议特征和应用层通用的协议特征,然后对特征数据库进行更新。全文摘要本发明公开了一种应用层协议特征的识别方法,包括流量数据包的捕获过程、识别方式选择过程、流量数据包的预处理过程、结合特征数据库中的特征集合对当前网络流量进行识别的过程以及识别结果展示过程。通过采用一套基于Apriori算法的数据挖掘AC算法对特征数据库中的特征集合进行及时更新,从而提高了应用层协议识别的准确率,克服了传统采用手动分析方法进行网络协议识别所存在的种种不足,促进了企业和公司应用层协议分析工作的信息化和智能化,为企业和公司减轻了人力资源的负担,提高了工作效率和进度。文档编号H04L29/08GK101741908SQ20091026010公开日2010年6月16日申请日期2009年12月25日优先权日2009年12月25日发明者刘荣烨申请人:青岛朗讯科技通讯设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1