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

一种基于特征词的文本协议报文聚类方法与流程

2022-02-20 03:21:55 来源:中国专利 TAG:


1.本发明属于网络安全技术领域,涉及一种基于特征词的文本协议报文聚类方法。


背景技术:

2.随着计算机网络技术的发展,基于互联网的应用已经广泛深入到人们的日常生活之中,智能电视、物联网、在线网络游戏和智能手机应用等新兴的网络服务呈现快速增长的趋势,成为人类参与现代社会生活的重要组成部分。网络中的设备在进行互相通信时,首先会在通信终端之间建立数据的传输通道,而数据的传输通常按照预定义的规则进行,在网络通信中将这种规则称为网络协议。在互联网发展的初始阶段,网络应用的开发一般会遵循标准化原则,网络应用协议详细内容基本都会以rfc文档的形式进行公布、保存。(rfc文档为一系列有关互联网标准的文件)即使在隐私程度较高的端到端网络(peer to peer,p2p)发展初期,协议也仍然以公开、标准化的文档进行记录和分发(如bt协议、edonkey协议等)。
3.但是随着网络技术的快速发展,网络应用的不断产生,网络协议内容和种类也越来越丰富。协议设计者也逐渐从面向功能的设计方式转向了面向安全和隐私保护的方向,不再公开协议细节。理解流量内容在网络安全领域有着重要意义,如流量监控、入侵检测和态势感知等。因此针对未知协议的分析逐渐成为网络安全领域的一项挑战,也是目前网络安全领域亟待解决的关键问题。在网络流量分析领域,与容易产生噪声且易于变形的行为特征(例如数据包大小和间隔时间)相比,特征词更加稳定,区分度更高。
4.目前针对自然语言的分割方法已经较为成熟,但是由于研究对象所组成的语料库不同,针对自然语言的分割方法无法直接应用于协议报文序列的分割。针对协议报文序列的分割方法主要有预定义分隔符和生成n-gram序列。预定义分隔符的方法较为简单,但是对报文内容的分割效果完全依赖于分隔符的选择,在面向多种未知协议时,不依赖协议先验知识的情况下,无法恰当选择特定的分隔符,会对后续聚类过程的准确度产生影响。n-gram方法分割内容得到的子序列数量庞大,得到的子序列最多可能包含256的n次方种状态,如果将其直接视为特征词,则会在预处理阶段产生大量冗余的无语义特征词,不利于进一步分析;如果将其视为特征词的一部分,则下一步聚类过程不能直接得到报文类型。


技术实现要素:

5.针对预定义分隔符与生成n-gram分词方法的不足,本发明解决的技术问题在于提供一种基于特征词的文本协议报文聚类方法,对于协议报文序列的分割采用基于报文元素边界的报文分词方法。
6.本发明是通过以下技术方案来实现:
7.一种基于特征词的文本协议报文聚类方法,包括以下操作:
8.1)以流为单位对由数据包组成的网络流量进行分割;
9.2)提取网络流量的应用层内容;
10.3)采用基于元素边界的方式对网络流量应用层内容进行分词:基于报文中不同元素的交界处与报文字段间存在的相关性,对报文元素分类;其中,对于协议报文p={a1,a2,

,ak,
…an
},ak为报文第k字节;当ak属于元素分类集而a
k 1
不属于元素分类集时,位于报文元素ak与a
k 1
之间的位置为元素边界,在此位置对报文进行分割;
11.4)对分词后的应用层内容,将所有报文的不相同的分词装入词袋,然后为词袋中出现的每个词建立索引,统计其在每条报文中出现的频率,建立基于词袋模型的词频矩阵;
12.5)将词频矩阵作为输入,采用lda模型完成以流为单位的文本协议报文聚类,然后对lda模型求解;在聚类结果中得到k个协议类别的编号、每条协议报文关于k个协议类别编号的概率分布以及每个协议类别编号关于v个候选特征词的概率分布。
13.所述以流为单位对由数据包组成的网络流量进行分割,是由lua脚本实现分割:lua脚本使用wireshark提供的field、listener和dumper作为接口,field获取流量中包括报文流序号的报文属性,listener监听符合规则的报文,dumper将报文写入文件中;实现将属于同一tcp或udp流的报文保存到一个pcap文件中。
14.所述提取网络流量的应用层内容是通过scapy库实现:通过scapy库获取网络流量数据包的传输层载荷,传输层载荷即为协议应用层内容。
15.所述对报文元素分类时,文本协议报文的每个字节对应一个可打印字符,每个字符视为报文内容的一个组成元素,则对于如下协议报文内容p,其报文进行分割位置的确定为:
[0016][0017]
其中p=c1∪c2∪c3,c1、c2和c3两两相交为空集;
[0018]
当ak∈cm且时(m=1,2,3),位于报文元素ak与a
k 1
之间的位置,此位置为元素边界,在此位置对报文进行分割。
[0019]
所述的词袋模型是将文本视为一系列单词的集合,不考虑单词在文本中的位置信息,通过单词在文本中出现的频率来表示文本特征,统计分词后每种词汇在报文中出现的频率,建立词频矩阵得到词袋模型。
[0020]
采用lda模型完成以流为单位的文本协议报文聚类为:
[0021]
将各类型的协议报文视为文档集合,每条报文视为一篇文档,报文类别可视为文档主题,报文分割后子序列可视为文档中的词;针对报文序列分割方法的不同,每条报文的主题和各主题的生成词对应不同的结果;
[0022]
设协议报文集合中有k个独立主题,其中包括m个报文,则每个类别都是报文子序列的多项式概率分布,并且每个报文都是k个隐变量主题的多项式概率分布;一条协议报文由单个类别表示,其中报文类别为隐变量;所有分割出的报文子序列均视为特征词,不同频率特征词的对协议类别的影响权重不同,特征词频率由每条报文的词频向量描述。
[0023]
对建立的lda模型求解,得到文档-主题分布和主题-词分布,即得到报文聚类的报文-类别和类别-特征词分布结果,最终确定报文m的类别k;
[0024]
求解lda模型生成文档包括以下操作:
[0025]
a、对于主题zk(k=1,2,

,k):
[0026]
生成多项分布参数作为主题的单词分布;
[0027]
表示第k个主题的多项式分布参数,长度为v;
[0028]
b、对于文档wm(m=1,2,

,m):
[0029]
生成多项分布参数θm~dir(α),作为文档的主题分布;
[0030]
φ是一个k*v的矩阵,每一行代表一个主题的多项式分布参数;代表第m个报文的多项式分布参数,长度为k
[0031]
c、对于文档wm的单词w
mn
(m=1,2,

,m;n=1,2,

,nm):
[0032]
(1)生成主题z
mn
~mult(θm),作为单词对应的主题;
[0033]
(2)生成单词
[0034]zmn
表示第m个报文的第n个子序列由哪个主题产生;w
mn
表示第m篇文章第n个子序列。
[0035]
与现有技术相比,本发明具有以下有益的技术效果:
[0036]
本发明采用基于元素边界的方式对网络流量应用层内容进行分词的方法与预定义分隔符方式相比,需要的协议先验信息更少,能覆盖的协议范围更广;而预定义分隔符的方法对报文内容的分割效果完全依赖于分隔符的选择,在面向多种未知协议时,不依赖协议先验知识的情况下,无法恰当选择特定的分隔符。
[0037]
n-gram分词方法是将给定文本(至少为n个元素的序列)分割为n个连续元素的子序列。但是n-gram方法分割载荷得到的子序列数量庞大,得到的子序列最多可能包含256的n次方种状态。以smtp报文为例,如果将报文中每个字节看作一个gram元素,那么smtp协议报文中的“rcpt to”所产生的3-grams元素是:“rcp”,“cpt”,“pt”,“t t”,“to”,如果将其直接视为特征词,则会在预处理阶段产生大量冗余的无语义特征词,不利于进一步分析;如果将其视为特征词的一部分,由于n-gram分词方法的特性,无法在聚类后直接得到完整特征词。本发明与n-gram分词方法相比,各分词交集为空集,因此没有冗余部分,不会产生大量无语义特征词,可直接进行聚类分析。
附图说明
[0038]
图1为本发明的lda模型中报文、类别和特征词关系示意图;
[0039]
图2为报文分割方式示意图;
[0040]
图3为lda模型中报文、特征词和n-gram序列关系示意图;
[0041]
图4为不同分词方法对应的聚类流程。
具体实施方式
[0042]
下面结合实施例对本发明做进一步详细描述,所述是对本发明的解释而不是限定。
[0043]
基于n-gram分词方法预处理阶段产生大量冗余的无语义特征词,在进行聚类时为了提升文本协议报文聚类的准确度,如果将其视为特征词的一部分,则下一步聚类过程不
能直接得到报文类型,而且当网络流量中包含多样性协议时,n-gram方法效果会大幅变差,因此在本发明的基于特征词的文本协议报文聚类方法中,采用基于报文元素边界的报文分词方法,相比于基于n-gram分词方法,可以直接得到各类协议报文的特征词和协议类别。
[0044]
本发明提供一种基于特征词的文本协议报文聚类方法,包括以下操作:
[0045]
1)以流为单位对由数据包组成的网络流量进行分割;
[0046]
2)提取网络流量的应用层内容;
[0047]
3)采用基于元素边界的方式对网络流量应用层内容进行分词:基于报文中不同元素的交界处与报文字段间存在的相关性,对报文元素分类;其中,对于协议报文p={a1,a2,

,ak,
…an
},ak为报文第k字节;当ak属于元素分类集而a
k 1
不属于元素分类集时,位于报文元素ak与a
k 1
之间的位置为元素边界,在此位置对报文进行分割;
[0048]
4)对分词后的应用层内容,将所有报文的不相同的分词装入词袋,然后为词袋中出现的每个词建立索引,统计其在每条报文中出现的频率,建立基于词袋模型的词频矩阵;
[0049]
5)将词频矩阵作为输入,采用lda模型完成以流为单位的文本协议报文聚类,然后对lda模型求解;在聚类结果中得到k个协议类别的编号、每条协议报文关于k个协议类别编号的概率分布以及每个协议类别编号关于v个候选特征词的概率分布。
[0050]
下面对各步骤详细说明。
[0051]
1、以流为单位对由数据包组成的网络流量进行分割
[0052]
所述以流为单位对由数据包组成的网络流量进行分割,是依靠wireshark和lua脚本实现。
[0053]
wireshark是一种开源协议分析工具,lua是一种轻量小巧的脚本语言,用标准c语言编写。
[0054]
lua脚本使用wireshark提供的field、listener和dumper作为接口,field获取流量中包括报文流序号的报文属性,listener监听符合规则的报文,dumper将报文写入文件中;实现将属于同一tcp或udp流的报文保存到一个pcap文件中。
[0055]
2、提取网络流量的应用层内容
[0056]
提取网络流量的应用层内容是通过scapy库实现:通过scapy库获取网络流量数据包的传输层载荷,按照协议分级模型,传输层载荷即为协议应用层内容。
[0057]
3、采用基于元素边界的方式对网络流量应用层内容进行分词
[0058]
首先对报文元素的含义进行说明:文本协议报文的每个字节对应一个可打印字符,每个字符可视为报文内容的一个组成元素。在不依赖协议先验知识的情况下,无法对协议报文元素组成的特征词与可变字段进行精准分割,但根据语言习惯,报文中不同元素的交界处与报文字段间存在相关性。协议报文的内容从组成元素的类别上可以分为三种:
[0059]
1)数字(0-9)
[0060]
2)大小写字母(a-z,a-z)
[0061]
3)除数字与字母外的其他符号(如空格、引号等)
[0062]
即关于协议报文p={a1,a2,

,ak,
…an
},ak为报文第k字节,有
[0063]
[0064]
其中p=c1∪c2∪c3,c1、c2和c3两两相交为空集。所谓元素边界,是指当ak∈cm且时(m=1,2,3),位于报文元素ak与a
k 1
之间的位置,在此位置对报文进行分割,即为基于元素边界的分词方法。
[0065]
下面给出确定元素边界位置的实施例。
[0066][0067][0068]
下面给出另一个分割实施例。
[0069]
如内容为“mail from:《3245423681@qq.com》”的报文,其中“3245423681”属于集合c1,“mailfromqqcom”属于集合c2,“:《@.》”属于集合c3,报文分割方式如图2所示。
[0070]
4、对分词后的应用层内容建立词袋模型
[0071]
词袋法认为文本是一系列单词的集合,不考虑单词在文本中的位置信息,通过单词在文本中出现的频率来表示文本特征,达到将文本向量化的目的。统计分词后每种词汇在报文中出现的频率,建立词频矩阵。
[0072]
词袋模型认为文本是一系列单词的集合,不考虑单词在文本中的位置信息,通过单词在文本中出现的频率来表示文本特征,统计分词后每种词汇在报文中出现的频率,建立词频矩阵得到词袋模型,达到将文本向量化的目的。例如对报文“mail from:《3245423681@qq.com》”通过元素边界分词后,其词袋中词汇内容为{“mail”,
“”
,“from”,“:《”,“3245423681”,“@”,“qq”,“.”,“com”,“》”},
[0073]
将所有报文的不相同的分词装入词袋,然后为词袋中出现的每个词建立索引,统计其在每条报文中出现的频率,这样便基于词袋模型完成了简单快捷的报文特征提取。
[0074]
相比其他方法,如词向量法,词袋模型实现更为简单,无需建立协议报文的大型语料库并基于语料库进行训练。
[0075]
如对于[“dog cat fish”,“dog cat cat”,“fish bird”,“bird”]四个文本,其中“dog”、“cat”、“fish”和“bird”为文本中出现的单词,为每个单词进行编号,以{

dog’:2,

cat’:1,

fish’:3,

bird’:0}字典形式呈现,最终以词频矩阵的形式,如“[[0 1 1 1],[0 2 1 0],[1 0 0 1],[1 0 0 0]]”建立词袋模型。
[0076]
6、采用lda模型完成以流为单位的文本协议报文聚类
[0077]
隐式狄利克雷分布(latent dirichlet allocation,lda)是基于贝叶斯学习的主
题模型,是潜在语义分析、概率潜在语义分析的扩展,在文本数据挖掘、图像处理、生物信息处理等领域被广泛使用。lda是一种非监督聚类算法,可以用来识别文档集或语料库中被视为隐变量的主题信息。这种方法将每一篇文档视为一个基于词频的向量,本质上是一个三层的贝叶斯网络,包含词、主题和文档三层结构,其中主题为隐变量。
[0078]
采用lda模型完成以流为单位的文本协议报文聚类为:
[0079]
将lda模型应用于协议报文聚类,各类型的协议报文可视为文档集合,每条报文视为一篇文档,针对报文序列分割方法的不同,每条报文的主题和各主题的生成词对应不同的结果。
[0080]
对建立的lda模型求解,得到文档-主题分布和主题-词分布,即得到报文聚类的报文-类别和类别-特征词分布结果,最终确定报文m的类别k。
[0081]
当采用元素边界分割方法时,如图1所示,报文主题的生成词为多个报文内容片段,可视为候选特征词,而报文的隐变量主题为协议类别。即协议报文数量为m,所有报文类别数量为k,一条协议报文由单个类别表示,其中报文类别为隐变量;而所有分割出的报文子序列均视为特征词,不同特征词对协议类别的影响权重不同,一个类别由若干个特征词组成。在聚类结果中能得到k个协议类别的编号、每条协议报文关于k个协议类别编号的概率分布以及每个协议类别编号关于v个候选特征词的概率分布。
[0082]
假设协议报文集合中有k个独立主题,其中包括m个报文,则每个类别都是报文子序列的多项式概率分布,并且每个报文都是k个隐变量主题的多项式概率分布;一条协议报文由单个类别表示,其中报文类别为隐变量;所有分割出的报文子序列均视为特征词,不同频率特征词的对协议类别的影响权重不同,特征词频率由每条报文的词频向量描述;v表示报文集合中所有子序列个数;k表示报文主题的数量;m表示报文的数量。
[0083]
设nm表示第m个报文包含的子序列数量;z
mn
表示第m个报文的第n个子序列由哪个主题产生;w
mn
表示第m篇文章第n个子序列;表示第k个主题的多项式分布参数,长度为v;φ是一个k*v的矩阵,每一行代表一个主题的多项式分布参数;代表第m个报文的多项式分布参数,长度为k。
[0084]
则求解lda模型生成文档包括以下操作:
[0085]
a、对于主题zk(k=1,2,

,k):
[0086]
生成多项分布参数作为主题的单词分布;
[0087]
b、对于文档wm(m=1,2,

,m):
[0088]
生成多项分布参数θm~dir(α),作为文档的主题分布;
[0089]
c、对于文档wm的单词w
mn
(m=1,2,

,m;n=1,2,

,nm):
[0090]
(1)生成主题z
mn
~mult(θm),作为单词对应的主题;
[0091]
(2)生成单词
[0092]
下面给出一个具体的lda模型求解聚类的实施例。
[0093]
如对于文档集合text=
[0094]
[['human','machine','interface','lab','abc','computer','applications'],
[0095]
['survey','user','opinion','computer','system','response','time'],
[0096]
['eps','user','interface','management','system'],
[0097]
['system','human','system','engineering','testing','eps'],
[0098]
['relation','user','perceived','response','time','error','measurement'],
[0099]
['generation','random','binary','unordered','trees'],
[0100]
['intersection','graph','paths','trees'],
[0101]
['graph','minors','iv','widths','trees','well','quasi','ordering'],
[0102]
['graph','minors','survey']],
[0103]
经过lda模型求解聚类后得到两个类别,用类别0和类别1表示,其文档-主题分布表示的每篇文档主题概率为:
[0104]
[[(0,0.9556754),(1,0.044324555)],
[0105]
[(0,0.024538847),(1,0.9754611)],
[0106]
[(0,0.033314228),(1,0.9666858)],
[0107]
[(0,0.02812994),(1,0.97187006)],
[0108]
[(0,0.9546266),(1,0.045373347)],
[0109]
[(0,0.9392648),(1,0.060735207)],
[0110]
[(0,0.0405809),(1,0.95941913)],
[0111]
[(0,0.02145377),(1,0.9785462)],
[0112]
[(0,0.05199817),(1,0.9480018)]]
[0113]
[(0,0.9556676),(1,0.04433241)]
[0114]
[(0,0.024545025),(1,0.975455)]
[0115]
[(0,0.033315096),(1,0.96668494)]
[0116]
[(0,0.028129926),(1,0.97187006)]
[0117]
[(0,0.9546204),(1,0.04537959)]
[0118]
[(0,0.93927586),(1,0.060724128)]
[0119]
[(0,0.040579706),(1,0.95942026)]
[0120]
[(0,0.021452008),(1,0.978548)]
[0121]
[(0,0.051998097),(1,0.94800186)],
[0122]
其中主题-词分布表示的每个词所属主题概率为:
[0123]
主题0:
[0124]
[('human',0.04263753),
[0125]
('computer',0.04121114),
[0126]
('interface',0.041043915),
[0127]
('applications',0.040969398),
[0128]
('abc',0.040967286),
[0129]
('machine',0.04096571),
[0130]
('lab',0.040946048),
[0131]
('random',0.040889267),
[0132]
('generation',0.0408852),
[0133]
('unordered',0.040884614)]
[0134]
主题1:
[0135]
[('system',0.088209964),
[0136]
('graph',0.06918493),
[0137]
('user',0.050524995),
[0138]
('trees',0.050327286),
[0139]
('minors',0.049448323),
[0140]
('survey',0.049394835),
[0141]
('eps',0.049171407),
[0142]
('time',0.030225791),
[0143]
('response',0.030084241),
[0144]
('interface',0.0297344)]
[0145]
参见图2,报文主题的生成词为多个n-gram序列,则报文的隐变量主题为一系列特征词。即协议报文数量为m,所有特征词数量为k,一条协议报文由若干个特征词组成,一个特征词由若干个n-gram序列组成,其中特征词为隐变量。在聚类结果中只能得到k个特征词的编号、每条协议报文关于k个特征词编号的概率分布以及每个特征词编号关于v个n-gram序列的概率分布,但是无法直接得到每个隐变量特征词的内容,也无法得到每条协议报文的类别;
[0146]
参见图3,由于采用n-gram分词方式聚类后只能得到每条报文关于特征词编号的概率分布,并不能直接得到协议类别,因此在lda聚类后,还要再把特征词作为报文特征进行学习分类,在学习分类阶段需要人工标签信息等协议先验知识;而采用本发明的元素边界分词的方法则可以直接获取协议类别与特征词,无需进一步学习分类。
[0147]
以上给出的实施例是实现本发明较优的例子,本发明不限于上述实施例。本领域的技术人员根据本发明技术方案的技术特征所做出的任何非本质的添加、替换,均属于本发明的保护范围。
再多了解一些

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

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

相关文献