面向黑盒信息物理系统的自动化安全测试方法及系统

文档序号:31620592发布日期:2022-09-23 23:07阅读:157来源:国知局
面向黑盒信息物理系统的自动化安全测试方法及系统

1.本发明属于信息物理系统安全测试技术领域,特别涉及一种面向黑盒信息物理系统的自动化安全测试方法及系统。


背景技术:

2.信息物理系统(cyber-physical systems,cps)是综合计算、网络和物理环境的多维复杂系统,在电力、化工、水处理、燃气、制药、食品生产和其他国家安全关键领域发挥着至关重要的作用。由于cps的重要性,其不可避免地成为网络攻击的目标。例如,已有很多针对国家关键基础设备的真实攻击,如stuxnet,blackenergy等病毒。这些攻击通常以cps的核心可编程逻辑控制器(programmable logic controller,plc)为攻击目标,期望通过构造恶意的网络攻击破坏国家关键基础设施。
3.因此,cps系统在投入使用前需要对其信息安全和运营安全进行充分评估。为了评估cps的安全性,现有的针对cps系统的测试集生成方法主要有以下几种:基于系统的运行状态手动构建的涵盖不同攻击向量的测试集,该方法通常在真实的cps系统中进行测试;受软件测试技术的启发,研究人员应用静态程序分析来测试cps中核心控制程序以发现不安全的系统状态基于机器;学习和人工智能的动态模糊测试方法,应用动态测试的方法生成可能将cps的物理过程驱动到危险状态的恶意攻击。其中,(1)手动构建测试集中,首先在真实的运行时生产环境中测试cps既昂贵又低效;其次,手工构建的方法需要耗费大量人力和特殊领域的专业知识;最后,针对一个系统生成的测试用例无法直接迁移到其他的系统中。(2)静态分析的方法中,很大程度上依赖于对cps的plc二进制字节码的准确分析。但由于不同的plc供应商通常使用专有的编译器,逆向分析plc二进制字节码既繁琐又容易出错。(3)动态分析方法中,现有的基于机器学习和人工智能的动态测试方法需要被测cps大量的数据日志,实时的网络流量或者高保真系统模拟器,然而,在第三方测试中,通常无法获得cps的可操作的源代码和足够的历史数据日志和网络流量。此外,cps通常具有大量不同类型的输入和输出变量,这也阻碍了黑盒的测试用例的生成,因为输入的随机操作可能不会对系统造成任何物理影响。


技术实现要素:

4.为此,本发明提供一种面向黑盒信息物理系统的自动化安全测试方法及系统,可在无需系统数据日志和网络流量的先验知识下,能够自动生成对不同cps造成物理影响的测试用例,以提升cps自动化安全测试效率和准确性。
5.按照本发明所提供的设计方案,提供一种面向黑盒信息物理系统的自动化安全测试方法,包含如下内容:
6.提取待测cps中的控制应用程序,并在离线环境中构建待测cps的影子系统,将提取出的待测cps中的控制应用程序复制到影子系统中,构造系统输入并生成相应输出以模拟待测cps的物理过程;
7.运行离线的影子系统,执行动态测试定位待测cps中可能使用的输入输出变量并推断输入和输出变量间的因果关系,计算不同物理过程的控制参数以挖掘输入输出变量控制策略;
8.基于计算的变量控制策略,构建不同类型的攻击测试集,发现能够驱使待测cps进入不安全状态的潜在风险点。
9.作为本发明面向黑盒信息物理系统的自动化安全测试方法,进一步地,复制待测目标信息物理系统控制应用程序中,首先,检测plc内存是否可读,然后,模拟plc应用程序上传操作和下载操作,提取信息物理系统的关键控制应用并写入影子系统;最后,模拟plc写入/读取数据文件操作,将设置数据注入输入内存区域并记录输出内存区域,通过模拟信息物理系统输入输出来将信息物理系统控制应用复制到影子系统。
10.作为本发明面向黑盒信息物理系统的自动化安全测试方法,进一步地,检测plc内存是否可读,包含如下内容:通过检测信息物理系统中使用plc设备的指纹并探测plc设备状态,利用plc设备状态来确定plc控制应用程序是否可读,其中,plc设备状态包含:运行状态及加密状态。
11.作为本发明面向黑盒信息物理系统的自动化安全测试方法,进一步地,构建安全测试集并生成安全测试用例中,首先,寻找与控制应用程序相关的变量地址因果关系;然后,通过动态分析来获取影响变量地址因果关系输出变量的控制参数;最后,根据控制参数生成用于作为安全测试用例的测试向量。
12.作为本发明面向黑盒信息物理系统的自动化安全测试方法,进一步地,获取变量地址因果关系的过程,包含如下内容:首先,通过寻找与控制应用程序相关的输入输出变量地址并获取粗粒度变量地址因果关系;然后,通过分析粗粒度变量地址因果关系中变量空间是模拟量还是数字量,来确定输入输出之间细粒度变量地址因果关系。
13.作为本发明面向黑盒信息物理系统的自动化安全测试方法,进一步地,粗粒度变量地址因果关系获取中,将输入输出变量区间划分为若干个连续的16bits向量;将输入内存中的bit依次置为1,并记录生成的相应输出变量值,再将输入内存中的bit位置为0,并记录生成的相应输出变量值;通过输出变量每个bit信息熵来量化输出状态的变化,并将非零熵值的向量分类为控制逻辑中使用的关键向量,将具有零熵值的向量分类为控制逻辑汇总未分配的变量地址;针对非零熵值的每个输出变量向量,通过顺序搜索算法定位导致输出变量向量状态发生变化的输入变量向量地址位置,基于定位到的输入和输出变量地址,得到去重且有序的16bits向量因果关系对作为粗粒度变量地址因果关系。
14.作为本发明面向黑盒信息物理系统的自动化安全测试方法,进一步地,确定输入输出之间细粒度变量地址因果关系中,首先,在粗粒度变量地址因果关系中按序选择一对变量地址,采用顺序和逆序方式变异输入变量所有可能值,并记录每次变异时输入和输出变量值;然后,依据plc制造商规范,计算输出变量中最大值并与规范中定义的模拟量信号可表征的最大值比较,将最大值大于规范中模拟信号最大值的被测输出变量视为数字量输出(digital output,do)信号,并基于反馈引导策略,将最大值小于规范中模拟信号最大值的被测输出变量来衡量输出变量的do或模拟量输出(analog output,ao)变量类型;将输入变量向量中每个bit从0置1、再从1置0,将满足只有1bit输入信号可以改变已识别的do或ao变量的输入,视为不同的数字量输入(digital input,di)变量,否则,将输入视为模拟量输
入(analog input,ai)变量;依据识别的输入输出类型来获取细粒度变量因果关系。
15.作为本发明面向黑盒信息物理系统的自动化安全测试方法,进一步地,基于反馈引导策略,使用计算输入和输出变量间的条件熵值,若条件熵大于0,则将输出变量视为ao信号,若条件熵等于0,则将输出变量视为do信号,其中,x表示输入变量向量,y表示输出变量向量,x表示输入变量值,y表示输出变量值,h(y|x)表示输入变量和输出变量间的条件熵。
16.作为本发明面向黑盒信息物理系统的自动化安全测试方法,进一步地,根据控制参数生成测试向量中,依据细粒度变量因果关系来分别生成对应输入输出向量类型的测试用例,其中,测试用例包含:通过修改传感器过程值来间接影响执行器的输出状态测试用例,及通过修改执行器过程值直接影响执行器的输出状态测试用例。
17.进一步地,本发明还提供一种面向黑盒信息物理系统的自动化安全测试系统,包含:控制过程复制模块、控制逻辑推断模块及测试用例生成模块,其中,
18.控制过程复制模块,用于提取待测cps中的控制应用程序,并在离线环境中构建待测cps的影子系统,将提取出的待测cps中的控制应用程序复制到影子系统中,构造系统输入并生成相应输出以模拟待测cps的物理过程;
19.控制逻辑推断模块,运行离线的影子系统,执行动态测试定位待测cps中可能使用的输入输出变量并推断输入和输出变量间的因果关系,计算不同物理过程的控制参数以挖掘输入输出变量控制策略;
20.测试用例生成模块,基于计算的变量控制策略,构建不同类型的攻击测试集,发现能够驱使待测cps进入不安全状态的潜在风险点。
21.本发明的有益效果:
22.本发明能够在不需要真实系统历史数据、实时流量和运行时源程序的前提下,通过动态分析准确地推断出plc输入和输出变量之间因果关系和控制策略,自动生成可能将目标cps驱动到不安全物理状态的测试集,可在离线环境中测试cps的安全有效,能够给第三方的黑盒cps测试提供自动化的测试集生成工具,有助于提高cps的信息安全和运行安全,尤其是涉及到电力、水利、化工等高敏感的国家关键基础设施行业,能够在系统被攻击前提前发现一些潜在的风险点并加以保护,缓解由于程序的安全约束和操作约束不足所带来的不确定性威胁;此外,本案方案也可用于验证系统中的已部署的防御机制的防御能力,并且根据发现的安全风险点改进系统中防御措施,具有较好的应用前景。
附图说明:
23.图1为实施例中面向黑盒信息物理系统的自动化安全测试方法流程示意;
24.图2为实施例中自动化安全测试原理示意。
具体实施方式:
25.为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
26.本发明实施例,参见图1所示,提供一种面向黑盒信息物理系统的自动化安全测试
方法,包含如下内容:
27.s101、提取待测cps中的控制应用程序,并在离线环境中构建待测cps的影子系统,将提取出的待测cps中的控制应用程序复制到影子系统中,构造系统输入并生成相应输出以模拟待测cps的物理过程;
28.s102、运行离线的影子系统,执行动态测试定位待测cps中可能使用的输入输出变量并推断输入和输出变量间的因果关系,计算不同物理过程的控制参数以挖掘输入输出变量控制策略;
29.s103、基于计算的变量控制策略,构建不同类型的攻击测试集,发现能够驱使待测cps进入不安全状态的潜在风险点。
30.通过动态分析准确地推断出plc输入和输出变量之间因果关系和控制策略,自动生成可能将目标cps驱动到不安全物理状态的测试集,能够在不需要真实系统历史数据、实时流量和运行时源程序的前提下,实现离线环境中安全有效地测试cps。
31.参见图2所示,本案实施例中通用的黑盒测试生成框架batt,由三个主要步骤组成:控制过程复制、控制逻辑推理和测试向量生成。其中,batt复制被测试目标cps的控制应用程序,在此基础上,可通过构建可以模拟输入并生成相应输出的影子系统,在不处理复杂的物理世界的情况下模拟控制过程并动态测试相应的结果。batt推断i/o变量地址之间的变量因果关系和控制策略中,可利用两阶段变量地址因果能关系推理算法来识别准确的i/o变量地址因果关系,定位哪些输入变量会影响哪些输出变量,然后通过计算每对已识别变量地址因果关系的控制参数来进一步揭示潜在的控制策略。基于揭示的变量关系和控制策略生成精确的生成传感器控制的测试用例和执行器控制的测试用例,并评估它们对目标cps的物理影响。
32.进一步地,本案实施例复制待测目标信息物理系统控制应用程序中,首先,检测plc内存是否可读,然后,模拟plc应用程序上传操作和下载操作,提取信息物理系统的关键控制应用并写入影子系统;最后,模拟plc写入/读取数据文件操作,将设置数据注入输入内存区域并记录输出内存区域,通过模拟信息物理系统输入输出来将信息物理系统控制应用复制到影子系统。控制过程复制主要用于将待测cps的控制程序复制到离线的影子系统中,从而高效安全的在离线的环境中进行控制逻辑推断和测试向量生成。
33.本案实施例中,进一步地,检测plc内存是否可读,包含如下内容:通过检测信息物理系统中使用plc设备的指纹并探测plc设备状态,利用plc设备状态来确定plc控制应用程序是否可读,其中,plc设备状态包含:用于表示plc cpu运行的运行状态及用于表示plc内存访问权限的加密状态。通过模拟plc应用程序的上传操作,提取真实cps中的关键控制应用数据,可包括控制程序,配置数据,变量数据。通过模拟plc应用程序的下载操作,将提取到的真实cps中的关键控制应用数据写入到离线plc中,从而模拟真实cps的物理过程。通过模拟plc的写入/读取数据文件的操作,将任意数据注入输入内存区域并记录输出内存区域从而模拟cps的输入和输出,最终将cps中的控制应用复制到离线影子系统中。
34.进一步地,本案实施例中,构建安全测试集并生成安全测试用例中,首先,寻找与控制应用程序相关的变量地址因果关系;然后,通过动态分析来获取影响变量地址因果关系输出变量的控制参数;最后,根据控制参数生成用于作为安全测试用例的测试向量。
35.本案实施例中,进一步地,获取变量地址因果关系的过程,包含如下内容:首先,通
过寻找与控制应用程序相关的输入输出变量地址并获取粗粒度变量地址因果关系;然后,通过分析粗粒度变量地址因果关系中变量空间是模拟量还是数字量,来确定输入输出之间细粒度变量地址因果关系。
36.控制逻辑推理旨在在离线的影子系统中,找到控制程序中分配的输入变量和输出变量地址,从而通过调整输入变量改变输出状态以生成能够驱使系统进入安全测试状态的测试集。控制逻辑推理过程可分为两步:1)因果关系推理,2)控制策略推理。其中,因果关系推理中,可利用两阶段因果关系进行推断,包含:粗粒度的因果关系推断和细粒度的变量因果关系推断。
37.粗粒度的因果关系推断旨在找到与控制程序相关的i/o变量地址并推断粗粒度变量地址因果关系。主要步骤可设计为如下内容:
38.1)plc通常使用最多16位的内存大小来表示i/o变量。因此,可首先将i/o变量区划分为几个连续的16bits向量。
39.2)将输入内存中的bit依次设置为1,并记录生成的相应的输出变量值。同样的,再将输入内存中的位设置为0,并记录生成的相应的输出变量值。
40.3)计算生成的数据中输出变量的每个bit的信息熵以量化输出的哪些状态根据执行的输入而变化,如公式(1)所示(其中x表示以位为单位的所有输出地址的集合)。
[0041][0042]
4)将具有非零熵值的向量分类为控制逻辑中使用的关键向量,将具有零熵值的向量分类为控制逻辑中未分配的变量地址。
[0043]
5)对于具有非零熵值的每个输出变量向量,使用顺序搜索算法来定位导致输出变量向量状态发生变化的输入变量向量的地址位置。
[0044]
6)基于找到的输入和输出变量地址,生成一组去重且有序的向量因果关系对。
[0045]
细粒度的变量因果关系推断中,可在粗粒度变量因果关系推断下获得粗粒度16-bits的向量因果关系。但是,一个16-bits向量既可以表示一个模拟量的过程值也可以表示16个数字量的过程值。因此输入输出变量间可能存在四种不同的因果关系(即,di

do、di

ao、ai

do、ai

ao)。如果将整个i/o变量空间视为模拟信号,则会生成错误的测试向量。在细粒度变量因果关系测试阶段,需要区分一个16-bits的向量是被分配为一个模拟量还是16个数字量,并确定输入和输出之间的确切的因果关系。其主要步骤可设计为如下内容:
[0046]
1)首先在已识别出的粗粒度因果关系中顺序选择一对变量地址,然后采用顺序和逆序两种方式变异其输入变量的所有可能值。同时,记录每次变异时的输入和输出变量值用于后续的动态测试。
[0047]
2)使用基于规范指导的策略来区分do和ao变量类型。plc制造商通常根据其自定义的设计规范将4-20ma模拟电流输入转换为相应的范围整数值。因此,如果将变量编码为模拟信号,则模拟信号的值将分布在0-v(v表示能表征模拟量信号的最大值)之间。因此,可通过计算测试输出变量中的最大值,当最大值超过v时,可认为被测输出变量代表16位do信号。
[0048]
3)使用基于反馈引导的策略来区分do和ao变量类型。当最大值小于v时,基于规范指导的策略难以区分do和ao变量类型。因此,可利用do和ao变量的控制反馈特性不一致的
特点,提出了一种基于反馈引导的策略。使用公式(2)计算输入和输出变量间的条件熵值来衡量变量变化的一致性。在等式(2)中,x表示输入变量值,y表示输出变量值,h(y|x)表示输入变量和输出变量间的信息熵。因此,如果条件熵大于0,将输出变量视为ao信号。如果条件熵等于0,将输出变量视为16位do信号。
[0049][0050]
4)在识别出输出变量类型之后,进一步区分输入变量的类型。将16bits的输入变量向量中的每个bit依次从0置1,再从1置0。如果只有1bit输入信号可以改变已识别的do或ao变量,可将此输入视为16bits不同的di变量。否则,可将此输入视为一个ai变量。
[0051]
5)最后可得到了细粒度的变量因果关系,它可能包括四种类型:

ai

do,

ai

ao,
[0052]

di

do,和

di

ao。
[0053]
推断控制策略是产生准确测试的先决条件,可通过探索输入变量如何影响已识别的细粒度变量地址因果关系的输出变量来获取测试用例。由于开发人员通常会在目标系统中配置控制参数(例如,pid控制器的设定值和阈值)以确保在将其投入实际生产之前安全运行和稳定控制。因此,可通过动态分析来计算这些控制参数,主要步骤可设计为包含如下内容:
[0054]
1)对于变量地址因果关系类型



,可将所有可能的输入值按顺序和逆序两种变异,同时记录每个变异的输入信号对应的输出变量值。随后,计算这些变量的关键参数。对于通常用于pid控制器的类型

,计算变量的上限阈值ut和下限阈值lt以及控制设定值sp关键参数。这些关键参数可以用公式(3)计算。y
t
表示不同输出变量的序列,cf和cr分别表示在正序和逆序突变时开始导致输出变量状态变化的输入变量的值。
[0055][0056]
2)对于类型

,由于输出变量值总是等于0或1,可通过识别能够精确控制执行器开或关的临界值v来生成控制策略。
[0057]
3)对于变量地址因果关系类型



,由于输入变量的值总是等于0或1,可直接将di变量分别设置为1或0,并记录输出的变化。
[0058]
进一步地,本案实施例根据控制参数生成测试向量中,依据细粒度变量因果关系来分别生成对应输入输出向量类型的测试用例,其中,测试用例包含:通过修改传感器过程值来影响物理过程输出的传感器控制测试用例,及通过修改不同执行器过程值来改变物理过程状态的执行器控制测试用例。
[0059]
测试向量生成目标是根据控制参数生成精确的安全测试用例。为此,本案实施例中提出两种策略:(1)传感器控制测试用例,(2)执行器控制测试用例。
[0060]
其中,传感器控制测试用例中,通过修改传感器的过程值以影响物理过程中的输出。为了最大化对物理过程的影响,可设计为如下三种类型的传感器控制:(1)最大值控制,给定一个设定值sp,确定一个使输出值最大化并且与参数sp有最大偏差的输入值;(2)最小值控制,与最大值控制类似,最小值控制旨在找到一个输入值最小化输出值并且与参数sp
的偏差最大;(3)振荡控制,通过在最大值和最小值之间切换执行器的过程值产生振荡控制。
[0061]
执行器控制测试用例中,通过修改不同执行器的过程值直接改变物理过程的状态。与传感器控制测试用例类似,可设计为包含如下三种类型:(1)最大值控制,对于模拟量输出,可将变量值强制为ut,对于数字量输出,可将变量值强制为1;(2)最小值控制,对于模拟量输出,可将变量值强制为lt,对于数字量输出,可将变量值强制为0;(3)振荡控制,对于模拟量输出,可在奇数时间序列中强制变量值为ut,在偶数时间序列中强制变量值为lt,对于数字量输出,可在奇数时间序列中强制变量值为1,在偶数时间序列中强制变量值为0。进一步地,基于上述的方法,本发明实施例还提供一种面向黑盒信息物理系统的自动化安全测试系统,包含:控制过程复制模块、控制逻辑推断模块及测试用例生成模块,其中,
[0062]
控制过程复制模块,用于提取待测cps中的控制应用程序,并在离线环境中构建待测cps的影子系统,将提取出的待测cps中的控制应用程序复制到影子系统中,构造系统输入并生成相应输出以模拟待测cps的物理过程;
[0063]
控制逻辑推断模块,运行离线的影子系统,执行动态测试定位待测cps中可能使用的输入输出变量并推断输入和输出变量间的因果关系,计算不同物理过程的控制参数以挖掘输入输出变量控制策略;
[0064]
测试用例生成模块,基于计算的变量控制策略,构建不同类型的攻击测试集,发现能够驱使待测cps进入不安全状态的潜在风险点。
[0065]
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
[0066]
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
[0067]
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1