«上一篇 下一篇»
  计算机工程  2019, Vol. 45 Issue (7): 164-169  DOI: 10.19678/j.issn.1000-3428.0051190
0

引用本文  

黄河, 陈君, 邓浩江. 基于循环神经网络的Modbus/TCP模糊测试算法[J]. 计算机工程, 2019, 45(7), 164-169. DOI: 10.19678/j.issn.1000-3428.0051190.
HUANG He, CHEN Jun, DENG Haojiang. Fuzzy Testing Algorithm for Modbus/TCP Based on Recurrent Neural Networks[J]. Computer Engineering, 2019, 45(7), 164-169. DOI: 10.19678/j.issn.1000-3428.0051190.

基金项目

中科院率先行动计划“端到端关键技术研究与系统研发”(SXJH201609)

通信作者

陈君(通信作者)

作者简介

黄河(1990-), 男, 博士研究生, 主研方向为网络安全、人工智能、数据管理。E-mail:huangh@dsp.ac.cn;
邓浩江, 研究员、博士

文章历史

收稿日期:2018-04-12
修回日期:2018-05-30
基于循环神经网络的Modbus/TCP模糊测试算法
黄河1,2 , 陈君1 , 邓浩江1     
1. 中国科学院声学研究所 国家网络新媒体工程技术研究中心, 北京 100190;
2. 中国科学院大学, 北京 100190
摘要:Modbus/TCP安全漏洞挖掘的相关协议包常采用随机方式生成,易产生过多无效包,降低漏洞挖掘效率。为此,基于循环神经网络(RNN)提出结构性模糊算法Fuzzy-RNN。从Modbus/TCP训练集中学习协议包各部分的概率分布,并考虑极端参数条件,实现针对性的模糊生成。实验结果表明,与通用模糊测试器GPF相比,Fuzzy-RNN算法在Modbus Slave、xMasterSlave等多种仿真软件上能以更高概率实现合法协议包的模糊生成,测试时间缩减50%以上,测试效率明显提高。
关键词工业控制协议    漏洞挖掘    模糊测试    网络安全    循环神经网络    序列到序列    
Fuzzy Testing Algorithm for Modbus/TCP Based on Recurrent Neural Networks
HUANG He1,2 , CHEN Jun1 , DENG Haojiang1     
1. National Network New Media Engineering Research Center, Institute of Acoustics, Chinese Academy of Sciences, Beijing 100190, China;
2. University of Chinese Academy of Sciences, Beijing 100190, China
Abstract: The related protocol packets for Modbus/TCP security vulnerability mining are often generated in a random way, which is prone to generate excessive invalid packets and reduce the efficiency of vulnerability mining.To deal with this problem, a structural fuzzy algorithm named Fuzzy-RNN is proposed based on the concept of Recurrent Neural Networks(RNN).It learns the probability distribution of each part of the proptocol packet from the Modbus-TCP training set, and takes the corner cases into account, so as to realize the targeted fuzzy generation.Experimental results show that compared with the General Protocol Fuzzer(GPF), in a variety of simulation software such as Modbus Slave and xMasterSlave, the Fuzzy-RNN algorithm can achieve the fuzzy generation of legal protocol packets with a higher probability.The test time can be reduced by more than 50%, and its efficiency can be obviously improved.
Key words: Industrial Control Protocol(ICP)    vulnerability mining    fuzzy testing    network security    Recurrent Neural Networks(RNN)    sequence to sequence(seq2seq)    
0 概述

随着传统工业信息化程度的逐步加深, 工业控制系统(Industrial Control System, ICS)得到较大发展, 应用于越来越多的设备。ICS主要包括数据采集与监视控制系统、分布式控制系统、可编程逻辑控制器、远端测控单元等, 其通信模式主要包括工业设备间、工业设备与生产设备间、主机与各种服务器之间的通信。现代ICS不仅广泛应用于化工、电力等传统行业, 在汽车控制、物联网等新兴行业也发挥重要作用。用于工业控制系统的通信协议统称为工业控制协议(Industrial Control Protocol, ICP)[1]

ICP所涉及的行业之广、程度之深, 使得其安全问题备受瞩目。ICP所适用的环境多元性较强, 导致同一参数在不同应用中的含义千差万别, 因此, 安全开发者难以制定一系列通用的安全规则, 渗透测试成为探查ICP漏洞的主要手段。渗透测试是一种用来识别未知测试系统的方法, 它应用已知或详细的攻击媒介生成一系列输入来测试系统对模拟攻击的适应能力, 其目的是尽可能快地发现导致目标系统瘫痪的输入。渗透测试需要访问目标系统, 但不能访问其源代码。通常由于时间和预算限制, 渗透测试不能覆盖所有的输入情况, 这时就需要它的分支——模糊测试来达成。模糊测试通过一定的策略来生成意外输入和监视异常, 从而发现软件故障[2], 它是一种高度自动化的测试技术, 不需要访问源代码或系统内部。文献[3]提供了明确的执行思路并在当时的ICP上实现最优解。然而, 一般的模糊测试使用随机方式输入, 可能会运行较长时间, 且只能测试一部分可能的情况。目前广泛使用的ICP, 如Modbus协议等, 均使用了模糊测试方法。在实际应用中, 同一协议对应的多种应用场景往往具有多样化的参数结构和数据规模, 难以实现模糊效率和有效模糊的平衡。因此, 本文针对Modbus协议, 基于循环神经网络(Recurrent Neural Networks, RNN)提出一种新颖的结构性模糊生成算法。在给定大量训练语料的前提下, 学习生成性的Modbus/TCP语言模型, 通过RNN上的seq2seq(sequence to sequence)网络模型, 提供最优的预测结果。

1 相关工作 1.1 通用模糊生成

通用的模糊生成方式主要有以下3种:

1) 基于语法的模糊生成:目前较流行的黑盒随机模糊器大多支持某种形式的语法表征, 例如SPIKE和Peach等[2]。基于语法的测试输入生成工作始于20世纪70年代[4], 其所生成的数据基于已知语法随机生成[5]或者具有穷举性[6]。此类方法的优势在于逻辑简单, 理论难度不高, 但其需要大量的先验知识和训练语料。

2) 基于动态学习的模糊生成:该类算法的特点是能够用较少的训练语料生成足够多的模糊数据[7], 其可在给定一组输入示例的情况下, 合成上下文无关语法, 并生成用于模糊的新输入。该算法使用一组泛化步骤, 通过引入正则表达式的重复和交替结构, 合并上下文无关语法, 实现输入语言的单调泛化。该技术能够捕获输入格式的分层属性, 但其不适用于Modbus协议等格式, 因为这些格式相对比较平坦, 但包含大量不同的私有协议类型和参数范围组合。本文方法使用序列式的神经网络模型来学习这种多样化平坦格式的统计生成模型, 可省去一部分冗余的特征工程。

3) 基于神经网络预测的模糊生成:近年来有很多关于使用神经网络进行数据包分析和合成的研究。其中一些朴素的想法是简单排列字节元素, 学习该排列, 然后进行微调性质的突变[8]。文献[9]使用新颖的神经架构R3NN对输入输出进行编码, 通过逐步扩展模糊对象的特征密集区域来实现有针对性的模糊。文献[10]将上述方法运用在网络流量结构分析上, 实现安全预测。基于RNN的seq2seq技术也被广泛用于修正生成性问题中的语法错误[11-12], 该方法通过学习大量正确格式的数据包来实现这一功能。但此类方法尚无在Modbus/TCP上应用的先例。本文充分利用seq2seq的概率统计模型, 提高生成性Modbus包格式的正确率。

1.2 Modbus/TCP模糊测试

Modbus协议是1979年针对ICS开发的串行通信协议, 其已成为连接工业电子设备的通用标准。自2004年以来, 该协议的开发和更新由Modbus在线组织管理。Modbus是一种简单而强大的协议, 使用主从结构的无状态通信, 通信帧被分为“请求”和“响应”2类。Modbus帧可以通过串行链路或TCP/IP进行传输, 实现过程较为简单。然而, Modbus的应用大多只利用了其基本通信功能, 对其异常工作状态的研究还不够深入。目前, 针对Modbus协议的分析所涉及的领域包括协议结构探察、流程完整性和拒绝服务攻击等[13]。Modbus的多种测试工具均可提供模糊测试[14], 这些工具大多是纯粹的模糊器, 可随机生成或改变Modbus流量并操纵协议字段, 开发者可利用其开发新的安全产品。Modbus的相关工作多集中于使用格式化的语法和限定条件产生有效模糊测试用例, 文献[15]的方法精密而详细, 然而其匹配规则极为复杂。文献[16]针对特定私有协议的特征空间较小的性质进行个性化覆盖, 大幅缩短漏洞挖掘时间, 但其在不同应用场景需要不同的设计, 难以形成统一的解决方案。

2 Modbus/TCP协议结构

Modbus/TCP应用数据单元(Application Data Unit, ADU)的结构如图 1所示。其中, Trans指的是transaction, 即连接序号数, Protocol恒定为0x0000, Length表示从Unit开始的消息长度, 即字节数, Unit恒定为0xff, F-Code表示Function Code, 即指示该消息性质的识别码, Parameters是该条消息的具体参数(1≤x≤252)。整个消息的最大字节数是260, 从Trans到Unit的7 Byte被称为Modbus消息头(Modbus Application Header, MBAP), 余下的最多253 Byte被称为Modbus数据单元(Protocol Data Unit, PDU)。Modbus/TCP的通信结构由主站和从站构成, 前者可类比于发出指令的客户端, 后者可类比于服务端, 主站可能与从站有多个待处理事务, 而一个从站可能与多个主站进行通信, 如图 2所示。

Download:
图 1 Modbus/TCP消息结构
Download:
图 2 Modbus/TCP通信拓扑结构

Modbus Function Code的正向指令范围是从0到127, 根据Modbus通用标准的定义, 其只取以下范围值:1~64, 73~99, 111~127, 其他值用作私有协议备用, 负向响应范围从128~255。Function Code后面跟随Parameters, 将请求参数传递给从站。例如, 名为read holding register的Function Code之后要跟随特定保持寄存器的地址(编号)。图 3给出该类Function Code的一个响应, 表示读取特定地址的保持寄存器的返回结果。

Download:
图 3 Modbus/TCP消息示例

本文研究如何利用神经网络来学习Modbus/TCP Parameters的语法。这些数据对象是格式化文本, 如图 3表 1所示。用于定义和组成这些数据对象的规则占据Modbus格式规范的大部分[17]。这些规则数量较多, 难以记忆, 但其重复和结构化的特点使其非常适合用神经网络进行学习。

下载CSV 表 1 Modbus/TCP示例消息字段释义

其他ICP如Ethernet/IP、S7、IEC61850等, 也是由相类似的语法结构构成的, 虽然具体规则有较大差异, 但结构化思想是一致的。因此, 选择对Modbus协议进行研究, 有助于将模糊测试方法推广到其他协议中。

3 Fuzzy-RNN模糊算法设计

本文提出一种机器学习统计方法, 用于学习Modbus/TCP消息的概率模型。其主要思想是在给定大量训练语料的前提下, 学习生成性的Modbus/TCP语言模型。本文使用RNN上的seq2seq网络模型, 其已被证明可为不同的学习任务提供最优的预测结果。传统的基于格式化语法的方法受上下文长度的限制, 而seq2seq模型允许学习任意长度的上下文来预测下一个字符序列。这种RNN模型的输入序列为协议消息中的字符序列, 其通过将输入移动一个位置(固定长度的1个或若干个字符)来获得相应的输出序列, 字符之间的概率分布通过位移前后的2个序列的差异来获得。训练好的模型可直接用于生成新的Modbus/TCP消息。

3.1 RNN学习模型适用性解析

RNN是一种在输入序列X={X(1), X(2), …, X(T)}上工作, 拥有隐藏状态H={H(1), H(2), …, H(T)}和输出Y={Y(1), Y(2), …, Y(T)}的神经网络, 其能将从序列X到序列Y的映射储存在网络中, 如图 4所示。换言之, 该模型学习到的是条件概率Pr ((Y(1), Y(2), …, Y(T))|(X(1), X(2), …, X(T))), 当输入测试值x′时, 可预测出对应的输出y′。在图 4中, UW为映射参数, L表示期望输出, E表示实际输出YL的误差, 每一轮训练的目标是降低E值。

Download:
图 4 本文RNN模型示意图

t时刻的梯度设定为δ(t), 则

$ \delta(t)=\frac{\partial E}{\partial U}+\frac{\partial E}{\partial W}+\frac{\partial E}{\partial V}=\frac{\partial E}{\partial H^{(t)}}+\frac{\partial E}{\partial V} $ (1)

V不涉及数据序列不同时间戳之间的关系, 可以略去。计算U、W从时刻t+1向t的倒推, 有下式:

$ \begin{array}{c}{\frac{\partial E}{\partial H^{(t)}}=\frac{\partial E}{\partial Y^{(t)}} \frac{\partial Y^{(t)}}{\partial H^{(t)}}+\frac{\partial E^{(t)}}{\partial H^{(t+1)}} \frac{\partial H^{(t+1)}}{\partial H^{(t)}}=} \\ {V^{(T)}\left(L^{(t)}-Y^{(t)}\right)+} \\ {W^{(T)} \frac{\partial E}{\partial H^{(t+1)}} \operatorname{diag}\left(1-\left(H^{(t+1)}\right)^{2}\right)}\end{array} $ (2)

其中, diag表示矩阵取对角线。

BP算法[18]每次训练的修正过程如下:

$ \Delta w_{i j}=\alpha \delta(t) X(t) $ (3)

其中, α为迭代步长。

由以上公式可知, 随着训练迭代的进行, UW所反映的序列关系将越来越接近真实值, 同时, 输出层变换矩阵V使用Softmax概率密度函数, 可使输出不固定在一个确定值, 因此可生成合乎语法规则但又形态各异的Modbus/TCP消息。

基于RNN提出的seq2seq模型使用了2个RNN, 一个用于编码, 另一个用于解码, 如图 5所示。其中, 编码RNN将多维输入序列映射成固定维数的隐藏表达式, 对应图 4H。然后解码RNN把从时刻t学习到的条件概率分布用于预测t+1时刻的输出, 如此可在概率空间穷尽之前预测t+2, t+3, …, t+T时刻的输出。将输入序列视为整体X0, T值不固定, 则该模型可以学习到条件概率Pr((Y(1), Y(2), …, Y(T))|X0)。因此, 该模型通过特定的消息头可学习到Modbus/TCP消息的多种形式。

Download:
图 5 基于RNN的seq2seq模型

解决了训练过程中的概率理论问题, 要预测序列还需在生成序列的输出过程确定采样策略。通常从消息头的若干个字符开始查询已训练的模型, 生成一系列输出字符, 直到触碰到该消息的规定长度, 即包含在消息头中且不超过260 Byte。设定每个输出节点的候选输出为{y1, y2, …, yn}, 最终输出为y, 本文采用2种不同的采样策略:

1) 贪心采样:其逻辑较简单, 直接采用Softmax指示的最大概率选项作为输出。其优点是最大程度保证了生成消息的合法性, 但输出结果过于固定, 缺少多样性。其具体过程如下:

$ y=\underset{y_{i}}{\operatorname{argmax}}\left\{p\left(y_{i}\right) | i \in(1, n)\right\} $ (4)

2) 随机采样:基于输出的概率来随机选择对应项作为输出, 其保留了生成的Modbus消息的多样性, 但易出现不合法的消息。其具体过程如下:

$ \operatorname{Pr}\left(y=y_{i}\right) \propto p\left(y_{i}\right) $ (5)
3.2 模型训练

由于Modbus消息可多达260 Byte, 难以逐个标记每个生成消息的状态, 因此本文选择在无监督学习环境中训练上述seq2seq模型, 即没有测试标签来评估学习模型的生成效果。采用生成消息的合法率, 以及挖掘出对应仿真系统漏洞所用的时间作为最终的评估指标。把训练过程中遍历一次训练集的训练称作1“代”, 本文针对5代、10代、15代、20代和25代训练seq2seq模型。在本文实验环境下, seq2seq模型训练1代大约需要70 s, 训练25代约需要30 min。本文使用了LSTM模型[19]和2个隐藏层, 每个隐藏层包含64个隐藏状态。

3.3 Fuzzy-RNN模糊测试

学习Modbus/TCP协议的生成模型的最终目标是执行模糊测试。从渗透测试的角度来说, 一种完美的机器学习算法生成的协议消息序列不会造成任何正常抛出, 如参数越界、无效格式等, 同时又能尽可能快地找到内存越界、超限访问等异常抛出的点, 从而发现漏洞。较差的机器学习算法会生成大量格式错误的协议消息序列, 造成正常抛出, 从而被服务器迅速拒绝, 无法进行测试。为了探索正常、异常抛出的平衡点, 本文提出一种Fuzzy-RNN模糊生成算法, RNN的学习能力使得该算法能够避免正常抛出。在采样过程中, 本文引入一个反随机策略, 提升异常抛出的概率。

训练完毕之后, Modbus消息序列的生成过程如算法1所示。

算法1  Fuzzy-RNN算法

输入  D(x, θ), Prf, Prt, “Modbus_head”

输出  RES

1.RES=“Modbus_head”

2.get LEN from “Modbus_head”

3.while RES.length < =LEN do

4.if RES.length >=260 then

5.RES=“Modbus_head” //重置序列

6.end if

7.y, p(y)=sample(D(RES, θ))//从学习到的分布中采//样y

8.if random(0, 1)>Prf and p(y)>Prt then //关键的反//随机模糊策略

9.y=argminy′{p(y′)~D(Seq, θ)}//y′代替y

10.end if

11.RES=RES +y

12.end while

13.return RES

该算法需要输入学习到的条件分布D(x, θ)、模糊概率Prf、采样阈值概率Prt和初始化的Modbus消息头“Modbus_head”, 最后输出Modbus结果序列RES。该算法保证RES单元长度不会超出Modbus的上限260 Byte以及“Modbus_head”规定的长度LEN。在每个循环中(当前时间戳为t), 算法利用条件分布来采样获得t+1的字符单元y, 若概率p(y)比采样阈值Prt高, 则算法会选择最小概率的字符单元y′来代替y出现在该位置, 从而生成许多临界参数的状况, 增大漏洞挖掘的成功概率。这个输出字符单元还要根据随机函数random(0, 1)和Prf的大小才能最终输出, 通过设定随机函数的参数能更好地实现对模糊速率的控制。

4 实验结果与分析

本文主要实验设备的参数如下:使用2017年11月发布的TensorFlow1.4(GPU版本)作为本文实验的运行框架, Python版本为3.6.3, 采用Nvidia GTX1070的GPU来加速训练, 显存达2 GB。该框架在64位Windows 10操作系统上运行, 对应中央处理器为4核的Intel-CORE i7-7700HQ, 内存8 GB。

4.1 数据来源与评价指标

本文的训练数据来源于实验室核心交换机采集的Modbus/TCP数据, 包括已授权工程项目和实验室内部ICP仿真数据。挑选长度在14 Byte~260 Byte的50 000条协议消息作为训练输入, 每个训练批次为200条消息。测试设备接线情况如图 2, 串接一个数据采集器来分析通信日志, 该采集器可按协议对日志进行分类, 以评估实验效果。

选择广泛应用的GPF(General Purpose Fuzzer)[20]作为对照组的模糊测试器。待检测的系统为4种modbus仿真软件, 分别是Modbus Slave、xMasterSlave、pymodbus和MOD_RSSIM。实验组和对照组的模糊测试器在充分训练之后, 通过TCP/502端口发送模糊生成的协议消息实现渗透测试。

选用以下2个评价指标:

1) 消息合法率(η1):对于每次的模糊测试, 以编程方式检查数据采集器中Modbus/TCP协议操作日志是否存在正常错误码, 比如请求参数错误、不支持的功能、不支持的地址、不支持的数据类型等。如果没有, 则将该次测试视为合法, 否则视为不合法。该指标对于漏洞挖掘来说, 其价值不在于直接增益, 而是会反映模糊生成的质量, 从而间接提高漏洞挖掘的效率。记每次测试发出的所有消息个数为Nall, 所有合法信息个数为Nlegal, 则合法率计算如下:

$ \eta_{1}=\frac{N_{\text { legal }}}{N_{\text { all }}} \times 100 \% $ (6)

2) 漏洞挖掘效率:对于每次模糊测试, 记录从第1个请求发起, 到第1次检出异常错误码(如错误代码3、从站无响应等)的时间间隔。该间隔越短说明漏洞挖掘效率越高。挖掘效率可用时间(tD)表示, tD越大, 挖掘效率越低, 其计算过程如下:

$ t_{D}=t_{\text { abnormal }}-t_{1} $ (7)
4.2 合法率分析

将GPF和2种采样方式的Fuzzy-RNN进行对比, 实验结果如图 6~图 9所示。水平线代表GPF在该仿真软件上的表现, 由于GPF不涉及学习过程, 因此没有变化趋势。

Download:
图 6 Modbus Slave上的指令合法率
Download:
图 7 xMasterSlave上的指令合法率
Download:
图 8 pymodbus上的指令合法率
Download:
图 9 MOD_RSSIM上的指令合法率

从4个实验整体来看, 合法性指标上都有GPF < Fuzzy-RNN(随机)≈Fuzzy-RNN(贪心)。Fuzzy-RNN算法在训练超过10代之后, 合法率将明显超越GPF算法, 其合法率上升趋势在15代以后显著放缓。GPF算法的合法率平均数为58.5%, 而Fuzzy-RNN算法最终到达的合法率在75%~90%。Fuzzy-RNN算法的贪心采样在pymodbus上最终合法率明显低于其他3组, 随机采样在训练代数小于20时, 其合法率也出现该现象。其原因在于该仿真软件支持的数据模式与参数范围有限, 增加了随机生成中正常抛出的可能性。对于15代~25代的Fuzzy-RNN算法, 贪心采样的平均合法率比随机采样高3.92%。由于Modbus协议的参数取值空间较大, 随机采样造成的合法性下降对其影响不大, 从侧面说明了学习模块的概率密度模型适用于针对该协议的预测。

4.3 漏洞挖掘效率分析

使用训练了15代的Fuzzy-RNN所产生的合法包对4个Modbus仿真器进行漏洞挖掘, 其获得异常响应的耗时情况如表 2表 3所示。

下载CSV 表 2 漏洞挖掘效率按帧数对比
下载CSV 表 3 漏洞挖掘时间对比

表 2表 3可知, 使用随机采样的Fuzzy-RNN算法使得Modbus Slave、xMasterSlave、pymodbus的挖掘时间缩短了50%以上。而对于MOD_RSSIM, 由于其可支持的Function Code较多且仿真边界值设定范围较广, 因此RNN阶段所能学习到的条件概率模型并不强, 其时间增益主要来自算法1所描述的反随机策略。使用贪心采样的Fuzzy-RNN算法, 其所带来的时间增益则较差。但总体来看, Fuzzy-RNN算法在绝大部分Modbus仿真系统中都实现了模糊效率的提高。

表 3可知, 随机采样相比贪心采样, 漏洞挖掘时间平均降低了43.74%, 相对于3.92%的合法率减益, 这是一个更加显著的性能提升。因此, 本文涉及的最优Modbus模糊器模型是使用随机采样的Fuzzy-RNN算法。

4.4 测试覆盖率分析

由于测试的分支覆盖率在不同的训练集上不尽相同, 难以直接测量, 因此本文试图从理论上进行说明。

由算法1可知, 本文算法是针对定长字符串的相互关系进行预测, 状态机结构相对简单, 同时该算法对出现概率较低的内容进行了概率补偿, 可以在一定程度上降低覆盖率达100%时测试时间的上限。因此, 只要测试的时间在可接受的范围内足够长, 测试生成的包将覆盖训练集的所有分支, 达到较高的分支覆盖率。

5 结束语

本文设计了基于RNN的Modbus/TCP协议模糊测试算法。结合模糊测试的思想与循环神经网络的预测性质来对Modbus/TCP协议的安全漏洞进行挖掘。理论分析和实验结果表明, 该算法在节省特征工程的同时, 能够显著提升生成消息的合法率, 并大幅提高漏洞探查效率。下一步将把该模型扩展到其他ICP中, 同时改进采样函数, 使得该算法在其他协议中仍能得到较好效果, 保障工业控制领域的网络安全。

参考文献
[1]
潘洪跃. 基于MODBUS协议通信的设计与实现[J]. 计量技术, 2002(4): 35-36. DOI:10.3969/j.issn.1000-0771.2002.04.013 (0)
[2]
李伟明, 张爱芳, 刘建财, 等. 网络协议的自动化模糊测试漏洞挖掘方法[J]. 计算机学报, 2011, 34(2): 242-255. (0)
[3]
MCNALLY R, YIU K, GROVE D, et al.Fuzzing: the state of the art[EB/OL].[2018-04-01]. http://pdfs.semanticscholar.org/a80c/60dbf12377144083e05146117881a961e459.pdf. (0)
[4]
HANFORD K V. Automatic generation of test cases[J]. IBM Systems Journal, 1970, 9(4): 242-257. DOI:10.1147/sj.94.0242 (0)
[5]
刘为.基于模糊测试的XSS漏洞检测系统研究与实现[D].长沙: 湖南大学, 2010. http://cdmd.cnki.com.cn/Article/CDMD-10532-1013169990.htm (0)
[6]
LÄMMEL R, SCHULTE W.Controllable combinatorial coverage in grammar-based testing[C]//Proceedings of IFIP International Conference on Testing of Communicating Systems.Berlin, Germany: Springer, 2006: 19-38. (0)
[7]
GURUTEJA V V, BISWAS M.Edge detection algorithm using dynamic fuzzy interface system[C]//Proceedings of Innovations in Electronics and Communication Engineering.Berlin, Germany: Springer, 2018: 287-295. (0)
[8]
高刃, 唐龙, 伍爵博. 基于神经网络的无线传感器网络数据预测应用研究[J]. 计算机科学, 2012, 39(5): 44-47. DOI:10.3969/j.issn.1002-137X.2012.05.009 (0)
[9]
PARISOTTO E, MOHAMED A R, SINGH R, et al.Neuro-symbolic program synthesis[EB/OL].[2018-04-01]. https://arxiv.org/pdf/1611.01855.pdf. (0)
[10]
郝怡然, 盛益强, 王劲林, 等. 基于递归神经网络的网络安全事件预测[J]. 网络新媒体技术, 2017, 6(5): 54-58. DOI:10.3969/j.issn.2095-347X.2017.05.010 (0)
[11]
BHATIA S, SINGH R.Automated correction for syntax errors in programming assignments using recurrent neural networks[EB/OL].[2018-04-01]. https://arxiv.org/pdf/1603.06129.pdf. (0)
[12]
李武波, 张蕾, 舒鑫. 基于Seq2Seq的生成式自动问答系统应用与研究[J]. 现代计算机(专业版), 2017, 36(12): 57-60. (0)
[13]
HUITSING P, CHANDIA R, PAPA M, et al. Attack taxonomies for the Modbus protocols[J]. International Journal of Critical Infrastructure Protection, 2008(1): 37-44. (0)
[14]
张典波.Peach在工业控制系统漏洞挖掘中的改进及应用[D].北京: 北京邮电大学, 2016. (0)
[15]
张亚丰, 洪征, 吴礼发, 等. 基于范式语法的工控协议Fuzzing测试技术[J]. 计算机应用研究, 2016, 33(8): 2433-2439. (0)
[16]
XIONG Qi, LIU Hui, XU Yuan, et al.A vulnerability detecting method for Modbus-TCP based on smart fuzzing mechanism[C]//Proceedings of 2015 IEEE International Conference on Electro/Information Technology.Washington D.C., USA: IEEE Press, 2015: 404-409. (0)
[17]
朱小襄. ModBus通信协议及编程[J]. 电子工程师, 2005, 31(7): 42-44. DOI:10.3969/j.issn.1674-4888.2005.07.016 (0)
[18]
BENGIO Y, SIMARD P, FRASCONI P. Learning long-term dependencies with gradient descent is difficult[J]. IEEE Transactions on Neural Networks, 1994, 5(2): 157-166. DOI:10.1109/72.279181 (0)
[19]
SUNDERMEYER M, SCHLÜTER R, NEY H.LSTM neural networks for language modeling[C]//Proceedings of the 13th Annual Conference of the International Speech Communication Association.[S.l.]: International Speech Communication Association, 2012: 1-4. (0)
[20]
DEMOTT J D, ENBODY R J, PUNCH W F.Revolutionizing the field of grey-box attack surface testing with evolutionary fuzzing[EB/OL].[2018-04-01].https://www.vdalabs.com/tools/EFS.pdf. (0)