CN114938402B - 基于字典树的未知协议帧结构识别方法及装置 - Google Patents
基于字典树的未知协议帧结构识别方法及装置 Download PDFInfo
- Publication number
- CN114938402B CN114938402B CN202210375755.4A CN202210375755A CN114938402B CN 114938402 B CN114938402 B CN 114938402B CN 202210375755 A CN202210375755 A CN 202210375755A CN 114938402 B CN114938402 B CN 114938402B
- Authority
- CN
- China
- Prior art keywords
- sequence
- dictionary tree
- node
- network data
- data stream
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000010586 diagram Methods 0.000 claims description 69
- 230000007704 transition Effects 0.000 claims description 37
- 238000013138 pruning Methods 0.000 claims description 25
- 238000003860 storage Methods 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 12
- 238000004458 analytical method Methods 0.000 abstract description 8
- 238000012545 processing Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/243—Classification techniques relating to the number of classes
- G06F18/24323—Tree-organised classifiers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
Landscapes
- Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种基于字典树的未知协议帧结构识别方法及装置,所述方法包括:从待解析的网络数据流中,截取出多个第一序列;根据所述多个第一序列,建立第一字典树,并确定所述第一字典树中的各个结点的置信度及熵;根据所述第一字典树及所述各个结点的置信度及熵,确定目标序列;根据所述目标序列在所述网络数据流中的位置信息,确定所述网络数据流的协议帧结构。根据本公开的实施例对未知协议的网络数据流进行协议解析,不仅能够提高帧头的识别能力,而且能够识别出未知协议的帧结构。
Description
技术领域
本公开涉及网络安全技术领域,尤其涉及一种基于字典树的未知协议帧结构识别方法及装置。
背景技术
随着互联网的快速发展,网络安全已经成为国家安全的一项重要内容。网络数据基于网络协议进行传输,也就是说,在互联网中传输数据时,需要根据网络协议栈,对数据进行层层封装后,才能通过网络设备正确传输。为了抓取网络中的数据进行分析研究,对网络协议的解析就必不可少,因此,协议解析是网络安全领域的一项重要工作。
目前的协议解析主要是对已知协议的解析,即根据已知协议公开的协议格式来完成协议的解析。而在网络安全领域的实际应用中,通常需要对未知协议进行解析,未知协议通常因为协议格式不公开等原因,无法通过常规的协议解析方式来完成解析。
相关技术中,对未知协议进行解析时,通常首先寻找帧头中的标志字节(例如固定取值的字节),并基于标志字节对未知协议的网络数据流进行帧切分,然后通过机器学习、聚类等方式,对切分后的每一帧进行未知协议的分类及识别。然而,该方式对没有明显标志字节的帧头的识别能力较弱,而且难以识别未知协议的帧结构。
发明内容
有鉴于此,本公开提出了一种基于字典树的未知协议帧结构识别方法及装置。
根据本公开的一方面,提供了一种基于字典树的未知协议帧结构识别方法,包括:从待解析的网络数据流中,截取出多个第一序列;根据所述多个第一序列,建立第一字典树,并确定所述第一字典树中的各个结点的置信度及熵;根据所述第一字典树及所述各个结点的置信度及熵,确定目标序列;根据所述目标序列在所述网络数据流中的位置信息,确定所述网络数据流的协议帧结构。
在一种可能的实现方式中,所述根据所述第一字典树及所述各个结点的置信度及熵,确定目标序列,包括:根据预设的第一置信度阈值、熵阈值、所述各个结点的置信度及熵,对所述第一字典树进行剪枝操作,得到第二字典树;对所述第二字典树进行长序列合并操作,得到第三字典树;对所述第三字典树进行相似序列合并操作,得到第四字典树;根据所述第四字典树中的各个叶子结点所表示的第二序列在所述网络数据流中的位置信息,对所述第四字典树进行剪枝操作,得到第五字典树;将所述第五字典树中的各个叶子结点所表示的第三序列,确定为目标序列。
在一种可能的实现方式中,所述根据预设的第一置信度阈值、熵阈值、所述各个结点的置信度及熵,对所述第一字典树进行剪枝操作,得到第二字典树,包括:对于所述第一字典树中的任一结点,在所述结点的置信度小于所述第一置信度阈值的情况下,或者,在所述结点的熵大于或等于预设的熵阈值的情况下,删除所述结点,得到第二字典树。
在一种可能的实现方式中,所述对所述第二字典树进行长序列合并操作,得到第三字典树,包括:确定所述第二字典树中的各个叶子结点所表示的第四序列;对于任一第四序列,判断所述第四序列与第五序列是否存在公共子序列,所述第五序列为除所述任一第四序列之外的其他任一第四序列;在存在所述公共子序列、所述公共子序列为所述第四序列的后缀且所述公共子序列为所述第五序列的前缀的情况下,确定所述第五序列基于所述公共子序列的置信度;在所述第五序列基于所述公共子序列的置信度大于或等于预设的第二置信度阈值的情况下,将所述第二字典树中的所述第四序列与所述第五序列进行合并,得到第三字典树。
在一种可能的实现方式中,所述对所述第三字典树进行相似序列合并操作,得到第四字典树,包括:确定所述第三字典树中的各个叶子结点所表示的第六序列;确定任意两个第六序列之间的序列距离;根据所述序列距离,对所述第三字典树中的各个叶子结点所表示的第六序列进行聚类,得到至少一个簇;根据预设的通配符,将所述第三字典树中属于同一簇的第六序列合并,得到第四字典树。
在一种可能的实现方式中,所述根据所述第四字典树中的各个叶子结点所表示的第二序列在所述网络数据流中的位置信息,对所述第四字典树进行剪枝操作,得到第五字典树,包括:对于任一第二序列,根据所述第二序列在所述网络数据流中的位置信息,确定所述第二序列在所述网络数据流中的相邻位置间距;在所述相邻位置间距小于预设的帧长阈值的情况下,从所述第四字典树中,删除与所述第二序列对应的结点,得到第五字典树。
在一种可能的实现方式中,所述根据所述目标序列在所述网络数据流中的位置信息,确定所述网络数据流的协议帧结构,包括:根据所述目标序列在所述网络数据流中的位置信息,确定所述目标序列的状态转移图;根据所述状态转移图,确定所述网络数据流的协议帧结构。
根据本公开的另一方面,提供了一种基于字典树的未知协议帧结构识别装置,包括:序列截取模块,用于从待解析的网络数据流中,截取出多个第一序列;字典树建立模块,用于根据所述多个第一序列,建立第一字典树,并确定所述第一字典树中的各个结点的置信度及熵;目标序列确定模块,用于根据所述第一字典树及所述各个结点的置信度及熵,确定目标序列;协议帧结构确定模块,用于根据所述目标序列在所述网络数据流中的位置信息,确定所述网络数据流的协议帧结构。
根据本公开的另一方面,提供了一种基于字典树的未知协议帧结构识别装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
根据本公开的实施例,对未知协议的网络数据流进行协议解析时,首先从待解析的网络数据流中,截取出多个第一序列,并根据多个第一序列,建立第一字典树,以及确定第一字典树中的各个结点的置信度及熵,然后根据第一字典树及各个结点的置信度及熵,确定目标序列,并根据目标序列在网络数据流中的位置信息,确定网络数据流的协议帧结构。通过这种方式对未知协议的网络数据流进行协议解析,不仅能够提高帧头的识别能力,而且能够识别出未知协议的帧结构。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的基于字典树的未知协议帧结构识别方法的流程图。
图2a示出根据本公开一实施例的滑动窗口的示意图。
图2b示出根据本公开一实施例的滑动窗口的示意图。
图3示出根据本公开一实施例的第一字典树的示意图。
图4示出根据本公开一实施例的第二字典树的示意图。
图5示出根据本公开一实施例的第三字典树的示意图。
图6示出根据本公开一实施例的序列距离的计算过程的示意图。
图7示出根据本公开一实施例的第四字典树的示意图。
图8示出根据本公开一实施例的第五字典树的示意图。
图9示出根据本公开一实施例的网络数据流的示意图。
图10示出根据本公开一实施例的目标序列的状态转移图的示意图。
图11示出根据本公开一实施例的目标序列的状态转移图的示意图。
图12示出根据本公开一实施例的基于字典树的未知协议帧结构识别方法的处理过程的示意图。
图13示出根据本公开一实施例的基于字典树的未知协议帧结构识别装置的框图。
图14示出根据本公开一实施例的基于字典树的未知协议帧结构识别装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
本公开实施例的基于字典树的未知协议帧结构识别方法,能够通过字典树的方式,识别出未知协议的网络数据流中出现次数较多且具有帧头特性的目标序列,进而根据目标序列,对该网络数据流的协议帧结构进行识别。
本公开实施例的基于字典树的未知协议帧结构识别方法,可应用于终端设备或服务器。其中,终端设备可例如个人计算机、笔记本电脑、平板电脑等。需要说明的是,本公开对终端设备的具体类型不作限制。
图1示出根据本公开一实施例的基于字典树的未知协议帧结构识别方法的流程图。如图1所示,该方法包括:
步骤S110,从待解析的网络数据流中,截取出多个第一序列。
其中,待解析的网络数据流为从网络中获取的、未知协议的网络数据流。第一序列为包括多个字节的字节序列(也可称为字节串)。第一序列的长度可根据实际情况进行设置。例如,第一序列的长度可以为4字节、5字节、6字节或其他长度。本公开对第一序列的具体长度不作限制。
在一种可能的实现方式中,从待解析的网络数据流中截取多个第一序列时,可预设第一序列的长度及截取间隔(例如截取间隔=1),然后根据第一序列的长度及截取间隔,从待解析的网络数据流中依次截取多个第一序列。在截取第一序列时,两个截取位置相邻的第一序列中的字节可以存在重叠,也可以不存在重叠,本公开对此不作限制。需要说明的是,本领域技术人员可根据实际情况设置截取间隔的具体取值,本公开对此不作限制。
在一种可能的实现方式中,从待解析的网络数据流中截取多个第一序列时,也可根据预设的步长及预设的窗口尺寸,设置滑动窗口,然后通过滑动窗口,从待解析的网络数据流中截取多个第一序列。其中,预设的窗口尺寸与第一序列的长度相同,即预设的窗口尺寸与第一序列相匹配。滑动窗口的步长可设置为1,表示滑动窗口每次向前移动一步。滑动窗口移动前的位置与其移动后的位置可以存在重叠,也可以不存在重叠,本公开对此不作限制。需要说明的是,本领域技术人员可根据实际情况设置滑动窗口的窗口尺寸及步长的具体取值,本公开对此不作限制。
图2a示出根据本公开一实施例的滑动窗口的示意图。如图2a所示,待解析的网络数据流210为abcdqwemnxyzqwertyu…,假设第一序列的长度为4字节,可将滑动窗口220的窗口尺寸设置为4,将滑动窗口220的步长设置为1,且设置滑动窗口220移动前后的位置存在重叠。滑动窗口220的初始位置为从待解析的网络数据流210的第一个字节a开始的4个字节所在的位置,即字节串abcd位于滑动窗口220内。
通过滑动窗口220从待解析的网络数据流210中截取第一序列时,可将位于滑动窗口220内的字节串abcd从待解析的网络数据流210中截取出来,得到第一序列abcd,并按照步长1,将滑动窗口220向前移动一步,由于滑动窗口220移动前后的位置存在重叠,移动后的滑动窗口220的位置为从待解析的网络数据流220的第二个字节b开始的4个字节所在的位置,即字节串bcdq位于滑动窗口220内;然后将位于滑动窗口220内的字节串bcdq从待解析的网络数据流220中截取出来,得到第一序列bcdq,并按照步长1,将滑动窗口220向前移动一步;以此类推,从而能够通过滑动窗口220,从待解析的网络数据流210中,截取出多个第一序列,每个第一序列的长度均为4字节。
图2b示出根据本公开一实施例的滑动窗口的示意图。如图2b所示,待解析的网络数据流210为abcdqwemnxyzqwertyu…,假设第一序列的长度为4字节,可将滑动窗口230的窗口尺寸设置为4,将滑动窗口230的步长设置为1,且设置滑动窗口230移动前后的位置不存在重叠。滑动窗口230的初始位置为从待解析的网络数据流210的第一个字节a开始的4个字节所在的位置,即字节串abcd位于滑动窗口230内。
通过滑动窗口230从待解析的网络数据流210中截取第一序列时,可将位于滑动窗口230内的字节串abcd从待解析的网络数据流210中截取出来,得到第一序列abcd,并按照步长1,将滑动窗口230向前移动一步,由于滑动窗口230移动前后的位置不存在重叠,移动后的滑动窗口230的位置为从待解析的网络数据流210的第五个字节q开始的4个字节所在的位置,即字节串qwem位于滑动窗口230内;然后将位于滑动窗口230内的字节串qwem从待解析的网络数据流210中截取出来,得到第一序列qwem,并按照步长1,将滑动窗口230向前移动一步;以此类推,从而能够通过滑动窗口,从待解析的网络数据流210中,截取多个第一序列,每个第一序列的长度均为4字节。
通过这种方式,能够从待解析的网络数据流中截取出多个定长的字节序列(即第一序列)。
步骤S120,根据所述多个第一序列,建立第一字典树,并确定所述第一字典树中的各个结点的置信度及熵。
得到多个第一序列后,可在步骤S120中,根据多个第一序列,建立第一字典树,从而可以通过第一字典树对第一序列进行统计。第一字典树的根结点不包含字节,除根结点之外的每个结点为一个字节。
对于第一字典树中的任一结点,将该结点在第一字典树中的路径上的字节连接起来,即可得到一个序列。也就是说,第一字典树中的每个结点可表示一个序列。其中,结点在第一字典树中的路径是指从第一字典树的根结点开始至该结点的路径。
根据多个第一序列建立第一字典树时,对于任一第一序列,可将第一字典树中与该第一序列对应的路径上的每一个结点的计数都增加1。结点的计数可用于指示结点表示的序列在网络数据流中出现的次数。
图3示出根据本公开一实施例的第一字典树的示意图。如图3所示,第一序列的长度为4字节,第一字典树的根结点(即最上面的结点)不包含任何字节,其他结点均包含一个通过字母表示的字节。
第一字典树中的每个结点均表示一个序列。例如,根据9个叶子结点在第一字典树中的路径,可确定第一字典树的9个叶子结点表示的序列分别为:abcd、qwem、qwer、qweg、ghiu、ghiv、nxyz、hiqw、mnxy。第一字典树中的其他结点表示的序列也可通过类似的方式确定,此处不再赘述。
需要说明的是,图2中的第一字典树的各个结点仅以字母作为示例进行说明,在实际应用中,本领域技术人员可结合具体场景对第一字典树中各个字节的表示方式进行设置,本公开对此不作限制。
在一种可能的实现方式中,对于第一字典树中的任一结点,可根据该结点及其父结点的计数,来确定该结点的置信度及熵。
可通过下述公式(1)来计算第一字典树中的结点N的置信度:
公式(1)中,conf(B1B2…Bn)为第一字典树中的结点N的置信度,B1B2…Bn为第一字典树中的结点N表示的序列,B1为结点N表示的序列中的第1个字节,B2为结点N表示的序列中的第2个字节,Bn-1为结点N表示的序列中的第n-1个字节(即第一字典树中结点N的父结点的字节),Bn为结点N表示的序列中的第n个字节(即第一字典树中结点N的字节),count(B1B2…Bn)为结点N的计数,B1B2…Bn-1为第一字典树中的结点N的父结点表示的序列,count(B1B2…Bn-1)为结点N的父结点的计数,n为大于1的正整数。
由上述公式(1)可知,第一字典树中的结点N的置信度可用于指示序列B1B2…Bn-1在网络数据流中后接字节Bn的概率,其取值范围为0至1。
可通过下述公式(2)来计算第一字典树中的结点N的熵:
S(B1B2…Bn)=∑B∈[0x00,0xFF]conf(B1B2…BnB)ln(conf(B1B2…BnB)) (2)
公式(2)中,S(B1B2…Bn)为第一字典树中的结点N的熵,B为[0x00,0xFF]中的任一字节,conf(B1B2…BnB)为第一字典树中与序列B1B2…BnB对应的结点的置信度。
由上述公式(2)可知,第一字典树中的结点N的熵可用于指示结点N表示的序列B1B2…Bn的后接字节分布的集中程度。结点N的熵越小,结点N表示的序列B1B2…Bn的后接字节分布的集中程度越高,结点N的熵越大,结点N表示的序列B1B2…Bn的后接字节分布的集中程度越低。
步骤S130,根据所述第一字典树及所述各个结点的置信度及熵,确定目标序列。
可在步骤S130中,根据第一字典树中的各个结点的置信度及熵,对第一字典树进行剪枝、合并等操作,从而确定出目标序列。目标序列为网络数据流中出现次数较多、且具有帧头特性(例如在网络数据流中出现的位置间距大于或等于预设帧长)的序列。可将出现次数较多的序列看作频繁序列,因此,目标序列也可以看作是网络数据流中具有帧头特性的频繁序列。
在一种可能的实现方式中,步骤S130可包括:根据预设的第一置信度阈值、熵阈值、所述各个结点的置信度及熵,对所述第一字典树进行剪枝操作,得到第二字典树;对所述第二字典树进行长序列合并操作,得到第三字典树;对所述第三字典树进行相似序列合并操作,得到第四字典树;根据所述第四字典树中的各个叶子结点所表示的第二序列在所述网络数据流中的位置信息,对所述第四字典树进行剪枝操作,得到第五字典树;将所述第五字典树中的各个叶子结点所表示的第三序列,确定为目标序列。
在一种可能的实现方式中,确定目标序列时,可首先根据预设的第一置信度阈值、熵阈值、第一字典树中的各个结点的置信度及熵,对第一字典树进行剪枝操作,得到第二字典树。
对于第一字典树中的任一结点,可先判断该结点的置信度是否小于预设的第一置信度阈值,如果该结点的置信度小于第一置信度阈值,则从第一字典树中删除该结点。
如果该结点的置信度大于或等于第一置信度阈值,则判断该结点的熵是否大于预设的熵阈值。如果该结点的熵大于熵阈值,则从第一字典树中删除该结点。如果该结点的熵小于或等于熵阈值,则在第一字典树中保留该结点。
对于第一字典树中的任一结点,也可判断该结点的熵是否大于预设的熵阈值,如果该结点的熵大于预设的熵阈值,则从第一字典树中删除该结点。
如果该结点的熵小于或等于熵阈值,则判断该结点的置信度是否小于预设的第一置信度阈值。如果该结点的置信度小于第一置信度阈值,则从第一字典树中删除该结点。如果该结点的置信度大于或等于第一置信度阈值,则在第一字典树中保留该结点。
通过上述方式遍历第一字典树中的所有结点,删除置信度小于第一置信度阈值或者熵大于熵阈值的结点,从而能够从第一字典树中删除非频繁序列(即出现次数较少的序列)以及子序列的频率分布不具有显著特征的序列,得到第二字典树。
图4示出根据本公开一实施例的第二字典树的示意图。假设图3所示的第一字典树中,与序列qweg对应的叶子结点g(即字节g所在的叶子结点)的置信度小于第一置信度阈值,则删除叶子结点g;假设图3所示的第一字典树中,与序列hiq对应的结点(即字节q所在的结点)的熵大于熵阈值,则删除结点q及其子结点w,得到如图4所示的第二字典树。
在一种可能的实现方式中,得到第二字典树后,可对第二字典树进行长序列合并操作,得到第三字典树。其中,长序列合并是指对第二字典树中具有公共子序列的两个或多个序列进行合并,得到合并后的长序列。
在对第二字典树进行长序列合并时,可首先确定第二字典树中的各个叶子结点所表示的第四序列;然后对于任一第四序列,可判断该第四序列与第五序列是否存在公共子序列,第五序列为除所述任一第四序列之外的其他任一第四序列。
在第四序列与第五序列存在公共子序列、公共子序列为第四序列的后缀且公共子序列为第五序列的前缀的情况下,确定第五序列基于公共子序列的置信度。例如,可将与第五序列对应的结点的计数除以与第五序列中的公共子序列对应的结点的计数,得到第五序列基于公共子序列的置信度。
然后判断第五序列基于公共子序列的置信度是否大于或等于预设的第二置信度阈值(例如0.95)。如果第五序列基于公共子序列的置信度大于或等于第二置信度阈值,则将第二字典树中的第四序列与第五序列合并,即进行长序列合并,得到第三字典树。如果第五序列基于公共子序列的置信度小于第二置信度阈值,则不将第四序列与第五序列合并。
例如,图4所示的第二字典树中,各个叶子结点所表示的第四序列分别为:abcd、qwem、qwer、ghiu、ghiv、nxyz、hi、mnxy。假设第四序列为mnxy,那么可将序列abcd、qwem、qwer、ghiu、ghiv、nxyz、hi中的任一序列,看作第五序列。
假设第五序列为nxyz,判断第四序列mnxy与第五序列nxyz是否存在公共序列。经判断,第四序列mnxy与第五序列nxyz存在公共子序列nxy,公共子序列nxy为第四序列的后缀且为第五序列的前缀,然后计算第五序列nxyz基于公共子序列nxy的置信度:
之后,可判断第五序列nxyz基于公共子序列nxy的置信度是否大于或等于第二置信度阈值0.95。假设第五序列nxyz基于公共子序列nxy的置信度为0.96,大于第二置信度阈值0.95,则将第二字典树中的第四序列mnxy与第五序列nxyz合并,得到合并后的长序列mnxyz。
通过与上述第四序列mnxy与第五序列nxyz合并类似的方式,遍历第二字典树中的各个第四序列及第五序列,对第二字典树进行长序列合并,得到第三字典树。
进行长序列合并后,第三字典树中的各个结点的计数、置信度及熵等需要重新计算。
例如,合并后的长序列对应的结点的计数可通过下述公式(3)来确定:
count(C)=count(M)-count(S)+count(L) (3)
公式(3)中,C表示合并后的长序列,M表示第五序列,S表示公共子序列,L表示第四序列。
图5示出根据本公开一实施例的第三字典树的示意图。对图4所示的第二字典树中的序列mnxy与序列nxyz进行长序列合并后,得到图5所示的第三字典树。
需要说明的是,以上仅以图4中的第二字典树中的序列mnxy与序列nxyz进行长序列合并作为示例,对长序列合并的操作过程进行了示例性地说明。在实际应用场景中,需要对第二字典树中所有可以进行长序列合并的序列进行长序列合并操作后,得到第三字典树。
通过长序列合并操作,能够从第二字典树中寻找到长度大于第一序列长度(或滑动窗口长度)的频繁序列(即出现次数较多的序列),从而能够避免在寻找长的频繁序列时对网络数据流的重新扫描,进而提高处理效率。
在一种可能的实现方式中,得到第三字典树后,可对第三字典树进行相似序列合并操作,得到第四字典树。相似序列合并是指将第三字典树中的相似度较高的同一类序列进行合并。
在对第三字典树进行相似序列合并操作时,可首先确定第三字典树中的各个叶子结点所表示的第六序列,然后确定任意两个第六序列之间的序列距离。
在一种可能的实现方式中,两个第六序列之间的序列距离可通过下述方式来确定:将两个第六序列分别表示成二进制形式;将二进制形式的两个第六序列进行按位(bit)同或操作,得到第一结果;对第一结果中的每K个比特(bit)进行一次是否全部为1的判断,K为大于等于2的正整数,如果K个比特全部为1,则判断结果为1,否则判断结果为0,从而得到第二结果;将第二结果中的1的数量与第二结果的长度的比值,确定为两个第六序列之间的相似度;然后根据该相似度,确定两个第六序列之间的序列距离,例如,两个第六序列之间的序列距离=1-两个第六序列之间的相似度。
图6示出根据本公开一实施例的序列距离的计算过程的示意图。如图5所示,两个第六序列分别为:第六序列610:0x1234,第六序列620:0x2234;
将第六序列610及第六序列620分别表示成二进制形式,得到以二进制形式表示的两个第六序列:第六序列630:0001001000110100,第六序列640:0010001000110100;
对以二进制形式表示的第六序列630及第六序列640,进行按位同或操作,得到第一结果650:1100111111111111;
假设K=4,对第一结果650中的每4个比特(bit)进行一次是否全部为1的判断,如果4个比特全部为1,则判断结果为1,否则判断结果为0,从而得到第二结果660:0000111111111;
第二结果660中的1的数量为9,第二结果640的长度为13,可将第二结果660中的1的数量(9)与第二结果640的长度(13)的比值确定为第六序列610与第六序列620之间的相似度670;然后根据第六序列610与第六序列620之间相似度670,确定第六序列610与第六序列620之间的序列距离680:第六序列610与第六序列620之间的序列距离680为/>
需要说明的是,图6中仅以长度为2字节的两个第六序列作为示例,对序列距离的计算过程进行了示例性地说明。在第六序列的长度为其他值时,序列距离的计算方式与图6所示的计算方式类似,此处不再赘述。
在一种可能的实现方式中,在计算序列距离时,如果两个第六序列的长度不同,则可在进行按位同或操作时,将二进制形式的两个第六序列左对齐,按照较短的第六序列的长度执行按位同或操作,然后根据较长的第六序列的长度,在按位同或操作的结果后面补0,得到第一结果,使得第一结果的长度与较长的第六序列的长度相同。
确定出任意两个第六序列之间的序列距离后,可根据该序列距离,通过基于密度的聚类算法(Density-Based Spatial Clustering of Applications with Noise,DBSCAN)或其他聚类算法,对第三字典树中的各个叶子结点所表示的第六序列进行聚类,得到至少一个簇。
由于同一簇的第六序列可以看作是某些字段取值不同的帧头,因此,可根据预设的通配符(例如-1、*、#等),将第三字典树中属于同一簇的第六序列合并,得到第四字典树。
其中,对属于同一簇的第六序列进行合并时,可将属于同一簇的第六序列中的全部相同的字节保留,将取值不同的字节用通配符替换。例如,假设通配符为*,对属于同一簇的第六序列0x1234、第六序列0x2234进行合并时,可将两者包括相同的字节234保留,将取值不同的字节替换为通配符*,合并后的序列为0x*234。需要说明的是,本领域技术人员可根据实际情况确定通配符的具体符号,本公开对此不作限制。
图7示出根据本公开一实施例的第四字典树的示意图。假设通过上述方式,对图5中的第三字典树中的各个叶子结点所表示的第六序列进行聚类后,得到5个类,第1个类包括序列abcd,第2个类包括序列qwem及qwer,第3个类包括序列ghiu及ghiv,第4个类包括序列hi,第5个类包括序列mnxyz。
则可根据通配符*,将第三字典树中的属于第2个类的序列qwem及qwer合并,合并后的序列为qwe*,将第三字典树中的属于第3个类的序列ghiu及ghiv合并,合并后的序列为ghi*,从而得到图7所示的第四字典树。
需要说明的是,图7所示的第四字典树中包括了通配符,在实际应用中,第四字典树中也可以不包括通配符,本公开对此不作限制。
通过这种方式对第三字典树进行相似序列合并操作,能够将第三字典树中的属于同一簇的第六序列进行合并,得到第四字典树,从而能够对第三字典树中的某些字段取值不同的频繁序列进行合并,以提高第四字典树中的频繁序列的准确性。
在一种可能的实现方式中,得到第四字典树后,可根据所述第四字典树中的各个叶子结点所表示的第二序列在所述网络数据流中的位置信息,对所述第四字典树进行剪枝操作,得到第五字典树。
得到第四字典树后,可首先确定第四字典树中的各个叶子结点所表示的第二序列在网络数据流中的位置信息,其中,位置信息可例如第二序列在网络数据流中出现时的起始位置、结束位置等;然后对于任一第二序列,可根据该第二序列在网络数据流中的位置信息,确定该第二序列在网络数据流中的相邻位置间距。相邻位置间距是指第二序列在网络数据流中出现时的两个相邻的位置信息之间的间距。
例如,假设第二序列在网络数据流中的位置信息通过起始位置来表示,第二序列在网络数据流中的出现次数为3次,则可根据第二序列在网络数据流中第1次出现时的起始位置、第二序列在网络数据流中第2次出现时的起始位置,确定第二序列在网络数据流中第1次出现与第2次出现之间的相邻位置间距;可根据第二序列在网络数据流中第2次出现时的起始位置、第二序列在网络数据流中第3次出现时的起始位置,确定第二序列在网络数据流中第2次出现与第3次出现之间的相邻位置间距。
然后可判断第二序列在网络数据流中的相邻位置间距是否小于预设的帧长阈值。其中,帧长阈值可例如为20字节。本领域技术人员可根据实际情况设置帧长阈值的具体取值,本公开对此不作限制。
如果第二序列在网络数据流中的相邻位置间距大于或等于帧长阈值,则认为该第二序列具有帧头特性,在第四字典树中保留与该第二序列对应的结点。如果第二序列在网络数据流中的相邻位置间距小于帧长阈值,则认为该第二序列不具有帧头特性,从第四字典树中删除与该第二序列对应的结点,得到第五字典树。
在一种可能的实现方式中,如果第二序列在网络数据流中的相邻位置间距为多个值,则可使用出现次数最多的相邻位置间距与帧长阈值进行比较。
通过这种方式,能够从第四字典树中删除不具有帧头特性的第二序列对应的结点,得到第五字典树。
图8示出根据本公开一实施例的第五字典树的示意图。假设通过上述方式,确定图7中的第四字典树中的序列qwe*、hi在网络数据流中的相邻位置间距小于预设的帧长阈值20字节,可对图7中的第四字典树进行剪枝,删除与序列qwe*、hi对应的结点,得到如图8所示的第五字典树。
在一种可能的实现方式中,得到第五字典树后,可将第五字典树中的各个叶子结点表示的第三序列,确定为出现次数较多且具有帧头特性的目标序列。如图8所示,目标序列为abcd、mnxyz、ghi*。其中,目标序列ghi*也可以省略通配符*,写成ghi。
通过这种方式,能够根据预设的第一置信度阈值、熵阈值、第一字典树中的各个结点的置信度及熵,对第一字典树进行剪枝,得到第二字典树,进而对第二字典树进行长序列合并,得到第三字典树,以及对第三字典树进行相似序列合并,得到第四字典树,然后根据第四字典树中的各个叶子结点所表示的第二序列在网络数据流中的位置信息,对第四字典树进行剪枝,得到第五字典树,并将第五字典树中的各个叶子结点所表示的第三序列,确定为目标序列,从而能够通过对第一字典树的剪枝、合并等操作,确定出出现次数较多且具有帧头特性的目标序列。
步骤S140,根据所述目标序列在所述网络数据流中的位置信息,确定所述网络数据流的协议帧结构。
在步骤S140中,可根据目标序列在网络数据流中的位置信息,确定目标序列在网络数据流中出现的先后顺序及间距,并对目标序列在网络数据流中出现的先后顺序及间距进行统计分析等处理,识别出网络数据流的协议帧结构。
在一种可能的实现方式中,步骤S140可包括:根据所述目标序列在所述网络数据流中的位置信息,确定所述目标序列的状态转移图;根据所述状态转移图,确定所述网络数据流的协议帧结构。
在一种可能的实现方式中,可根据目标序列在网络数据流中的位置信息,确定目标序列在网络数据流中出现的先后顺序及间距,进而根据目标序列在网络数据流中出现的先后顺序及间距,确定目标序列的状态转移图。状态转移图可用于指示目标序列在网络数据流中的位置关系及层次关系。
状态转移图为加权有向图,可将目标序列作为状态转移图中的结点,状态转移图中的结点的属性可包括该结点表示的目标序列在网络数据流中的出现次数、与前一个目标序列的间距等信息。有向边表示在有向边的起始结点表示的目标序列之后为有向边指向的目标结点表示的目标序列,有向边的权值可用于指示有向边的起始结点表示的目标序列转移到有向边指向的目标结点表示的目标序列的概率。
在一种可能的实现方式中,可通过下述方式确定目标序列之间的转移概率:假设两个目标序列为目标序列A和目标序列B,那么,目标序列A转移到目标序列B的概率,可以看作是目标序列A后接目标序列B在网络数据流中的出现次数占目标序列A在网络数据流中的出现次数的比例。目标序列A转移到目标序列B的概率P可通过下述公式(4)来确定:
P=NumAB/NumA (4)
公式(4)中,NumAB表示目标序列A后接目标序列B在网络数据流中的出现次数,NumA表示目标序列A在网络数据流中的出现次数。
举例来说,图9示出根据本公开一实施例的网络数据流的示意图。如图9所示,网络数据流900为abcdqwemnxyzqwertyuiabcdqweghiqw…。通过上述方式,确定出网络数据流900中的目标序列为:序列1:abcd,序列2:mnxyz,序列3:ghi。
然后可根据这3个目标序列在网络数据流900中的位置信息(通过序列的起始位置来表示),来确定这3个目标序列在网络数据流900中出现的先后顺序及间距:首先出现的是序列1、间距7之后出现序列2、间距13之后出现序列1、间距7之后出现序列3、……;之后可根据这3个目标序列在网络数据流900中出现的先后顺序及间距,来构建目标序列的状态转移图。
图10示出根据本公开一实施例的目标序列的状态转移图的示意图。如图10所示,状态转移图1000为加权有向图,包括3个结点。结点1010表示序列1;结点1010与结点1020之间的有向边表示从序列1的起始位置开始,间距7个字节之后出现序列2;结点1010与结点1030之间的有向边表示从序列1的起始位置开始,间距7个字节之后出现序列3;结点1020与结点1010之间的有向边表示序列2之后出现序列1;结点1030与结点1010之间的有向边表示序列3之后出现序列1。
其中,结点1010的更为详细的描述可以为“间距13,序列1”,表示从序列2或序列3的起始位置开始,间距13个字节之后出现序列1,这里假设序列1为帧头的起始标志字段,所以省略了间距。
然后可而通过上述公式(4)计算状态转移图1000中的各个有向边的权值。例如,假设序列1在网络数据流900中出现了10次,序列1后接序列2出现了7次,序列1后接序列3出现了3次,那么,从结点1010指向结点1020的有向边的权值为7/10=0.7;从结点1010指向结点1030的有向边的权值为3/10=0.3。其他有向边的权值也可通过类似方式确定,此处不在赘述。
需要说明的是,图10仅以3个目标序列作为示例,对状态转移图进行了示例性地说明。在实际应用场景中,目标序列可以为更多个。本公开对目标序列的具体数量不做限制。例如,下述图11示出了根据7个目标序列构建的状态转移图。
图11示出根据本公开一实施例的目标序列的状态转移图的示意图。如图11所示,目标序列包括7个序列,分别为:序列1、序列2、序列3、序列4、序列5、序列6及序列7。状态转移图1100为加权有向图,包括8个结点。
结点1110表示序列1;结点1110与结点1120之间的有向边表示从序列1的起始位置开始,间距7个字节之后出现序列2;结点1120与结点1130之间的有向边表示从序列2的起始位置开始,间距3个字节之后出现序列4;结点1130与结点1140之间的有向边表示从序列4的起始位置开始,间距2个字节2之后出现序列5;结点1140与结点1110之间的有向边表示序列2之后出现序列1;
结点1110与结点1150之间的有向边表示从序列1的起始位置开始,间距7个字节之后出现序列3;结点1150与结点1160之间的有向边表示从序列3的起始位置开始,间距4个字节之后出现序列6,结点1160与结点1110之间的有向边表示序列6之后出现序列1;
结点1110与结点1170之间的有向边表示从序列1的起始位置开始,间距8个字节之后出现序列2;结点1170与结点1180之间的有向边表示从序列2的起始位置开始,间距5个字节之后出现序列7,结点1170与结点1110之间的有向边表示序列7之后出现序列1。
然后可而通过上述公式(4)计算状态转移图1100中的各个有向边的权值。其计算方式与上述方法类似,此处不再赘述。
从图11可以看出,两个目标序列之间的间距不同时,在构建状态转移图时,可构建两个不同的结点,如图11中的结点1120及结点1170。
在一种可能的实现方式中,确定出目标序列的状态转移图后,可根据该状态转移图,确定网络数据流的协议帧结构。例如,根据图10所示的状态转移图1000,并结合状态转移图1000中的各条有向边的权值,确定出网络数据流900的协议帧结构为:
序列1表示的帧头 | 序列2表示的帧头 | 数据 |
需要说明的是,以上仅以包括2个帧头的协议帧结构作为示例,对网络数据流的协议帧结构进行示例性地说明,在实际应用中,网络数据流的协议帧结构可能与上述协议帧结构不同,或者也可能包括更多个帧头,本公开对此均不作限制。
通过这种方式,能够根据目标序列在网络数据流中的位置信息,确定目标序列的状态转移图,并根据目标序列的状态转移图,确定网络数据流的协议帧结构,简单快速且准确率高,能够提高识别网络数据流的协议帧结构的准确性。
在一种可能的实现方式中,识别出网络数据流的协议帧结构后,还可确定出网络数据流的最底层协议以及最底层协议的帧长、帧的起始位置等信息。
根据本公开的实施例,对未知协议的网络数据流进行协议解析时,首先从待解析的网络数据流中,截取出多个第一序列,并根据多个第一序列,建立第一字典树,以及确定第一字典树中的各个结点的置信度及熵,然后根据第一字典树及各个结点的置信度及熵,确定目标序列,并根据目标序列在网络数据流中的位置信息,确定网络数据流的协议帧结构。通过这种方式对未知协议的网络数据流进行协议解析,不仅能够提高帧头的识别能力,而且能够识别出未知协议的帧结构。
图12示出根据本公开一实施例的基于字典树的未知协议帧结构识别方法的处理过程的示意图。如图12所示,根据本公开实施例的基于字典树的未知协议帧结构识别方法,对未知协议的网络数据流进行协议解析的过程如下:
步骤S1201,通过滑动窗口的方式,从待解析的网络数据流中,截取出多个第一序列;
步骤S1202,根据多个第一序列,建立第一字典树,并确定第一字典树中的各个结点的置信度及熵;
步骤S1203,根据预设的第一置信度阈值、熵阈值、第一字典树中的各个结点的置信度及熵,对第一字典树进行剪枝操作,得到第二字典树;
步骤S1204,对第二字典树进行长序列合并操作,得到第三字典树;
步骤S1205,对第三字典树进行相似序列合并操作,得到第四字典树;
步骤S1206,根据第四字典树中的各个叶子结点所表示的第二序列在网络数据流中的位置信息,对第四字典树进行剪枝操作,得到第五字典树;
步骤S1207,将第五字典树中的各个叶子结点所表示的第三序列,确定为目标序列;
步骤S1208,根据目标序列在网络数据流中的位置信息,确定目标序列的状态转移图;
步骤S1209,根据状态转移图,确定网络数据流的协议帧结构。
本公开的实施例的基于字典树的未知协议帧结构识别方法,能够对网络数据流中的未知协议的帧结构进行识别。通过该方法,网络安全领域的相关工作人员不仅能够分析研究网络协议的特征,还能够获取关键信息进行管理,从而能够根据网络情况进行正确决策,巩固国家的网络安全建设。
需要说明的是,尽管以上述实施例作为示例介绍了基于字典树的未知协议帧结构识别方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
图13示出根据本公开一实施例的基于字典树的未知协议帧结构识别装置的框图。如图13所示,所述装置包括:
序列截取模块1310,用于从待解析的网络数据流中,截取出多个第一序列;
字典树建立模块1320,用于根据所述多个第一序列,建立第一字典树,并确定所述第一字典树中的各个结点的置信度及熵;
目标序列确定模块1330,用于根据所述第一字典树及所述各个结点的置信度及熵,确定目标序列;
协议帧结构确定模块1340,用于根据所述目标序列在所述网络数据流中的位置信息,确定所述网络数据流的协议帧结构。
在一种可能的实现方式中,所述目标序列确定模块1330,包括:第一剪枝子模块,用于根据预设的第一置信度阈值、熵阈值、所述各个结点的置信度及熵,对所述第一字典树进行剪枝操作,得到第二字典树;第一合并子模块,用于对所述第二字典树进行长序列合并操作,得到第三字典树;第二合并子模块,用于对所述第三字典树进行相似序列合并操作,得到第四字典树;第二剪枝子模块,用于根据所述第四字典树中的各个叶子结点所表示的第二序列在所述网络数据流中的位置信息,对所述第四字典树进行剪枝操作,得到第五字典树;目标序列确定子模块,用于将所述第五字典树中的各个叶子结点所表示的第三序列,确定为目标序列。
在一种可能的实现方式中,所述第一剪枝子模块,用于:对于所述第一字典树中的任一结点,在所述结点的置信度小于所述第一置信度阈值的情况下,或者,在所述结点的熵大于或等于预设的熵阈值的情况下,删除所述结点,得到第二字典树。
在一种可能的实现方式中,所述第一合并子模块,用于:确定所述第二字典树中的各个叶子结点所表示的第四序列;对于任一第四序列,判断所述第四序列与第五序列是否存在公共子序列,所述第五序列为除所述任一第四序列之外的其他任一第四序列;在存在所述公共子序列、所述公共子序列为所述第四序列的后缀且所述公共子序列为所述第五序列的前缀的情况下,确定所述第五序列基于所述公共子序列的置信度;在所述第五序列基于所述公共子序列的置信度大于或等于预设的第二置信度阈值的情况下,将所述第二字典树中的所述第四序列与所述第五序列进行合并,得到第三字典树。
在一种可能的实现方式中,所述第二合并子模块,用于:确定所述第三字典树中的各个叶子结点所表示的第六序列;确定任意两个第六序列之间的序列距离;根据所述序列距离,对所述第三字典树中的各个叶子结点所表示的第六序列进行聚类,得到至少一个簇;根据预设的通配符,将所述第三字典树中属于同一簇的第六序列合并,得到第四字典树。
在一种可能的实现方式中,所述第二剪枝子模块,用于:对于任一第二序列,根据所述第二序列在所述网络数据流中的位置信息,确定所述第二序列在所述网络数据流中的相邻位置间距;在所述相邻位置间距小于预设的帧长阈值的情况下,从所述第四字典树中,删除与所述第二序列对应的结点,得到第五字典树。
在一种可能的实现方式中,所述协议帧结构确定模块1340,包括:状态转移图确定子模块,用于根据所述目标序列在所述网络数据流中的位置信息,确定所述目标序列的状态转移图;协议帧结构确定子模块,用于根据所述状态转移图,确定所述网络数据流的协议帧结构。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种基于字典树的未知协议帧结构识别装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
图14示出根据本公开一实施例的基于字典树的未知协议帧结构识别装置1900的框图。例如,装置1900可以被提供为一服务器或终端设备。参照图14,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出(I/O)接口1958。装置1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由装置1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种基于字典树的未知协议帧结构识别方法,其特征在于,所述方法包括:
从待解析的网络数据流中,截取出多个第一序列;
根据所述多个第一序列,建立第一字典树,并确定所述第一字典树中的各个结点的置信度及熵;
根据所述第一字典树及所述各个结点的置信度及熵,确定目标序列;
根据所述目标序列在所述网络数据流中的位置信息,确定所述网络数据流的协议帧结构。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一字典树及所述各个结点的置信度及熵,确定目标序列,包括:
根据预设的第一置信度阈值、熵阈值、所述各个结点的置信度及熵,对所述第一字典树进行剪枝操作,得到第二字典树;
对所述第二字典树进行长序列合并操作,得到第三字典树;
对所述第三字典树进行相似序列合并操作,得到第四字典树;
根据所述第四字典树中的各个叶子结点所表示的第二序列在所述网络数据流中的位置信息,对所述第四字典树进行剪枝操作,得到第五字典树;
将所述第五字典树中的各个叶子结点所表示的第三序列,确定为目标序列。
3.根据权利要求2所述的方法,其特征在于,所述根据预设的第一置信度阈值、熵阈值、所述各个结点的置信度及熵,对所述第一字典树进行剪枝操作,得到第二字典树,包括:
对于所述第一字典树中的任一结点,在所述结点的置信度小于所述第一置信度阈值的情况下,或者,在所述结点的熵大于或等于预设的熵阈值的情况下,删除所述结点,得到第二字典树。
4.根据权利要求2所述的方法,其特征在于,所述对所述第二字典树进行长序列合并操作,得到第三字典树,包括:
确定所述第二字典树中的各个叶子结点所表示的第四序列;
对于任一第四序列,判断所述第四序列与第五序列是否存在公共子序列,所述第五序列为除所述任一第四序列之外的其他任一第四序列;
在存在所述公共子序列、所述公共子序列为所述第四序列的后缀且所述公共子序列为所述第五序列的前缀的情况下,确定所述第五序列基于所述公共子序列的置信度;
在所述第五序列基于所述公共子序列的置信度大于或等于预设的第二置信度阈值的情况下,将所述第二字典树中的所述第四序列与所述第五序列进行合并,得到第三字典树。
5.根据权利要求2所述的方法,其特征在于,所述对所述第三字典树进行相似序列合并操作,得到第四字典树,包括:
确定所述第三字典树中的各个叶子结点所表示的第六序列;
确定任意两个第六序列之间的序列距离;
根据所述序列距离,对所述第三字典树中的各个叶子结点所表示的第六序列进行聚类,得到至少一个簇;
根据预设的通配符,将所述第三字典树中属于同一簇的第六序列合并,得到第四字典树。
6.根据权利要求2所述的方法,其特征在于,所述根据所述第四字典树中的各个叶子结点所表示的第二序列在所述网络数据流中的位置信息,对所述第四字典树进行剪枝操作,得到第五字典树,包括:
对于任一第二序列,根据所述第二序列在所述网络数据流中的位置信息,确定所述第二序列在所述网络数据流中的相邻位置间距;
在所述相邻位置间距小于预设的帧长阈值的情况下,从所述第四字典树中,删除与所述第二序列对应的结点,得到第五字典树。
7.根据权利要求1-6中任意一项所述的方法,其特征在于,所述根据所述目标序列在所述网络数据流中的位置信息,确定所述网络数据流的协议帧结构,包括:
根据所述目标序列在所述网络数据流中的位置信息,确定所述目标序列的状态转移图;
根据所述状态转移图,确定所述网络数据流的协议帧结构。
8.一种基于字典树的未知协议帧结构识别装置,其特征在于,所述装置包括:
序列截取模块,用于从待解析的网络数据流中,截取出多个第一序列;
字典树建立模块,用于根据所述多个第一序列,建立第一字典树,并确定所述第一字典树中的各个结点的置信度及熵;
目标序列确定模块,用于根据所述第一字典树及所述各个结点的置信度及熵,确定目标序列;
协议帧结构确定模块,用于根据所述目标序列在所述网络数据流中的位置信息,确定所述网络数据流的协议帧结构。
9.一种基于字典树的未知协议帧结构识别装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1至7中任意一项所述的方法。
10.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210375755.4A CN114938402B (zh) | 2022-04-11 | 2022-04-11 | 基于字典树的未知协议帧结构识别方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210375755.4A CN114938402B (zh) | 2022-04-11 | 2022-04-11 | 基于字典树的未知协议帧结构识别方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114938402A CN114938402A (zh) | 2022-08-23 |
CN114938402B true CN114938402B (zh) | 2024-04-16 |
Family
ID=82861693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210375755.4A Active CN114938402B (zh) | 2022-04-11 | 2022-04-11 | 基于字典树的未知协议帧结构识别方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114938402B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106713273A (zh) * | 2016-11-23 | 2017-05-24 | 中国空间技术研究院 | 一种基于字典树剪枝搜索的协议关键字识别方法 |
CN107689899A (zh) * | 2017-09-01 | 2018-02-13 | 南京南瑞集团公司 | 一种基于比特流的未知协议识别方法及系统 |
CN111314304A (zh) * | 2020-01-17 | 2020-06-19 | 西安微电子技术研究所 | 面向多类型数据流的帧识别方法、设备及可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10805173B1 (en) * | 2019-04-03 | 2020-10-13 | Hewlett Packard Enterprise Development Lp | Methods and systems for device grouping with interactive clustering using hierarchical distance across protocols |
-
2022
- 2022-04-11 CN CN202210375755.4A patent/CN114938402B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106713273A (zh) * | 2016-11-23 | 2017-05-24 | 中国空间技术研究院 | 一种基于字典树剪枝搜索的协议关键字识别方法 |
CN107689899A (zh) * | 2017-09-01 | 2018-02-13 | 南京南瑞集团公司 | 一种基于比特流的未知协议识别方法及系统 |
CN111314304A (zh) * | 2020-01-17 | 2020-06-19 | 西安微电子技术研究所 | 面向多类型数据流的帧识别方法、设备及可读存储介质 |
Non-Patent Citations (2)
Title |
---|
Feature Extraction Optimization for Bitstream Communication Protocol Format Reverse Analysis;Xinhong Hei等;2019 18th IEEE International Conference On Trust, Security And Privacy In Computing And Communications/13th IEEE International Conference On Big Data Science And Engineering (TrustCom/BigDataSE);第662-669页 * |
面向比特流的链路层未知协议分析技术研究;曹成宏;中国优秀硕士学位论文全文数据库工程科技Ⅱ辑;第17-45页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114938402A (zh) | 2022-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10412105B2 (en) | Automatic detection of network threats based on modeling sequential behavior in network traffic | |
US11816078B2 (en) | Automatic entity resolution with rules detection and generation system | |
US20210185066A1 (en) | Detecting anomalous application messages in telecommunication networks | |
CN111431819B (zh) | 一种基于序列化的协议流特征的网络流量分类方法和装置 | |
CN108229481B (zh) | 屏幕内容分析方法、装置、计算设备及存储介质 | |
US20210365805A1 (en) | Estimating number of distinct values in a data set using machine learning | |
US10867255B2 (en) | Efficient annotation of large sample group | |
Yujie et al. | End-to-end android malware classification based on pure traffic images | |
CN117546160A (zh) | 使用机器学习模型的自动化数据层次结构提取和预测 | |
CN109002856B (zh) | 一种基于随机游走的流量特征自动生成方法与系统 | |
CN112468324B (zh) | 基于图卷积神经网络的加密流量分类方法及装置 | |
CN114938402B (zh) | 基于字典树的未知协议帧结构识别方法及装置 | |
CN109460469B (zh) | 一种基于网络轨迹的安全协议格式的挖掘方法及装置 | |
CN115545019A (zh) | 日志模板提取方法、设备、存储介质及程序产品 | |
CN112087448B (zh) | 安全日志提取方法、装置和计算机设备 | |
CN113762372A (zh) | 即时通讯信息中组织成员识别方法及装置 | |
CN113704465B (zh) | 文本聚类方法及装置、电子设备、存储介质 | |
Greau-Hamard et al. | Performance analysis and comparison of sequence identification algorithms in iot context | |
CN110674497B (zh) | 一种恶意程序相似度计算的方法和装置 | |
Qiu et al. | A fast format classification and parsing approach based on multiple progressive resolution | |
CN107798060B (zh) | 一种实时流式数据处理应用软件特征识别方法 | |
CN114037004A (zh) | 一种基于行为序列的ip网络攻击群体分类方法 | |
CN115333802A (zh) | 一种基于神经网络的恶意程序检测方法和系统 | |
CN112131223A (zh) | 流量分类统计方法、装置、计算机设备和存储介质 | |
CN113569241A (zh) | 一种病毒检测方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |