一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于数据挖掘的报文类型识别方法及装置

2022-04-30 11:43:06 来源:中国专利 TAG:


1.本发明属于报文类型识别技术领域,特别涉及一种基于数据挖掘的报文类型识别方法及装置。


背景技术:

2.网络协议可简要分为文本协议和二进制协议两类,文本协议往往包含自然语言处理可识别的分隔符和关键字,而大多数二进制网络协议缺乏自然语言处理所需的这些结构特征,因此当前基于网络流量的协议逆向研究主要集中在二进制协议。
3.基于相似性的方法是二进制协议逆向分析最常用的技术,该类方法大多数都源自生物信息学算法。使用基于相似性的方法分析网络协议时,报文通常表示为字节序列或者其他基本单位序列,先利用序列对比算法来对齐报文并计算相似性分数,然后基于相似性分数对报文进行聚类,最后通过分析簇内报文的共性来确定报文类型并归纳报文格式。然而,这种方法存在以下两个缺点:(1)报文内容的多样性会降低对齐质量。一方面无法保证收集样本的多样性,另一方面相同类型报文的相同字段可能具有差异很大的值,而不同类型的报文也可能具有一些相同取值的公共字段;(2)序列比对算法适用效果无法保证。精准的序列比对因其指数级复杂性不能用于大规模数据,而广泛使用的诸如upgma等递归聚类算法源自生物信息学,不能完全适用于协议分析。比如在生物信息学中,upgma用到了系统发育树以反映基因组序列的进化,但协议报文却不存在此类进化关系。
4.事实上,服务器和客户端收到报文后仅仅通过关键字来确定报文类型,因此,如果能够推断出表示关键字的字段,那么报文的类型也就明确了。然而,要从密集的二进制数据中找到关键字并不容易,许多方法只能通过关键字相关序列来间接确定报文类型,唯一尝试通过一个关键字字段确定报文类型的只有netplier。
5.netplier首先对来自客户端和服务器端的报文使用多序列对齐(msa)算法进行对齐,然后将报文划分为字段序列并区分固定、动态和变长字段,对每个动态字段引入一个随机变量来表示该字段成为关键字的概率。假设一个动态字段是关键字,那么报文就可以根据这个字段的取值分成不同的簇,这些簇会满足一些约束关系。netplier使用了报文相似性约束(message similarity constraints)、远程耦合约束(remote coupling constraints)、结构一致性约束(structure coherence constraints)和维度约束(dimension constraints)来构建概率约束关系。最后执行概率推理来推导出随机变量的后验概率,选择所有候选字段中概率最高的一个作为关键字,并用它来识别报文。netplier的实验结果优于其他同类技术,然而其仍然存在以下不足:(1)使用序列比对生成候选关键字的做法带来巨大的时间和空间复杂度;(2)约束关系未考虑语义约束;(3)推断概率设定倾向于生成更少的簇,在大规模报文中不适用。


技术实现要素:

6.针对现有技术中存在的缺陷,本发明提出一种基于数据挖掘的报文类型识别方法
及装置,使用数据挖掘快速确定候选关键字字段,并改进了概率约束关系,能够在较短时间内识别报文类型,且准确率高,解决了在不对齐报文的条件下提取具有动态长度和位置的关键字字段的问题。
7.为了实现上述目的,本发明采用以下的技术方案:
8.本发明提供了一种基于数据挖掘的报文类型识别方法,包含以下步骤:
9.对报文序列使用连续序列模式算法生成频繁连续子序列;
10.通过关键连续序列模式算法在选出的频繁连续子序列上生成位置相关的候选关键字字段;
11.基于因子图模型计算候选关键字字段成为关键字的概率;
12.选取概率最大的候选关键字字段作为关键字确定报文类型。
13.进一步地,所述连续序列模式算法具体包含以下步骤:
14.首先从所有序列中提取长度为1个基本长度的子序列并将它们存储在子序列集中;
15.然后在长度为l

1个基本长度的子序列中计算达到最小支持度的频繁连续子序列,其中支持度定义为包含目标子序列的序列数,并根据apriori策略使用长度为l

1的频繁连续子序列来生成长度为l的连续子序列,迭代执行此步骤直到不能提取新的连续子序列为止;
16.最后取所有频繁连续子序列的并集并将被集合内其它序列包含的子序列删除,按支持度降序排序后返回。
17.进一步地,多个候选关键字字段组成候选关键字字段集合的表达式如下:
18.keyseqset={k1,k2,...,kn}
19.其中,n表示候选关键字字段的数量;
20.那么,候选关键字字段ki的结构表达式如下:
21.ki=[minoffset,maxdepth,modeoffset,modelen,kw]
[0022]
其中,minoffset表示当前频繁连续子序列fs的最小起始位置,maxdepth表示当前频繁连续子序列fs的最大结束位置,modeoffset表示kw内所有频繁连续子序列起始位置的最小众数,modelen表示kw内所有频繁连续子序列长度的最小众数,kw是遍历时的当前频繁连续子序列fs和剔除包含fs的报文后的报文序列集合中minoffset到maxdepth范围内所有频繁连续子序列的集合,因此通过设置此结构来保证关键连续序列模式算法能够识别到位置不固定的关键字字段。
[0023]
进一步地,后续进行报文聚类时,首先在minoffset到maxdepth范围内按支持度降序的顺序寻找是否存在kw中的频繁连续子序列,若存在则将该报文的类别识别为该频繁连续子序列,否则根据modeoffset和modelen在minoffset到maxdepth范围内截取序列进行类别标识。
[0024]
进一步地,所述通过关键连续序列模式算法在选出的频繁连续子序列上生成位置相关的候选关键字字段,具体包括:
[0025]
首先在频繁连续子序列集合中挑选满足以下三个条件的子序列:(1)子序列位置标准差小于预设值,表明该子序列的位置变动范围不大;(2)子序列的支持度不是1,表明该子序列没有出现在所有的报文中;(3)子序列不存在一个已有的候选关键字字段中,防止重
复计算;
[0026]
然后创建一组不包含满足上述条件的子序列的报文序列集合并根据当前频繁连续子序列的最小起始位置和最大结束位置截断这些报文序列;
[0027]
最后在新创建的报文序列上运行连续序列模式算法,如果有获取新的频繁连续子序列则将连续序列模式算法得到的结果与当前频繁连续子序列共同组成一个候选关键字字段集合并按照候选关键字字段结构进行信息保存。
[0028]
进一步地,所述因子图模型将关键字识别中的不确定性建模为观察值和一组随机变量的联合分布,每个随机变量表示一个候选关键字字段是否是报文关键字的概率,观察值就是四种约束关系的相关概率;所述四种约束关系包括:(1)报文相似性约束m(f,c),定义为同一个簇内的报文尽可能相似,不同簇之间的报文尽可能分离;(2)语义一致性约束l(f,c),定义为同一个簇内的报文具有相似的语义信息;(3)远程耦合约束r(f,c),定义为同一个簇内的报文对应的请求或响应报文属于相同的簇;(4)维度约束d(f),定义为根据关键字字段取值划分出来的簇的数量不会很大且每个簇包含足够数量的报文;每种约束关系均包括观察约束和推断约束,所述观察约束是指约束关系本身成立与否,所述推断约束是指约束关系与随机变量的推断关系。
[0029]
进一步地,所述随机变量表示为k(f),字段f为协议关键字字段;
[0030]
报文相似性约束m(f,c)成立概率的表达式如下:
[0031][0032]
令intradis表示某个样本与其所在簇内其他样本的平均距离,interdis表示某个样本与其他簇样本的平均距离,n为簇内样本数,则对于某个样本的轮廓系数sc和某个簇的轮廓系数sc分别定义为:
[0033][0034][0035]
语义一致性约束l(f,c)成立概率的表达式如下:
[0036][0037]
其中,unionnum表示某一簇内拥有候选关键字字段集合所有kw中不同频繁连续子序列的数量,internum表示该簇内所有报文共同拥有的频繁连续子序列数量;
[0038]
远程耦合约束r(f,c)成立概率的表达式如下:
[0039][0040]
对于一个具有msgnum条报文的簇,计算该簇报文中属于同一个簇的请求或响应报文的最大数量,用maxnum表示;
[0041]
维度约束d(f)成立概率的表达式如下:
[0042][0043]
其中,clunum表示根据关键字字段取值划分的簇的数量,msgsnum表示所有报文的数量,singlenum表示只包含一条报文的簇的数量;
[0044]
四种约束关系与随机变量的推断概率根据先验知识设定。
[0045]
进一步地,使用因子图模型进行概率计算的过程包括:
[0046]
首先,使用概率函数描述各个约束关系,令k代表k(f),xi代表一个具体的簇或者整个聚类结果的某种约束关系;
[0047]
然后,令fj表示某个概率函数,变量k和观察值的联合概率函数表示为s个概率函数当前取值的乘积除以s个概率函数所有可能取值的乘积的和,n和s分别表示约束关系和概率函数的数量,联合概率函数公式如下:
[0048][0049]
最后,候选关键字字段f成为报文关键字的概率表示为k的边缘概率,如下式:
[0050][0051]
本发明还提供了一种基于数据挖掘的报文类型识别装置,包括:
[0052]
频繁连续子序列生成模块,用于对报文序列使用连续序列模式算法生成频繁连续子序列;
[0053]
候选关键字字段选取模块,用于通过关键连续序列模式算法在选出的频繁连续子序列上生成位置相关的候选关键字字段;
[0054]
概率计算模块,用于基于因子图模型计算候选关键字字段成为关键字的概率;
[0055]
报文类型识别模块,用于选取概率最大的候选关键字字段作为关键字确定报文类型。
[0056]
与现有技术相比,本发明具有以下优点:
[0057]
本发明的基于数据挖掘的报文类型识别方法不需要对齐报文,首先使用连续序列模式算法生成n-gram频繁连续子序列,而后基于频繁连续子序列挖掘出位置相关的候选关键字字段,解决了在不对齐报文的条件下提取具有动态长度和位置的关键字字段的问题。在关键字字段判决方面,针对netplier未考虑语义约束的不足,改进了报文相似性约束设定,引入语义一致性约束来计算概率,最终利用因子图模型推导每个候选关键字字段成为最终关键字的概率,选择概率最高的来确定报文类型。本发明的基于数据挖掘的报文类型识别方法与序列比对方法相比,能够在耗时较短的情况下准确识别出关键字进而确定报文类型。
附图说明
[0058]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0059]
图1是本发明实施例的基于数据挖掘的报文类型识别方法的流程示意图;
[0060]
图2是本发明实施例的因子图模型的示意图;
[0061]
图3是本发明实施例的四种方法在不同协议规模下的耗时变化情况图;
[0062]
图4是本发明实施例的本发明方法与netplier在不同协议上的运行耗时对比图。
具体实施方式
[0063]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0064]
针对netplier存在的不足,本实施例提出一种基于数据挖掘的报文类型识别方法,如图1所示,包含以下步骤:
[0065]
步骤s11,对报文序列使用连续序列模式算法生成频繁连续子序列。
[0066]
步骤s12,通过关键连续序列模式算法在选出的频繁连续子序列上生成位置相关的候选关键字字段。
[0067]
步骤s13,基于因子图模型计算候选关键字字段成为关键字的概率。
[0068]
步骤s14,选取概率最大的候选关键字字段作为关键字确定报文类型。
[0069]
数据挖掘是指从数据中获取知识,可获取的知识包括关联规则、分类规则、序列模式、聚类规则、泛化规则和相似搜索等。获取关联规则是数据挖掘最常见的应用,其中最有影响力的关联规则挖掘算法是apriori算法。apriori算法利用逐层搜索的迭代方法找出数据库中项集的关系以形成规则,其过程由连接与剪枝组成,该算法中项集的概念即为项的集合,项集出现的频率是指包含项集的事务数,如果某项集频率满足最小支持度,则称它为频繁项集。apriori算法简单明了、易于实现,催生了许多算法,这些算法都遵循apriori原理:如果一个集合是频繁项集,则它的所有子集都是频繁项集;如果一个集合不是频繁项集,则它的所有超集都不是频繁项集。
[0070]
序列模式挖掘与关联规则挖掘的过程类似,它们的主要区别在于关联规则挖掘的目的是提取频繁出现的并发项集,而序列模式挖掘的目的是提取频繁出现的时间序列模式。基于apriori原理的序列模式挖掘算法包括aprioriall、apriorisome和广义序列模式(gsp)。goo等人为了通过序列模式挖掘技术提取字段格式、报文格式和会话格式进而提取协议语法,提出了一种适用于提取协议规范的算法,称为连续序列模式(contiguous sequential pattern,csp)算法。csp算法的目标是找到频繁的连续公共子序列,因为协议报文是连续的字段序列,因此这种算法不允许模式中存在间隙。为了消除间隙,该算法改进了具有间隙约束的gsp算法,使其最小和最大间隙均为零,以避免挖掘出的模式存在间隙。
[0071]
csp算法的伪代码如下所示:
[0072][0073][0074]
步骤s11中连续序列模式算法具体包含以下步骤:
[0075]
步骤s111,从所有序列中提取长度为基本长度(比如1字节)的子序列并将它们存储在子序列集f1中(第1-5行)。
[0076]
步骤s112,在长度为l

1个基本长度的子序列中计算达到最小支持度的频繁连续子序列,并迭代提取所有长度为l个基本长度的候选子序列,直到不能提取新的子序列为止(第6-16行),这个迭代过程包括两部分,第一部分,计算获得当前子序列支持度并排除不满足最小支持阈值的候选子序列(第8-13行),支持度定义为包含目标子序列的序列数,通过提取支持度高于预定义的最小支持度的子序列来获取频繁连续子序列;第二部分,根据apriori策略使用长度为l

1的频繁连续子序列来生成长度为l的候选子序列供下一次迭代使用(第14行),以加快子序列生成速度。
[0077]
步骤s113,取所有频繁连续子序列的并集并将被集合内其它序列包含的子序列删除,按支持度降序排序后返回(第17-19行)。
[0078]
关键连续序列模式(kcsp)算法的伪代码如下所示:
[0079][0080]
介绍关键连续序列模式算法之前,有必要先解释其输出候选关键字字段集合keyseqset的结构,公式(1)表示一组候选关键字字段:
[0081]
keyseqset={k1,k2,...,kn}(1)
[0082]
其中,n表示候选关键字字段的数量。
[0083]
公式(2)表示候选关键字字段ki的结构:
[0084]ki
=[minoffset,maxdepth,modeoffset,modelen,kw](2)
[0085]
其中,minoffset表示当前频繁连续子序列fs的最小起始位置,maxdepth表示当前频繁连续子序列fs的最大结束位置,modeoffset表示kw内所有频繁连续子序列起始位置的最小众数,modelen表示kw内所有频繁连续子序列长度的最小众数,kw是遍历时的当前频繁连续子序列fs和剔除包含fs的报文后的报文序列集合temp中minoffset到maxdepth范围内所有频繁连续子序列的集合。由于没有事先对齐报文,报文的关键字字段的位置不一定相同,因此本发明通过设置此结构来保证kcsp算法能够识别到位置不固定的关键字字段。后续进行报文聚类时,首先在minoffset到maxdepth范围内按支持度降序的顺序寻找是否存在kw中的频繁连续子序列,若存在则将该报文的类别识别为该频繁连续子序列,否则根据modeoffset和modelen在minoffset到maxdepth范围内截取序列进行类别标识。
[0086]
步骤s12的关键连续序列模式算法具体包含以下步骤:
[0087]
步骤s121,在频繁连续子序列集合中挑选满足以下三个条件的子序列(第1-3行):(1)子序列位置标准差小于位置标准差阈值t,表明该子序列的位置变动范围不大;(2)子序
列的支持度不是1,表明该子序列没有出现在所有的报文中;(3)子序列不存在一个已有的候选关键字字段中,防止重复计算。
[0088]
步骤s122,创建一组不包含满足上述条件的子序列的报文序列集合并根据当前频繁连续子序列的最小起始位置和最大结束位置截断这些报文序列(第4-7行)。
[0089]
步骤s123,在新创建的报文序列上运行连续序列模式算法,如果有获取新的频繁连续子序列则将连续序列模式算法得到的结果与当前频繁连续子序列共同组成一个候选关键字字段集合并按照候选关键字字段结构将信息保存到keyseqset中(第8-16行)。
[0090]
所述步骤s13中的因子图模型将关键字识别中的不确定性建模为观察值和一组随机变量的联合分布,每个随机变量表示一个候选关键字字段是否是报文关键字的概率,观察值就是四种约束关系涉及到的概率。根据步骤s123获得的候选关键字字段集合,构造特定约束关系来获取观察值以推断哪个字段最有可能是关键字。
[0091]
为了确定关键字字段,netplier区分服务器端和客户端报文,根据以下4个观察对通过关键字字段取值聚类得到的簇设置以下约束关系:(1)同一个簇内的报文应该比不同簇的报文更相似;(2)客户端和服务端报文所属的簇应该有对应关系;(3)同一个簇中的报文遵循相同的字段结构(4)簇的数量不能过多,在每个簇中应该有足够数量的报文。针对观察(1),本发明基于轮廓系数对其进行了修改,即同一个簇内的报文应尽可能相似、不同的簇之间的报文应尽可能分离。观察(3)具体实现需要用到对齐报文过程中插入的对齐填充符,本发明没有进行报文对齐,因此无法计算报文之间的结构相似性。不过kscp算法在运行的过程能够筛选出频繁子序列,这些序列可以作为语义信息来计算报文之间的语义相似性。因此,本发明提出了基于语义的约束设定:同一簇内的报文应具有相似的语义信息。
[0092]
以上提到的观察设定具有不确定性,真正的聚类结果可能不会完全遵循这样的设定,满足这些设定的聚类也不一定是正确结果。因此,需要引入了一个随机变量来量化表示候选关键字字段能否成为真正的关键字。随机变量可以和实际观察形成联合概率分布,从而将关键字字段识别转化为概率推理问题,通过计算给定的关键字字段随机变量的边缘后验概率,进行比较后可以获取最有可能作为关键字的字段。
[0093]
表1约束关系相关概念
[0094]
[0095]
表1展示了本发明提出的约束关系涉及到的几个概念,其中k(f)成立概率pk是计算目标,通过计算并比较所有候选字段的pk,可以确定最终关键字。m(f,c)、l(f,c)、r(f,c)和d(f)分别指报文相似性约束、语义一致性约束、远程耦合约束和维度约束,它们的观察约束概率pm、p
l
、pr和pd由实验数据计算得到,k(f)和约束关系之间的推断约束概率则需要根据先验知识进行赋值。现有的概率推理文献在遇到先验概率时一般通过先验知识预设,由于概率推断算法往往进行了多轮迭代,因此推断结果对这些先验概率值并不敏感,先验概率值的作用主要是给不同约束关系的可靠程度进行定性。在对观察约束概率赋值时,本发明分别取0.9和0.1表示可能和不可能。第一类推断约束概率(p

)应该比第二类推断约束概率(p

)大,因为在某字段确定为报文关键字的情况下,该位置的特征大概率会满足针对报文关键字设计的约束关系,但反过来,有些满足这些约束的字段却不一定会是关键字。由于报文相似性仅由报文之间相同的字节值所占比率计算而来,没有考虑位置等信息,其可靠性较低,因此本发明设置m(f,c)的第一类推断约束概率为0.8,其余第一类设置为0.9。netplier依据划分到各个簇内的样本数量在[0.6,0.8]之间设定第二类推断约束概率,具体计算方法如公式(3)所示,其中csize表示当前簇包含的样本数,sum表示所有簇包含的样本数。这种赋值方法有利于那些把报文聚为比较少的簇且各簇样本数较均衡的字段,在报文样本数较低时效果较好,但是随着样本数增加,数据内包含的报文类别增多,此时继续使用本方法会导致真正的关键字字段难以被发现。因此,本发明在计算100个样本以上的数据时,将sum替换为maxsize,即所有簇内包含样本数的最大值。
[0096][0097]
报文相似性约束定义为同一个簇内的报文应尽可能相似、不同簇之间的报文应尽可能分离,此处使用轮廓系数来量化数值。轮廓系数取值范围为[-1,1],可以作为评估指标衡量聚类效果,其取值越接近1则说明聚类效果越好,越接近-1则说明聚类效果越差。令intradis表示某个样本与其所在簇内其他样本的平均距离,interdis表示某个样本与其他簇样本的平均距离,则对于某个样本的轮廓系数sc和某个簇的轮廓系数sc可以分别定义为(n为簇内样本数):
[0098][0099][0100]
对于该簇的pm,其赋值方法如下:
[0101][0102]
语义一致性约束定义为同一个簇内的报文具有相似的语义信息。kcsp算法能得到一组候选关键字字段集合keyseqset,令unionnum表示某一簇内拥有keyseqset所有kw中不同频繁连续子序列的数量,internum表示该簇内所有报文共同拥有的频繁连续子序列数量,则对于这个簇的p
l
,其赋值方法如下:
[0103][0104]
远程耦合约束定义为同一个簇内的报文对应的请求或响应报文应该都属于相同的簇。通过预处理可以基于五元组把流量分割为双向会话,分别使用候选关键字对客户端和服务器报文进行聚类,会话中的报文可以用它们所属的簇进行标记。对于一个具有msgnum条报文的簇,计算该簇报文中属于同一个簇的请求或响应报文的最大数量,用maxnum表示,则对于这个簇的pr,其赋值方法如下:
[0105][0106]
维度约束定义为根据关键字字段取值划分出来的簇的数量不会很大且每个簇包含足够数量的报文。令clunum表示根据关键字字段取值划分的簇的数量,msgsnum表示所有报文的数量,singlenum表示只包含一条报文的簇的数量,则对于当前关键字字段的pd,其赋值方法如下:
[0107][0108]
使用因子图模型进行概率计算的过程包括:
[0109]
步骤s131,使用概率函数描述各个约束关系,为简化表达,令k代表k(f),xi代表一个具体的簇或者整个聚类结果的某种约束关系;假设xi表示的是某个簇c的报文相似性约束m(f,c),则该簇的报文相似性观察约束和两个推断约束可以分别表示为公式(10)、公式(11)和公式(12)。
[0110][0111][0112][0113]
步骤s132,令fj表示某个概率函数,变量k和观察值的联合概率函数表示为s个概率函数当前取值的乘积除以s个概率函数所有可能取值的乘积的和,n和s分别表示约束关系和概率函数的数量,联合概率函数如公式(13):
[0114][0115]
步骤s133,候选关键字字段f成为报文关键字的概率表示为k的边缘概率,如公式(14):
[0116][0117]
本发明使用因子图来表示所有概率函数并进行概率计算。作为一种概率图模型,因子图是具有因子节点和可变节点的二分图,因子节点代表概率函数,变量节点代表在概率函数中使用到的变量,连线表示变量节点和因子节点相关,本发明使用的关键字判别因子图模型如图2所示。因子图能通过信念传播算法高效地求解各个变量的边缘分布,被广泛应用于信号处理、系统生物学和系统动力学等领域,具体实现可参考ankan等人的研究。得到所有候选关键字字段的概率后,选取概率最大的字段作为报文关键字。
[0118]
下面给出一个具体的实验以验证本发明的效果。
[0119]
(1)实验数据
[0120]
本发明实验使用的两个数据集分别是基础应用协议数据集和netplier公开数据集。netplier是目前报文类型识别方面最前沿的工作之一,其源代码和部分实验数据已经开源。由于开源的实验数据内各个协议的规模都是100条报文左右,为了验证方法的通用性,需要构建其他规模更大的数据集。出于方便比较的考虑,本发明选取了协议类型都包含在netplier数据集中的基础应用协议数据集。
[0121]
流量数据都是以会话为基本单位进行处理的,本发明首先以报文为单位随机从基础应用协议数据集选出不同规模的数据,结合实验环境,每种协议的数据规模被定为100、500和1000条报文三种。
[0122]
基础应用协议数据集从公开流量数据集中过滤了三种常见应用协议的流量,包括dhcp、smb和ntp。dhcp(dynamic host configuration protocol,动态主机配置协议)是一个种局域网协议,基于udp协议进行通信,主要作用是集中地管理、分配ip地址。smb(server message block,服务器消息块)是一种网络文件系统协议,使用了netbios的应用程序接口,microsoft的文件共享功能使用该协议进行数据传输。ntp(network time protocol,网络时间协议)是由rfc1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步,该协议基于udp进行报文传输,使用123作为端口号。表2给出了该数据集中各种协议的报文类型数和报文数量。
[0123]
表2基础应用协议数据集
[0124][0125][0126]
netplier数据集是由从公开流量数据集中过滤的10种常见协议报文组成,除了tftp协议,其他协议至少都过滤了1000条报文。公开的netplier数据集仅有9种二进制协议,且协议的规模都较小,其具体信息如表3所示。包含的9个协议中,dhcp具有复杂的字段结构,因此其报文相似性较低;icmp和ntp结构简单,但报文类型包含广播报文,可能导致远程耦合约束失效;smb和smb2是同一协议的前后版本,但它们的字段结构不同且都具有许多报文类型;tftp是一种文件传输协议,不同报文的长度可能差别很大;zeroaccess用于p2p
僵尸网络的通信,是一种典型的c&c(commandand control)协议;dnp3和modbus是两种常用的工控协议。可以看出,该数据集覆盖范围广、类别多样性强,不足之处是公开的数据规模太小、大部分数据包含的协议报文类型太少。
[0127]
表3 netplier公开数据集
[0128][0129]
(2)评估指标
[0130]
本发明使用v-measure作为报文类型识别的度量标准,v-measure是同质性(homogeneity)和完整性(completeness)的调和平均数,其取值范围为[0,1],越接近1说明识别效果越好。同质性h和完整性c分别指每个簇只包含单个类的成员和给定类的所有样本都划分到同一个簇,其定义分别如公式(15)和公式(16)。
[0131][0132][0133]
令n表示样本总数,n
t
和nc分别表示属于类型t和簇c的样本数,而n
t,c
表示从类型t划分到簇c的样本数量,则h(t|c)和h(t)的定义分别如公式(17)和公式(18)所示,h(c|t)和h(c)可依同理求得。
[0134][0135][0136]
v-measure的具体计算方法如下所示:
[0137][0138]
(3)实验结果
[0139]
由于本发明所使用协议的报文关键字都是定长字段,且位置不会发生变化,因此实验中设置位置标准差阈值t为0。通过分析大量协议格式发现,绝大部分协议的字段长度都在四字节以下且基本单位是字节,因此本发明设置频繁项挖掘的基本单位为字节,在递归挖掘频繁项过程中最高n-gram设为4。两个最小支持度min_supp1和min_supp2都设为样本总数的10%。
[0140]
第一个实验将本发明方法与netplier、nemetyl和netzob在基础应用协议数据集上进行比较,其中netplier的实验参数都取默认值、netzob的相似性阈值取为50%。表4展
示了四种方法在100、500和1000条报文规模的基础应用协议上得到的实验结果。
[0141]
由表4可知,本发明方法在ntp和smb协议上表现良好,这两种协议的v-measure不管在什么数据规模下都是本发明方法取值最高,其中smb协议的关键字被准确识别出来。在dhcp协议上,本发明方法在100条报文的数据规模上表现优于其他三种方法,然而其识别效果随着数据规模的增大而降低,在其他两种数据规模上取得的v-measure均落后netplier,差距都在8%左右。出现此现象的原因是dhcp协议的报文长度大,随着数据规模的增大,频繁子序列增多,干扰了关键字的识别。实际上,仅需将关键字字段的判决范围放宽,本发明方法在dhcp协议上也能取得准确结果。在和其他两种方法的比较中,本发明方法全面占优,取得的v-measure在所有情况下均高于nemetyl和netzob。
[0142]
表4报文类型识别效果对比一
[0143][0144]
图3展示了四种方法在不同协议规模下的耗时变化情况。在相同的实验环境中,本发明方法的运行时间最为稳定,在三种数据规模下基本保持在同一数量级,都在100秒以下。netplier在大部分情况下运行耗时最长,其耗时随数据规模的增大而急剧增加,尤其是在面对dhcp和smb这种报文长度大的协议。nemetyl和netzob的运作耗时介于本发明方法和netplier之间,由于netzob同样对报文进行了对齐,在面对dhcp这种长报文协议时,其耗时随数据规模增大而变化的趋势接近于netplier。
[0145]
为了同netplier进一步进行比较,本发明使用netplier公开数据集对本发明方法与netplier进行了实验,实验结果如表5所示。两种方法在smb、tftp、zeroaccess和modbus这些协议上都准确识别出了关键字,此外,本发明方法还单独推断出了dnp3协议的关键字,netplier则单独推断出了dhcp协议和icmp协议的关键字。在剩余的两个协议中,本发明方法的表现略优于netplier。综合来看,除了dhcp协议和icmp协议,本发明方法的表现优于netplier。
[0146]
表5报文类型识别效果对比二
[0147][0148]
图4给出了本发明方法与netplier在不同协议上的运行耗时,在相同的实验环境中,本发明方法的运行时间都在50秒之内,netplier在所有协议上的耗时都超过本发明方法,除了dnp3协议和modbus协议,其余协议耗时差距很大。
[0149]
与上述基于数据挖掘的报文类型识别方法相应地,本实施例还提出一种基于数据挖掘的报文类型识别装置,包括:
[0150]
频繁连续子序列生成模块,用于对报文序列使用连续序列模式算法生成频繁连续子序列;
[0151]
候选关键字字段选取模块,用于通过关键连续序列模式算法在选出的频繁连续子序列上生成位置相关的候选关键字字段;
[0152]
概率计算模块,用于基于因子图模型计算候选关键字字段成为关键字的概率;
[0153]
报文类型识别模块,用于选取概率最大的候选关键字字段作为关键字确定报文类型。
[0154]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。
[0155]
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献