CN104935567B - 一种未知协议报文格式推断方法 - Google Patents
一种未知协议报文格式推断方法 Download PDFInfo
- Publication number
- CN104935567B CN104935567B CN201510185514.3A CN201510185514A CN104935567B CN 104935567 B CN104935567 B CN 104935567B CN 201510185514 A CN201510185514 A CN 201510185514A CN 104935567 B CN104935567 B CN 104935567B
- Authority
- CN
- China
- Prior art keywords
- sequence
- data packet
- row
- matrix
- column element
- 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
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/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/166—IP fragmentation; TCP segmentation
Abstract
本发明提出一种未知协议报文格式推断方法,捕获网络上的原始数据包,根据数据包的长度建立序列比对二叉树,从二叉树叶子节点向上进行序列比对,序列比对采用基于动态规划的序列比对算法,所有节点序列比对结束后得到具有相同的长度叶子节点对齐的结果,根据结果寻找相同的部分,实现自动对未知协议报文格式推断并输出。该发明提供的一种基于数据包序列比对的自动未知协议报文方法较之现有人工参与的未知数据包格式推断方法,在采集数据包数目确定的基础上,可以降低人工参与的工作量实现自动推断;在没有数据包格式任何先验信息的条件下,可以实现对未知协议数据包格式的有效推断。
Description
技术领域
本发明属于网络数据流未知协议识别领域,具体为一种未知协议报文格式推断方法,利用网络中截获的数据包,根据数据包序列比对技术实现对未知协议数据报文格式推断。
背景技术
现在的协议识别技术主要包括基于端口映射的协议识别技术、基于静态特征的深度包检测协议识别技术和基于动态行为特征的协议识别技术等。这些方法都是根据从公开的协议规范提取该类协议的协议特征,进而建立该协议的特征库,作为识别的依据。
根据协议格式规范,可以对流量进行应用识别。但是很多网络协议,例如私有协议或者非标准协议,没有公共的协议规范,因此不能建立特征库,传统的协议识别工具无法使用。现目前的挑战在于,现在未知协议分析没有自动的方法,大多采用人工参与的方式。数据包中具有固定长度的域还可以人工反向推断出来,但是当数据包的格式中具有变长域时,试图进行自动格式推断难度更大。
发明内容
要解决的技术问题
针对在侦察截获网络数据包后,如何根据网络数据包进行序列比对实现对未知协议报文格式的推测的问题,本发明提出了一种基于数据包序列比对的自动未知协议报文推断方法,该方法的提出主要有以下目的:1、未知协议报文推断仅根据网络截获的数据流,不依赖于公共的协议格式规范;2、在网络截获数据充足的条件下,可以实现自动协议格式报文数据域的有效推测,降低人工参与量。
技术方案
本发明的技术方案为:
所述一种未知协议报文格式推断方法,其特征在于:包括以下步骤:
步骤1:采集N个数据包序列,按照数据包序列的长度对数据包序列进行排序;建立最底层具有N个叶子节点,高度为的比对完全二叉树;比对完全二叉树初始时,将排序后的N个数据包序列依次对应赋值给最底层N个叶子节点,每个叶子节点内的值为一个数据包序列,其余节点为空值;
步骤2:根据构造的比对完全二叉树,按照下面的规则自下而上进行序列比对,使得比对完全二叉树中的每个节点均有值,且每条边均有对应的空格插入操作方式:若一个节点为空值,并且它的左右子节点均有值,则对其子节点进行序列比对,并将比对结果序列存储到该节点中,同时将序列比对产生的空格插入操作方式记录到对应的边上;
所述序列比对采用以下方法:
步骤2.1:构造一个行数为M+1,列数为K+1的矩阵,其中M为第一数据包序列的长度,K为第二数据包序列的长度;
步骤2.2:将第一数据包序列放置在矩阵左侧,且第一数据包序列中的每个字符对应矩阵的一行,第一数据包序列的所有字符依次对应第2行至第M+1行;将第二数据包序列放置在矩阵上方,且第二数据包序列中的每个字符对应矩阵的一列,第二数据包序列的所有字符依次对应第2列至第K+1列;
步骤2.3:将矩阵的第1行和第1列的元素全部赋0;矩阵中的其余元素值通过以下公式得到:
Qij为矩阵第i行第j列的元素值,i取2~M+1,j取2至K+1,Sij为打分值,若矩阵第i行对应的第一数据包序列中的字符与矩阵第j列对应的第二数据包序列中的字符相同,则Sij=1,否则Sij=0;
步骤2.4:对于步骤2.3得到的赋值完成的矩阵,从矩阵中取值最大的元素开始,反向跟踪到矩阵的第1行第1列元素,得到一条从矩阵中取值最大的元素到矩阵第1行第1列元素的路径;所述反向跟踪的规则为:对于第i行第j列元素:比较第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素的元素值,第i行第j列元素的反向跟踪方向为第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素中元素值最大的元素位置,若第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素的元素值相同,则第i行第j列元素的反向跟踪方向为第i-1行第j-1列元素位置;
步骤2.5:根据步骤2.4得到的路径,得到第一序列和第二序列的空格插入操作方式:对于处于路径中的第i行第j列元素:
若反向跟踪方向为第i-1行第j-1列元素位置,则不进行操作;
若反向跟踪方向为第i行第j-1列元素位置,则在第一数据包序列中插入空格,空格插入位置为矩阵第i行对应的字符与矩阵第i+1行对应的字符之间;
若反向跟踪方向为第i-1行第j列元素位置,则在第二数据包序列中插入空格,空格插入位置为矩阵第j列对应的字符与矩阵第j+1列对应的字符之间;
步骤2.6:将第一数据包序列和第二数据包序列按照步骤2.5得到的空格插入操作方式插入空格,得到比对结果序列;
步骤3:比对完全二叉树的根节点中得到所有叶子节点对齐的结果,所述所有叶子节点对齐的结果具有相同的长度;在所有叶子节点对齐的结果中,具有相同位置且字符相同的部分组成推断出的协议报文格式。
有益效果
该发明提供的一种基于数据包序列比对的自动未知协议报文方法较之现有人工参与的未知数据包格式推断方法,在采集数据包数目确定的基础上,可以降低人工参与的工作量实现自动推断;在没有数据包格式任何先验信息的条件下,可以实现对未知协议数据包格式的有效推断。
附图说明
图1序列比对二叉树示意图。
图2序列比对算法示例图。
图3基于序列比对的自动未知协议报文推断方法实施实例示意图。左侧是数据报文;右侧是推断分析系统。
图4未知协议报文格式推断结果。
具体实施方式
下面结合具体实施例描述本发明:
如图3所示,左侧的数据采集系统包括一个网络数据包捕获工具,捕获网络上的原始数据包直接传递到分析推断系统。分析推断系统根据数据包的长度建立序列比对二叉树,从二叉树叶子节点向上进行序列比对,序列比对采用基于动态规划的序列比对算法。所有节点序列比对结束后得到具有相同的长度叶子节点对齐的结果,根据结果寻找相同的部分,实现自动对未知协议报文格式推断并输出,如图4所示。实施实例表明本发明所提出的方法具备对未知协议报文格式推断能力同时减少了人工操作。
实施例的具体实现步骤为:
步骤1:采集N个数据包序列。数据包采集通过网络数据包采集工具实现。采用基于libpcap的数据捕获工具,通过增加一个旁路处理,对发送和接收到的数据包做过滤/缓冲等相关处理,最后可以将捕获网络上的原始数据包直接传递到应用程序。通过数据包采集得到的原始数据包将作为序列比对的对象。
按照数据包序列的长度对数据包序列进行排序;建立最底层具有N个叶子节点,高度为的比对完全二叉树,如图1所示。比对完全二叉树初始时,将排序后的N个数据包序列依次对应赋值给最底层N个叶子节点,每个叶子节点内的值为一个数据包序列,其余节点为空值;
步骤2:根据构造的比对完全二叉树,按照下面的规则自下而上进行序列比对,使得比对完全二叉树中的每个节点均有值,且每条边均有对应的空格插入操作方式:若一个节点为空值,并且它的左右子节点均有值,则对其子节点进行序列比对,并将比对结果序列存储到该节点中,同时将序列比对产生的空格插入操作方式记录到对应的边上,如图1所示。
序列比对是一个在矩阵上进行操作的动态规划算法:
步骤2.1:构造一个行数为M+1,列数为K+1的矩阵,其中M为第一数据包序列的长度,K为第二数据包序列的长度。
步骤2.2:将第一数据包序列放置在矩阵左侧,且第一数据包序列中的每个字符对应矩阵的一行,第一数据包序列的所有字符依次对应第2行至第M+1行;将第二数据包序列放置在矩阵上方,且第二数据包序列中的每个字符对应矩阵的一列,第二数据包序列的所有字符依次对应第2列至第K+1列。
步骤2.3:将矩阵的第1行和第1列的元素全部赋0;矩阵中的其余元素值通过以下公式得到:
Qij为矩阵第i行第j列的元素值,i取2~M+1,j取2至K+1,Sij为打分值,若矩阵第i行对应的第一数据包序列中的字符与矩阵第j列对应的第二数据包序列中的字符相同,则Sij=1,否则Sij=0;赋值完成的矩阵如图2所示。
步骤2.4:对于步骤2.3得到的赋值完成的矩阵,从矩阵中取值最大的元素开始,反向跟踪到矩阵的第1行第1列元素,得到一条从矩阵中取值最大的元素到矩阵第1行第1列元素的路径,如图2所示。
所述反向跟踪的规则为:对于第i行第j列元素:比较第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素的元素值,第i行第j列元素的反向跟踪方向为第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素中元素值最大的元素位置,若第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素的元素值相同,则第i行第j列元素的反向跟踪方向为第i-1行第j-1列元素位置。
步骤2.5:为了完成序列的对齐,根据步骤2.4得到的路径,得到第一序列和第二序列的空格插入操作方式:对于处于路径中的第i行第j列元素:
若反向跟踪方向为第i-1行第j-1列元素位置,则不进行操作;
若反向跟踪方向为第i行第j-1列元素位置,则在第一数据包序列中插入空格,空格插入位置为矩阵第i行对应的字符与矩阵第i+1行对应的字符之间;
若反向跟踪方向为第i-1行第j列元素位置,则在第二数据包序列中插入空格,空格插入位置为矩阵第j列对应的字符与矩阵第j+1列对应的字符之间。
步骤2.6:将第一数据包序列和第二数据包序列按照步骤2.5得到的空格插入操作方式插入空格,得到比对结果序列,保存具有最少空格的结果序列以及空格插入操作方式。
步骤3:将每个叶子节点从下到上访问到根节点,执行每条向上边的空格插入操作,最终比对完全二叉树的根节点中得到所有叶子节点对齐的结果,所述所有叶子节点对齐的结果具有相同的长度,如图4所示。在所有叶子节点对齐的结果中,具有相同位置且字符相同的部分组成推断出的协议报文格式。
Claims (1)
1.一种未知协议报文格式推断方法,其特征在于:包括以下步骤:
步骤1:采集N个数据包序列,按照数据包序列的长度对数据包序列进行排序;建立最底层具有N个叶子节点,高度为的比对完全二叉树;比对完全二叉树初始时,将排序后的N个数据包序列依次对应赋值给最底层N个叶子节点,每个叶子节点内的值为一个数据包序列,其余节点为空值;
步骤2:根据构造的比对完全二叉树,按照下面的规则自下而上进行序列比对,使得比对完全二叉树中的每个节点均有值,且每条边均有对应的空格插入操作方式:若一个节点为空值,并且它的左右子节点均有值,则对其子节点进行序列比对,并将比对结果序列存储到该节点中,同时将序列比对产生的空格插入操作方式记录到对应的边上;
所述序列比对采用以下方法:
步骤2.1:构造一个行数为M+1,列数为K+1的矩阵,其中M为第一数据包序列的长度,K为第二数据包序列的长度;
步骤2.2:将第一数据包序列放置在矩阵左侧,且第一数据包序列中的每个字符对应矩阵的一行,第一数据包序列的所有字符依次对应第2行至第M+1行;将第二数据包序列放置在矩阵上方,且第二数据包序列中的每个字符对应矩阵的一列,第二数据包序列的所有字符依次对应第2列至第K+1列;
步骤2.3:将矩阵的第1行和第1列的元素全部赋0;矩阵中的其余元素值通过以下公式得到:
<mrow>
<msub>
<mi>Q</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<mo>=</mo>
<mi>m</mi>
<mi>a</mi>
<mi>x</mi>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mi>Q</mi>
<mrow>
<mi>i</mi>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mi>j</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>S</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>Q</mi>
<mrow>
<mi>i</mi>
<mo>,</mo>
<mi>j</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msub>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>Q</mi>
<mrow>
<mi>i</mi>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mi>j</mi>
</mrow>
</msub>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
Qij为矩阵第i行第j列的元素值,i取2~M+1,j取2至K+1,Sij为打分值,若矩阵第i行对应的第一数据包序列中的字符与矩阵第j列对应的第二数据包序列中的字符相同,则Sij=1,否则Sij=0;
步骤2.4:对于步骤2.3得到的赋值完成的矩阵,从矩阵中取值最大的元素开始,反向跟踪到矩阵的第1行第1列元素,得到一条从矩阵中取值最大的元素到矩阵第1行第1列元素的路径;所述反向跟踪的规则为:对于第i行第j列元素:比较第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素的元素值,第i行第j列元素的反向跟踪方向为第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素中元素值最大的元素位置,若第i-1行第j列元素、第i行第j-1列元素、第i-1行第j-1列元素的元素值相同,则第i行第j列元素的反向跟踪方向为第i-1行第j-1列元素位置;
步骤2.5:根据步骤2.4得到的路径,得到第一数据包序列和第二数据包序列的空格插入操作方式:对于处于路径中的第i行第j列元素:
若反向跟踪方向为第i-1行第j-1列元素位置,则不进行操作;
若反向跟踪方向为第i行第j-1列元素位置,则在第一数据包序列中插入空格,空格插入位置为矩阵第i行对应的字符与矩阵第i+1行对应的字符之间;
若反向跟踪方向为第i-1行第j列元素位置,则在第二数据包序列中插入空格,空格插入位置为矩阵第j列对应的字符与矩阵第j+1列对应的字符之间;
步骤2.6:将第一数据包序列和第二数据包序列按照步骤2.5得到的空格插入操作方式插入空格,得到比对结果序列;
步骤3:比对完全二叉树的根节点中得到所有叶子节点对齐的结果,所述所有叶子节点对齐的结果具有相同的长度;在所有叶子节点对齐的结果中,具有相同位置且字符相同的部分组成推断出的协议报文格式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510185514.3A CN104935567B (zh) | 2015-04-20 | 2015-04-20 | 一种未知协议报文格式推断方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510185514.3A CN104935567B (zh) | 2015-04-20 | 2015-04-20 | 一种未知协议报文格式推断方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104935567A CN104935567A (zh) | 2015-09-23 |
CN104935567B true CN104935567B (zh) | 2017-11-03 |
Family
ID=54122539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510185514.3A Active CN104935567B (zh) | 2015-04-20 | 2015-04-20 | 一种未知协议报文格式推断方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104935567B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108234452B (zh) * | 2017-12-12 | 2020-11-24 | 上海天旦网络科技发展有限公司 | 一种网络数据包多层协议识别的系统和方法 |
CN108712414B (zh) * | 2018-05-16 | 2021-02-26 | 东南大学 | 一种基于序列比对的二进制未知协议报文格式划分方法 |
CN109462590B (zh) * | 2018-11-15 | 2021-01-15 | 成都网域复兴科技有限公司 | 一种基于模糊测试的未知协议逆向分析方法 |
CN110336817B (zh) * | 2019-07-08 | 2021-08-10 | 大连大学 | 一种基于TextRank的未知协议帧定位方法 |
CN113852605B (zh) * | 2021-08-29 | 2023-09-22 | 北京工业大学 | 一种基于关系推理的协议格式自动化推断方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101695122A (zh) * | 2009-10-22 | 2010-04-14 | 中国电子科技集团公司第二十八研究所 | 指挥调度系统 |
CN102420723A (zh) * | 2011-12-14 | 2012-04-18 | 南京邮电大学 | 一种面向多类入侵的异常检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050210145A1 (en) * | 2000-07-24 | 2005-09-22 | Vivcom, Inc. | Delivering and processing multimedia bookmark |
-
2015
- 2015-04-20 CN CN201510185514.3A patent/CN104935567B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101695122A (zh) * | 2009-10-22 | 2010-04-14 | 中国电子科技集团公司第二十八研究所 | 指挥调度系统 |
CN102420723A (zh) * | 2011-12-14 | 2012-04-18 | 南京邮电大学 | 一种面向多类入侵的异常检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104935567A (zh) | 2015-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104935567B (zh) | 一种未知协议报文格式推断方法 | |
Fichtner et al. | From competition to facilitation: how tree species respond to neighbourhood diversity | |
CN110247930B (zh) | 一种基于深度神经网络的加密网络流量识别方法 | |
CN102271090B (zh) | 基于传输层特征的流量分类方法及装置 | |
Aime et al. | The causal agents of witches’ broom and frosty pod rot of cacao (chocolate, Theobroma cacao) form a new lineage of Marasmiaceae | |
Viscosi et al. | Geometric morphometric analyses of leaf variation in four oak species of the subgenus Quercus (Fagaceae) | |
Peruzzi | A new infrafamilial taxonomic setting for Liliaceae, with a key to genera and tribes | |
CN104283897B (zh) | 基于多数据流聚类分析的木马通信特征快速提取方法 | |
CN109067612A (zh) | 一种基于增量聚类算法的在线流量识别方法 | |
Schuiteman | Dendrobium (Orchidaceae): To split or not to split | |
CN105389549A (zh) | 基于人体动作特征的对象识别方法及装置 | |
CN103886235B (zh) | 一种正面人脸图像生物密钥生成方法 | |
CN111178408A (zh) | 基于联邦随机森林学习的健康监护模型构建方法、系统 | |
Sun et al. | Genetic diversity of Pueraria lobata (kudzu) and closely related taxa as revealed by inter‐simple sequence repeat analysis | |
CN104091175B (zh) | 一种基于Kinect深度信息获取技术的害虫图像自动识别方法 | |
CN110113338A (zh) | 一种基于特征融合的加密流量特征提取方法 | |
Lee et al. | Rediscovery of Aquilaria rostrata (Thymelaeaceae), a species thought to be extinct, and notes on Aquilaria conservation in Peninsular Malaysia | |
CN103761568A (zh) | 基于som神经网络聚类算法的日负荷特征曲线提取方法 | |
CN106650573B (zh) | 一种跨年龄的人脸验证方法及系统 | |
CN105233486A (zh) | 一种用于辅助健身的信息获取系统及方法 | |
Looy et al. | Characterizing morphologic variability in foliated Paleozoic conifer branches–a first step in testing its potential as proxy for taxonomic position | |
Karremans et al. | Specklinia dunstervillei, a new species long confused with Specklinia endotrachys (Orchidaceae: Pleurothallidinae) | |
Bodor et al. | Effect of row orientation and elevation on leaf morphology of grapevine (Vitis vinifera L.) cv Furmint | |
CN115580547A (zh) | 基于网络数据流间时空相关性的网站指纹识别方法和系统 | |
WO2015191782A3 (en) | System and method for determining associations between users and multiple communication devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |