一种基于命名实体识别的未知协议逆向解析方法

文档序号:32162194发布日期:2022-11-12 03:00阅读:131来源:国知局
一种基于命名实体识别的未知协议逆向解析方法

1.本发明涉及协议逆向工程领域对计算机网络中的未知网络协议进行逆向推断,具体是一种基于命名实体识别的未知协议逆向解析方法。


背景技术:

2.近年来,互联网逐渐成为支撑社会科技发展的重要载体,同时也成为越来越多生产生活方式的实现需要依托的对象。由于互联网较为友好的可用性和易于访问性,通过不同设备连接到互联网和web应用的人数在迅速增加。根据中国互联网络信息中心(cnnic)最近发布的《统计报告》,我国的网民数量截至2021年年底达到10.32亿人,同时手机用户规模和互联网普及率指标多年来始终保持着高速增长的势头。在此同期,个人web应用的使用量也在稳定增长,网上外卖等在线化应用的使用者规模增长尤为明显,增长率超过10%。即时通信、短视频和网络支付的用户量稳居前三,最高占到了网民总量的97.3%。网民用户规模和连入互联网中的设备种类和数量的不断扩张,使得互联网中承载的数据量不断增加。即使是在工业互联网网络中,与工业相关的应用也有超过59万个,连接设备超过7000万台(套)。人们多样的生产生活方式的实现越来越需要依托互联网。
3.无论是在以人民为主要用户群体的公有网络,还是以涉密企业、机构使用者为主要用户群体的私有网络。为了保证各式各样的设备、应用等在网络中稳定、高效、安全地运作,需要保证数据传输的安全可靠。可穿戴设备、web应用等智能产品的种类和数量在科技的驱动下得到了飞速增长,高科技产品的发展逐渐丰富了人们的生产生活方式。然而,成千上万的高科技设备和应用的涌现无疑使得网络中的通信量和数据量激增,互联网中进行数据交换所需要的网络协议的种类和数量也在同步增长。网络流量中的协议按照规范是否公开分为已知协议和未知协议两大类。在数据传输的比特流中,难以被识别和分析的未知协议占据流量数据的40%以上。未知协议的数量和种类增长迅速,大大增加了网络所有者对自有网络的管控难度。
4.由于获取协议数据的途径有限,目前的协议逆向问题面向的数据形式分为两类:离线网络流量和指令执行轨迹。后者因为需要监控指令序列和对应的上下文关系,不管是对于数据的获取方式还是人工分析角度来说都更加耗费时间和精力。使用离线网络流量的方法,在原始流量的基础上开展实验工作,无需对数据进行更为繁琐的预处理,适用性也更加广泛。但是语义信息推测不完全、依赖人工分析和文本类协议的特征字符的问题依旧存在。此外,就网络协议本身而言可以分为文本类协议和二进制协议两种。前者的数据表达方式更为明确,后者的数据形式则较为单一。
5.对于已知协议的解析目前的工具相对成熟,常用的解析工具如tshark、tcpdump可以实现2000余种已知协议的格式字段输出,但是对于协议格式没有公开的未知协议则无能为力。未知协议拥有着独特且不公开自有结构,往往是由设计者本身出于安全方面的考虑自行创造。最初的未知协议逆向工程完全依赖人工分析,但是所需要的时间成本不可忽视。未知协议smb的规范经过12年,才完全被开源项目samba通过人工分析的方法生成。因此自
动化的协议逆向工程成为了重点问题,通过对执行轨迹和网络流量两种不同数据对象的解析,可以得到协议格式、协议状态机和完整协议规范等不同输出结果。


技术实现要素:

6.本发明所要解决的技术问题是提供一种基于命名实体识别的未知协议逆向解析方法(为描述方便,本发明方法简称为nereup),以将网络流量中的未知协议的组成、设计规范和语义信息进行逆向推断。
7.本发明采用的技术方案是:一种基于命名实体识别的未知协议逆向解析方法,包括以下步骤:
8.步骤1:收集包含不同应用层协议的数据信息,对已知应用层协议头部的字段组成进行归纳总结,发掘现有已知应用层协议的组成字段类别,并进行字段类型命名实体定义;
9.步骤2:捕获真实网络环境下的网络流量,分类并选取不同应用层协议,提取其二进制协议序列,并对原始的二进制协议序列进行数据预处理;
10.步骤3:对预处理后的数据制作字符向量转化字典,将转化后的协议序列字符分别映射为字符向量,将生成的原始字符one-hot向量就作为双向长短期记忆网络的输入,输入层将值分别输入至前向和后向的长短期记忆网络单元中,通过结合上一时刻和下一时刻的特征和信息,拼接得到输出层的向量,并作为字符的隐藏状态向量进行输出;
11.步骤4:通过字符的隐藏状态向量将预测出概率值与所有的标签类型进行对应;将输出层的向量输入到条件随机场crf中,结合实时数据中字符本身的转移概率进行最终概率修正,得到预测出的命名实体类别对应的标签概率,训练完成智能体;
12.步骤5:将待逆向解析的未知协议序列,经过步骤2和步骤3的转化后输入智能体中,通过预测得出的未知协议的命名实体识别结果;
13.步骤6:改进扩展巴科斯范式,使之对网络协议格式、字段结构和语义信息进行形式化描述,将未知协议命名实体识别后的结果使用范式方式进行规范,最终得到未知协议的协议规范和约定。
14.进一步的,所述字段类型命名实体定义具体包括:
15.1)索引字段:为同种应用层协议中区分不同协议序列的最直接的标识字段,它代表此条协议序列的序号或者此协议作用到的对象序号;
16.2)类型字段:指示当前协议的基本属性,以二进制方式表达语义,一位二进制字符即可以成为一个字段;在传输信息时,只通过一个二进制的“0”和“1”或者两个二进制位的“0”到“3”来表达可供表达的意思;包含着协议的状态信息以及能够用“是”和“否”来传递数据的语义信息;在解析时将连续的类型字段归并为“flag”字段,以字节形式的表达。
17.3)功能字段:携带数据中相对直观并能直接产生作用的信息;一种为用有限个数字来表达要传输的信息,每个数字独自代表特别的功能类型;另一种字段本身的十进制数字语义就是字段进行传输的重要数据,并使用超出所需位数的字节数来携带数据。
18.更进一步的,所述步骤2具体为:
19.步骤2.1:选用保密网络中各端口和路由节点中采集的流量pcap数据包;对所有pcap包中进行数据统计,统计出可供制作成数据集的应用层协议数量;每个协议子集按照应用层协议类型进行分类,所有应用层协议的种类数量用g表示,每个packet中的协议数量
用m表示,导出的所有包含单个协议的数据包packet表示为:
[0020][0021]
其中,表示第g种应用层协议中的第d条协议;
[0022]
步骤2.2:提取各应用层协议的原始二进制协议序列,将原始二进制协议序列转化成十六进制,然后将转化后的十六进制序列以字符为单位进行bio标注,且采取的是协议头与协议载荷标注,以及协议头字段命名实体标注;对应用层协议存在协议规范的协议头和不存在协议规范的协议载荷进行分割,再将协议头的组成规范进行逆向解析。
[0023]
更进一步的,所述步骤3具体为:
[0024]
步骤3.1:对数据集中的数据进行遍历生成字符向量转化词典,对十六进制的字符及进行向量转化定义,同时对可能出现的其他值进行预定义;
[0025]
所述字符向量转化字典dic定义如下:
[0026][0027]
其中,p是键,给出了十六进制字符的键值对表示;《unk》表示为在词典外的其他字符,《pad》代表补全字符;
[0028]
步骤3.2:在单个字符映射为字符向量后,将生成的原始字符one-hot向量作为输入值x分别输入至前向和后向lstm网络中;对于一个单独的lstm网络来说,在时间序列t时的输出值o
t
为:
[0029]ot
=σ(wo·
[h
t-1
,x
t
]+bo)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0030]
其中,σ表示经过“门”结构时的sigmoid函数处理;h
t-1
为上一时刻的输出值,x
t
为当前时刻的输入值,wo和bo均为需要通过试验确定的权重和偏置系数;
[0031]
步骤3.3:将拼接得到的输出值向量作为字符的隐藏状态向量,所述拼接整体流程为:
[0032]
将双向长短期记忆网络的最终输出合并输出,每个方向分别有e个lstm结构的模型,最终输出值h表示为以下形式:
[0033]
h=[h
fe
,h
be
]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0034]
其中,h
fe
和h
be
分别为前向lstm网络结构的输出值和后向lstm网络结构的输出值;
[0035]
在经过双向长短期记忆网络处理之后,得到当前字符对应每一个标签的取值概率矩阵p;原始输入序列记为x,同时用y表示双向长短期记忆网络输出的预测结果对应的标签序列;两者均表示为如下形式:
[0036]
x={x1,x2,

,xn}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0037]
y={y1,y2,

,yn}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0038]
式中,n为序列中的字符数;
[0039]
用k表示设定的标签数量l表示标签,输出矩阵p的维度为n
×
k,对其中第i行第j列的参数,表示方法定义如下:
[0040]
pn×k={p
ij
:xi→
lj|1≤i≤n,1≤j≤k}
ꢀꢀꢀꢀꢀꢀ
(7)
[0041]
式中,p
ij
表示字符i预测为标签j的概率值;lj表示标签集合中的第j个标签;
[0042]
映射的概率以非归一化概率作为下一层的输入。
[0043]
更进一步的,所述步骤4具体为:
[0044]
步骤4.1:将第i个字符的预测结果定为δi,向标签j的转移概率定为p
ij
,预测结果表示成如下形式:
[0045]
δi=max(p
ij
)1≤i≤n,1≤j≤k
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
[0046]
步骤4.2:在预测序列前后分别加入start和end的标识作为列,新增start和end的新标签种类作为行,建立约束条件概率转移矩阵a
(k+2)
×
(k+2)

[0047]
步骤4.3:对于在输入序列x上的可能取值y的概率s(x,y),由pn×k和a
(k+2)
×
(k+2)
共同计算得出:
[0048][0049]
其中,表示真实情况下标签字符前后,即标签i向标签i+1的转移概率;表示单个字符预测为标签i的实际概率;
[0050]
将每个标签的概率值进行规范化处理,使用softmax输出p(y|x):
[0051][0052]
其中,y
allpossible
表示所有可能的预测标签集合;表示可预测标签;
[0053]
定义损失函数loss为对数似然的相反数,通过动态规划算法,求得输出预测标签序列
[0054][0055]
由此将双向长短期记忆网络的输出,输入到一层线性链条件随机场crf中,得到最终的预测序列y。
[0056]
更进一步的,所述步骤6具体为:
[0057]
步骤6.1:对协议在语义表达的组成区域使用步骤1所给出的字段命名实体定义进行表示;
[0058]
步骤6.2:根据每种协议的字段组成特点以字节为单位对不同类型字段的具体构成形式进行解释说明;
[0059]
步骤6.3:给出字节字符的取值情况;对于所有的网络协议,给出通用的形式化表示方法,协议名称使用protocol代替,同时使用index、type和function分别代表索引字段、类型字段和功能字段的类型定义,范式表示如下:
[0060]
protocol={f|o}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(12)
[0061][0062]
范式中的大括号表示[0,+∞]个字符组成的字符串集合;表示不必要的字段类型;
[0063]
以此来对未知协议的组成和语义信息进行形式化的描述。
[0064]
与现有技术相比,本发明的有益效果是:
[0065]
1)本发明以提升未知协议的逆向解析自动化程度,引入nlp中的命名实体识别方
法,使用深度学习方法bilstm学习协议序列中字段间存在的上下文语义信息,进行字段结构和语义信息的提取;
[0066]
2)本发明通过将预测概率输出到条件随机场crf中,避免了字段内部的不合理预测情况,提升发明的准确程度;
[0067]
3)本发明将协议进行序列化处理,能够破除文本类协议和二进制协议的限制,在不区分协议类型的前提下进行,提升了发明的适用范围。
附图说明
[0068]
图1为本发明方法nereup的系统结构图。
[0069]
图2为bio标注方法对协议序列的标注示例图。
[0070]
图3为双向lstm网络结构图。
[0071]
图4为bilstm模型中任意两个相邻的lstm单元之间的工作方式示意图。
[0072]
图5为训练完毕的智能体,在分割应用层协议头和协议载荷数据时与其他方法的比较示意图。
[0073]
图6为解析应用层协议头格式时,对模型训练的超参数选取时隐藏层维度的变化随着训练轮次增加带来的模型收敛示意图。
[0074]
图7为解析应用层协议头格式时,对模型训练的超参数选取时批次数量的变化随着训练轮次增加带来的模型收敛示意图。
[0075]
图8为解析应用层协议头格式时,对模型训练的超参数选取时学习率的变化随着训练轮次增加带来的模型收敛示意图。
具体实施方式
[0076]
下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0077]
本发明方法的系统结构如图1所示,方法由数据预处理、基于bilstm和crf的智能体训练和未知协议的格式逆向推断三部分组成。
[0078]
步骤1:收集了大量包含不同应用层协议的数据信息,将协议头字段提取出来后对已知应用层协议头组成进行了汇总。在人工分析过程中发现,协议头中的字段组成逻辑通常包含一定的时序关系。从自前向后的顺序对协议头序列进行顺序观察,可以发现字段的位置往往会按照“先全局,后局部”的方式进行安排。即靠前的字段通常表示此条应用层协议序列的统筹数据,包括序列号、长度等等,表示的是这条序列的基本信息。靠后的字段往往按顺序表示着其进行数据传输所携带的控制信息,包括指示协议功能、控制基本信息等内容。将定义出的index、type、function字段用于表示协议规范。定义的网络协议字段类型如下:
[0079]
1)索引字段(index)是同种应用层协议中区分不同协议序列的最直接的标识字段。它通常代表着此条协议序列的序号或者此协议作用到的对象序号。通过区分同种协议的索引字段可以实现对协议序列独特性的标记或者对处理相同序号对象的协议进行区分。
[0080]
2)类型字段(type)指示了当前协议的基本属性。此类字段通常以二进制方式表达语义,一位二进制字符即可以成为一个字段。在传输信息时,往往只通过一个二进制的“0”和“1”或者两个二进制位的“0”到“3”来表达为数不多可供表达的意思。因此,其中包含着协
议的状态信息以及可以用“是”和“否”来传递数据的语义信息。在解析时常常将连续的type字段归并为“flag”字段,来做到以字节形式的表达。
[0081]
3)功能字段(function)在协议的后半部出现居多,通常携带着数据中相对直观并能直接产生作用的信息。这种类型的字段涵盖两种情况,第一种与type字段相似,仍可以用有限个数字来分别表达想要传输的信息。每个数字依然独自代表着特别的功能类型。特别的是,这类数据绝大部分以字节为单位进行表达,如果位数较多在字段前面部分会存在大量“0”,仅仅使用尾部的几位字符进行表达。这种做法给协议的更新留有空间,可以传递更多想表达的数据种类。第二种情况比较直接,其字段本身的十进制数字语义就是字段进行传输的重要数据。相同的,这样的表示方法仍然使用远远超出所需位数的字节数来携带数据,可以为后续传输数据的爆发式增加留有余地,避免存在协议无法传输的数据。
[0082]
步骤2:捕获真实网络环境下的网络流量,分类并选取不同应用层协议,提取其二进制协议序列,并对原始的二进制协议序列进行数据预处理。
[0083]
选用保密网络中各端口和路由节点中采集的流量pcap数据包。对所有pcap包中进行数据统计,统计出可供制作成数据集的应用层协议数量。每个协议子集按照应用层协议类型进行分类,所有应用层协议的种类数量用g表示,每个packet中的协议数量用m表示最终导出的所有包含单个协议的数据包packet可以表示为:
[0084][0085]
其中,表示第g种应用层协议中的第d条协议。
[0086]
提取各应用层协议的原始二进制协议序列,将原始二进制协议序列转化成十六进制,将原始协议序列缩短为之前的1/4,在降低了数据集大小的同时保证了语义和字段结构信息。接着,对协议十六进制序列进行标注使用了bio(b-begin,i-inside,o-outside)标注集,采取的是协议头与协议载荷标注,以及协议头字段命名实体标注;对应用层协议存在协议规范的协议头和不存在协议规范的协议载荷进行分割,再将协议头的组成规范进行逆向解析。
[0087]
标注标签集如表1和表2所示。表1为协议头与协议载荷分割标注标签集合,分离出需要逆向解析的协议头数据。表2为协议头规范字段标注标签集合,对协议字段按照组成规范进行标注。标注方式如图2所示。
[0088]
表1协议头与协议载荷分割标注标签
[0089][0090][0091]
表2协议头规范字段标注标签
[0092][0093]
步骤3:对预处理后的数据制作字符向量转化字典,将转化后的协议序列字符分别对应到一个特定值;则生成的原始字符one-hot向量就作为双向长短期记忆网络的输入,输入层将值分别输入至前向和后向的长短期记忆网络单元中,通过结合上一时刻和下一时刻的特征和信息,拼接得到输出层的向量,并作为字符的隐藏状态向量进行输出。
[0094]
双向的长短期记忆网络(bilstm网络),由一组前向的lstm和一组后向的lstm单元组成。具体结构示意图如图3所示。图中圆形标志中代表的是十六进制的原始字符的one-hot向量,在进行转化之前,需要对数据集中的数据进行遍历生成字符向量转化词典。
[0095]
字符向量转化字典dic定义如下:
[0096][0097]
其中,p是键,给出了十六进制字符的键值对表示;〈unk》表示为在词典外的其他字符,《pad〉代表补全字符。
[0098]
bilstm网络的超参数设置为:
[0099]
1)单次输入网络的最小样本数量为64个;
[0100]
2)隐藏层的维度设置为300;
[0101]
3)bilstm网络的更新间隔为40轮次更新一次;
[0102]
4)学习率设置为0.001;
[0103]
5)梯度裁剪gradient clipping设置为5。
[0104]
为了保证模型在处理不同数据时具备可移植性,不仅仅要对十六进制的字符进行向量转化定义,还需要对可能出现的其他值进行预定义。在单个字符映射为字符向量后,会将值x分别输入至前向和后向lstm网络中,对于一个单独的lstm网络来说,在时间序列t时的输出值o
t
为:
[0105]ot
=σ(wo·
[h
t-1
,x
t
]+bo)
ꢀꢀꢀꢀꢀꢀꢀ
(3)
[0106]
公式(3)中经过“门”结构时的sigmoid函数处理用σ表示,h
t-1
为上一时刻的输出值,x
t
为当前时刻的输入值,wo和bo均为需要通过试验确定的权重和偏置系数。字符在前向和后向的双lstm网络中处理完成之后,拼接得到的输出值向量,将其作为字符的隐藏状态向量,向crf层进行输出。拼接整体流程示意图如图4所示。将两个方向lstm的最终输出合并
输出,每个方向分别有e个lstm结构的模型,最终输出值h表示为以下形式:
[0107]
h=[h
fe
,h
be
]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0108]
其中,h
fe
和h
be
分别为前向lstm网络结构的输出值和后向lstm网络结构的输出值。
[0109]
具体来说,在经过双向长短期记忆模型的处理之后,就可以得到当前字符对应每一个标签的取值概率矩阵p。原始输入序列为x,同时用y表示双向lstm模型输出的预测结果对应的标签序列。两者均可以表示为如下形式:
[0110]
x={x1,x2,

,xn}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0111]
y={y1,y2,

,yn}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0112]
式中n为序列中的字符数,同时用k表示设定的标签数量l表示标签,输出矩阵p的维度为n
×
k,对其中第i行第j列的参数,表示方法定义如下:
[0113]
pn×k={p
ij
:xi→
lj|1≤i≤n,1≤j≤k}
ꢀꢀꢀ
(7)
[0114]
式中,p
ij
表示表示字符i预测为标签j的概率值;lj表示表示标签集合中的第j个标签。
[0115]
映射的概率以非归一化概率作为下一层的输入
[0116]
映射的概率以非归一化概率作为下一层的输入。
[0117]
步骤4:通过字符的隐藏状态向量将预测出概率值与所有的标签类型进行对应;将输出层的向量输入到条件随机场crf中,结合实时数据中字符本身的转移概率进行最终概率修正,得到预测出的命名实体类别对应的标签概率,训练完成智能体。
[0118]
通常来讲,在得到概率矩阵p后,选择字符转移概率最大的标签类型作为字符的预测结果输出就能够达到很好的效果。这里将第i个字符的预测结果定为δi,向标签j的转移概率定为p
ij
,预测结果可以表示成如下形式:
[0119]
δi=max(p
ij
)1≤i≤n,1≤j≤k
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
[0120]
考虑到同类型字段需要标注的连续性,需要加入条件随机场对pn×k进行修正。首先,在预测序列前后分别加入start和end标识作为列,新增start和end新标签种类作为行,建立约束条件概率转移矩阵a
(k+2)
×
(k+2)
。接着,对于在序列x上的可能取值y的概率s(x,y),需要由pn×k和a
(k+2)
×
(k+2)
共同计算得出:
[0121][0122]
其中,表示真实情况下标签字符前后,即标签i向标签i+1的转移概率;表示单个字符预测为标签i的实际概率。
[0123]
将每个标签的概率值进行规范化处理,使用softmax输出p(y|x):
[0124][0125]
其中,y
allpossible
表示所有可能的预测标签集合;表示可预测标签。
[0126]
定义损失函数loss为对数似然的相反数,通过动态规划算法,求得输出预测标签序列
[0127]
[0128]
由此将双向长短期记忆网络的输出,输入到一层线性链条件随机场crf中,给输出的标签序列增加了约束条件,可以使得最终结果在输出序列y的基础上同时满足标签的内部转移关系,抛弃了不合理的预测序列组合,得到最终的预测序列y。
[0129]
步骤5:将待逆向解析的未知协议序列,经过步骤2和步骤3的转化后输入智能体中,通过预测得出的未知协议的命名实体识别结果。
[0130]
需要对协议的头部和其携带的载荷信息进行分解,以更好地提取出协议头部数据用于下一步协议格式推断。接着,在获取了协议头部数据后需要对其进行逆向格式推断来达到最终的解析目的。选用应用层协议头部和载荷信息分割的数据集,对2101395条标记后的协议数据每个十六进制字符进行标记后,使用建立的模型进行训练和预测。最终得到图5所示的结果。图中的横轴分别代表四种评价指标,纵轴代表计算出的百分率,相同横轴值下同时包含多种方法的实验数据。由此可以看出,提出方法在数据集上的各评价指标均能达到95%以上的水平,并且领先其他经典模型。为了体现出命名实体识别技术作用在协议序列数据上的应用效果,特别增加准确率指标对实验结果进行评价。准确率(accuracy)定义如下:
[0131][0132]
准确率区别于其他几种评价指标,将以命名实体识别后的区域替换成了每一个字符的预测标签种类,即使用预测后的标签序列与正确标注的标签序列进行对比,得出最终比值。由图中可以看到,本发明的结果中准确率评价指标的值均高于其他评价指标。这种现象说明最终得到的命名实体标签序列和正确的标签序列十分相近,起到了准确分离协议头数据和协议载荷信息的作用。
[0133]
接着,在对协议头序列字段和协议中所携带的载荷信息进行分离之后,需要对协议头中包含的字段进行格式的逆向推断。数据选用数据预处理时制作的2119796条协议头数据,对协议头序列进行字段类型命名实体识别的训练和预测。为了得到训练时应当采用的最佳超参数,在控制唯一变量的基础上设计了多组实验,实验结果如图6、7、8所示。在选取了最优的超参数后,针对协议头数据进行了模型训练和预测,最终的评价指标数值如表3所示。可以看出在与各类模型的对比中,本发明在未知协议解析上有着更好的表现。其中,在精确率上的数值较高,能够说明在面对多种字段类型命名实体时,对字段结构的识别和划分有着不错的表现,可以对一条完整的应用层协议头报文序列,通过字段类型的划分将其格式和字段语义信息进行逆向推断。
[0134]
表3协议头字段格式推断结果
[0135][0136]
步骤6:改进扩展巴科斯范式,使之对网络协议格式、字段结构和语义信息进行形式化描述,将未知协议命名实体识别后的结果使用范式方式进行规范,最终得到未知协议的协议规范和约定。
[0137]
为了对严谨的协议规范进行描述,自然语言便没有足够的标准化。扩展巴科斯范式作为一种描述编程语言的标准化表示法,对其进行改良后用于对协议规范的说明,这里对描述方式进行定义。首先,对协议在语义表达的大致组成区域使用步骤1所给出的三种字段类型进行表示。接着,根据每种协议的字段组成特点以字节为单位对不同类型字段的具体构成形式进行解释说明。最后给出字节字符的取值情况。对于所有的网络协议,为了保证改进的范式能够全面地描述字段和语义信息,特地给出通用的形式化表示方法。协议名称使用“protocol”代替,同时使用index、type和function代表步骤1中所提出的字段类型定义,范式表示如下:
[0138]
protocol={f|o}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(13)
[0139][0140]
范式中的大括号区别于数学公式,用于表示[0,+∞]个字符组成的字符串集合。特别地,用表示不必要的字段类型,即在相同种类的协议中随着协议类型的变化而可以增减的字段区域。以此来对未知协议的组成和语义信息进行形式化的描述。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1