CN101753622A - 一种应用层协议特征的提取方法 - Google Patents

一种应用层协议特征的提取方法 Download PDF

Info

Publication number
CN101753622A
CN101753622A CN200910260104A CN200910260104A CN101753622A CN 101753622 A CN101753622 A CN 101753622A CN 200910260104 A CN200910260104 A CN 200910260104A CN 200910260104 A CN200910260104 A CN 200910260104A CN 101753622 A CN101753622 A CN 101753622A
Authority
CN
China
Prior art keywords
frequent
application layer
collection
data
item
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200910260104A
Other languages
English (en)
Other versions
CN101753622B (zh
Inventor
刘荣烨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lucent Technologies Qingdao Telecommunications Equipment Ltd
Original Assignee
Lucent Technologies Qingdao Telecommunications Equipment Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lucent Technologies Qingdao Telecommunications Equipment Ltd filed Critical Lucent Technologies Qingdao Telecommunications Equipment Ltd
Priority to CN2009102601045A priority Critical patent/CN101753622B/zh
Publication of CN101753622A publication Critical patent/CN101753622A/zh
Application granted granted Critical
Publication of CN101753622B publication Critical patent/CN101753622B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种应用层协议特征的提取方法,从工程应用角度出发将数据挖掘的思想和方法实际应用到应用层协议特征的提取过程中,提出了一套基于Apriori算法的数据挖掘AC算法,并在此基础上根据应用层协议流量数据量大的特点,从应用层协议数据包的有效包长、有效流量和无用流量等角度出发,提出了对流量数据包进行限制预处理的策略,从而克服了手动分析的不足,促进了企业和公司应用层协议分析工作的信息化和智能化,为企业和公司减轻了人力资源的负担,提高了工作效率和协议识别的准确率。

Description

一种应用层协议特征的提取方法
技术领域
本发明属于互联网技术领域,具体地说,是涉及一种采用数据挖掘的思想和方法提取出应用层的协议特征的方法。
背景技术
随着互联网的逐步发展,网上用户和业务流量在不断增长,除传统数据业务外,P2P、网络游戏、IPTV等新兴业务占用了互联网的大部分带宽,一方面使得运营商的服务质量出现问题,另一方面也使得运营商的基础网络建设陷入了“拥塞-扩容-再拥塞”的非正常局面,盈利能力相应降低。
在同一网络内,如果某些用户严重占用带宽进行网游、BT下载等活动,就会影响别人对网络资源的正常使用,或者对他人的工作造成影响。毕竟现在互联网的发展,已经使很多工作都要求在网络上交互和完成。
应用层软件造成的带宽拥塞问题已经引起了中小型企业,多分支机构企业和网络运营商的注意,而他们就是促使网络带宽产品不断发展的最大推动者。随着市场的不断发展,网络带宽控制产品具有极大的市场潜力,而且市场份额也越来越大。
目前,国内的主要带宽管理和流量控制产品包括Panabit、P2P终结者、聚生网管等。但是,这些产品只从网络流量控制方面给用户提供流量控制方面的应用。当然普通用户也不会关心其内部的识别原理和方法,更不用说应用层的协议特征了。但另一方面,一些应用和分析应用层协议的企业和公司,提出了分析应用层协议和获取相应协议特征的需求,而现有的网络流量控制产品只提供了流量控制的功能,并没有提供应用层协议提取和分析功能的方法和接口。而且如果聘请专门人员手动分析应用层协议特征,将会影响工作效率和进度,并给企业和公司带来人力资源的负担。
当前,最流行的流量监测技术为DPI(Deep Packet Inspection)深度包检测技术,相对于传统的基于端口、协议类型的流量检测技术,DPI增加了应用层分析功能,是一种基于应用层的流量检测和控制技术,它通过深入读取IP包载荷的内容来对OSI7层网络模型中的应用层信息进行重组,从而得到整个应用层协议的内容,然后按照系统定义的管理策略对流量进行整形操作,通过识别各种应用层的内容达到高效地识别出网络上的各种应用协议的目的。
数据挖掘技术作为一种数据信息处理的关键技术,其主要特点是对数据库中的海量数据进行抽取、转换、分析和其他模型化处理,从中提取关键性和决策性的数据。将数据挖掘技术运用到网络流量分析,在极度膨胀地网络带宽需求中,根据用户的网络带宽使用情况、实时地对带宽进行分配,从占据带宽重要比重的应用层软件中提取和挖掘出应用层协议的重要识别特征,以分析出影响网络带宽的软件和用户,具有重大的意义。
很多学者从数据挖掘的角度对DPI技术进行了理论和科学实验研究。但是,随着网络流量分析和特征提取工程应用需求的增加,对理论研究转换成实际工程应用提出了市场需求。
发明内容
本发明的目的在于提供一种适于实际工程应用的应用层协议特征提取方法,从数据挖掘角度出发对协议特征的提取过程进行完善设计,从而加快了协议特征的提取速度,为分析应用层协议提供了依据。
为解决上述技术问题,本发明采用以下技术方案予以实现:
一种应用层协议特征的提取方法,包括以下步骤:
(1)捕获待监听的流量数据包;
(2)提取流量数据包中的频繁1项集,所述频繁1项集的长度设定为2的整数倍;
(3)采用如下合并过程将频繁k项集合并成候选k+1项集,k≥1:
b1=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位的子序列,b1和b2为得到的候选k+1项集,其长度为LEN+2;
(4)计算候选k+1项集的支持度support,提取满足支持度条件support≥minimum_sup的候选k+1项集,作为频繁k+1项集;所述minimum_sup为频繁项集支持度的最小阈值;
(5)在频繁k项集中,删除频繁k+1项集包含的项集;
由步骤(3)、(4)、(5)获取的各个频繁项集即构成应用层的协议特征集合。
为了加快产生频繁项集的过程,在所述步骤(2)的频繁1项集提取过程中,可以采用Bloom Filter算法对重复出现的频繁1项集进行判断,进而将重复的频繁1项集删除,以达到加快协议特征提取速度的设计目的。
为了得到更优的应用层协议特征集合并将冗余的应用层协议特征删除,本发明还设计了删除冗余的应用层协议特征的过程,即在完成频繁k+1项集的提取过程后,紧接着进行删除冗余的频繁k项集的过程:
令fz为一个频繁k+1项集;fx和fy为两个频繁k项集,且fx=fz.substring(1,fz.length()-2),fy=fz.substring(3,fz.length()),那么删除频繁k项集fx和fy
进一步的,在所述步骤(2)之前包括以下建立流量数据包的频繁项集数据模型的过程:
令I={i1,i2,....id},每个项ig(g=1到d)由两位十六进制数组成,是应用层流量数据包的最小单位;
T={t1,t2,....td}为所有数据包的集合,ti={I的子集构成的序列},为一个应用层协议信息数据包;
令S=substring(ti),S表示应用层协议信息数据包ti的一个子序列,为I的项集;
频繁项集的支持度support=P(ti(S)/T);若support≥minimum_sup,则应用层流量数据包ti的子序列S为该应用层的协议特征。
优选的,所述频繁1项集的长度取值为2的整数倍,且大于等于4。
为了进一步加快频繁项集的提取速度,在所述步骤(2)和(4)的频繁1项集和频繁k+1项集的提取过程中,还包括删除不产生频繁1项集和频繁k+1项集的应用层协议信息数据包的过程,使其在后面的频繁项集挖掘过程中不再进行频繁项集的计算和挖掘。
优选的,所述频繁项集支持度的最小阈值minimum_sup在0.2到0.8之间取值。
又进一步的,在所述步骤(1)中还包括对捕获到的流量数据包进行预处理的过程,即将捕获到流量数据包进行上行网络流量和下行网络流量的分流,只保留上行网络流量。并且将捕获到的每一个流量数据包的链路层、网络层、传输层的头文件信息去除,只保留应用层数据信息,进而形成应用层协议信息数据包供后续步骤使用。
再进一步的,在所述对捕获到的流量数据包进行预处理的过程中还包括根据设定的应用层协议信息数据包长度阈值L对应用层协议信息数据包进行限制和截取的过程,使得每个应用层协议信息数据包只保留长度为L的数据信息。
更进一步的,在所述步骤(5)之后还包括对提取出的应用层的协议特征集合进行优化的过程,即删除协议特征集合中不具代表性的协议特征和应用层通用的协议特征。
与现有技术相比,本发明的优点和积极效果是:本发明从工程应用角度提出了一套较完整的应用层协议特征提取方法,丰富了应用层协议特征提取在工程中的应用。该应用层协议特征提取方法从数据挖掘的角度提出了一套智能化的提取算法,克服了手动分析的不足,促进了企业和公司应用层协议分析工作的信息化和智能化,为企业和公司减轻了人力资源的负担,提高了工作效率。将提取到的应用层协议特征保存在特征数据库中,并对特征数据库进行周期性更新,以不断丰富应用层特征数据库的内容,这样可以为后续的应用层协议识别提供指导,提高协议识别的准确率。
结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。
附图说明
图1是本发明所提出的应用层协议特征提取方法的一种实施例的流程图;
图2是基于图1所示协议特征提取方法所设计的应用层协议特征提取系统的一种实施例的系统架构示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细地描述。
本发明针对现有应用层协议特征提取方法在工程应用中的不足,及其企业和公司提出用智能方法(即自动分析方法)分析应用层协议的需求,提出了一种适于工程应用的应用层协议特征提取方法。将数据挖掘的思想和方法实际应用到应用层协议特征的提取过程中,并根据应用层协议流量数据量大的特点,从应用层协议数据包的有效包长、有效流量和无用流量等角度出发,提出了对流量数据包进行限制预处理的策略。
下面通过一个具体的实施例来详细阐述所述应用层协议特征提取方法的具体设计过程以及基于该设计思想所构建的应用层协议特征提取系统的具体组建结构。
实施例一,参见图1所示,本实施例的应用层协议特征提取方法主要由以下步骤设计实现:
Step1、设置使用权限,对系统的安全使用进行管理;
出于对系统使用的安全性考虑,本实施例优选在系统正常运行前,对登录用户的合法身份进行验证,即要求用户输入用户名和密码,进行身份验证,进而根据事先保存的权限信息验证用户输入的用户名和密码是否正确,如果用户名和密码与保存的权限信息相符,则用户通过验证,进入系统;如果用户名或密码错误,则提醒用户确认输入的用户名或密码是否正确,并重新要求用户输入用户名和密码,直到身份验证通过后,再执行后续步骤。
Step2、捕获待监听的流量数据包;
用户在选择启动应用层协议特征提取功能时,首先选择需要监听的网卡,并设置流量数据包的过滤条件,然后启动流量捕获功能,开始捕获待监听网卡的流量数据包。
所述流量捕获功能可以直接应用现有的Pcap功能函数库进行软件开发应用,对应用层协议的网络流量进行实时捕获。在调用该函数库时,输入捕获网络流量数据包的过滤条件,比如捕获全部网络数据包、捕获TCP数据包和捕获UDP数据包等,即可获得满足过滤条件的流量数据包。
根据经验获悉:应用层的协议特征主要存在于协议进行连接时的前几个数据包中,而在下载时的流量数据包包含的协议特征信息较少,甚至没有。因此,只需要提取应用协议在连接时的流量数据包的特征,即可以达到很好的特征提取和识别效果。对下载时的流量数据包进行特征提取,反而会增加数据处理的难度。基于此,本实施例在设计应用层协议特征提取方法的过程中,只捕获应用协议连接时的流量数据包。
在流量数据包捕获结束后,将捕获到的流量数据包另存为.pcap文件,传输至Step3进行预处理。
Step3、对捕获到的流量数据包进行预处理;
本步骤是为了提高后续协议特征提取的准确率和速度而设计的,主要做以下三步流量预处理:
(1)对网络流量进行上行网络流量和下行网络流量的分流。通过步骤Step1捕获到的网络流量数据包括上行网络流量和下行网络流量。将捕获到的网络流量进行上行网络流量和下行网络流量的分流,上行网络流量是用户端向服务器端发送请求服务等功能(一般为TCP数据包)和上传相关数据信息(一般为UDP数据包)的流量数据包,其中的发送请求服务等功能的流量数据包包括极其有用的和有效的应用层协议特征;而下行网络流量是服务器向客户端确认请求(一般为TCP数据包)并发送请求数据(一般为UDP数据包)的流量数据包,其中的确认请求数据包虽然也包括一些有效的应用层协议特征,但是很多数据包都只包含简单的建立连接响应的内容,并不包含明显的协议特征。因此,此处对网络流量进行上行和下行网络流量的分流,只保留上行的网络流量供后续步骤使用。可以以客户端的IP地址实现分流,即如果客户端的IP为源IP地址,那么该流量为上行网络流量;如果客户端的IP为目的IP地址,那么该流量为下行网络流量。
(2)提取应用层数据信息。上行网络流量包括了OSI7层模型的全部数据,而只有应用层部分的网络数据对我们研究应用层协议特征有用。所以,在该数据预处理阶段对捕获到的流量数据包(即.pcap文件)进行应用层协议信息的提取,即将捕获到的每一个流量数据包的链路层、网络层、传输层的头文件信息去除,只保留应用层协议数据,进而形成应用层协议信息数据包供后续步骤使用。
(3)对应用层协议信息数据包的大小进行限制。应用层协议信息数据包由两部分组成:控制信息+数据。当前应用层协议的有用信息基本集中在控制信息部分,而数据部分基本是下载时的数据信息,提供特征的信息较少。所以,在流量预处理阶段可以根据协议的定义或者特点设置一个阈值L,以对应用层协议信息数据包的大小进行限制和截取,使得每个应用层协议信息数据包只保留从数据包开始到长度为L的数据信息,并保存到.txt文件中。
其中,阈值L的大小范围是根据各应用层协议的定义而确定的,不同的应用层协议其控制信息的有效长度L也是不一样。一般来讲,L在200byte到400byte之间取值即可满足控制信息的提取要求,比如L=380byte。
Step4、应用层协议特征提取过程;
为了实现应用层协议特征的准确、快速提取,本实施例对现有的Apriori频繁模式挖掘算法进行改进,提出了一种基于Apriori的数据挖掘算法,并命名为AC(Apriori FrequentSignature and Constraint)算法,以完善应用层协议特征的提取设计。
Apriori算法作为数据挖掘中关联规则挖掘算法的典型代表,由Agrawal等人在1993年提出。Apriori算法分为两部分:频繁项集产生+关联规则挖掘。频繁项集产生过程用于挖掘海量数据中频繁出现的数据项,为关联规则的建立提供数据对象。
频繁模式挖掘算法的基本原理如下:
频繁模式挖掘是关联规则挖掘里的一个重要内容,挖掘待研究事务的频繁项集,是产生关联规则的重要前提和保证。应用关联规则里产生频繁项集的方法来提取应用层流量数据包中的协议特征。其基本思想是:不考虑流量数据的结构信息,只关注流量数据的内容,而内容具体含义事先也不考虑,在这种模糊的条件下,提取流量数据包的频繁子串,并作为待考虑的应用层协议特征。
频繁项集挖掘的数据集和支持度定义:
频繁模式挖掘的数据集定义如下:
令I={i1,i2,....id}是数据中所有项的集合,T={t1,t2,....td}是所有事务的集合,每个事务ti包含的项集都是I的子集,包含0个或多个项的集合S被称为项集。如果一个项集S包含k个项,则称它为k项集。项集S在事务中的出现频率用支持度support来描述,support=P(ti(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项集的支持度support,将满足support≥minimum_sup的候选2项集选出来作为频繁2项集。重复第二次迭代过程可以挖掘大小分别为3、4、5...的频繁项集,直到没有满足最小支持度条件support≥minimum_sup的项集产生为止。
本实施例所提出的应用层协议特征提取方法采用AC算法实现,AC算法定义的应用层流量数据包的频繁项集数据模型为:
令I={i1,i2,....id},每个项ig(g=1到d)由两位十六进制数组成,是应用层流量数据包的最小单位;T={t1,t2,....td}为所有数据包的集合,ti={I的子集构成的序列},为一个应用层协议信息数据包;令S=substring(ti),S表示应用层协议信息数据包ti的一个子序列,为I的项集;频繁项集的支持度support=P(ti(S)/T);若support≥minimum_sup,那么应用层流量数据包ti的子序列S为该应用层的协议特征。
AC算法相比其它算法的独特之处体现在以下两个方面:
一、引入Bloom Filter函数改进Apriori算法,产生频繁1项集,以加快产生频繁项集的过程。
引入Bloom Filter算法对Apriori算法进行改进,Bloom Filter算法用多个哈希函数(即Hash函数)提高识别频繁项的准确性。Bloom Filter算法最初是由Fang Hao等人提出来的,目的是加快对频繁项集的提取。AC算法引入Bloom Filter的思想对Apriori算法产生频繁1项集的过程进行改进,在执行效率和精确度方面都有了很大的提高。
二、在AC算法中引入产生协议特征即频繁项集的限制条件,以加快应用协议特征的提取过程。
Byung-Chul Park等人提出LASER(LCS-based(Longest common subsequence)Application Signature ExtRaction algorithm)算法,即基于最长公共子序列的应用特征提取算法,来提取应用层特征。在LASER算法产生应用层特征的过程中,引入最小子串长度的限制条件算法将要产生的特征的最小长度进行限制。AC算法在沿用最小子串长度的限制条件,即协议特征长度的限制条件的基础上,再提出了两个限制条件:屏蔽不提供协议特征的应用层协议信息数据包和删除冗余的应用层协议特征,从而加快协议特征的提取过程和优化提取得到的应用层协议特征。
下面对将AC算法应用于应用层协议特征提取过程的具体实现步骤阐述如下:
(1)导入经过步骤Step3预处理后的应用层协议信息数据包,即.txt文件。
(2)设定频繁1项集的长度len。
由于流量数据包是按原始捕获的流量数据格式即十六进制的格式保存的,每两个十六进制符号表示一个十进制ASCII码字符,因此,频繁1项集的长度取值应该为2的整数倍。
此处引入协议特征长度的限制条件:在频繁项集的产生过程中,前面的项集的产生是为后面项集的产生服务的,但是这些前面的项集往往是些过渡项集,对最终项集的产生很少或不产生影响。如果在产生频繁1项集时,项集的大小|S|=2,产生频繁2项集时,项集的大小|S|=4...,那么将会影响后续项集的递增处理效率,而且协议特征过短没有实际意义和参考价值。因此,本实施例通过对频繁1项集的长度len进行限制,从而对协议特征最小长度进行限制,使其不产生过短的没有实际意义的协议特征。这样不但可以提高提取效率,也为最终产生更高质量的协议特征提供重要保障。
基于此,本实施例提出将频繁1项集的长度len设定为2的整数倍,最好为大于等于4的值,优选len=4。
(3)提取频繁1项集。
即提取应用层协议信息数据包中满足支持度条件support≥minimum_sup的频繁项集。在频繁1项集的提取过程中,引入Bloom Filter算法来判断重复频繁项集,以提高产生频繁1项集的效率。
Bloom Filter算法提取频繁1项集的原理和过程为:
Bloom Filter是一个M位的二进制字符串,每位初始为0。为每个候选1项集设定h个哈希函数,h个哈希函数的值与Bloom Filter的二进制字符串的位置相对应。当判断一个候选1项集是否已经为频繁1项集时,只要计算这h个Hash函数的值,然后根据得到的函数值去寻找Bloom Filter二进制字符串的对应位,如果h个对应位的值都为1,则说明该候选1项集已经为频繁1项集,这样Bloom Filter就将其过滤掉,而不用做进一步的支持度计算来判断该候选1项集是否为频繁1项集;如果h个对应位的值只要有一位不为1,则说明要做进一步的支持度计算才能判断该候选1项集是否为频繁1项集。
Bloom Filter算法过滤候选1项集的准确度和错误率由Hash函数的个数h决定,FangHao等人已证明:h=6时Bloom Filter算法过滤的错误率已接近极小化。
Bloom Filter算法使用的Hash函数定义为:
假设候选1项集为C=(C1,C2,...,Ck),根据以下的哈希函数计算候选1项集C所有长度为k(k>1)的子集的哈希值。假设一个素数q,则第一个长度为k的子集的哈希函数为:
H1=C1qk-1+C2qk-2+…+Ck-1q+Ck(Mod M)
其中,M为Bloom Filter的二进制字符串的长度;
第二个长度为k的子集的哈希函数为:
H2=C2qk-1+C3qk-2+…+Ckq+Ck+1(Mod M)。
最小支持度阈值minimum_sup的取值范围根据具体的应用而定,不同的应用层协议数据其最小支持度阈值也不同,根据实验经验可知:minimum_sup的取值范围优选为0.2≤minimum_sup≤0.8。
此处引入限制条件:屏蔽不提供协议特征的应用层协议信息数据包。如果已提取的频繁1项集没有一个包含在一个应用层协议信息数据包中,那么该应用层协议数据包被认为是不包含频繁1项集的数据包,则在以后的频繁项集的挖掘过程中,该应用层协议信息数据包也不会包含频繁项集。因此,将不提供协议特征的应用层协议信息数据包屏蔽,在后面的频繁项集挖掘过程中不再进行频繁项集的计算和挖掘。
(4)由频繁k项集提取候选k+1项集。
假设:Lines[x]、Lines[y]分别为第x个和第y个频繁k项集,频繁k项集的长度为LEN。substring(p,q)表示提取从序列的第p位开始到第q位的子序列,b1和b2为得到的候选k+1项集,其长度为LEN+2。
我们知道流量数据包的内容是一个有序序列,各项间的顺序和位置是固定的。因此,不能简单地像集合一样合并各k项集,来产生候选(k+1)项集。而候选k+1项集是由频繁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+1项集:
如果Lines[x]频繁k项集从第3个字符开始到最后一个字符结束的子序列与Lines[y]频繁k项集的从第1个字符开始到倒数第三个字符结束的子序列相等,即Lines[x].substring(3,Lines[x].length())=Lines[y].substring(1,Lines[y].length()-2),那么Lines[x]和Lines[y]用以下方式合并为候选k+1项集:
b1=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].length()-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());
Hong Han等人提出该合并过程并应用于病毒特征的提取过程中,他们提出当产生频繁2项集时,直接由频繁1项集间的合并产生,因为此时的频繁1项集为项集的最小单位;当产生频繁3项集开始以后的项集时,根据项集间子序列的相等性来合并频繁k项集为候选k+1项集。当产生频繁3项集以后项集的方法对AC算法产生长度为2的频繁项集时已经开始适用,因为本实施例定义的应用层流量数据包的最小单位长度为2,而AC算法初始设定频繁1项集的长度len一般大于等于4,因此此时频繁1项集不是项集的最小单位,由频繁1项集生成候选2项集,可直接应用以上合并过程。
(5)由候选k+1项集产生频繁k+1项集。
计算候选k+1项集的支持度support,将满足支持度条件support≥minimum_sup的候选k+1项集提取出来,作为频繁k+1项集。
(6)根据频繁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+1项集;fx和fy为两个频繁k项集,且fx=fz.substring(1,fz.length()-2),fy=fz.substring(3,fz.length()),那么删除频繁k项集fx和fy
在这个过程中,删除了频繁k项集中重复出现的频繁k+1项集的子序列,且保留了频繁k项集中不产生频繁k+1项集的项集。
(7)如此反复执行步骤(4)、(5)和(6),直到没有新的频繁项集产生为止。
通过以上步骤获取的各个频繁项集即构成应用层的协议特征集合。
Step5、对获取的应用层的协议特征集合进行优化处理。
在此步骤中,包括删除协议特征集合中不具代表性的协议特征和应用层通用的协议特征,使得到更优的协议特征集合。
Step6、将经过优化处理后的协议特征结果以图表或者文字等形式进行展示。
Step7、将经过优化处理后的协议特征与特征数据库中已保存的协议特征进行比较,以不断更新特征数据库,进而为应用层协议的准确识别提供支持。
基于上述应用层协议特征提取方法,本实施例又提出了一种应用层协议特征提取系统,参见图2所示,具体包括以下主要组成部分:
权限管理模块:提供系统的用户、用户组的定义及其各自权限的管理,保证数据库的安全访问,即完成Step1的功能。其中,用户管理,用于定义系统的用户及相应的用户权限;用户组管理,用于定义系统的用户组及相应的权限。设置的各权限数据保存在权限数据库中。
流量捕获模块:捕获待监听的网络流量数据包,即完成Step2的功能。
应用层协议流量预处理模块:根据流量数据包的特点对流量数据包进行预处理,去掉无用或不相关的流量数据,即完成Step3的功能。
应用层协议特征提取模块:为本系统的关键模块,应用数据挖掘AC算法实现对应用层协议特征的提取,即完成Step4的功能。在此模块中还可以包括数据挖掘算法的选择、数据挖掘算法的实现与应用模块等。此模块提供一个公用的接口支持数据挖掘算法的扩展。
参数配置模块:提供应用层协议特征提取数据挖掘算法的参数,如特征长度len、支持度最小阈值minimum_sup以及选择的特征提取数据挖掘算法的其他各相关参数等。
应用层协议特征优化模块:优化应用层协议特征提取模块提取得到的协议特征,将冗余的协议特征删除,使得到更优的协议特征集合,即完成Step5的功能。
应用层协议特征提取结果展示模块:将经过优化后的协议特征及其支持度(支持度=协议特征在流量数据包中出现的次数/捕获流量中总的数据包个数)以图形、表格等方式输出展示,即完成Step6的功能。
应用层协议特征周期性更新模块:实现最新协议特征数据库更新。将最新提取得到的协议特征与特征数据库相应协议特征进行比较,如果有新的协议特征产生,则将该新特征更新到特征数据库,即完成Step7的功能。
下面结合图1、图2,以提取PPStream应用软件在应用层中的特征为例对本实施例的协议特征提取方法进行详细的说明。
以PPStream应用层软件为实例,提取与PPstream软件相关的应用层协议的特征。在实验主机上必须首先打开PPStream软件。
1、用户登录系统
用户输入用户名和密码,系统从权限数据库查找相应的用户登录信息,并进行用户验证。用户验证通过,则允许用户进入系统,否则提醒用户再次输入用户名和密码。
2、流量捕获
在应用层协议流量捕获模块中,选择应用层协议提取功能,并选择当前需要监听的网卡Realtek RTL8139/810x Family Fast Ethernet NIC,输入流量数据包过滤条件“TCP && notsmb && not nbss”,即捕获TCP数据包,开始捕获应用层协议流量数据包。流量捕获结束后,可随时点击“停止流量捕获”按钮,最后将捕获的流量数据包另存为PPStream.pcap文件。
3、应用层协议流量预处理
将PPStream.pcap文件导入应用层协议流量预处理模块,设置预处理参数:截取流量数据包大小L=380byte。分流出PPStream.pcap流量数据包的上行网络流量,并提取该上行网络流量的应用层协议信息数据包,并对每个应用层协议信息数据包进行截取,只保留L长度的数据信息。然后,将流量数据预处理后的结果以PPStream.txt文件的形式发送给应用层协议特征提取模块。进行预处理后,流量数据包的格式为(每个流量数据包用#号隔开):
#47 45 54 20 2F 76 6F 64 2F 69 6D 61 67 65 73 2F 2E 30 36 25 44 30 25 41 31 2543 39 25 46 32 25 44 31 25 46 34 25 43 39 25 45 44 25 42 43 25 44 42 25 42 31 2541 39 25 44 35 25 43 37 36 30 30 25 42 31 25 42 36 25 42 37 25 41 32 25 43 41 2543 34 25 42 32 25 42 42 25 43 35 25 44 37 25 43 36 25 44 45 2E 6A 70 67 20 48 5454 50 2F 31 2E 31 0D 0A 48 6F 73 74 3A 20 70 6C 2E 70 70 73 2E 74 76 0D 0A 41 6363 65 70 74 3A 20 2A 2F 2A 0D 0A 55 73 65 72 2D 41 67 65 6E 74 3A 20 50 50 53 7472 65 61 6D 2D 43 6C 69 65 6E 74 2F 31 2E 30 0D 0A 0D 0A
#47 45 54 20 2F 76 6F 64 2F 2E 30 36 25 44 30 25 41 31 25 43 39 25 46 32 25 4431 25 46 34 25 43 39 25 45 44 25 42 43 25 44 42 25 42 31 25 41 39 25 44 35 25 4337 36 30 30 25 42 31 25 42 36 25 42 37 25 41 32 25 43 41 25 43 34 25 42 32 25 4242 25 43 35 25 44 37 25 43 36 25 44 45 2E 78 6D 6C 20 48 54 54 50 2F 31 2E 31 0D0A 48 6F 73 74 3A 20 70 6C 2E 70 70 73 2E 74 76 0D 0A 41 63 63 65 70 74 3A 20 2A2F 2A 0D 0A 55 73 65 72 2D 41 67 65 6E 74 3A 20 50 50 53 74 72 65 61 6D 2D 43 6C69 65 6E 74 2F 31 2E 30 0D 0A 0D 0A
#47 45 54 20 2F 63 68 61 6E 6E 65 6C 5F 6C 69 73 74 2F 6C 69 73 74 2F 30 32 3036 25 44 30 25 41 31 25 43 39 25 46 32 25 44 31 25 46 34 25 43 39 25 45 44 25 4243 25 44 42 25 42 31 25 41 39 25 44 35 25 43 37 36 30 30 25 42 31 25 42 36 25 4237 25 41 32 25 43 41 25 43 34 25 42 32 25 42 42 25 43 35 25 44 37 25 43 36 25 4445 2E 68 74 6D 6C 20 48 54 54 50 2F 31 2E 31 0D 0A 41 63 63 65 70 74 3A 20 2A 2F2A 0D 0A 41 63 63 65 70 74 2D 4C 61 6E 67 75 61 67 65 3A 20 7A 68 2D 63 6E 0D 0A55 41 2D 43 50 55 3A 20 78 38 36 0D 0A 41 63 63 65 70 74 2D 45 6E 63 6F 64 69 6E67 3A 20 67 7A 69 70 2C 20 64 65 66 6C 61 74 65 0D 0A 55 73 65 72 2D 41 67 65 6E74 3A 20 4D 6F 7A 69 6C 6C 61 2F 34 2E 30 20 28 63 6F 6D 70 61 74 69 62 6C 65 3B20 4D 53 49 45 20 37 2E 30 3B 20 57 69 6E 64 6F 77 73 20 4E 54 20 35 2E 31 3B 2061 66 66 2D 6B 69 6E 67 73 6F 66 74 2D 63 69 62 61 29 0D 0A 48 6F 73 74 3A 20 766F 64 67 75 69 64 65 2E 70 70 73 2E 74 76 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A20 4B 65 65 70 2D 41 6C 69 76 65 0D 0A 43 6F 6F 6B 69 65 3A 20 70 70 73 6C 6F 6769 6E 32 3D 2D 31 3B 20 70 70 73 5F 63 6C 69 65 6E 74 5F 69 64 3D 41 41 4E 33 5336 35 55
..............................
4.应用层协议特征提取
选择AC算法,配置AC算法的参数:频繁1项集长度len=6,最小支持度阈值minimum_sup=0.2。启动应用层协议特征提取模块的分析功能,从PPStream.txt文件中提取出PPStream软件的特征,并将提取得到的协议特征集合输出到应用层协议特征优化模块。
表1是提取得到的PPStream软件的协议特征及其支持度:
Figure G2009102601045D00131
Figure G2009102601045D00141
表1
5、PPStream软件特征优化
应用层协议特征优化模块接收应用层协议特征提取模块送来的协议特征集合,对协议特征集合进行优化处理,删除多余的、不具代表性的和应用层通用的协议特征。表2是优化后的PPStream软件的协议特征及其支持度:
  特征的十六进制表示   特征的十进制表示   特征的支持度
  20687474703A2F2F766F6467756964652E7070732E74762F6368616E6E656C5F6C6973742F6C6973742F3032   http://vodguide.pps.tv/channel_list/list/02 0.276
  207070735F636C69656E745F69643D4141   pps_client_id=AA   0.214
  2E707073747265616D2E636F6D0D0A436F   .ppstream.com Co   0.253
  0D0A436F6F6B69653A20707073   Cookie:pps   0.253
  2E7070732E74760D0A   .pps.tv   0.31
  特征的十六进制表示   特征的十进制表示   特征的支持度
  505053747265616D   PPStream   0.253
  ......   ......   ......
表2
6、将经过优化处理后的协议特征传送给应用层协议特征提取结果展示模块,以图表和文字的形式展示提取得到的协议特征结果。
7、将协议特征结果发送给应用层协议特征周期性更新模块,通过应用层协议特征周期性更新模块对提取得到的协议特征与特征数据库的协议特征进行比较和更新。
本发明的应用层协议特征提取方法可以充分满足实际工程应用的需求,提高了网络协议分析处理的效率和进度,为网络运营商实时监控网络资源、解决网络拥堵问题提供了技术上的支持。
当然,以上所述仅是本发明的一种优选实施方式,应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种应用层协议特征的提取方法,包括以下步骤:
(1)捕获待监听的流量数据包;
(2)提取流量数据包中的频繁1项集,所述频繁1项集的长度设定为2的整数倍;
(3)采用如下合并过程将频繁k项集合并成候选k+1项集,k≥1:
b1=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位的子序列,b1和b2为得到的候选k+1项集,其长度为LEN+2;
(4)计算候选k+1项集的支持度support,提取满足支持度条件support≥minimum_sup的候选k+1项集,作为频繁k+1项集;所述minimum_sup为频繁项集支持度的最小阈值;
(5)在频繁k项集中,删除频繁k+1项集包含的项集;
由步骤(3)、(4)、(5)获取的各个频繁项集即构成应用层的协议特征集合。
2.根据权利要求1所述的应用层协议特征的提取方法,其特征在于:在所述步骤(2)的频繁1项集提取过程中,采用Bloom Filter算法来判断重复频繁1项集,并将重复的频繁1项集删除。
3.根据权利要求1所述的应用层协议特征的提取方法,其特征在于:在完成频繁k+1项集的提取过程后,紧接着进行删除冗余的频繁k项集的过程:
令fz为一个频繁k+1项集;fx和fy为两个频繁k项集,且fx=fz.substring(1,fz.length()-2),fy=fz.substring(3,fz.length()),那么删除频繁k项集fx和fy
4.根据权利要求1所述的应用层协议特征的提取方法,其特征在于:在所述步骤(2)之前包括建立流量数据包的频繁项集数据模型的过程:
令I={i1,i2,....id},每个项ig(g=1到d)由两位十六进制数组成,是应用层流量数据包的最小单位;
T={t1,t2,....td}为所有数据包的集合,ti={I的子集构成的序列},为一个应用层协议信息数据包;
令S=substring(ti),S表示应用层协议信息数据包ti的一个子序列,为I的项集;
频繁项集的支持度support=P(ti(S)/T);若support≥minimum_sup,则应用层流量数据包ti的子序列S为该应用层的协议特征。
5.根据权利要求1所述的应用层协议特征的提取方法,其特征在于:所述频繁1项集的长度为2的倍数,且大于等于4。
6.根据权利要求2所述的应用层协议特征的提取方法,其特征在于:在所述步骤(2)和(4)的频繁项集的提取过程中,包括删除不产生频繁项集的流量数据包的过程。
7.根据权利要求1至6中任一项所述的应用层协议特征的提取方法,其特征在于:在所述步骤(1)中还包括对捕获到的流量数据包进行预处理的过程:
将捕获到流量数据包进行上行网络流量和下行网络流量的分流,只保留上行网络流量。
8.根据权利要求7所述的应用层协议特征的提取方法,其特征在于:在所述对捕获到的流量数据包进行预处理的过程中还包括对上行网络流量的每一个流量数据包的链路层、网络层、传输层的头文件信息去除,只保留应用层数据信息,形成应用层协议信息数据包供后续步骤使用的过程。
9.根据权利要求8所述的应用层协议特征的提取方法,其特征在于:在所述对捕获到的流量数据包进行预处理的过程中还包括根据设定的应用层协议信息数据包长度阈值L对应用层协议信息数据包进行限制和截取的过程,使得每个应用层协议信息数据包只保留长度为L的数据信息。
10.根据权利要求1至6中任一项所述的应用层协议特征的提取方法,其特征在于:在所述步骤(5)之后还包括对提取出的应用层的协议特征集合进行优化的过程:
删除协议特征集合中不具代表性的协议特征和应用层通用的协议特征。
CN2009102601045A 2009-12-25 2009-12-25 一种应用层协议特征的提取方法 Expired - Fee Related CN101753622B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102601045A CN101753622B (zh) 2009-12-25 2009-12-25 一种应用层协议特征的提取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102601045A CN101753622B (zh) 2009-12-25 2009-12-25 一种应用层协议特征的提取方法

Publications (2)

Publication Number Publication Date
CN101753622A true CN101753622A (zh) 2010-06-23
CN101753622B CN101753622B (zh) 2012-10-31

Family

ID=42480011

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102601045A Expired - Fee Related CN101753622B (zh) 2009-12-25 2009-12-25 一种应用层协议特征的提取方法

Country Status (1)

Country Link
CN (1) CN101753622B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103095718A (zh) * 2013-01-29 2013-05-08 电子科技大学 一种基于Hadoop的应用层协议特征提取方法
CN103250382A (zh) * 2012-12-28 2013-08-14 华为技术有限公司 分流方法、设备和系统
CN103841213B (zh) * 2014-03-25 2017-01-11 武汉理工大学 一种面向汽车can网络报文数优化的车辆信号封装方法
CN108092792A (zh) * 2016-11-23 2018-05-29 中国移动通信集团湖北有限公司 一种ott应用字节流特征提取方法和装置
CN109033636A (zh) * 2018-07-27 2018-12-18 电子科技大学 基于链路层比特流盲分析的链路层接入机制分析方法
CN110457465A (zh) * 2019-06-21 2019-11-15 武汉大学 一种针对未知比特流协议的分类方法
CN111222019A (zh) * 2019-12-17 2020-06-02 山石网科通信技术股份有限公司 特征提取的方法和装置
CN112104518A (zh) * 2019-08-26 2020-12-18 中国科学院国家空间科学中心 一种比特数据特征挖掘方法、系统、设备及可读介质
CN112968865A (zh) * 2021-01-26 2021-06-15 西安理工大学 一种基于关联规则挖掘的网络协议语法特征快速提取方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101262491A (zh) * 2008-04-02 2008-09-10 王京 应用层网络分析方法及系统

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103250382A (zh) * 2012-12-28 2013-08-14 华为技术有限公司 分流方法、设备和系统
WO2014101133A1 (zh) * 2012-12-28 2014-07-03 华为技术有限公司 分流方法、设备和系统
CN103250382B (zh) * 2012-12-28 2017-04-26 华为技术有限公司 分流方法、设备和系统
US9807642B2 (en) 2012-12-28 2017-10-31 Huawei Technologies Co., Ltd. Traffic distribution method, device, and system
CN103095718A (zh) * 2013-01-29 2013-05-08 电子科技大学 一种基于Hadoop的应用层协议特征提取方法
CN103095718B (zh) * 2013-01-29 2015-07-15 电子科技大学 一种基于Hadoop的应用层协议特征提取方法
CN103841213B (zh) * 2014-03-25 2017-01-11 武汉理工大学 一种面向汽车can网络报文数优化的车辆信号封装方法
CN108092792A (zh) * 2016-11-23 2018-05-29 中国移动通信集团湖北有限公司 一种ott应用字节流特征提取方法和装置
CN109033636A (zh) * 2018-07-27 2018-12-18 电子科技大学 基于链路层比特流盲分析的链路层接入机制分析方法
CN109033636B (zh) * 2018-07-27 2022-04-22 电子科技大学 基于链路层比特流盲分析的链路层接入机制分析方法
CN110457465A (zh) * 2019-06-21 2019-11-15 武汉大学 一种针对未知比特流协议的分类方法
CN112104518A (zh) * 2019-08-26 2020-12-18 中国科学院国家空间科学中心 一种比特数据特征挖掘方法、系统、设备及可读介质
CN111222019A (zh) * 2019-12-17 2020-06-02 山石网科通信技术股份有限公司 特征提取的方法和装置
CN111222019B (zh) * 2019-12-17 2022-09-06 山石网科通信技术股份有限公司 特征提取的方法和装置
CN112968865A (zh) * 2021-01-26 2021-06-15 西安理工大学 一种基于关联规则挖掘的网络协议语法特征快速提取方法
CN112968865B (zh) * 2021-01-26 2022-08-02 西安理工大学 一种基于关联规则挖掘的网络协议语法特征快速提取方法

Also Published As

Publication number Publication date
CN101753622B (zh) 2012-10-31

Similar Documents

Publication Publication Date Title
CN101741908B (zh) 一种应用层协议特征的识别方法
CN101753622B (zh) 一种应用层协议特征的提取方法
CN101707532B (zh) 一种未知应用层协议自动分析方法
CN102420701B (zh) 一种互联网业务流特征的提取方法
CN105162626B (zh) 基于众核处理器的网络流量深度识别系统及识别方法
CN102664935B (zh) 一种web类用户行为和用户信息的关联输出方法及系统
CN107431663A (zh) 网络流量分类
CN104506484A (zh) 一种私有协议分析与识别方法
CN102164049A (zh) 加密流量的普适识别方法
US9531542B2 (en) Secure remote password
CN113676348B (zh) 一种网络通道破解方法、装置、服务器及存储介质
CN106656792B (zh) 一种基于sdn架构的bgp路由可信验证方法
CN103488683B (zh) 一种微博数据管理系统及其实现方法
CN102571946B (zh) 一种基于对等网络的协议识别与控制系统的实现方法
CN105302885A (zh) 一种全文数据的提取方法和装置
CN106850793A (zh) 一种面向Android手机的远程可信取证的方法
CN102984243B (zh) 一种ssl协议中应用的自动识别方法和装置
CN108123962A (zh) 一种利用Spark实现BFS算法生成攻击图的方法
Lin et al. A novel multimodal deep learning framework for encrypted traffic classification
CN105302785B (zh) 数据收集方法和系统
CN116346483A (zh) 一种加密挖矿行为识别方法及装置
Hejun et al. Online and automatic identification and mining of encryption network behavior in big data environment
CN108259493A (zh) 一种安全协议消息构造方法
CN105530098B (zh) 一种协议指纹自动提取方法及系统
CN113949653A (zh) 一种基于深度学习的加密协议识别方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121031

Termination date: 20171225