协议模糊的堆叠式Seq2seq注意模型

article/2025/8/15 7:26:41

摘要--通过生成大量异常数据作为程序的输入,模糊测试是发现软件漏洞的有效方法。很难自动模糊协议,因为必须手动构造一个满足协议规范的模板以生成测试用例。在本文中,我们建立了堆叠的seq2seq注意模型来自动生成协议测试用例。Seq2seq-attention是一种机器学习技术,具有编码器-解码器结构以根据上下文输出文本序列。我们评估了不同层LSTMseq2seq注意模型的训练效果,并指出测试案例的最高正确性是通过3LSTM实现的。此外,我们基于堆叠的seq2seq注意模型实现了模糊器,并与基于语法的模糊器进行了比较。

一:介绍

模糊测试是通过使用不同的输入反复测试软件来发现软件漏洞的广泛使用的技术之一。根据其输入生成方法,模糊处理主要分为两种:(1)基于变异的模糊处理2基于语法的模糊处理。基于变异的模糊测试会通过不同的策略自动对初始测试输入进行变异。相反,基于语法的模糊测试需要特定的格式来生成测试输入,并且由于语法规范通常是人工编写的,因此很难完全自动化。然而,基于语法的模糊测试比基于变异的模糊测试更有效,特别是在构造复杂结构的输入格式(例如PDF格式的文件和包含HTMLJavascript文档的网页)时

在协议模糊测试方面,基于语法的模糊测试和基于变异的模糊测试都起着重要的作用。SPIKE [3]Boofuzz [4]使用协议的规范来构造测试输入。Pulsar [5]autofuzz [6]使用聚类算法和基于n-gram的方法来自动恢复协议以生成输入。基于语法的模糊器会花费时间来基于语法手动构建初始模板以生成测试用例。另一方面,Pulsar和自动模糊的生成受到有限长度的内容和传统聚类算法的时间开销的限制。因此,快速自动产生满足协议的输入是协议模糊化的重要问题。

在本文中,我们探讨了是否有可能使用机器学习来自动生成满足协议规范的模糊测试用例。具体来说,我们使用长短期记忆(LSTM建立不同的层序列对序列注意(seq2seq-attention[7]模型。单元以学习协议中字符的概率分布。我们收集由传统基于语法的模糊器产生的测试用例作为输入数据,并接受无监督的培训。而且,我们实现了基于机器学习的模糊器,该模糊器使用之前训练有素的模型来生成测试用例。对两个特定FTP程序的评估表明,使用机器学习自动构建符合协议规范的输入是可行的。并且我们研究了LSTM不同层对测试用例生成的影响。此外,我们发现基于机器学习的模糊器在代码覆盖率方面优于传统的基于语法的模糊器。

本文的贡献包括:

       我们建立了一个堆叠的seq2seq-attention模型来自动学习协议规范,并使用它实现基于机器学习的模糊器。

       我们比较了使用不同层LSTMseq2seq注意模型生成的测试用例的正确性。

       我们在两个FTP服务器程序上对基于机器学习的模糊器和传统的基于语法的模糊器进行了代码覆盖率评估,这表明我们的模糊器比基于语法的模糊器具有更好的性能。

       本文的其余部分安排如下:第二部分介绍与seq2seq-attention相关的背景知识。第三节描述了我们的模型设计。我们在第四节介绍我们的实验结果。我们在第五节中总结了这篇论文。

第二节 背景

sequenceseq2seq的基本序列是图1中的编码器-解码器体系结构,用于接收来自序列的输入并生成可变长度的输出。递归神经网络(RNN)用于编码器和解码器以处理序列。RNN单元通常由具有各种逻辑门操作的LSTM [8]GRU [10]组成。隐藏的语义信息被编码为上下文向量C转移到解码器的隐藏状态。seq2seq在机器翻译,文本摘要和语音识别方面取得了巨大的成功,因为其编解码器体系结构不限制输入和输出的序列长度。但是,seq2seq将所有输入序列编码为统一的语义特征,然后对其进行解码。因此,C 必须包含原始序列中的所有信息,并且其长度成为限制模型性能的瓶颈。

图1.序列到序列的示意图

注意力机制通过每次输入不同的C_{t}来解决这个问题。下面的图2是一个带有注意机制的解码器:每个C_{t}自动为当前输出的Y_{t}选择最合适的上下文信息。具体来说,我们使用a_{tj}来测量编码器第j阶段的h_{j}与解码第t阶段的相关性。解码器第t级输入的上下文信息C_{t}来自于所有h_{j}a_{tj}的加权和。

a_{tj}是一个输出到e_{tj}的softmax函数。他们的表示如下:

图2.解码器中注意机制的示意图

W_{a}V_{a}是权重矩阵,其参数在编码器和解码器中学习。a_{tj}的计算过程也称为点积矩阵法。

第三节 模型设计

在图3中,我们概述了堆叠的seq2seq-注意模型,它由三个模块组成:编码器模块,注意模块和解码器模块。

首先,编码器读取输入文本并将文本中的每个字符转换为一个独热编码向量X_{t}。独热编码用于将每个特征表示为互斥的二进制元素向量。所以X_{t}=(x_{1},x_{2},...,x_{m})^{t}。(x_{i} = 0或1)然后编码器使用LSTM与前向隐藏状态h_{t}接收独热编码向量X_{t}并输出下一步隐藏状态h_{t+1}。输出状态h_{t+1}不仅用于下一个输入词,也转移到注意模块。为了测量LSTM叠加的效果,我们在编码器阶段分别建立了2 ~ 5个隐藏层LSTM,每一层包含128个隐藏状态。由于我们的训练数据缺乏标签,我们采用无监督模式。为了确定在无监督模式下训练模型的效果,我们观察了不同时期的模型,这些模型代表了学习产生执行的次数。

在注意模块中,每个上下文信息C_{t}是权重系数与编码器隐藏状态之和。权重系数采用第二节中提到的点积矩阵法计算。

最后,编码阶段LSTM只包含一层隐藏128个字符,与原始的seq2seq注意模块相同。当前的LSTM取注意力模块的上下文向量C_{t}, LSTM之前的隐藏状态h_{t-1}和之前的输出向量Y_{t-1}作为输入,在softmax函数后输出向量Y_{t}。向量Y_{t}是时间步长t (y1t, y2t, y3t,…,ymt)内每个字符的概率分布。

由于输出的Y_{t}是每个字符的概率分布,测试用例的生成有三种类型的抽样:无样本、样本、样本空间。无样本意味着根据分布选择最佳的特征。在样本策略下的概率分布中,并没有筛选出预测的最佳下一个字符。样本空间是上述两种方法的组合,仅在当前输入序列不以空格结尾时才选择最佳预测字符。在我们的模型中,我们选择了样本空间策略,该策略被证明是论文learning &fuzz中最有效的策略。

与一般的深度学习过程一样,我们在训练过程中计算模型的交叉熵损失函数,并尝试通过Adam算法在将输出L最小化,其中y_{t^}^{'}为实际值,y_{t}为预测值。

Adam是一种不同于随机梯度下降的优化算法。它通过计算梯度的一阶矩估计二阶矩估计来计算不同参数的独立自适应学习速率,而不是保持单一的学习速率来更新所有的权值。

四.评估

A.数据集和实验设置

通过执行基于语法的模糊器Boofuzz[4]收集数据集。Boofuzz是Sulley[13]的基准之一,可以根据用户定义的协议规范构造网络数据包。我们给Boofuzz提供了FTP的RFC定义,最终得到了36871条消息。这36871条消息是堆叠seq2seq attention模型的语料库,由于训练开销,每个消息的最大长度被限制为150个字符。

seq2seq-attention模型培训是在Ubuntu 16.04系统上使用NVIDIA GeForce 1080 Ti进行的,并使用Keras[14]框架及其python绑定实现。在Keras中,训练过程默认拆分验证集。训练后,模型被我们实现的一个简单的模糊器调用来发送生成数据。

为了测量堆叠seq2seq-attention模型的效果,我们在两个FTP服务器程序上进行了实验:server - u 7.0.0.1和Filezilla 2.23,这两个程序运行在Windows server 2003上。第一个实验计算了模型生成的测试用例中有多少符合FTP规范。第二个实验使用工具PIN[15]比较了基于机器学习的fuzzer和Boofuzz的代码覆盖率。

B .正确性

判断测试用例正确性的原则是:测试用例的头字段为FTP协议指定的字段。不同层数的每个模型都有足够的时间来生成10,000个测试用例。我们根据上面提到的原则,通过内容匹配脚本计算出正确的测试用例的数量,并计算出正确的百分比。从图4可以看出,随着训练周期的增加,不同层次的模型所生成的测试用例正确率有所提高。实验结果还表明,3层LSTM堆叠的测试用例生成的正确性最高,而4层和5层的正确性反而下降。说明在3层以上使用堆叠LSTM并不能增强seq2seq-attention的效果。从一般机器学习的角度来看,其原因可以排除为在复杂模型中使用过多的参数会降低训练的效果。

图4所示.不同层次seq2seq-attention模型的正确率从10 ~ 50个时代。

C.代码覆盖率

本文采用唯一的基本块来度量代码覆盖率。我们自定义开发了一个pintool[15]来实现对唯一基本块的统计。

选取50个周期训练过的3层最高正确性模型,为发送网络数据包的简单模糊器生成测试用例。我们基于机器学习的fuzzer和boofuzz在windows server 2003主机上的server - u 7.0.0.1和Filezilla 2.23上进行4小时评估。

图5所示.基本块覆盖比较。

我们提出的模型的基本块覆盖率比图5中的ServU和Filezilla上的boofuzz高3.1%和2.2%。结果表明,seq2seq-attention模型能够学习生成发现新路径的测试用例。

五:结论

测试用例的生成是协议模糊化的关键。我们建立了带有LSTM单元的堆叠seq2seq-attention模型,自动学习协议格式。该模型在50个时代训练了3个堆叠层,生成了符合协议规范的测试用例,正确率为93%。而更多的层模型并不能在有限的时间内更好地了解协议的格式。同时,我们实现了一个基于训练好的seq2seq-attention模型的模糊器,并与Boofuzz进行了比较。比较结果表明,基于机器学习的方法可以生成具有更高代码覆盖率的样本。未来的工作包括从实际网络流量中提取数据,并使用代码覆盖标记标记训练数据来改进模型。

原文


http://chatgpt.dhexx.cn/article/BqT71pwh.shtml

相关文章

【推荐收藏】3.5万字图解Pandas

文章目录 第一部分:Pandas 展示技术提升1. 排序2.按多列排序3. 添加一列4. 快速元素搜索5. 按列连接(join)6.按列分组7. 数据透视表8、Pandas速度 第二部分. Series 和 Index索引(Index)按值查找元素缺失值比较追加、插入、删除统计数据重复数…

层次分析法原理及应用案例

层次分析法是指将一个复杂的多目标决策问题作为一个系统,将目标分解为多个目标或准则,进而分解为多指标(或准则、约束)的若干层次,通过定性指标模糊量化方法算出层次单排序(权数)和总排序&#…

论文研读-AI4VIS-可视化推荐-VizML: 一种基于机器学习的可视化推荐方法

VizML: 一种基于机器学习的可视化推荐方法 1 论文概述1.1 摘要1.2 引言 2 问题陈述3 相关工作3.1 基于规则的可视化推荐系统3.2 基于机器学习的可视化推荐系统 4 数据4.1 Plotly介绍4.2 数据描述和分析,收集和清理4.2 数据特征提取4.3 设计选择提取 5 方法5.1 特征处…

《python数据分析与挖掘实战》笔记第3章

文章目录 第3章:数据探索3.1、数据质量分析3.2、数据特征分析3.2.1、分布分析3.2.2、对比分析3.2.3、统计量分析1.集中趋势度量2.离中趋势度量 3.2.4、周期性分析3.2.5、贡献度分析3.2.6、相关性分析1. 直接绘制散点图2. 绘制散点图矩阵3. 计算相关系数 3.3、python…

对迁移学习中域适应的理解和3种技术的介绍

域适应是计算机视觉的一个领域,我们的目标是在源数据集上训练一个神经网络,并确保在显著不同于源数据集的目标数据集上也有良好的准确性。为了更好地理解域适应和它的应用,让我们先看看它的一些用例。 我们有很多不同用途的标准数据集&#…

基于1305变频器的几种变参数运行测试

该文主要用于学习归纳,因此会省略正规操作中很多步骤,详述原理。欢迎指正。 一. 设备参数 1305变频器一台(380-460V/9A/4.0KW/5HP);三相异步交流电动机(1.5(2HP)/3.65A/380V/50Hz/1420rpm/4),直流发电机组;计算机&am…

2022秋 | PTA编程训练(一)

目录 1.素数对猜想 2.数组元素循环右移问题 3.水仙花数 4.找出不是两个数组共有的元素 5.找鞍点 6.验证“哥德巴赫猜想” 7.黑洞数 8.装箱问题 9.IP地址转换 10.龟兔赛跑 1.素数对猜想 题目详情: 让我们定义dn​为:dn​pn1​−pn​&#xff0…

测试用例设计之正交表法详解

正交实验法的由来 拉丁方名称的由来 古希腊是一个多民族的国家,国王在检阅臣民时要求每个方队中每行有一个民族代表,每列也要有一个民族的代表。 数学家在设计方阵时,以每一个拉丁字母表示一个民族,所以设计的方阵称为拉丁方。 什么是n阶拉丁方? 用n个不同的拉丁字母排成一…

2018年华为数通技术大赛复赛拓扑题

正在准备华为杯的竞赛,期间的训练需要用心练习,希望我的这篇文章能对跟我一样的小伙伴们起到作用。在比赛之前,我们的目的都不是配通这个网络,而是在一次次错误中总结经验,你会受益匪浅!不多说,…

华为网络技术比赛-云平台课件笔记

** (一)5 G ** 在这这张图片很重要啊!!!! 5G的子载波带宽是不固定的!!!!!! 注意: Massive MIMO (1&a…

2022年金砖国家技能大赛-IT网络系统管理样题

2022年金砖国家技能大赛-IT网络系统管理(完整版) 1-网络构建部分 任务二:实现集团、北京数据中心、分公司、办事处的网络互联互通。 拓扑图: 2-项目实施: 一、完成模拟器组网,按照拓扑图搭建及命令,过程略。 二、完成交换部分配置: IDC2北京区域交换机 sysname…

2016年华为网络技术精英大赛复赛试题

2016年华为网络技术精英大赛复赛试题 【转载请注明出处】http://blog.csdn.net/guyuealian/article/details/51470839 1 实验考试说明 本次实验考试满分100分。 考生需要在除给定文档外没有任何协助的情况下,在150分钟内完成本考试的所有内容。 实验中请根据题干…

计算机网络应用技能大赛试题答案,《计算机网络应用》技能大赛模拟题及答案.doc...

《计算机网络应用》技能大赛模拟题及答案.doc 计算机网络应用技能大赛模拟题网络设备配置要求 拓扑编址设备名称接口地址PC1IP192.168.10.100/24PC2IP192.168.20.100/24PC3IP192.168.30.100/24PC4IP10.11.12.100/24S3760VLAN10192.168.10.1/24S3760VLAN20192.168.20.1/24S3760V…

16华为网络技术大赛模拟题答案详解

一、判断题 (1)VLSM的作用是:在有类的IP地址基础上,从主机位部分划分出相应的位数做为网络位。但是在路由器上部署时,需要路由协议的支持。 【解释】对,VLSMVariable Length Subnet Mask,可变长子网掩码 (2)有效的沟通…

2018华为网络技术大赛课程-服务器操作系统基础原理自测题答案

这是2018华为网络技术大赛课程-服务器操作系统基础原理自测题答案。 耶~祝大家满分!

2019华为网络技术大赛模拟题

2019我的模拟题: 1.(判断题)小型机通常采用RISC和unix操作系统。 正确答案: A 你的答案: A (正确) 2.单选题)磁盘接口的类型包括:1、SAS;2、SATA;3、NL-SAS;4、SCSI;5、…

一路走来之“华为网络技术大赛”(新含2018年资料)

2018年的网络大赛资料——学妹整理的,共347.9M,可加技术交流群下载! 博客链接: http://codeshold.me/2017/05/ntec.html 参赛历程 在参加华为软件精英挑战赛的校园宣讲时,一位HR姐姐告诉我“你可以多报几个比赛啊?”…

2018华为网络技术大赛复赛

华为网络技术大赛复赛落下帷幕,考完上机ensp配置我已经基本知道结果了,题目真的不难,但是真的需要用心准备,包括前期学习的准备,也包括考试前半个小时准备,我就是那个前期花了很多时间,最后在考…

华为网络技术大赛模拟题答案详解

华为网络技术大赛模拟题答案详解 【尊重 原创,转载请注明出处 】http://blog.csdn.net/guyuealian/article/details/51354514 一、判断题 (1)VLSM的作用是:在有类的IP地址基础上,从主机位部分划分出相应的位数做为网络位。但是在路由器上部…

2018届华为网络技术大赛复赛组网(B)试题

时间:2018.5.6 下面附上复赛组网B卷及配置 总体来说,组网没有难度,需要极高的熟练度和细心。 1.基本配置要求: 1.1 各设备sysname命名请按照拓扑图描述进行配置;例如R1命令为R1,命名为大写&#xff1…