字段语义推断模型的二进制协议语义推理方法

董姝岐 ,  黄辑贤 ,  粘镇泓 ,  井靖

信息工程大学学报 ›› 2025, Vol. 26 ›› Issue (02) : 238 -244.

PDF (960KB)
信息工程大学学报 ›› 2025, Vol. 26 ›› Issue (02) : 238 -244. DOI: 10.3969/j.issn.1671-0673.2025.02.017
网络空间安全

字段语义推断模型的二进制协议语义推理方法

作者信息 +

Semantic Inference Method of Binary Protocols Based on Field Semantic Inference Model

Author information +
文章历史 +
PDF (982K)

摘要

针对二进制协议逆向工程中字段语义推断准确性低且泛化能力弱的问题,提出一种基于softmax分类模型的字段语义推断模型(FSISC)的自动推断方法。首先,将收集到的协议数据,根据IP地址、端口号进行会话分组;其次,针对已知和未知协议字段本身、字段列上下文以及多序列行上下文3类特征,采用3种门控循环单元(GRU)进行特征提取;再次,将已知协议字段语义描述转换为嵌入向量,计算向量之间的余弦相似度,并根据字段描述的语义相似度使用k-means++算法进行聚类;最后,利用softmax分类模型对提取的特征和聚合后的语义类别进行类别映射,实现未知协议的自动化语义推断。实验结果显示,所提方法可有效提升对未知协议的泛化能力,实现4种协议的语义推断,与二进制协议逆向工程的自动字段语义推理方法(FSIBP)相比,语义推理准确率有所提升。

Abstract

Addressing the issues of low accuracy and weak generalization in field semantic inference during binary protocol reverse engineering, an automatic inference method based on the field semantic inference model for softmax classification model (FSISC) is proposed. Firstly, the collected protocol data are divided into sessions according to IP addresses and port numbers. Secondly, three kinds of gated recurrent unit (GRU) are used to extract features for known and unknown protocol field, field column context and multiple sequence row context. Thirdly, the semantic descriptions of known protocol fields are converted into embedding vectors, the cosine similarity between these vectors is calculated, and the k-means++ algorithm is used to cluster according to the semantic similarity of field descriptions. Finally, the softmax classification model is employed to map the extracted features and the aggregated semantic categories to realize the automated semantic inference of unknown protocols. Experimental results demonstrate that the generalization ability of unknown protocols is effectively improved by using the proposed method, achieving semantic inference for four protocols. Compared with the automated field semantics inference method for binary protocol reverse engineering (FSIBP), the average accuracy of semantic inference is improved.

Graphical abstract

关键词

二进制协议逆向工程 / 深度学习 / softmax分类模型 / 语义推断 / 门控循环单元

Key words

binary protocol reverse engineering / deep learning / softmax classification model / semantic inference / gated recurrent unit

引用本文

引用格式 ▾
董姝岐,黄辑贤,粘镇泓,井靖. 字段语义推断模型的二进制协议语义推理方法[J]. 信息工程大学学报, 2025, 26(02): 238-244 DOI:10.3969/j.issn.1671-0673.2025.02.017

登录浏览全文

4963

注册一个新账户 忘记密码

网络协议是计算机网络中通信节点进行数据交换时必须遵守的一组规则[1],伴随大数据、物联网等技术的飞速发展,网络应用不断丰富,针对各种网络设备节点之间的通信需求持续增加,适应各种节点之间、场景之中的专用网络协议(自定义协议)应运而生。然而,由于商业运营规则等多种原因,大多数的专用协议,如工控协议、物联网协议等,并没有公开协议规范,缺乏完整的协议描述,这给针对专用协议的安全分析工作带来巨大挑战。
协议逆向工程[2](Protocol Reverse Engineering, PRE)是指在不依赖于协议描述和协议源码的情况下,通过对协议实体的网络输入/输出、系统行为和指令执行流程等进行监控和分析,推断提取出协议文法和交互过程的分析方法,其被广泛应用于网络入侵检测系统、深度包检测、模糊测试、僵尸网络检测、软件系统集成等领域[3]。依据主要分析对象的不同,可以把协议逆向分析方法分为两大类:基于通信实体代码的分析和基于网络流量的分析。基于通信实体代码的分析方法通常利用反汇编、反编译等静态分析技术,对通信实体(客户端或服务器)中运行的二进制代码(固件)进行逆向解析。这种方法虽然能够准确澄清协议的内部结构和工作机制,然而在固件难以获取或有加密保护措施的情况下,此类方法很难适用。基于网络流量的分析方法是通过捕获和分析网络通信传输中的协议数据包,利用统计分析、序列比对等技术来提取协议格式、推断语义信息,进而澄清协议规范。此类方法只需要获取协议的通信流量,无需实体固件,适用于大多数协议逆向分析场景。
基于网络流量的分析方法通常包括预处理、协议格式提取、协议语义推断以及协议状态机推断4个步骤[4]。在这个过程中,自动化语义推理是关系协议逆向准确性的关键技术,也是基于网络流量分析方法中的研究热点和难点。FieldHunter[5]设计一些统计特征来表示特定的语义,并通过收集跨会话的应用消息来执行字段提取和类型推断,标志着自动化语义推理技术的一个重要发展。BinaryInferno[6]通过预定义一些语义识别模式,并尝试在未知的协议中进行匹配,使用多个检测器来分析字段的语义,每个检测器用于识别特定类型的语义,如浮点数、时间戳和长度等。然而,这些方法在面对预定义以外的字段和语义时,经常出现识别准确性不足的问题,导致字段可能被错误的匹配到两个或更多的语义上。针对这一问题,部分研究者尝试通过手动定义语义优先级[7],或者选择可以覆盖更多字节的语义[6]作为识别结果来提高准确性。尽管如此,这些经验性方法的准确度和可靠性仍然难以得到保证。为使研究过程更加自动化,Zhan等[8]提出基于相似度判断的方法,这类方法通过分析未知协议字段与已知协议字段之间的相似性来推断未知协议字段的可能语义,尽管在一定程度上能够实现自动化语义推理,但在泛化能力和处理复杂语义方面的效果较差。此外,这些方法通常需要依赖大量已知协议数据作为参考,导致在面对新出现的或者少见的协议时无法有效开展。
鉴于自动化语义推理现存的一些问题,采用深度学习和机器学习相结合的思路,利用softmax分类模型,将未知协议的语义类别推理视为分类问题,通过深度学习技术,训练模型学习已知协议字段的特征及其语义类别,以推断未知协议字段的语义。同样是对协议数据中的所有字段进行分析,相比于相似度的方法,softmax分类模型能够提供更准确和灵活的语义推理能力,且对未知协议有较强的泛化能力。首先,对提取到的字段语义描述进行特征提取;其次,利用自然语言处理模型将语义描述转化为向量表述,并通过计算向量之间的余弦相似度生成相似度矩阵;最后,使用机器学习算法将细粒度语义聚合,根据得到的特征和标签,利用softmax分类模型实现协议的语义识别。

1 系统设计

为解决协议的自动化语义推断问题,将语义推理视为一个分类问题。每个语义被看做是一个单独的类别,采用深度学习与机器学习相结合的设计思路。首先利用深度学习的方法,从已知协议中学习字段数据的上下文特征及其语义的相关性,然后利用机器学习的方法,对未知协议进行有效的语义推理。基于该思路,提出一种基于softmax分类模型的字段语义推断模型(Field Semantic Inference Model for the Softmax Classification Model, FSISC),处理流程如图1所示。具体来说,可分为训练和测试两个主要阶段。在训练阶段,首先对已知协议的字段数据进行预处理,以标准化数据格式和维度,随后采用门控循环单元(Gated Recurrent Unit, GRU)深度学习模型提取字段特征,捕捉数据中的时序特征和潜在关联。同时,通过对相似语义描述的聚类处理,聚合成明确的类别,简化模型的分类任务并提高准确性。在测试阶段,经训练的模型将未知协议字段数据分类至相应语义类别,实现对未知协议的语义推断。

1.1 语义推断预处理

语义推断预处理的目的是为语义推断任务准备和优化输入数据。此阶段包含对已知协议的预处理和对未知协议的预处理,以确保数据的可用性和一致性。预处理完成后的数据特征应包括明确的消息类型判别和精确的字段分割。对于已知协议,利用Wireshark等协议解析器来获取协议数据包的字段信息和相应的语义描述。对于未知协议,通过使用tcpdump等网络抓包工具捕获网络流量,并从这些数据包中提取源目的地址、源目的端口号、时间戳等基本信息。针对未知协议的字段分割,遵循消息预处理、消息类型分类和消息字段识别的步骤来获取。在本研究中,使用现有的字段推断技术NetPlier[9]对捕获的报文进行处理,可得到已知和未知协议的消息类型和字段分割结果。

基于已知和未知协议的消息类型和字段分割结果,根据数据包的IP地址和端口号将消息分组到通信会话中,在每个会话内,根据消息类型对每个会话中的消息进行进一步的分组,并根据时间戳按时间顺序对所有消息进行排序。最后,将每条消息的每个字节以十六进制文本格式写入文件,每条消息占一行,形成模型的输入消息组。消息组生成示例如图2所示。

1.2 基于GRU的字段特征提取

在预处理模块已得到协议数据的会话分组,所得到的消息组即为字段特征提取模块的输入。对于消息组中的字段,除了提取字段本身的特征外,还要考虑字段在其所在消息内部以及跨消息的上下文特征,这有助于捕获更丰富的语义信息。

为更全面地获取字段的特征,同时保证重要特征信息不被遗漏,本文的字段特征提取方法与文献[8]中的方法保持一致,并将字段特征分为以下3种类型。

1)字段本身特征:字段由一个或多个字节组成,这种字节序列的特征可以用来推断语义;

2)列上下文特征:消息组中每条消息的相同字段构成的上下文特征,表示连续消息之间的关联以及字段之间的趋势;

3)行上下文特征:同一消息中字段与前后字段之间的关联。

为使提取的特征表示包含上述3个特征,仅使用某一种单一模型难以实现,需要分别使用不同的模型来提取这3类特征,最终将其集成到一个整体模型中。由于字段及其上下文都可以被视为序列,字段本身是字节序列,字段的上下文是多个字段的序列,因此鉴于序列的特性,基于循环神经网络(Recurrent Neural Network, RNN)实现对字段特征的提取,底层模型采用RNN的变体GRU进行设计,它能够有效捕获顺序数据中的长期依赖关系。针对3类特征,选用3种不同GRU来提取字段及其两个上下文特征,具体模型如图3所示。图3中,GRU_F、GRU_S、Bi-GRU_P分别表示3种不同的门控单元,用来实现对字段本身及其上下文的特征提取。

字段本身特征提取。GRU_F被用于提取字段本身的特征。由于字段中的字节是离散的,可以通过一个嵌入层将这些离散的字节映射成连续的向量(即嵌入向量),嵌入层的作用是将每个字节编码为一个向量,这些向量能够捕捉字节之间的相互关系和语义信息。对于一个字节bi,其嵌入向量可表示为

ei=Layer(bi)

式中:Layer(·)表示嵌入层函数;bi表示第i个字节;ei表示该字节对应的嵌入向量。在嵌入层中,定义一个填充值d以处理不同长度的字段。具体而言,通过采用填充策略,将所有字段长度扩展至最长字段的长度,假设字段最长长度为L,则填充后的字段向量可表示为

E={e1,e2,,eL}

式中,E表示填充后字段嵌入向量序列。如果原字段长度小于L,则在序列末尾添加填充向量ed使其长度达到L

将填充后的嵌入向量序列E作为输入传递给GRU_F进行处理。GRU_F通过逐步更新隐藏状态来提取字段的序列特征,具体更新过程可表示为

ht=GRU_F(ht-1,et)

式中:ht表示在时间t的隐藏状态;et表示时间t的嵌入向量,此处时间t可以理解为字段中第t个字节的位置。通过这种方式,GRU_F能够综合考虑字段中所有字节的信息,捕获字段本身的序列特征。最终,GRU_F的输出hL为整个字段的特征表示,包含了字段内所有字节的综合信息。

列上下文特征提取。GRU_S负责提取同一字段在不同消息中的上下文特征,即列上下文特征。假设消息组由M条消息组成,每个字段通过GRU_S处理后,获得一系列字段特征向量{hL1,hL2,,hLM},GRU_S将这些特征向量作为输入,通过逐步更新隐藏状态hs来提取列上下文特征。

行上下文特征提取。Bi-GRU_P用于提取不同字段之间的上下文特征,与前两个GRU单元不同,其目的不是获取整个序列的信息,而是获取从GRU_S中提取特征的上下文信息。因此,在此部分使用一个双向GRU,双向GRU通过同时从消息的开始到结束(前向)和从结束到开始(后向)处理字段序列,能够综合考虑每个字段的前后上下文信息。假设消息中有N个字段,对于第i个字段,双向GRU的处理过程可表示为:

hpi_forward=GRUforward(hpi-1_forward,hfi)       
hpi_backward=GRUbackward(hpi-1_backward,hfi)

式中:hpi_forwardhpi_backward分别表示前向和后向GRU在处理第i个字段时的隐藏状态;hfi表示第i个字段的特征向量。最终,对于每个字段,将其前向和后向隐藏状态合并,得到该字段的综合行上下文特征表示,可表示为

hpi=hpi_forwardhpi_backward

式中,每个字段的表示hpi既包含了字段本身的信息,也反映了字段在消息组中的位置及其与其他字段的关系。

将GRU_F、GRU_S、Bi-GRU_P整合为一个整体模型,以消息组为输入,输出每个字段的表示。这种表示既包含字段的局部信息,也融合其在不同上下文中的全局特征,从而大大提高模型对于信息字节的处理能力。在训练过程中,整体模型的参数通过反向传播进行更新,以最小化预设的损失函数。

1.3 语义类别聚合

首先,从Wireshark获取数据集中每个协议字段的语义描述。其次,使用预训练的自然语言处理模型处理获取的语义描述。最后,通过聚类算法将具有相似语义的字段聚集成类别,实现对语义类别的聚合。在语义类别聚合过程中如何实现细粒度的语义聚合以及如何确定聚类的最佳数量是两个重点要解决的问题。

1.3.1 细粒度语义聚合

语义推理在某种程度上可以被视为一个分类问题,而语义类别聚合的目的是为分类设置类别,即为样本设置标签。将已知协议的细粒度语义聚合,使多个相似的语义形成一个语义类别,便于后续使用这些语义类别进行分类。对于已知的协议,通过协议解析器Wireshark爬取每个字段的语义描述,这些描述用自然语言表示。在本研究中使用自然语言处理(Natural Language Processing, NLP)模型将网络协议字段的描述性文本转换成句子嵌入,即高维空间中的向量表示。随后,构建一个相似度矩阵,通过计算嵌入向量之间的距离来量化句子间的相似度。基于相似度矩阵应用聚类算法进行聚类。

在语义类别聚合部分,采用k-means++算法来提高字段语义的聚类效果。k-means++算法与传统k-means的主要区别在于初始簇中心的选择方法。k-means++算法在初始化聚类中心时采用了更优化的策略。首先,随机选择一个样本作为第1个聚类中心;其次,计算每个样本与已选聚类中心的距离,选择距离最远的样本作为下一个聚类中心;最后,重复这个过程,直到选出k个聚类中心。这种初始化方式使聚类中心之间的相互距离尽可能得远,从而提高聚类的效果和稳定性。k-means++算法和k-means算法在原理上都是基于迭代和距离度量来进行聚类的,但k-means++算法是通过改进初始化聚类中心的方式来提高的。这对于聚合细粒度的字段语义至关重要,因为更准确的聚类可以直接影响后续的语义推断准确率。

1.3.2 聚类数量最优化算法

相似的语义可以通过相似度矩阵进行聚类,但在聚类之前需要确定聚类的类别数量,聚类数量太小,模型无法捕捉到数据的全部细微差异,导致不同类别的数据被过度合并;相反,若聚类数量太大,则可能导致过拟合。为得到最恰当的聚类数量,提出一种基于相似度矩阵和k-means++的聚类数量最优化算法。

该算法首先设置一系列可能的聚类类别数k(如3~20),并对每个k值执行k-means++聚类算法;其次,计算所有输入组内距离的误差平方和(Sum of the Squared Errors, SSE),并将其作为聚类质量指标;最后,根据SSE与k值的关系,找出最优的k值。因为,对于不同的k值可以得到相应的SSE,通常随着k值的增大,SSE会逐渐减小,但当k值达到某个点后,SSE的减少速度会明显放缓,这个点就是“拐点”,其所对应的k值即最佳k[10]

对于连续函数f,其在任一点x处的曲率Kf(x)可表示为

Kf(x)=f(x)(1+f'(x)2)1.5

式中,f'f分别表示f的一阶导数和二阶导数。拐点处的k值表示SSE减小速度发生显著变化的点,从而被选为最佳的聚类数量。

1.4 基于softmax分类模型的语义类别识别

通过将提取的已知协议的字段特征与聚合后的语义类别相结合,可以构建一个分类模型来实现对未知协议字段的语义分类。采用softmax作为分类模型,该模型作为逻辑回归模型的扩展,特别适用于处理多分类问题。它的核心优势在于能够将输入样本的特征映射到一个概率分布上,其中每个类别的概率是根据输入特征通过模型计算得出的。具体流程如图4所示。

1)特征加权和计算。计算每个类别的得分,通常是输入特征与权重的线性组合。

2)softmax函数转换。利用softmax函数将这些得分转换成概率。softmax函数的关键在于它确保所有类别的概率和为1,并且每个类别的概率值反映输入样本属于该类别的相对可能性。

3)模型架构。在特征提取层之后,模型构建一个全连接层,随后是softmax输出层。输出层的节点数与聚合后的语义类别数量相匹配。softmax层的职责是将输入的特征向量映射到各个语义类别的概率上。

上述基于softmax的未知协议语义分类模型,将精确的特征提取和语义描述进行类别映射,优化了处理流程,能够帮助提升未知协议字段语义的识别准确率,同时由于其能够对多种语义的概率分布进行识别,也增强了对不同协议的泛化能力。

2 实验

2.1 数据集

从公开的二进制协议数据集收集数据,包括网络流量数据集、物联网设备通信数据集和工业控制系统协议数据集。每个数据集应包含充足的字段示例及其对应的语义标注。实验主要使用S7comm、OMRON-FINS、Modbus和DNP3这4种二进制协议作为测试的目标,这些协议都是工控领域经典、广泛使用的协议。在实验中,选择一个或多个协议对模型进行训练,在另一个不同于训练协议的协议上进行测试,验证该方法的泛化能力和有效性。

2.2 实验环境及设置

硬件环境:Windows 11家庭中文版操作系统,CPU为Intel(R) Core(TM) i7-10875H处理器。软件环境:实验代码均采用Python 3.9.6编写,深度学习框架为PyTorch 2.2.0,数据预处理和分析使用Pandas和NumPy库。

实验设置:对于字段特征提取,GRU的隐藏状态大小分别设置为16、32、32。3个GRU的循环层数均设置为1。对于语义类别聚合,基于协议解析器Wireshark的协议描述进行聚类,并使用基于自然语言处理的预训练模型实施语义类别聚合。对于基于softmax分类模型的语义推理,使用一个全连接层,以及交叉熵损失函数进行模型训练,优化器选择Adam优化器。

2.3 评价指标

使用未知协议语义字段分类的整体准确率(Accuracy)作为语义推理的评价指标,准确率的值为正确确定语义类别的字段数量与字段总数之比。准确率的评估采用两种方法:准确率1为基于模型预测的最可能的单个语义类别的准确性;而准确率2则考虑模型给出的前两个最可能的语义类别中,只要有一个正确,预测就算正确。准确率1严格评估单个最佳预测,而准确率2提供更宽松的评估标准。

2.4 实验结果分析

由于语义推断依赖于已知协议的知识来推断未知协议的语义,因此已知协议应尽可能与未知协议相似。例如,如果分析的未知协议是工控协议,那么使用已知工控协议的知识进行推断比使用互联网协议的知识更为合适。选用4种工控协议进行性能评估。在测试中,将测试协议的真实字段输入到模型中,并将模型的输出与真实语义(Ground Truth)进行比较来计算模型的准确性。由于目前对于语义推断的方法仅有二进制协议逆向工程的自动字段语义推理方法(Automated Field Semantics Inference Method For Binary Protocol Reverse Engineering, FSIBP)可以实现自动化语义推断,并且在推断过程中不限于推断少数字段的语义,因此本文选用FSIBP为对比模型。

首先,分别在FSISC和FSIBP上使用3种协议进行训练、1种协议进行测试,来对比FSISC与FSIBP的性能,实验结果如表1所示。实验结果表明,本文所提模型,不论在准确率1或者准确率2上都要高于FSIBP。其次,测试训练协议对本文模型性能的影响。选择1种或两种协议进行训练,在其他的协议数据集上进行测试,得到的实验结果分别如表2表3所示。

表1~表3中的结果可知,使用表3中的两个协议进行训练比使用表1中的3个协议进行训练的性能更好。此外,当使用训练协议数量减少时,语义类别数量也减少了,理论上可以提高推断的准确性。尽管如此,即便考虑到较高的k值,使用两个协议训练的模型性能也展现出优于使用3个协议训练的性能。这一发现表明在训练模型时选择合适的协议的重要性。虽然理论上使用更多的已知协议进行训练能提供更丰富的信息,但由于已知协议与未知协议之间存在差异,包含一些不相关或冗余信息的已知协议可能不会带来额外的好处,甚至可能对推断结果产生不利影响。然而,表2中的结果显示,仅使用一种协议进行训练时,模型的准确性有所下降,这反映了当训练数据不足时,所选的已知协议不能覆盖未知协议的关键特征,导致结果下降。

综上所述,为了模型性能的最大化,需要在选择训练协议时进行仔细选择,既要避免使用太多的协议引起不必要的干扰,也要避免太少的协议而无法覆盖未知协议的关键特征。此外,通过将本文模型与FSIBP对比,模型预测准确率在不同协议上均有所提升。

3 结束语

提出基于softmax分类模型的字段语义推断模型,实现二进制协议中字段语义的推断。通过融合深度学习技术进行高效地字段特征提取,以及采用机器学习算法进行细粒度语义类别聚合,该方法证实了将softmax分类模型引入二进制协议逆向工程的字段语义推断在理论上可行,且在实践中有效。在系统设计部分,详细介绍了数据预处理、字段特征提取、语义类别聚合,以及基于softmax分类模型的语义类别识别的具体实施方案。通过实验验证了该方法不仅提高了自动化语义推理的准确性,而且增强了方法对未知协议的泛化能力。

在未来的工作中,考虑从以下方面做进一步的改进:针对不同的工业、物联网或网络应用场景,定制化模型和算法,以满足特定场景下的需求;使用图神经网络等技术,捕捉字段之间的复杂关系和特征表示,进一步提高语义推断的准确性。

参考文献

[1]

杨资集,潘雁,祝跃飞,基于概率模型的二进制协议字段划分方法[J].计算机科学202249(10):319-326.

[2]

王占丰,程光,马玮骏,基于网络轨迹的协议逆向技术研究进展[J].软件学报202233(1):254-273.

[3]

TANG TLAI Y XWANG Y P. Relational reasoning-based approach for network protocol reverse engineering[J]. Computer Networks2023,230:No.109797.

[4]

李峻辰,程光,杨刚芹.基于网络流量的私有协议逆向技术综述[J].计算机研究与发展202360(1):167-190.

[5]

BERMUDEZ ITONGAONKAR AILIOFOTOU M, et al. Towards automatic protocol field inference[J]. Computer Communications201684:40-51.

[6]

CHANDLER JWICK AFISHER K. BinaryInferno: a semantic-driven approach to field inference for binary message formats[DB/OL]. (2023-02-27)[2024-04-08].

[7]

WANG QSUN Z HWANG Z Q, et al. A practical format and semantic reverse analysis approach for industrial control protocols[J]. Security and Communication Networks20212021(1):No.6690988.

[8]

ZHAN M QLI YLI B, et al. Toward automated field semantics inference for binary protocol reverse engineering[J]. IEEE Transactions on Information Forensics and Security202319:764-776.

[9]

YE Y PZHANG ZWANG F, et al. NetPlier: probabilistic network protocol reverse engineering from message traces[DB/OL]. (2021-02-21)[2024-04-08].

[10]

SATOPAA VALBRECHT JIRWIN D, et al. Finding a “kneedle” in a haystack: detecting knee points in system behavior[C]∥Proceedings of the 2011 31st International Conference on Distributed Computing Systems Workshops. Piscataway, USA: IEEE, 2011:166-171.

AI Summary AI Mindmap
PDF (960KB)

329

访问

0

被引

详细

导航
相关文章

AI思维导图

/