CN114661621A - 一种基于强化学习的工控协议模糊测试系统和方法 - Google Patents
一种基于强化学习的工控协议模糊测试系统和方法 Download PDFInfo
- Publication number
- CN114661621A CN114661621A CN202210517682.8A CN202210517682A CN114661621A CN 114661621 A CN114661621 A CN 114661621A CN 202210517682 A CN202210517682 A CN 202210517682A CN 114661621 A CN114661621 A CN 114661621A
- Authority
- CN
- China
- Prior art keywords
- instance
- industrial control
- program
- control protocol
- test
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 162
- 230000002787 reinforcement Effects 0.000 title claims abstract description 34
- 238000000034 method Methods 0.000 title claims abstract description 31
- 230000035772 mutation Effects 0.000 claims abstract description 45
- 238000001514 detection method Methods 0.000 claims abstract description 32
- 238000013499 data model Methods 0.000 claims abstract description 15
- 238000012937 correction Methods 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 30
- 230000009471 action Effects 0.000 claims description 21
- 230000002159 abnormal effect Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 9
- 239000000523 sample Substances 0.000 claims description 9
- 238000013528 artificial neural network Methods 0.000 claims description 5
- 238000010998 test method Methods 0.000 claims description 5
- 230000001960 triggered effect Effects 0.000 claims description 5
- 230000006399 behavior Effects 0.000 claims description 3
- 239000000284 extract Substances 0.000 claims description 3
- 238000005065 mining Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 201000004569 Blindness Diseases 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- VNWKTOKETHGBQD-UHFFFAOYSA-N methane Chemical compound C VNWKTOKETHGBQD-UHFFFAOYSA-N 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009776 industrial production Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000003345 natural gas Substances 0.000 description 1
- 239000008239 natural water Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000003208 petroleum Substances 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Control By Computers (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
Abstract
本发明公开了一种基于强化学习的工控协议模糊测试系统和方法,涉及工控协议安全领域,所述系统包括:种子池、协议格式的数据模型、变异策略学习模块;测试用例生成模块;测试用例修正模块;程序执行检测模块。所述方法包括以下步骤:步骤1、选择待测的工控协议,根据所述工控协议的协议格式提取数据块;步骤2、初始化种子池和变异策略学习模块;步骤3、开始调度所述种子池;步骤4、提取选取的所述种子的状态,并使用ε贪心策略选择所述数据块的变异策略;步骤5、进行变异;步骤6、对变异后的第二实例进行修正;步骤7、程序执行检测模块进行检测;步骤8、重置种子,回到所述步骤3进行循环模糊测试,直到人为停止或达到设定目标。
Description
技术领域
本发明涉及工控协议安全领域,尤其涉及一种基于强化学习的工控协议模糊测试系统和方法。
背景技术
工业控制系统通信协议(简称“工控协议”)主要用来实现工控设备与应用、设备与设备之间的通信,被广泛应用在诸如电力、石油、天然气和水处理等行业,是工业控制系统的重要组成部分。工控协议的应用促进了工业控制系统的信息化、网络化,并且提高了工业生产效率。然而,工控协议在设计之初没有考虑加密、认证等通信安全问题,导致工控网络中存在的漏洞可能会影响系统的可靠性,一旦遭受不法分子的恶意攻击,将会造成不可估量的经济损失,因此,要对工控协议进行漏洞挖掘。
模糊测试(Fuzzing)是漏洞挖掘领域中的一种自动化或半自动化的软件测试技术,因其简单高效的优势成为非常主流的漏洞挖掘方法。Fuzzing通过向目标系统输入大量非预期的数据并监控异常结果来发现安全漏洞,根据生成测试用例的方式可以将Fuzzing分为基于变异和基于生成的Fuzzing。对于工控协议的Fuzzing,一般采用基于生成的方法来提高测试用例的接受率。然而传统的基于随机生成的Fuzzing具有较强的盲目性且测试用例冗余度大,会产生重复或相似的测试用例,不能解决测试用例路径重复的问题。而且,大多数时候只是对多个元素进行数据的随机生成,缺乏对关联字段的针对性。因此,需要针对工控协议的Fuzzing方法进行改进。
胡昌振等人在中国发明专利申请“一种基于强化学习的模糊测试用例自适应变异方法和装置”(申请号为CN201910416959.6)中借助强化学习算法进行自适应变异操作选择,并在计算预期收益时加入了路径增益,从而采用能够获得更高路径覆盖率的变异操作对测试用例进行变异,进而提高了新测试用例触发新路径的概率。但对于测试用例的生成没有考虑工控协议类型,只对种子进行变异生成的测试用例很有可能破坏原有的完整性,导致不能被接收。
袁子一等人在中国发明专利申请“一种fuzzing工控协议漏洞挖掘系统”(申请号为CN202010926215.1)中通过现有的已挖掘出的工控漏洞为基础,训练图卷积神经网络。对Fuzzing算法自动生成的大量测试用例通过图卷积神经网络进行评价和筛选,将易触发漏洞的测试用例发送给被测设备,提高了针对工控系统的漏洞挖掘的效率,并且可以保证测试用例的有效性。但由于是使用已知的工控漏洞训练的神经网络,对于未知的漏洞挖掘能力有限。
王晋等人在中国发明专利申请“一种基于模糊测试的电力物联网协议漏洞检测系统及方法”(申请号为CN202110567713.6)中在常规漏洞检测过程后,对异常样本进行基于引入注意力机制的序列到序列模型的二次学习,用以产生更具有漏洞特征的数据报文,并将这些数据报文再次传入系统进行二次漏洞检测,此种方式可以提高收集异常报文的能力,进而提升漏洞检测的效率。但是异常样本较少、正负样本不平衡,会造成训练模型的过拟合并误导漏洞的判断。
因此,本领域的技术人员致力于开发一种新的工控协议模糊测试系统和方法,克服上述现有技术中存在的测试用例的生成没有考虑工控协议类型、工控协议模糊测试发现未知漏洞能力有限、提供给模型进行训练的异常样本较少的缺陷。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是如何克服测试用例的生成没有考虑工控协议类型、工控协议模糊测试发现未知漏洞能力有限以及提供给模型进行训练的异常样本较少的缺陷。
为实现上述目的,本发明提供了一种基于强化学习的工控协议模糊测试系统和方法,提高工控协议模糊测试的路径覆盖和漏洞挖掘的能力。具体来说,本发明所提供的基于强化学习的工控协议模糊测试系统和方法在变异操作完成后修正新测试用例的长度、校验和等字段来增加被测程序接收的可能,可以更有效地使用强化学习算法对工控协议进行模糊测试,而且采用强化学习方法,通过对变异策略的学习,基于路径覆盖引导工控协议测试用例的生成,可以挖掘已知的和未知的工控漏洞,同时保存触发了新路径的测试用例,利用这些用例根据定义的工控协议数据模型和学习的变异策略生成新的测试用例,可以获得更多更有可能触发新路径的测试用例,从而改进样本的平衡问题。
具体来说,本发明提供的一种基于强化学习的工控协议模糊测试系统,包括:
种子池,所述种子池用于存放生成测试用例的种子,所述测试用例包括初始提供的所述测试用例和测试过程中新生成的所述测试用例;
协议格式的数据模型,所述协议格式的数据模型根据待测工控协议的格式提取若干数据块,并依据功能码或操作码合并所述数据块以备后续的变异操作;
变异策略学习模块,所述变异策略学习模块采取Q学习算法,以所述数据块的第一实例,即初始提供的所述测试用例,为第一状态、以可选的变异操作为第一动作,使用神经网络建立价值网络来近似价值函数,输出为所述第一动作的Q值,所述Q值的大小代表选取的所述第一状态在采取选取的所述第一动作之后可能获得奖励的期望值;
测试用例生成模块,所述测试用例生成模块连接所述变异策略学习模块,对所述数据块的所述第一实例进行变异,生成第二实例,即新生成的所述测试用例,并用所述第二实例替换原有的所述第一实例,再将所述第二实例的第二状态反馈给所述变异策略学习模块用以更新所述价值网络的权重;
测试用例修正模块,所述测试用例修正模块连接所述测试用例生成模块,修复所述测试用例生成模块生成的所述第二实例的完整性;
程序执行检测模块,所述程序执行检测模块连接所述测试用例修正模块,检测所述测试用例在程序执行时的情况,将所述程序在执行时的回报反馈给所述变异策略学习模块,并判断是否保存生成的所述测试用例到所述种子池。
进一步地,所述程序执行检测模块包括插桩的程序、路径覆盖检测模块和心跳报文检测模块。
进一步地,所述插桩的程序是在不破坏被测试程序原有逻辑完整性的前提下,在所述被测试程序上插入若干探针;所述探针是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用;通过所述探针的执行并输出所述被测试程序的运行特征数据揭示所述被测试程序的内部行为和特征。
进一步地,通过将所述第二实例输入到所述插桩的程序中,所述路径覆盖检测模块检测所述第二实例在所述插桩的程序中的路径覆盖情况。
进一步地,所述心跳报文检测模块通过定时地发送心跳报文给所述程序来检测所述程序是否崩溃;所述心跳报文是向被测设备发送的探测报文,用来判断所述被测设备是否处于活跃状态;在模糊测试过程中,每向被测设备发送一个测试报文,就在设定的一段时间之后,向被测设备发送心跳报文,依据被测设备是否发回预期的响应报文来判断被测设备是否处于活跃状态。
进一步地,所述变异操作在选择所述第一动作时采取ε贪心策略,即在做决策时有一很小的正数ε的概率随机选择一个动作,剩下1-ε的概率选择已有的价值最大的动作;根据所述第二实例的状态、本次采取的动作以及所述程序在执行时返回的所述回报更新所述价值网络的权重。
本发明还提供一种基于强化学习的工控协议模糊测试方法,所述方法包括以下步骤:
步骤1、选择待测的工控协议,根据所述工控协议的协议格式提取数据块,并依据功能码或操作码合并所述数据块以备后续的变异操作;
步骤2、初始化种子池和变异策略学习模块;
步骤3、开始调度所述种子池,在测试刚开始的时候按顺序选择种子,在后续的测试中如果上一轮的测试用例生成新的测试用例,则以所述新的测试用例为所述种子,否则依然按顺序选择所述种子;
步骤4、提取选取的所述种子的状态,根据所述种子的功能码匹配所述数据块,并使用ε贪心策略选择所述数据块的变异策略;
步骤5、根据所述步骤4选择的所述变异策略和所述种子的所述功能码对应的数据模型,对所述种子的所述数据块的第一实例,即初始提供的所述测试用例,进行变异,生成所述数据块的第二实例,即新生成的所述测试用例,并用变异后的所述数据块的所述第二实例替换掉原先的所述第一实例;
步骤6、对所述步骤5中得到的变异后的所述第二实例进行修正,根据所述工控协议的所述协议格式修复所述第二实例的完整性;
步骤7、将所述步骤6经过修复的所述第二实例输入程序执行检测模块进行检测,检测程序执行时的情况,并将所述程序在执行时的回报反馈给所述变异策略学习模块,并判断是否保存生成的所述第二实例到所述种子池;
步骤8、重置种子,回到所述步骤3进行循环模糊测试,直到人为停止或达到设定目标。
进一步地,所述步骤7包括以下子步骤:
步骤7.1、将所述步骤6经过修复的所述第二实例输入插桩的程序中检测路径覆盖情况;
步骤7.2、在每次检测完一个所述第二实例后过设定的时长再发送心跳报文,观察所述程序运行是否发生异常;如果收到预期的响应报文,则认为没有出现异常;如果没有收到预期的所述响应报文,则认为所述第二实例出现异常,或触发新的路径,或导致程序异常;对于导致异常的所述第二实例给予奖励回报,将所述第二实例插入到所述种子池的种子集中;
步骤7.3、将所述程序在执行时的回报反馈给所述变异策略学习模块中的价值网络,输出新的Q值,并用来更新旧的Q值,得到损失函数,再使用Q学习算法对所述价值网络的权重参数进行迭代更新。
进一步地,在所述步骤2中的所述变异策略学习模块中,可以选择的变异策略有:
位反转:根据反转量和步长随机按位反转;
整数加法运算:随机加上某个随机数;
整数减法运算:随机减去某个随机数;
特殊值替换:使用预设的特殊数进行替换;
覆盖:使用随机值覆盖;
置乱:将位的顺序打乱。
进一步地,在所述步骤4中使用所述ε贪心策略选择所述数据块的变异策略过程中,一开始将ε值设置的偏大一点,对所有可能的变异策略进行探索,然后随着测试的进行逐渐减小ε值到一个预先设定的值,使在大概率选择最可能获得奖励的变异策略的情况下对其他变异策略有一定的探索能力。
本发明提供的一种基于强化学习的工控协议模糊测试系统和方法至少具有以下技术效果:
传统的对于工控协议的模糊测试方法是基于随机生成的方式,具有较强的盲目性且测试用例冗余度大,会产生重复或相似的测试用例,不能解决测试用例路径重复的问题。而且,大多数时候只是对多个元素进行数据的随机生成,缺乏对关联字段的针对性。除此以外,基于机器学习的模糊测试方法存在使用已知的工控漏洞训练神经网络以及正负样本不均衡等问题,会使挖掘未知工控漏洞能力有限、训练模型过拟合误导漏洞的判断。
因此,本发明提供的一种基于强化学习的工控协议模糊测试系统和方法所提出的根据工控协议不同类型的数据包可能存在相似的数据块的特点,针对功能码或操作码字段构建数据块匹配的数据模型,保存触发了新路径的测试用例,可以更有效地使用强化学习算法对工控协议进行模糊测试,提高路径覆盖和漏洞挖掘的能力。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是本发明的一个较佳实施例提供的模糊测试的强化学习建模方式;
图2是本发明的一个较佳实施例提供的模糊测试的结构示意图。
具体实施方式
以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
如图1所示,本发明提供的一种基于强化学习的工控协议模糊测试系统和方法提出收集对应不同功能码或操作码数据模型中的数据块,并以向量的形式匹配每一模型对应的数据块,利用路径覆盖和程序异常情况作为强化学习的回报引导数据块模糊测试的变异策略,然后根据协议格式生成并修正新的测试用例用于模糊测试。除此之外,保存触发了新的路径以及引起程序异常的测试用例,将这个有价值的测试用例添加到种子池并且作为下一轮模糊测试的种子,可以有更大的概率触发新的路径和漏洞。
如图2所示,为本发明提供的一种基于强化学习的工控协议模糊测试系统,包括:
种子池,用于存放生成测试用例的种子。针对工控协议模糊测试的测试用例包括初始提供的相关协议的请求报文和测试过程中新生成的有价值的测试用例。
协议格式的数据模型,根据待测工控协议的格式提取若干数据块,并依据功能码或操作码合并数据块以备后续的变异操作。以向量的形式表示这些数据块,并对每个模型和其包含的数据块进行匹配。比如:对于Modbus协议,针对其常用的功能码01H、02H、03H、04H、05H、06H、10H,可以将包括起始地址、数量、输出地址、输出值、寄存器要写的个数和寄存器要写的值的数据块以向量的形式表示。对于功能码01H即读线圈状态,在上述向量中该功能码匹配的数据块只包括寄存器起始地址和要读寄存器的数量,故该功能码只需要选择测试用例的起始地址和寄存器数量这两个数据块的变异操作。
变异策略学习模块,采取Q学习算法,以数据块的第一实例,即初始提供的测试用例,为第一状态、以可选的变异操作为第一动作,使用神经网络建立价值网络来近似价值函数,输入为功能码和二进制表示的状态,输出为第一动作的Q值,Q值的大小代表选取的第一状态在采取选取的第一动作之后可能获得奖励的期望值。为了保持一定的探索能力,变异操作不一定会选择Q值最大的那一个,而是会采取ε贪心策略,即在做决策时有一很小的正数ε的概率随机选择一个动作,剩下1-ε的概率选择已有的价值最大的动作。价值网络根据变异后测试用例的状态、本次采取的动作以及程序执行返回的回报更新网络权重。
测试用例生成模块,连接变异策略学习模块,对数据块的第一实例进行变异,生成第二实例,即新生成的测试用例,并用第二实例替换原有的第一实例,再将第二实例的第二状态反馈给变异策略学习模块用以更新价值网络的权重。
测试用例修正模块,连接测试用例生成模块,修复测试用例生成模块生成的第二实例的完整性,即用来建立协议报文的完整性约束。由于在测试用例生成模块中通过替换旧的数据块实例生成的新的测试用例可能不符合原先的测试用例的大小、长度、校验和等字段,因此测试用例的完整性会受到损害,需要重新建立协议报文的完整性,来得到更可能被程序接收并执行的测试用例。
程序执行检测模块,程序执行检测模块连接测试用例修正模块,检测测试用例在程序执行时的情况,将程序在执行时的回报反馈给变异策略学习模块,并判断是否保存生成的测试用例到种子池。
程序执行检测模块包括插桩的程序、路径覆盖检测模块和心跳报文检测模块。
插桩的程序是在不破坏被测试程序原有逻辑完整性的前提下,在被测试程序上插入若干探针。程序插桩是借助往被测程序中插入操作,来实现测试目的的方法。探针是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用;通过探针的执行并输出被测试程序的运行特征数据揭示被测试程序的内部行为和特征。
通过将第二实例输入到插桩的程序中,路径覆盖检测模块检测第二实例在插桩的程序中的路径覆盖情况。
心跳报文检测模块通过定时地发送心跳报文给程序来检测程序是否崩溃;心跳报文是向被测设备发送的探测报文,用来判断被测设备是否处于活跃状态;在模糊测试过程中,每向被测设备发送一个测试报文,就在设定的一段时间之后,向被测设备发送心跳报文,依据被测设备是否发回预期的响应报文来判断被测设备是否处于活跃状态。
本发明还提供一种基于强化学习的工控协议模糊测试方法,所采用的技术方案具体为:首先,根据工控协议格式提取待测数据模型的数据块,并将有相似功能的数据块合并为同一种,再以向量的形式表示这些数据块,并对每个模型和其包含的数据块进行匹配。然后,对种子池和变异策略学习模块进行初始化。初始化完成后开始调度种子池,提取选择的种子的状态,根据该种子的功能码匹配数据块向量,并使用ε贪心策略选择数据块的变异策略。根据变异策略对种子的数据块实例进行变异,并修正协议报文的完整性,得到新的待测试的测试用例。再将新生成的测试用例输入插桩后的程序中检测程序执行情况,并在每次测试一个用例后过一段时间发送心跳报文观察程序运行是否发生异常。最后,判断是否要保存该生成的测试用例,以及使用反馈的回报、状态和动作更新价值网络权重,并重置新的种子。
该方法包括以下步骤:
步骤1、选择待测的工控协议,根据工控协议的协议格式提取要测试的数据模型的数据块,并依据功能码或操作码合并数据块,再以向量的形式表示这些数据块,并对每个数据模型和其包含的数据块进行匹配,以备后续的变异操作。
步骤2、初始化种子池和变异策略学习模块,即选取协议正常通信报文加入初始的种子池、价值网络的权重可采取随机初始化也可以根据经验来设置。对于数据块实例,可以选择的变异策略有:
位反转:根据反转量和步长随机按位反转;
整数加法运算:随机加上某个随机数;
整数减法运算:随机减去某个随机数;
特殊值替换:使用一些预设的特殊数进行替换,通常是可能会造成溢出的数;
覆盖:使用随机值覆盖;
置乱:将位的顺序打乱。
步骤3、开始调度种子池,在测试刚开始的时候按顺序选择种子,在后续的测试中如果上一轮的测试用例生成新的测试用例,则以新的测试用例为种子,否则依然按顺序选择种子。
步骤4、提取选取的种子的状态,根据种子的功能码匹配数据块,并使用ε贪心策略选择数据块的变异策略;一开始将ε值设置的偏大一点,对所有可能的变异策略进行探索,然后随着测试的进行逐渐减小ε值到一个预先设定的值,使在大概率选择最可能获得奖励的变异策略的情况下对其他变异策略有一定的探索能力。
步骤5、根据步骤4选择的变异策略和种子的功能码对应的数据模型,对种子的数据块的第一实例,即初始提供的测试用例,进行变异,生成数据块的第二实例,即新生成的测试用例,并用变异后的数据块的第二实例替换掉原先的第一实例。
步骤6、对步骤5中得到的变异后的第二实例进行修正,根据工控协议的协议格式修改该测试用例的诸如长度、校验和等字段,修正测试用例关于工控协议报文的完整性,得到新的待测试的测试用例,从而修复第二实例的完整性。
步骤7、将步骤6经过修复的第二实例输入程序执行检测模块进行检测,检测程序执行时的情况,并将程序在执行时的回报反馈给变异策略学习模块,并判断是否保存生成的第二实例到种子池。
步骤7包括以下子步骤:
步骤7.1、将步骤6经过修复的第二实例输入插桩的程序中检测路径覆盖情况;
步骤7.2、在每次检测完一个第二实例后过设定的时长再发送心跳报文,观察程序运行是否发生异常;如果收到预期的响应报文,则认为没有出现异常;如果没有收到预期的响应报文,则认为第二实例出现异常,或触发新的路径,或导致程序异常;对于导致异常的第二实例给予奖励回报,将第二实例插入到种子池的种子集中;
步骤7.3、将程序在执行时的回报反馈给变异策略学习模块中的价值网络,输出新的Q值,并用来更新旧的Q值,得到损失函数,再使用Q学习算法对价值网络的权重参数进行迭代更新。
步骤8、重置种子,回到步骤3进行循环模糊测试,直到人为停止或达到设定目标。
本发明提供的一种基于强化学习的工控协议模糊测试系统和方法利用工控协议不同类型的数据包可能存在相似的数据块这一特点,针对待测功能码或操作码的数据模型合并相似功能的数据块,以向量的形式表示所有经过合并后的数据块,并对每个模型和其包含的数据块进行匹配,并提出在使用强化学习方法对工控协议的模糊测试中保存有价值的测试用例到种子池里,并在对种子池的调度时优先调用上一轮测试触发了新的路径或导致程序异常的测试用例。本发明所提供的技术方案突出实现了将强化学习应用在对工控协议的模糊测试中,可以有效地提高路径覆盖和漏洞挖掘的能力。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (10)
1.一种基于强化学习的工控协议模糊测试系统,其特征在于,包括:
种子池,所述种子池用于存放生成测试用例的种子,所述测试用例包括初始提供的所述测试用例和测试过程中新生成的所述测试用例;
协议格式的数据模型,所述协议格式的数据模型根据待测工控协议的格式提取若干数据块,并依据功能码或操作码合并所述数据块以备后续的变异操作;
变异策略学习模块,所述变异策略学习模块采取Q学习算法,以所述数据块的第一实例,即初始提供的所述测试用例,为第一状态、以可选的变异操作为第一动作,使用神经网络建立价值网络来近似价值函数,输出为所述第一动作的Q值,所述Q值的大小代表选取的所述第一状态在采取选取的所述第一动作之后可能获得奖励的期望值;
测试用例生成模块,所述测试用例生成模块连接所述变异策略学习模块,对所述数据块的所述第一实例进行变异,生成第二实例,即新生成的所述测试用例,并用所述第二实例替换原有的所述第一实例,再将所述第二实例的第二状态反馈给所述变异策略学习模块用以更新所述价值网络的权重;
测试用例修正模块,所述测试用例修正模块连接所述测试用例生成模块,修复所述测试用例生成模块生成的所述第二实例的完整性;
程序执行检测模块,所述程序执行检测模块连接所述测试用例修正模块,检测所述测试用例在程序执行时的情况,将所述程序在执行时的回报反馈给所述变异策略学习模块,并判断是否保存生成的所述测试用例到所述种子池。
2.如权利要求1所述的基于强化学习的工控协议模糊测试系统,其特征在于,所述程序执行检测模块包括插桩的程序、路径覆盖检测模块和心跳报文检测模块。
3.如权利要求2所述的基于强化学习的工控协议模糊测试系统,其特征在于,所述插桩的程序是在不破坏被测试程序原有逻辑完整性的前提下,在所述被测试程序上插入若干探针;所述探针是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用;通过所述探针的执行并输出所述被测试程序的运行特征数据揭示所述被测试程序的内部行为和特征。
4.如权利要求3所述的基于强化学习的工控协议模糊测试系统,其特征在于,通过将所述第二实例输入到所述插桩的程序中,所述路径覆盖检测模块检测所述第二实例在所述插桩的程序中的路径覆盖情况。
5.如权利要求2所述的基于强化学习的工控协议模糊测试系统,其特征在于,所述心跳报文检测模块通过定时地发送心跳报文给所述程序来检测所述程序是否崩溃;所述心跳报文是向被测设备发送的探测报文,用来判断所述被测设备是否处于活跃状态;在模糊测试过程中,每向被测设备发送一个测试报文,就在设定的一段时间之后,向被测设备发送心跳报文,依据被测设备是否发回预期的响应报文来判断被测设备是否处于活跃状态。
6.如权利要求1所述的基于强化学习的工控协议模糊测试系统,其特征在于,所述变异操作在选择所述第一动作时采取ε贪心策略,即在做决策时有一很小的正数ε的概率随机选择一个动作,剩下1-ε的概率选择已有的价值最大的动作;根据所述第二实例的状态、本次采取的动作以及所述程序在执行时返回的所述回报更新所述价值网络的权重。
7.一种基于强化学习的工控协议模糊测试方法,使用如权利要求1-6任一项所述的基于强化学习的工控协议模糊测试系统,其特征在于,所述方法包括以下步骤:
步骤1、选择待测的工控协议,根据所述工控协议的协议格式提取数据块,并依据功能码或操作码合并所述数据块以备后续的变异操作;
步骤2、初始化种子池和变异策略学习模块;
步骤3、开始调度所述种子池,在测试刚开始的时候按顺序选择种子,在后续的测试中如果上一轮的测试用例生成新的测试用例,则以所述新的测试用例为所述种子,否则依然按顺序选择所述种子;
步骤4、提取选取的所述种子的状态,根据所述种子的功能码匹配所述数据块,并使用ε贪心策略选择所述数据块的变异策略;
步骤5、根据所述步骤4选择的所述变异策略和所述种子的所述功能码对应的数据模型,对所述种子的所述数据块的第一实例,即初始提供的所述测试用例,进行变异,生成所述数据块的第二实例,即新生成的所述测试用例,并用变异后的所述数据块的所述第二实例替换掉原先的所述第一实例;
步骤6、对所述步骤5中得到的变异后的所述第二实例进行修正,根据所述工控协议的所述协议格式修复所述第二实例的完整性;
步骤7、将所述步骤6经过修复的所述第二实例输入程序执行检测模块进行检测,检测程序执行时的情况,并将所述程序在执行时的回报反馈给所述变异策略学习模块,并判断是否保存生成的所述第二实例到所述种子池;
步骤8、重置种子,回到所述步骤3进行循环模糊测试,直到人为停止或达到设定目标。
8.如权利要求7所述的基于强化学习的工控协议模糊测试方法,其特征在于,所述步骤7包括以下子步骤:
步骤7.1、将所述步骤6经过修复的所述第二实例输入插桩的程序中检测路径覆盖情况;
步骤7.2、在每次检测完一个所述第二实例后过设定的时长再发送心跳报文,观察所述程序运行是否发生异常;如果收到预期的响应报文,则认为没有出现异常;如果没有收到预期的所述响应报文,则认为所述第二实例出现异常,或触发新的路径,或导致程序异常;对于导致异常的所述第二实例给予奖励回报,将所述第二实例插入到所述种子池的种子集中;
步骤7.3、将所述程序在执行时的回报反馈给所述变异策略学习模块中的价值网络,输出新的Q值,并用来更新旧的Q值,得到损失函数,再使用Q学习算法对所述价值网络的权重参数进行迭代更新。
9.如权利要求7所述的基于强化学习的工控协议模糊测试方法,其特征在于,在所述步骤2中的所述变异策略学习模块中,所述变异策略为:
位反转:根据反转量和步长随机按位反转;或者,
整数加法运算:随机加上某个随机数;或者,
整数减法运算:随机减去某个随机数;或者,
特殊值替换:使用预设的特殊数进行替换;或者,
覆盖:使用随机值覆盖;或者,
置乱:将位的顺序打乱。
10.如权利要求7所述的基于强化学习的工控协议模糊测试方法,其特征在于,在所述步骤4中使用所述ε贪心策略选择所述数据块的变异策略过程中,一开始将ε值设置的偏大一点,对所有可能的变异策略进行探索,然后随着测试的进行逐渐减小ε值到一个预先设定的值,使在大概率选择最可能获得奖励的变异策略的情况下对其他变异策略有一定的探索能力。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210517682.8A CN114661621B (zh) | 2022-05-13 | 2022-05-13 | 一种基于强化学习的工控协议模糊测试系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210517682.8A CN114661621B (zh) | 2022-05-13 | 2022-05-13 | 一种基于强化学习的工控协议模糊测试系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114661621A true CN114661621A (zh) | 2022-06-24 |
CN114661621B CN114661621B (zh) | 2022-08-23 |
Family
ID=82036296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210517682.8A Active CN114661621B (zh) | 2022-05-13 | 2022-05-13 | 一种基于强化学习的工控协议模糊测试系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114661621B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115550230A (zh) * | 2022-11-24 | 2022-12-30 | 博智安全科技股份有限公司 | 一种基于遗传算法的未知工控协议模糊测试方法及系统 |
CN116126734A (zh) * | 2023-04-04 | 2023-05-16 | 中南大学 | 针对操作系统的内核模糊测试方法及防护方法 |
CN116303082A (zh) * | 2023-04-04 | 2023-06-23 | 中南大学 | 一种操作系统内核模糊测试种子调度与评估方法 |
CN117435506A (zh) * | 2023-12-15 | 2024-01-23 | 中兴通讯股份有限公司 | 模糊测试方法、电子设备及计算机可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105763392A (zh) * | 2016-02-19 | 2016-07-13 | 中国人民解放军理工大学 | 一种基于协议状态的工控协议模糊测试方法 |
CN110008710A (zh) * | 2019-04-15 | 2019-07-12 | 上海交通大学 | 基于深度强化学习和程序路径插桩的漏洞检测方法 |
CN110175120A (zh) * | 2019-05-20 | 2019-08-27 | 北京理工大学 | 一种基于强化学习的模糊测试用例自适应变异方法和装置 |
US20210240601A1 (en) * | 2020-01-31 | 2021-08-05 | Raytheon Company | System and method for fuzzing test orchestration using reinforcement learning |
CN113392402A (zh) * | 2021-05-24 | 2021-09-14 | 国网湖北省电力有限公司电力科学研究院 | 一种基于模糊测试的电力物联网协议漏洞检测系统及方法 |
CN113886225A (zh) * | 2021-09-18 | 2022-01-04 | 国网河南省电力公司电力科学研究院 | 一种面向未知工控协议的模糊测试系统和方法 |
CN114077742A (zh) * | 2021-11-02 | 2022-02-22 | 清华大学 | 软件漏洞智能挖掘方法和装置 |
CN114138671A (zh) * | 2021-12-13 | 2022-03-04 | 北京邮电大学 | 一种协议的测试方法、装置、电子设备及存储介质 |
CN114356778A (zh) * | 2022-01-10 | 2022-04-15 | 北京航空航天大学 | 一种基于覆盖引导模糊测试的深度强化学习软件测试方法 |
-
2022
- 2022-05-13 CN CN202210517682.8A patent/CN114661621B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105763392A (zh) * | 2016-02-19 | 2016-07-13 | 中国人民解放军理工大学 | 一种基于协议状态的工控协议模糊测试方法 |
CN110008710A (zh) * | 2019-04-15 | 2019-07-12 | 上海交通大学 | 基于深度强化学习和程序路径插桩的漏洞检测方法 |
CN110175120A (zh) * | 2019-05-20 | 2019-08-27 | 北京理工大学 | 一种基于强化学习的模糊测试用例自适应变异方法和装置 |
US20210240601A1 (en) * | 2020-01-31 | 2021-08-05 | Raytheon Company | System and method for fuzzing test orchestration using reinforcement learning |
CN113392402A (zh) * | 2021-05-24 | 2021-09-14 | 国网湖北省电力有限公司电力科学研究院 | 一种基于模糊测试的电力物联网协议漏洞检测系统及方法 |
CN113886225A (zh) * | 2021-09-18 | 2022-01-04 | 国网河南省电力公司电力科学研究院 | 一种面向未知工控协议的模糊测试系统和方法 |
CN114077742A (zh) * | 2021-11-02 | 2022-02-22 | 清华大学 | 软件漏洞智能挖掘方法和装置 |
CN114138671A (zh) * | 2021-12-13 | 2022-03-04 | 北京邮电大学 | 一种协议的测试方法、装置、电子设备及存储介质 |
CN114356778A (zh) * | 2022-01-10 | 2022-04-15 | 北京航空航天大学 | 一种基于覆盖引导模糊测试的深度强化学习软件测试方法 |
Non-Patent Citations (5)
Title |
---|
KONSTANTIN BÖTTINGER; PATRICE GODEFROID; RISHABH SINGH: "Deep Reinforcement Fuzzing", 《IEEE XPLORE》 * |
王晓红等: "基于深度强化学习的图像去模糊方法", 《包装工程》 * |
王赞等: "深度神经网络测试研究综述", 《软件学报》 * |
荆琛,傅晓彤,董伟,赵云飞: "基于Q-学习算法的有状态网络协议模糊测试方法研究", 《电子技术应用》 * |
荆琛: "基于强化学习的工控协议模糊测试方法研究", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115550230A (zh) * | 2022-11-24 | 2022-12-30 | 博智安全科技股份有限公司 | 一种基于遗传算法的未知工控协议模糊测试方法及系统 |
CN116126734A (zh) * | 2023-04-04 | 2023-05-16 | 中南大学 | 针对操作系统的内核模糊测试方法及防护方法 |
CN116303082A (zh) * | 2023-04-04 | 2023-06-23 | 中南大学 | 一种操作系统内核模糊测试种子调度与评估方法 |
CN116303082B (zh) * | 2023-04-04 | 2023-12-19 | 中南大学 | 一种操作系统内核模糊测试种子调度与评估方法 |
CN117435506A (zh) * | 2023-12-15 | 2024-01-23 | 中兴通讯股份有限公司 | 模糊测试方法、电子设备及计算机可读存储介质 |
CN117435506B (zh) * | 2023-12-15 | 2024-04-16 | 中兴通讯股份有限公司 | 模糊测试方法、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114661621B (zh) | 2022-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114661621B (zh) | 一种基于强化学习的工控协议模糊测试系统和方法 | |
CN110399730B (zh) | 智能合约漏洞的检查方法、系统及介质 | |
CN112104525B (zh) | 基于序列生成对抗网络的dnp3协议模糊测试方法 | |
CN110765000B (zh) | 一种程序测试方法及装置 | |
CN113836009A (zh) | 一种基于强化学习的智能合约模糊测试方法及系统 | |
CN111327490B (zh) | 区块链的拜占庭容错检测方法及相关装置 | |
CN113886225B (zh) | 一种面向未知工控协议的模糊测试系统和方法 | |
Camino et al. | A data science approach for detecting honeypots in ethereum | |
McCaffrey | Generation of pairwise test sets using a genetic algorithm | |
Ronca et al. | Markov abstractions for PAC reinforcement learning in non-markov decision processes | |
CN115391787A (zh) | 一种基于生成对抗网络的afl种子优化方法及系统 | |
McCaffrey | An empirical study of pairwise test set generation using a genetic algorithm | |
Sun et al. | MaskFuzzer: A MaskGAN-based industrial control protocol fuzz testing framework | |
Zhang et al. | Automated EFSM-based test case generation with scatter search | |
CN115795483A (zh) | 一种基于人工鱼群算法的软件漏洞检测方法 | |
CN115114166A (zh) | 一种以太坊智能合约安全测试方法 | |
CN111858221B (zh) | 基于神经网络的高效指令测试序列生成方法及装置 | |
CN117714351A (zh) | 一种网络协议模糊测试方法、系统、设备及介质 | |
CN112579393A (zh) | 物联网终端的自检方法、装置、终端及存储介质 | |
CN115955329B (zh) | 一种网络安全防护方法、终端及存储介质 | |
CN117688571A (zh) | 一种基于模糊测试的电力终端漏洞检测方法及系统 | |
CN117061236A (zh) | 一种网络协议的模糊测试方法 | |
CN117688570A (zh) | 一种面向堆内存资源耗尽的软件漏洞挖掘方法 | |
CN117375925A (zh) | 一种入侵检测模型的构建方法、入侵检测方法及相关装置 | |
CN116861434A (zh) | 漏洞检测方法、装置、计算机设备、存储介质和程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |