目录
第一节 介绍:
第二节:相关工作
第三节:背景
A.深度学习
B.生成对抗网
C.WGAN
第四节 模糊系统设计
A.概述
1)数据帧预处理
2)对抗训练
3)模糊测试和再培训
B.数据帧预处理
1).数据框聚类。
2).数据帧增强。
C.对抗训练
1)问题摘要
2)模型设计
3)模型训练
4)模型验证
D.模糊测试和重新训练
第五节:实验
A.评估指标
1) 测试输入接受率(TIAR)
2)漏洞检测能力(AVD)
3)生成数据多样性(DGD)
4)每小时生成测试用例(TCGPH)
5)训练时间(TT)
B.Modbus-TCP和EtherCAT
1)Modbus-TCP
2)EtherCAT
C.培训数据和验证数据
1)Modbus-TCP
2)EtherCAT
D. 评价设置
1)实验环境
2)模型训练设定
E.模型验证结果
F.实验结果
1)发现异常
2) TIAR
3) AVD
4) DGD
5) TT
6) TCGPH
7) COMPUTATIONAL COST
8) COMPARISON WITH THE TRADITIONAL METHODS(与传统方法比较)
9)将该方法应用于另一种工业协议EtherCAT
第六节 结论与未来工作
摘要:
模糊测试(模糊测试)可以通过向目标程序提供大量意外输入来有效地识别软件中的安全漏洞。模糊测试的重要部分是模糊数据的生成。已经开发了许多用于生成模糊数据的传统方法,例如基于模型的模糊数据生成和随机模糊数据生成。这些技术需要指定输入数据格式或通过手动反向工程分析输入数据格式。在本文中,我们介绍了一种使用Wasserstein生成对抗网络(WGAN)的方法(一种深度对抗学习方法)来生成模糊数据。此方法不需要定义输入数据格式。据我们所知,这项研究是第一个使用基于WGAN的方法生成模糊数据的研究。全球范围内,工业安全一直是重要而紧迫的问题。网络协议模糊测试在确保工业控制系统(ICS)的安全性和可靠性方面起着重要作用。因此,该方法对ICS测试具有重要意义。在实验中,我们使用工业控制协议(例如Modbus-TCP协议和EtherCAT协议)作为测试目标。结果表明,该方法比以前的研究中使用的方法更加智能和强大。另外,由于其设计,可以在短时间内训练该模型,这在计算上是轻便的和实用的。在实验中,我们使用工业控制协议(例如Modbus-TCP协议和EtherCAT协议)作为测试目标。结果表明,该方法比以前的研究中使用的方法更加智能和强大。另外,由于其设计,可以在短时间内训练该模型,这在计算上是轻便的和实用的。在实验中,我们使用工业控制协议(例如Modbus-TCP协议和EtherCAT协议)作为测试目标。结果表明,该方法比以前的研究中使用的方法更加智能和强大。另外,由于其设计,可以在短时间内训练该模型,这在计算上是轻便的和实用的。
在许多国家,工业安全[1]一直是一个令人关注的问题。它涉及该国重要的基础设施和大量制造业,影响着国家的稳定和人民的生存。例如,臭名昭著的Stuxnet病毒袭击了伊朗的一家核电厂,造成了严重破坏。因此,必须保持工业安全。工业控制行业拥有各种监督控制和数据采集(SCADA)系统。为了确保工业控制系统的安全,我们必须确保SCADA系统中工业控制协议的安全。作为识别漏洞的有效方法之一,模糊[2],[3]在漏洞发现中起着至关重要的作用。知名组织发布的大多数软件错误都是通过模糊测试发现的。模糊测试的主要思想是使用恶意输入对目标程序进行压力测试,以引起异常行为,例如崩溃或异常。模糊测试还可用于发现工业控制协议中的漏洞。传统的模糊测试通常基于软件的规格或需要测试的协议来构建测试用例。但是,此方法有几个局限性。一方面,软件的规格和实现可能并不完全一致。因此,如果我们根据规范对其进行测试,则某些细节可能会被忽略,从而使这些细节容易受到攻击。另一方面,当前的模糊数据生成方法过于依赖人工分析,这既繁琐又耗时。因此,需要开发一种能够充分考虑实际实现并降低测试成本的模糊测试方法。
为了解决模糊测试期间遇到的问题,我们使用基于WGAN的方法[4]生成模糊数据。WGAN特别是用于生成模拟图片[5],[6]。通过使用WGAN来生成序列数据(例如ICS中的数据帧),我们可以进行创新。因此,无需了解协议规范[7]。。基于WGAN的模型无需手动分析即可了解数据帧的空间结构,随后生成与真实结构具有相同结构但在其他方面(例如变量值)具有随机变异的测试数据。这种方法具有许多优点。一方面,它比通常需要的工作更少,这大大简化了模糊测试过程,并且不需要测试人员成为该领域的专家。另一方面,它具有很高的适应性,可以方便地应用于测试其他类似协议。选择WGAN作为基本架构的原因包括:(i)WGAN在模型训练过程中更稳定;(ii)产生的数据更加多样化,因此具有更广泛的测试范围;(iii)提供培训进度的指标,可以指示模型的训练程度。我们使用该方法来测试Modbus-TCP[8],广泛使用的工业网络协议之一。实验结果令人满意。它具有很高的测试用例通过率,需要很短的培训时间,并且可以有效地识别漏洞。另外,为了证明其通用性和协议独立性,我们还将其用于测试另一种广泛使用的工业控制协议EtherCAT协议[9]。这项研究的关键贡献包括三个方面:
1.我们提出了一种基于WGAN的模糊测试技术,并分析了其应用潜力。在实施该方法期间,根据Occam的剃须刀,我们精心设计了可在实现其目标的前提下提供轻量级计算的体系结构模型。
2.鉴于工业控制协议的相似性,我们提出了一种通用的模糊测试过程,该过程可用于大多数工业控制协议。
3.我们通过实验比较证明了所提出方法的优越性,并成功发现了错误。
本文的其余部分安排如下:第二部分讨论相关工作。第三节详细介绍了WGAN的分析及其具体应用。第四部分介绍了基于WGAN的特定体系结构设计,用于测试工业控制协议。第五节显示评估结果。第六节总结了本文。
模糊测试已有20多年的发展,实践证明了它的有效性。使用此技术可以识别Word和Excel程序中的漏洞。尽管多年来在该领域做出了许多贡献,但研究仍在进行中。
1983年,Vos和Aho [10]正式研究了用随机输入喂程序的有效性。结果表明,这种随机输入策略是低成本且有效的。他们的研究被认为是模糊测试的最早研究。威斯康星大学的Barton Miller教授于1988年首次提出“模糊”一词。开发了一个模糊测试工具来测试Unix程序的健壮性[2]。这些是这项技术的原始发展。
随后,研究人员提出了越来越多的模糊技术。利用这些策略,他们开发了许多模糊测试套件。奥卢大学的研究人员提出的PROTOS [11]测试套件使用协议规范来生成更结构化的测试数据。Aitel通过使用协议规范改进了SPIKE [12]。该规范描述了数据块的格式。他们通过向那些块提交随机生成的数据来生成模糊数据。其他研究人员[13],[14]还尝试建立一个特定的模型来指导数据生成。这些方法提高了模糊测试的有效性和自动化程度。然而,这些方法在必须理解测试目标的内部操作的条件下操作。从这个角度出发,研究人员根据规范设计模型,以指导测试数据的生成。这种方法有两个缺点。首先,在实践中,了解协议需要时间和人工。其次,在规范的实施期间,可能会添加一些工程细节,从而导致实现与规范之间的不一致。因此,这些方法倾向于忽略模糊处理中的一些细节。
在最近的研究中,Rajpal等人。 Microsoft的[15]应用序列到序列神经网络[16]模型来增强AFL [17](美国模糊Lop)模糊器,其中该模型尝试学习输入文件中的最佳突变位置。它有助于AFL模糊测试器提高针对独立程序的测试效率。他们使用深度学习作为辅助技术,将深度学习技术与传统的模糊测试工具相结合。但是,我们将其用作核心方法,并将其应用于工业网络协议模糊测试。最近,吕等人。 [18]使用机器学习来生成高价值的二进制种子文件。Böttinger等。 [19]使用Q学习算法来确定要对给定输入执行哪种变异操作。Godefroid等。 [20]研究了如何利用基于神经网络的学习技术来学习非二进制PDF数据对象的语法。这些研究从不同角度增强了机器学习的模糊性。
通常,最新的模糊测试方法[21]是基于模型的模糊测试,它利用从常规输入的语法或格式中提取的模型来指导模糊数据的生成。模型提取通常需要人类情报来分析。但是,我们的方法从另一个角度进行了模糊测试,这与方法学中的最新方法不同。几乎不需要人工分析来提取模型。因此,它具有一些相应的优点。为了更清楚地显示它,我们将提出的方法与基于模型的方法相比列出了优势。详细情况如表1所示。
表1 :建议方法的优点
1 | 可以在目标规范未知的情况下工作。 |
2 | 考虑测试目标的实际操作细节。 |
3 | 生成测试用例而不需要手动分析。 |
4 | 节省测试时间。 |
5 | 操作简单,对测试人员要求低。 |
作为GAN和WGAN的基础,提出了深度学习的背景[22]。然后介绍GAN和WGAN的其他初步知识。
深度学习是机器学习的一个分支,在早期阶段发展缓慢。它的快速增长始于2006年,当时Hinton和Salakhutdinov发表了一篇文章[23],为关键问题提供了解决方案。克里热夫斯基等也于2012年提出了ImageNet [24],一种用于图像分类的神经网络结构,标志着深度学习的革命性发展。
目前,深度学习正在引起技术界的关注,在某些领域展现出广阔的应用前景,甚至超过了人类。大多数行业在入侵检测[25],[26],自动驾驶汽车[27],[28],机器人[29],语音识别[30],[31],机器翻译[32],[ 33],依此类推。由于它在智能时代起着至关重要的作用,它倾向于解放人类的大脑。它的快速发展得益于诸如图形处理单元(GPU)等最新硬件设备的进步[34]。这些设备显着提高了计算能力。信息技术发展带来的大量经验数据也加速了其发展。神经网络是深度学习的基础。如图1所示,一种简单的神经网络包括一个输入层,一个或几个隐藏层以及一个输出层。复杂网络(例如广为人知的Deep Residual Nets [35])达到152层深。神经网络[36]从大量数据中学习并形成服务于特定目的的模型。关于图像分类问题,训练模型基于输入图像输出图像类别。数据量显着影响有效神经网络模型的形成。数据越大,训练后的模型进行概括的能力越强。在当前的研究中,我们使用深度神经网络作为基本模型架构。
图1.一个简单的多层感知器
2014年,Goodfellow等人。提出的生成对抗网络[37]。这项创新被认为是深度学习中一个有争议的主题,并已广泛应用于众多应用中,例如图像生成和超分辨率[38]。。关于图像生成,经过训练的GAN模型使用随机噪声作为输入,然后输出模拟图片。但是,模拟图片与真实图片有所不同。因此,我们使用此功能来生成模拟序列数据帧。通过使用大量数据帧训练模型,模型可以掌握数据帧的格式。GAN框架由生成模型和判别模型组成。生成模型生成数据,并与实际数据共享相同的特征。判别模型区分真实数据和伪数据。经过不断的博弈和两个模型之间的调整,纳什平衡[39]最终,在两个模型之间达到了最大值,并且判别器无法区分真实数据和生成的数据。当我们训练单个神经网络时,损失函数[40]表示模型的训练程度。训练过程不断优化损失函数。在此过程中,我们仅确定一个损失函数的全局最优值。但是,在训练GAN模型时,我们需要同时动态优化两个损失函数。以下公式将目标函数形式化,该目标函数需要针对生成器和鉴别器进行优化:
V(D, G) =
(x) [log D(x)] +
(z)[ log(1 − D(G(z)))]
式中,D为鉴别器,G为生成器。D(x)的概率表示x是真实数据,和G(z)的概率分布样本数据z。整体优化的目标是玩游戏一个极大极小值函数V (D、G),需要做出正确的概率最大化歧视以及最小化的概率生成的样本是歧视。
尽管使用广泛,但GAN的应用仍存在一些缺点,例如不收敛,梯度消失[41]和模式崩溃[42]。为了避免这些问题,需要对神经网络模型进行合理的架构设计。另外,必须采用各种模型训练策略。在上述问题中,模式崩溃表示与原始数据相比,生成的数据丢失了一些类别。这个问题需要引起更多关注,因为在模糊测试中,生成数据的多样性会影响测试覆盖率。改善测试范围有助于发现更多错误。
已经进行了试图解决上述问题的研究[43]。Arjovsky等。 [4]提出了Wasserstein GAN,它解决了这个问题。与GAN相比,Wasserstein GAN具有以下特点:
首先,Wasserstein GAN使用地球移动距离(EMD)来测量两种分布之间的差异。定义如下:
其中Pr和Pg表示两种分布,γ表示二者的联合分布.我们需要计算联合分布γ条件下两个样本之间最小距离的期望值。这个期望值就是瓦瑟斯坦距离。瓦瑟斯坦度量是指导培训过程的有效指标。值越小,真实分布与生成分布之间的Wasserstein距离越小,说明两个模型训练得越好。在Wasserstein GAN中,鉴别器的损失函数为:
生成器的损失函数为:
在训练过程中,生成器和鉴别器的损失连续最小化。这些损失最终成为最优的。
其次,采用权值裁剪来满足Lipschitz连续性,可以加快模型的收敛速度和稳定训练。通常,在更新每个参数后,权值剪裁将权值参数截断为不超过一个固定常数C。
第三,优化方法[44]可以从广泛的技术中选择,以优化损失函数。不同的方法有不同的特点。基于动量的优化算法,如动量SGD[45]和Adam[46],不能在所有情况下都保持训练的稳定;因此,在选择优化方法时没有使用它们。
图2.面向工业控制协议的常规模糊测试过程。
图3.生成器(左)和鉴别器(右)的体系结构设计。
我们的方法旨在从从给定的工业控制网络中提取的原始网络数据包中智能地学习格式。学习之后,我们可以获得一个具体的生成模型,该模型可以生成类似于真实数据框架的格式正确的数据框架。然后,我们将生成的数据帧发送到目标系统,并及时监视整个系统以记录异常行为。这种处理方法可用于测试大多数当前的工业控制协议。此方法的各个阶段描述如下:
原始网络数据包采用十六进制形式,无法直接输入到神经网络中进行处理。预处理原始数据需要两个步骤。首先,我们将原始网络数据包转换为数字矢量。其次,我们使用聚类策略以及数据增强策略来处理数据包,这可以帮助提高最终生成数据的多样性。
我们将此学习问题形式化为求解数学函数的过程。我们训练基于WGAN的生成器模型的最初目标是获得一个函数,该函数可以生成与真实数据共享相同数据格式的伪造数据。最终,我们旨在进行攻击测试并发现目标系统的漏洞。为了实现这个目标,我们需要一个专门设计的神经网络体系结构。因此,最终的训练模型不仅会生成更具攻击性的测试数据,而且还会计算轻量级。
当生成器模型按计划实现时,我们可以通过运行模型来获得任意数量的测试用例。然后,我们使用这些测试用例攻击目标系统。攻击之后,我们使用导致异常的测试用例重新训练模型。
在以下各节中,我们将详细介绍上述三个阶段。
在进行模型训练之前,首先需要获取大量的实际数据帧。对这些数据执行初步处理的方法可能会影响最终模型发现漏洞的能力。最终,我们旨在获得理想的模糊结果。因此,数据预处理也应有助于实现这一目标。一种常见的方法是改善测试的宽度和深度,这可以帮助获得增强的模糊结果。增加测试深度和宽度的有用技术是增加测试用例的多样性。我们采用以下方法预处理数据帧。这些方法不仅可以使模型学习数据格式,而且可以保持数据的多样性。
为了增强模型对消息格式的学习,我们使用几种聚类方法(如帧长度聚类和K-means聚类)对数据进行聚类。这些技术可以将数据帧分类为相似的格式。帧长度聚类是有效的,因为具有相同长度的数据帧总是倾向于共享相同的帧类型。K-均值聚类更倾向于对具有相同功能的帧进行分组。在预处理期间采用这些聚类方法可以有助于建立可以阐明数据帧结构的模型。
在训练深度学习模型时,经常使用数据扩充[47]方法来防止过度拟合。在这项研究中,我们使用这种策略来维护生成的数据多样性。在现实生活中,收集的数据不是均匀分布的,一些数据帧很少,甚至可以忽略。对于更多样化的生成数据,我们故意增加了这些数据帧的比例。保持数据多样性可以帮助增加测试深度和测试范围。
我们在实验期间执行了这些方法。
在本节中,我们重点介绍对抗性学习过程。我们首先提取该数据框架学习问题的数学表达式。然后,我们详细介绍所设计的基于WGAN的模型的特定结构。最后,我们介绍了培训过程。
我们从ICS获得的原始数据帧是序列的形式。我们可以自然地提取出数学表达式 = (e1, e2, . . . , ex , . . . , en), ex ∈ E and
∈
,其中E表示十六进制数的集合,
是序列集,包括
。大多数元素是英文字母和数字。我们的目标是找到一个函数
,捕获这些真实世界的数据帧的分布,并能产生具有相同特征的数据帧。
WGAN模型包括生成器模型和鉴别器模型。我们将生成器模型形式化为一个函数,它使用高斯噪声作为输入,然后输出序列
。我们把鉴别器看作一个函数
,区分实际数据
和生成数据
。EMD可以表示训练程度,如式(2)所示。训练过程的目的是不断优化鉴别器的损失函数和生成器的损失函数。最后,函数
几乎与函数
具有相同的分布。
上述形式描述就是本研究中对抗性学习问题的建模。
本小节详细介绍了两个模型的结构设计。我们的设计理念之一是在达到效果的前提下尽可能简化模型。由于其减少计算资源消耗的能力,简化的模型可以在将来方便地部署到嵌入式设备。图3示出了鉴别器和发生器的体系结构。
实验中的生成器由一个输入层,三个隐藏层和一个输出层组成。关于鉴别器的神经网络结构,在每一层中,我们使用如图3所示的完全连接的神经网络结构。这种结构可以使生成器模型的计算更轻松。关于输入到神经网络的数据的大小,我们根据ICS中的最大帧长度进行设置。我们将不同长度的框架对齐到相同的长度。因此,神经网络可以均匀地处理数据。在中间层,我们选择整流线性单位(ReLU)作为激活函数[48]。选择ReLU作为激活功能的原因在于这些方面。首先,它可以避免模型训练的反向传播中消失的梯度问题。其次,它可以使某些神经元的输出变为零,这有助于避免过度拟合。第三,它可以减少计算成本。在输出层中,我们选择S形函数[49]因为其输出在0到1之间,所以它作为激活函数。生成器的输入是高斯分布噪声,这是一种常见的做法。我们根据特定的标准偏差初始化权重矩阵。我们根据WGAN的理论删除了最后的日志操作。我们选择均方根根算法来优化损失函数。该算法可以在参数调整过程中减少抖动并加快训练速度。
鉴别器包括一层输入层,一层隐藏层和一层输出层。关于鉴别器的神经网络结构,我们还使用了完全连接的神经网络。整个鉴别器仅包含三层。这种相对较浅的网络可以节省计算资源。鉴别器的输入数据大小与生成器的输出大小相同。鉴别器的输出层根据WGAN的原理去除了S型函数,而WGAN的原理与大多数鉴别器模型不同。在每个训练时期,在更新权重矩阵之后,我们将所有权重值都裁剪到固定范围,以满足Lipschitz连续性。
该体系结构设计的目的之一是减少模型的计算成本[50]。在这项研究中,两个因素与计算成本密切相关。(i)一种是模型架构复杂度[51]例如网络结构和参数数量。(ii)另一个是数据集的复杂性。复杂的数据集包含更多需要学习的功能。在这里,我们关注模型架构的复杂性。首先,由于较深的网络增加了基本乘法累加运算的数量,因此上述设计采用较浅的网络结构,这有助于降低计算成本。其次,如果将一维ICP数据帧编码为二维矩阵,则矩阵将非常稀疏。处理卷积网络会增加计算成本。此外,卷积运算涉及大量参数,这占用了大量内存。因此,无需卷积运算,我们的模型设计可以降低计算成本。
一旦设计了模型的体系结构,我们就开始训练模型。进行对抗训练[52],以不断优化鉴别器的损失函数和生成器的损失函数。在此优化过程中,将连续调整权重矩阵中的值,从而得到一个可以学习实际数据帧结构的稳定模型。由于基于WGAN的架构的正确设计,两个模型都可以同时进行训练,而无需精心安排训练顺序。我们将训练数据分成相等大小的批次作为输入,直到用尽所有训练数据。该过程将运行几个时期,直到可以生成高度真实的数据为止。
通常,我们希望生成的数据尽可能与真实数据相似。但是,我们的最终目标是获得有效的模糊测试结果并找出尽可能多的错误。为了获得改进的模糊结果,我们需要保持生成的数据与实际数据之间的差异。因此,我们特意为每10个训练时期保存生成器模型,而不仅仅是最终的最佳训练模型。使用这种策略,我们可以生成具有不同相似度的测试数据。此外,我们不仅可以影响数据以符合协议特定的数据包结构,还可以提高测试数据内容的多样性。因此,我们可以增加模糊测试的宽度和深度[53]。
在最终模型的形成中,另一个重要步骤是模型验证。此步骤在模型训练结束时执行。我们使用它来评估模型性能并调整超参数。模型验证使用验证数据集验证模型,该验证数据集与训练数据集共享相同的分布。一方面,它可以防止模型过度拟合训练数据。另一方面,它有助于我们确定最佳超参数,例如本研究中的学习率和权重裁剪的边界值。
经过模型训练和验证后,我们获得了生成器模型,该模型可以生成与实际格式共享相同格式的数据帧。同时,变量值存在特定差异。正式的功能 代表训练有素的生成器几乎表现出与目标函数相同的分布
。
此时,我们可以使用训练有素的生成器模型生成任意数量的测试数据帧。这些数据帧的类型与现实世界的数据帧相似。我们将测试数据帧发送到测试目标并记录任何可能的响应。在此发送和接收过程中,程序模块之一输出日志文件,记录所有通信过程和异常行为。该日志文件为实验分析提供了基础。除了程序监视之外,我们还手动分析整个过程,以发现潜在的异常情况。在模糊测试过程中,会找到导致系统异常的数据帧序列,然后分别记录下来以进行模型重新训练。
在第一轮模糊测试之后,我们使用错误触发序列重新训练模型。此操作的逻辑基础是计算机科学中的时间局部性和空间局部性的原理。为了进行再训练,我们对记录的序列执行两个步骤。首先,我们将突变操作应用于序列,包括单点突变和多点突变。详细地,突变操作是指在一个或多个随机位置上对序列数据的随机修饰。其次,我们使用数据增强来增加这些特定序列的效果,因为小的数据比率不会对模型的再训练产生实质性影响。完成这些步骤后,我们将使用更新的训练数据集再次训练模型。
在本节中,我们将通过实验评估该方法的有效性。在先前的研究中[54],我们训练了基于GAN的模糊数据生成模型。因此,后续分析将基于WGAN的方法与基于GAN的方法进行了比较。为了从各个维度分析实验结果,我们在实验中使用了不同的Modbus-TCP实现,包括MOD_RSSim v8.20,Modbus Slave v6.0.2和Diasalve v2.12。这些程序是根据Modbus协议规范设计的。最后,为了显示上述方法的适应性,我们将其用于测试另一种工业控制协议EtherCAT协议。
在本节中,我们介绍了关于训练和模糊比较的性能度量。对深度对抗性学习的评价,尤其是对GAN的评价,并不是一件容易的事情。一些定量标准[57][59]最近才出现,用来评估GAN在图像生成中的作用。在这个领域没有统一的验证度量和基准。因此,根据我们的研究目的和具体情况,我们提出了流动度量(flowing metrics)。其中TIAR和DGD为训练性能指标,其余为模糊有效性指标。
TIAR指的是测试目标接受的测试用例的百分比。它反映了测试数据生成的效率。较高的TIAR表示生成的测试用例在格式方面与真实世界的数据帧有较高的相似性。相反,较低的TIAR表明生成的数据质量较低,需要调整模型架构或重新培训模型。因此,我们选择它作为模型训练和验证的性能指标之一。我们定义TIAR如下:
其中nSent是发送的测试用例总数,nAccept是接受的测试用例总数。在实验中,我们通过调整两个超参数来获得较高的测试通过率。这两个因子分别是训练期数和损失函数值。此外,在模型的训练或验证过程中,我们用它作为指标来调整其他超参数,如学习率和权值裁剪的边界值。
AVD[54]指的是发现漏洞的能力,这是对该方法有效性的最直接的度量。我们不仅计算了在模糊测试中发现的漏洞数量,而且还计算了用于识别这些漏洞的测试用例的数量。它是揭示一个bug所需的测试用例的平均数量。所发现的漏洞也与测试目标密切相关。如果目标有更多的漏洞,这个值可能会相应增加。为了便于比较分析,在实验中我们只关注方法本身的有效性。具体公式如下:
其中nBugs表示发现的bug的数量,分母ncase是使用的测试用例的数量。它可以被非正式地视为每100个测试用例中发现的错误数量。值越大,发现漏洞的能力越大;值越低,发现漏洞的能力就越小。
此外,并不是所有的模糊测试技术都能找到目标系统中的所有漏洞。所提出的方法不能保证发现测试目标中的所有漏洞。因此,这个度量仅仅依赖于发生的漏洞。
DGD是指维持生成数据多样性的能力。生成的数据帧的多样性可能会导致异常。此指标关注生成数据中的数据类型数量。当生成的数据类型数量明显小于训练数据类型数量时,说明模型性能较差,需要进行调整。因此,我们选择它作为另一个模型性能度量。此外,研究[60][61]认为基于多样性的方法是一个有用的测试用例选择准则。因此,这也是本研究方法有效性的一个重要指标。代码覆盖率也是一个很好的测试用例选择标准。但是,本研究中的测试目标没有源代码。因此,我们使用DGD来评价该方法。
TCGPH直接指示模型每小时可以生成的测试用例。
其中,generatCases表示由模型生成的测试用例的数量,hoursSpent表示生成这些测试用例所花费的时间。这个等式反映了测试用例生成的速度。
图4.整个模糊系统的架构。
图5.modbus-TCP的报文格式
TT指建立最终模型所花费的时间。较短的训练时间可以提高测试效率。不同的神经网络结构、不同的训练数据量、不同的计算硬件、不同的计算算法都会影响训练时间。在本研究中,我们只关注不同的模型架构对训练时间的影响。
Modbus是串行通信协议,最初由Modicon于1979年发布,用于其可编程逻辑控制器。该协议已经成为事实上的标准通信协议,并且当前是连接工业电子设备的可用手段。它的安全对工业控制行业的安全具有重要意义。Modbus协议具有许多变体,包括Modbus TCP和Modbus UDP。在本研究中,我们使用Modbus-TCP作为模糊目标。为了阐明此研究,我们简要介绍Modbus-TCP帧结构。如图5所示,数据具有固定格式。在通信过程中,如果数据格式不正确,则接收器不接受数据。Modbus-TCP协议通过调用TCP协议来实现。具有该格式的消息将作为TCP数据帧的数据组件进行传输。该组件是模型需要学习和生成的。
EtherCAT是提供高实时性能的协议,并在工业设备之间提供了主从通信模式。由于其高实时性和开放性,它已成长为市场领先的技术。典型的EtherCAT网络由一个主机和多个从机组成。主机生成电报,并将其发送到整个网络。这些电报反映在每个网段的末尾,并发送回主站。在这里,我们应用模糊方法来学习和生成这些电报。
深度学习中的训练数据和验证数据显着影响模型的形成。因此,我们需要准确地收集和预处理这些数据。在实验中,我们分别从两个工业控制协议通信环境中收集了数据。一种基于Modbus-TCP协议,另一种基于EtherCAT协议。在这些数据的划分中,我们选择80%作为训练数据,其余20%作为验证数据。
为了获得Modbus-TCP通信数据,我们使用Modbus Poll 4.3.4,Modbus Slave 4.3.1和VPSD构建了基于Modbus-TCP的通信环境。Modbus轮询充当Modbus-TCP主站,而Modbus从站充当从站。当主站与从站通信时,我们使用Wireshark [62](一种广泛使用的网络协议分析器)来捕获通信数据。具体而言,我们捕获了1000,000条数据,包括各种类型,其中80%作为训练数据,而20%作为验证数据。
为了捕获EtherCAT通信数据,我们准备了如图6所示的基于EtherCAT的工业系统。主站是Beckhoff [63]工业PC,从站包括EK1100 [64],EL1004 [65]和EL2004 [66]。我们使用ET2000 [67]作为主从之间的在线侦听器。运行在计算机上的Wireshark可以从侦听器获取并显示大量的通信数据消息。处理后,大量数据消息将用作EtherCAT协议的训练数据。
图6.EtherCAT协议通信环境。
在深度学习问题中,模型训练通常会大量消耗计算资源。因此,我们介绍了实验环境以阐明所提出的技术。该模型在具有8个处理器(Intel(R)CoreTM i7-6700K [email protected]),16.0GB内存(RAM)Nvidia GeForce GTX 1080 Ti(11GB)和64位Microsoft Windows 10 Professional的计算机上进行了训练操作系统,基于x64的处理器。发起攻击时,模拟器将在另一台装有4个处理器的计算机上运行(Intel(R)CoreTM i5-5300U [email protected])8.00GB内存(RAM)和64位Microsoft Windows 10 Professional操作系统,x64-基于处理器。
对抗网络包含两个神经网络模型,它们需要不同的数据输入。真实世界的数据消息和生成的数据消息都被输入到鉴别器模型中。高斯噪声[0,1]输入到生成的模型中。对于总共40个训练时期,学习率设置为0.001。在每个参数更新之后,我们将权重值裁剪为[-0.01,0.01]。我们每10个时间段保存一次生成器模型。这些模型可以生成更多的测试用例。使用CPU训练模型需要20个训练时期的10.7小时训练时间,对硬件资源和时间资源的要求较低。使用GPU仅需要90分钟的训练时间即可完成20个训练时期,这非常高效。
在模型训练结束时,我们使用验证集来验证模型性能。因此,我们可以确定模型是否在训练集上过度拟合以及选择模型超参数。根据我们的研究目的和实际情况,我们选择TIAR和DGD作为验证指标。
图7.不同学习速率下的模型验证
图8.不同权值下的模型验证。
详细地说,我们在验证集上运行模型,并计算不同学习率(如0.02和0.001)下的TIAR指标。图7结果表明,当学习率为0.001时,TIAR指数可以稳步提高。因此,将学习率设置为0.001比较合适。
我们还在不同的权重剪裁值下对验证集运行模型。详细地说,我们将权重剪裁值设置为[-0.01,0.01]和[-0.02,0.02]来进行验证。图8为DGD指标的统计结果。可以看出,当数值设置为[-0.01,0.01]时,模型较好地保持了DGD。
在本节中,我们将从两个方面详细说明实验结果,以证明该方法的有效性。我们首先介绍实验中的例外情况。然后,我们揭示一些统计结果及其分析。在这两个方面,与我们以前的研究进行了比较。我们最终将我们提出的方法与传统方法进行比较。此外,我们还展示了另一种工业协议EtherCAT协议的测试结果。
在这项研究中,我们有两种模型:基于GAN的模型和基于WGAN的模型。为了进行比较,我们将生成的数据帧发送到相同的三种类型的Modbus从站。通过使用两个模型,我们成功触发了异常。如表2所示,基于WGAN的模型展现出增强的发现错误的能力和速度。我们发送了由这两个模型生成的30,000个测试案例。与基于GAN的模型相比,基于WGAN的模型导致更多错误。下面详细描述其中一些错误。
表2.Modbus-TCP中的触发异常和触发频率。基于GAN的模型与基于WGAN的模型的比较。固定变量是发送的测试用例数量和相同的测试目标,指标是触发的异常数量。
攻击Modbus_Rssim会导致它崩溃。我们发送了大约700个数据帧,然后弹出窗口提示框,表明程序已经崩溃。为了确定原因,我们打包了700个数据帧,然后将它们发送给Modbus从服务器。然而,没有出现异常。这一比较表明Modbus_Rssim在其实现中存在缺陷。
在进一步的攻击中,我们发现Modbus_Rssim提示显示异常信息。站ID XX脱机,没有响应发送。这种异常现象在短时间内会发生好几次。
在模糊测试的Modbus从机,我们发现另一个例外,在发送大约1000数据帧,目标程序自动关闭窗口本身。我们认为内存溢出是原因,这表明程序员在实现模拟器时可能不会考虑极端情况。
其他的异常,如没有找到文件和调试器内存溢出被发现时,攻击的Diaslave。这些异常只发生过一两次,因此没有详细讨论。需要注意的是,不同的异常行为可能是由同一原因引起的。在研究中,由于测试目标没有源代码,我们没有进一步区分每个异常背后的本质原因。
通常,与基于GAN的模型相比,基于WGAN的模型有更多的触发异常和触发频率。
通过计算整个过程的TIAR,我们可以看到TIAR随着训练周期的增加而增加,如图7所示。此行为表明越来越多的生成数据具有正确的消息格式。这些数据将被模糊目标接受。我们选择Modbus Slave作为目标。如果它正常接受数据,则数据格式可能是正确的。与基于GAN的模型相比,基于WGAN的模型在最后阶段可以达到更高的TIAR,说明自定义的基于WGAN的模型比基于GAN的模型具有更高的格式精度。TIAR的最高点增加到85%左右。实验中有部分数据格式不正确。最初,TIAR显著增加;随着进一步的训练,它趋于缓慢增加,最终趋于平缓,如图9所示。
图9.基于WGAN的方法vs基于GAN的方法。
图10.基于WGAN的方法vs基于GAN的方法。
AVD随着训练时间的增加而增加,说明发现的错误越来越多。最终达到稳定的平稳阶段。在实践中,所达到的水平不仅与实验方法有关,而且与测试目标有关。如果要测试的目标包含许多bug,图中线的峰值将会更高。在实验中,选择Modbus从站作为测试目标。从图10可以看出,在处理相同的协议时,定制的基于WGAN的bug查找模型比基于GAN的模型更有能力。这一推论验证了我们的方法的有效性和潜力。
为了与基于GAN的模型进行比较,在原始训练数据中总共准备了13种数据帧。从图11可以看出,基于WGAN的模型保持了原始数据的多样性。经过训练,基于WGAN的模型仍然生成12种类型的消息。然而,基于GAN的模型并不像原始数据那样保持多样性。因此,基于WGAN的模型在维护数据多样性方面比基于GAN的模型具有优势。通常,数据类型越丰富,检测异常的能力就越强。因此,基于WGAN的模型可以检测更多的bug,如表2所示。
图11。基于WGAN的方法与基于GAN的方法在DGD上的比较。
我们使用相同数量的训练数据和相同的GPU来训练两种不同的模型。最后,我们比较了培训所花费的时间长度。结果如图12所示。与基于WGAN的模型相比,基于GAN的模型需要更长的训练时间。这主要是由于与基于GAN的模型相比,所提出的模型设计得更好。此外,通过对比证明,我们针对性的设计,在降低计算代价方面,已经取得了相应的效果。
图12.基于WGAN的方法与基于GAN的方法在TT上的比较。
我们使用相同的计算硬件来生成测试用例。最后对不同模型的TCGPH进行了比较。结果如图13所示。该模型显示了生成测试用例的效率的提高。快速生成意味着我们可以在短时间内获得许多测试用例,允许快速测试目标。该功能可以提高测试效率。
转存失败重新上传取消
转存失败重新上传取消
转存失败重新上传取消 转存失败重新上传取消
图13.TCGPH中基于WGAN的方法与基于GAN的方法比较。
为了量化计算成本,我们对两种模型在相同的计算硬件和相同的计算目标下的时间消耗进行了比较。该模型的计算时间较短,可以降低计算成本。在比较中,我们显示了花在训练模型30个训练时期的时间。在计算硬件方面,我们分别使用CPU和GPU。具体时间消耗如表3所示。结果表明,在相同的计算目标下,我们的神经网络结构使用较少的计算时间。因此,我们设计的模型可以降低计算量。
表3.在相同的计算硬件下的计算成本。
转存失败重新上传取消
转存失败重新上传取消
转存失败重新上传取消 转存失败重新上传取消
传统方法依赖专业人员根据已知的消息格式设计测试用例。整个过程可能需要几天时间,而我们提出的方法只需要几个小时。因此,该方法比人工方法具有更高的自动化程度和更快的速度。与传统方法相比,该方法主要是将该方法生成的测试数据的格式和内容与手工方法进行比较。从图14可以看出,生成的测试数据帧与人工设计的数据帧相似。序列数据中的蓝色标记显示了原始数据的一些变化。尽管并非所有生成的数据都像手工设计生成的数据那样精确,但它们可以在数量上弥补这一缺陷。因此,我们提出的方法显示出巨大的潜力,以取代传统方法。
图14.基于WGAN的方法与传统的Modbus-TCP数据帧生成方法的比较。
为了证明该方法的通用性,我们用大量的EtherCAT数据帧对模型进行了20个epoch的重新训练。通过新的训练模型,我们可以生成大量的测试用例来攻击EtherCAT协议。以下将介绍相关细节。
a.在EtherCAT通信系统中,主从之间的通信
主站发送包含多个子消息的消息。从站通过读取或修改相应子报文的数据来完成通信。然后,更新后的消息
将作为消息
返回到主服务器。每一次通信都对应于一个消息对<
,
>。如图15所示,一个框架包括若干子消息。
图15.EtherCAT框架结构,一个框架包括几个子消息。
b:记录测试用例发送和接收过程
为了记录发送和接收的数据,我们开发了一个基于SOEM (Simple Open EtherCAT master)[68]的测试EtherCAT主站,SOEM是一个开源的EtherCAT库。它可以记录通信过程以供进一步分析。
c.检测到潜在的漏洞
我们发现并计算了这些潜在漏洞,包括数据包注入攻击,中间人(MITM)攻击,工作计数器(WKC)攻击。数据包注入意味着生成的数据消息已更改了子消息的值,但帧头中的长度字段保持不变。MITM表示第三方恶意站点更改了传输中的数据,但主服务器和从属服务器没有注意到更改。在实验中,如果生成的消息仅更改数据字段而不更改地址字段,并且从属设备仍正常接受它,则我们将这种情况视为MITM攻击。WKC攻击表示如果WKC值未更改为数据领域的变化。在实验中,我们发送生成的数据报文到从站并记录相应的接收报文
。我们收到大量消息对。根据上述规则,我们分析并比较了指定的字段值,并获得了以下统计结果。通过EtherCAT协议进行的实验证明,我们的方法可以便利得应用于其他工业控制协议,而无需了解协议规范或消息格式。因此,对于其他工业协议系统的安全性测试是有效的。、
在这项研究中,我们提出了一种基于WGAN的有效模糊方法,以生成有关工业控制协议的模糊数据。该方法可以了解实际数据帧的结构和分布,并在不了解详细协议规范的情况下生成相似的数据帧。允许神经网络学习消息格式可以节省精力并减少时间。这样,在测试其他网络协议时,我们不需要了解它们的规格,这很方便。我们精心的架构设计使模型训练更加有效。我们最终通过与以前的方法进行比较来评估此方法。获得的结果表明了该方法的应用潜力。此外,我们通过模糊EtherCAT协议证明了其多功能性。
在未来的研究中,必须进行大量研究以创建更智能,更自动化的模糊系统。考虑到目前的情况,我们打算从以下几个方面进行研究。首先,我们将使用我们的方法来测试一系列工业控制协议,例如Profibus,Powerlink和未来的TSN(时间敏感网络)[69]。这些协议构成了当前大多数工业控制系统的重要组成部分。其次,我们打算集成每个处理模块以形成一个完整的软件系统,该系统可以处理大多数网络协议。最后,我们打算用FPGA(现场可编程门阵列)[70]实现该模型,以便在有新数据可用时更快地进行更新。原文链接