【CN110532162A】一种基于协议状态机的模糊测试脚本及测试引擎【专利】
一种模糊测试方法及计算机可读存储介质[发明专利]
专利名称:一种模糊测试方法及计算机可读存储介质专利类型:发明专利
发明人:肖喜,张锟鹏,夏树涛,郑海涛,江勇,陆孺牛
申请号:CN202210020119.X
申请日:20220110
公开号:CN114444084A
公开日:
20220506
专利内容由知识产权出版社提供
摘要:本发明提供一种模糊测试方法及计算机可读存储介质,方法包括:生成突变输入时包括如下步骤:S1:对种子队列中每个种子执行字节分析以识别与验证检查相关的字节,所述字节分析包括对所述种子中所有所述字节尝试突变,根据所述突变输入的路径变化情况得到所述字节的分数值;S2:根据所述字节的所述分数值确定是否对所述字节进行突变。
本发明使用一种新颖的轻量级突变策略来增加生成合法突变输入的可能性;进一步地,在相同的时间内实现更大的代码覆盖率,提高模糊测试效率。
申请人:清华大学深圳国际研究生院
地址:518055 广东省深圳市南山区西丽街道深圳大学城清华校区A栋二楼
国籍:CN
更多信息请下载全文后查看。
一种适用于工控私有协议的模糊测试用例生成方法[发明专利]
专利名称:一种适用于工控私有协议的模糊测试用例生成方法专利类型:发明专利
发明人:丁旭阳,谢盈,张帅,游新童,丁晓聪,张小松
申请号:CN201910898735.3
申请日:20190923
公开号:CN110597734A
公开日:
20191220
专利内容由知识产权出版社提供
摘要:本发明提供了一种适用于工控私有协议的模糊测试用例生成方法,该方法包括以下5个步骤:数据预处理、特征生成和选择、协议数据帧聚类、带变异策略的格式提取以及模糊测试用例生成。
该方法根据工控私有协议中各偏移位置的取值变化特征推断字段可能的类型,并进一步生成模糊测试的变异策略,从而降低工控私有协议的解析的代价,同时能够对工控私有协议进行针对性的变异,提高测试用例的生成效率。
申请人:电子科技大学
地址:611731 四川省成都市高新区(西区)西源大道2006号
国籍:CN
代理机构:电子科技大学专利中心
代理人:周刘英
更多信息请下载全文后查看。
基于工控私有协议的模糊测试方法[发明专利]
(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号 (43)申请公布日 (21)申请号 201710515723.9(22)申请日 2017.06.29(71)申请人 北京工业大学地址 100124 北京市朝阳区平乐园100号(72)发明人 赖英旭 杨凯翔 刘岩 蔡晓田 刘静 庄俊玺 (74)专利代理机构 北京思海天达知识产权代理有限公司 11203代理人 刘萍(51)Int.Cl.H04L 12/24(2006.01)H04L 12/26(2006.01)(54)发明名称基于工控私有协议的模糊测试方法(57)摘要基于工控私有协议的模糊测试方法,通过在正常工控网络环境中捕获的私有协议数据流量,通过私有协议树构造算法,构造一个针对该私有协议的协议树,对请求报文和响应报文进行有效的分类。
学习基本的协议信息,通过统计个体类的数据序列,使用概率统计,长度域识别算法,Apriori关联规则算法和Needleman/Wunsch双序列比对算法,对协议特征进行学习。
使用变异规则对不同协议特征进行变异,生成测试用例。
在测试的过程中监控与被测设备的连接情况,使用请求与响应特征检测被测设备响应数据情况。
该方法能够解决针对工控私有协议模糊测试的效率问题,提高测试用例的有效性,包括数据预处理模块,协议学习模块,模糊测试模块,异常报警模块。
权利要求书8页 说明书10页 附图4页CN 107241226 A 2017.10.10C N 107241226A1.基于工控私有协议的模糊测试方法,其特征在于,该方法包括数据预处理模块、协议学习模块、模糊测试模块、异常报警模块;数据预处理模块;此模块作用是采集样本数据包,将样本数据包读取到程序内存中;此模块由两个功能子模块构成;功能一,样本采集模块,在程序运行阶段,在主从通信链路之间使用镜像端口的方式采集一个工业流程周期内的双向数据包,保存为pcap文件,作为样本集,放置在程序根目录下;功能二,样本读取模块,此功能通过利用对WinPcap封装好的SharpPcap,使用用于文件数据捕获的ICaptureDevice接口,使用TcpDump规则对样本集内的数据包进行过滤,如果不属于需要进行分析的数据报文,则将其丢弃;将需要分析的协议报文通过请求与响应对应的形式保存到程序内部的请求响应队列中,再将所有请求保存到请求队列中;两个缓存队列提交给协议学习模块使用;协议学习模块;此模块的作用是根据数据预处理模块提供的缓存队列,利用学习算法,首先将请求队列中的协议报文进行分类,然后针对每类报文进行请求字段特征的学习,最后对请求与响应之间字段特征的关系进行学习,此模块由两个功能子模块构成;功能一,报文分类模块,首先获取数据处理模块中的请求响应队列和请求队列,根据请求队列,学习统计出请求数据包样本的可变域和不可变域,最大报文长度,最小报文长度,可变域中该字节的变化率,称这些属性为基本属性,通过请求响应队列和请求队列以及统计学习到的上述基本属性,实例化一个节点作为根节点;通常,工控协议存在控制命令标识符,命令标识符往往在样本中属于可变域并且变化率低,并且在协议字段头部的位置,通过可变域的变化率寻找变化率最小,并且前一个字节不为0x00的第一个字节索引为划分依据字节,根据此字节的不同将两个缓存队列进行划分,并且分别统计上述的基本属性,根据统计信息实例化多个节点作为根节点的叶子节点;在具有叶子节点的情况下,需要判断叶子节点是否需要继续划分,统计一个节点中的最小变化率索引的集合,判断叶子节点是否需要继续划分的依据为,一个节点的子节点集合中,如果子节点的最小变化率索引的集合有交集,则该子节点集合中所有的节点都应划分,否则停止划分;如果满足划分的条件,则应该确定使用哪一个字节进行划分,确定使用哪一个字节进行划分的依据为,根据一个节点,获取此节点中变化率最小,并且前一个字节不为0x00的字节,查看该字节是否存在于该节点的兄弟节点的不可变域中,如果存在,则该节点和其他兄弟节点各自按照其变化率最小且前一个字节不为0x00的字节进行划分,否则统计每个子节点其变化率最小且前一个字节不为0x00的字节,取出该字节在各个兄弟节点中索引最小的索引,每个子节点依据此字节进行划分;划分出来的子节点继续根据是否划分的条件和划分的节点进行操作,最多不超过4层,直到所有节点不可再划分为止;功能二,协议学习模块,分类完毕后,对每个叶子节点,首先划分该节点的可变域和不可变域,统计该节点可变域的样本频率,然后,收集属于不可变域且前一个字节为0x00,或属于可变域的节点作为长度域的初始化空间,以向量集的形式,统计长度域最小的可能范围;接着使用Apriori算法学习协议字段间的关联规则,此关联规则的学习共有两个步骤,第一,寻找数据包间的单独项,统计出现的次数形成初始候选集,然后根据最小支持度进行裁剪,得到初始频繁集,通过频繁集的自连接生成下一轮的候选集,直到进行裁剪之后频繁集内个体为零为止,得到最终的频繁集;第二,根据频繁集,首先统计频繁集中所有出现的子集,统计每个子集出现的次数;然后,根据子集的支持度,使用条件概率的方法,计算不相交的两个子集间的关联概率,以最小置信度进行裁剪,得出该叶子节点的强关联规则;学习的最后,需要使用请求响应队列,学习请求与响应的对应的特征关系,该方法有三个步骤,步骤一,针对请求响应队列中的一对请求响应数据,以字节为单位,使用双序列比对算法中的Needleman/Wunsch算法,将请求的个数加一作为行数,响应的个数加一作为列数,构造比对矩阵,使用动态规划的思想和填充规则,将矩阵内部进行填充,步骤二,从矩阵的右下角开始,使用回溯规则进行规则,将相等的字节索引进行记录,获得一对请求与响应间的比对序列,步骤三,将该节点下的请求响应数据依次进行步骤一、二的操作,最后对所有数据所得的结果求交集,得出最终的请求响应特征比对结果;将学习到的可变域与不可变域,可变域的样本频率,长度域向量集,关联规则、请求响应特征比对结果依附于相关的叶子节点上;模糊测试模块;此模块的作用是根据协议学习模块学习的协议特征,构造符合协议特征的应用报文并且在协议特征的基础上进行变异操作,生成模糊测试用例,之后通过数据通信模块将测试用例发生给被测对象;此模块由两个功能子模块构成,功能一,用例生成模块,以叶子节点作为处理单元,以字节作为变化单位;首先,通过该节点的最后一个不可变域的索引、样本最大长度、样本最小长度,确定样本的data数据域,以随机的方式生成data数据域的长度,再进行随机填充;然后,统计该节点的不可变域和该节点的父节点的不可变域的差集,将该集合作为第一步变异的空间,随机选择字节进行随机填充,将所有不可变域存入一个记录队列;接着,以Apriori关联规则的结果概率,选择关联规则的条件或结果,使用可变域的变异规则,进行随机变异,再次使用可变域的变异规则,将识别出的长度域进行随机变异,把关联规则中的条件结果和长度域均加入记录队列;最后,从第一个字节向后遍历非data数据域的部分,如果该字节不存在于记录队列意味着该字节还未生成,使用可变域的变异规则,生成该可变域,最终将生成的各种域进行拼接,形成一个测试用例;功能二,数据通信模块,将生成的测试用例通过Socket异步通信的方式,首先建立连接,然后send测试数据,接着监听响应数据,receive响应信息,将响应数据和对应的测试数据进行记录,最后断开连接,进行下一个测试用例的生成和发送;异常报警模块,此模块的作用是在测试用例发送的同时,实时对接收到的响应以及被测对象的状态进行监控,如果发生异常,通过报警记录的功能对信息记录;该模块由两个功能子模块构成;功能一,异常监控模块,在发送测试用例,接收到测试用例的响应数据之后,通过学习的请求与响应之间的特征关系,对记录的请求与响应进行匹配,查看是否符合该叶子节点下的多序列比对特征,如果不匹配,则进行报警操作;在发送测试用例之前,检测Socket的TCP是否连接成功,如果不成功,则进行报警操作;功能二,报警记录模块,该模块的作用是将报警的信息进行记录显示,需要将报警进行记录到数据库中。
一种工控系统协议模糊测试的脚本管理方法[发明专利]
专利名称:一种工控系统协议模糊测试的脚本管理方法专利类型:发明专利
发明人:王进,吴涛,何跃鹰,摆亮,邹潇湘,郭涛,李明柱
申请号:CN201811577595.1
申请日:20181220
公开号:CN109634870A
公开日:
20190416
专利内容由知识产权出版社提供
摘要:本发明涉及一种工控系统协议模糊测试的脚本管理方法,采用如下步骤:步骤一:对模糊测试中的脚本采用分层管理的方式,形成六个层次的树式结构;上述六个层次为:行业层、协议层、脚本层、PDU层、结构层、字段层;它采用分层管理方式来架构测试脚本以及测试用例,且构建综合协议测试畸形数据体系,它能够减少测试脚本的数量,通过模糊引擎自动按照数据集合生成相应的测试用例,实现了测试的自动化,缩短测试时间,提高模糊测试效率。
申请人:国家计算机网络与信息安全管理中心
地址:100029 北京市朝阳区裕民路甲3号
国籍:CN
代理机构:成都明涛智创专利代理有限公司
代理人:丁国勇
更多信息请下载全文后查看。
一种面向物联网可信执行环境的模糊测试方法和系统[发明专利]
专利名称:一种面向物联网可信执行环境的模糊测试方法和系统
专利类型:发明专利
发明人:纪守领,王琴应,张旭鸿,常博宇,赵彬彬,吕晨阳,邓水光
申请号:CN202210291113.6
申请日:20220323
公开号:CN114610640A
公开日:
20220610
专利内容由知识产权出版社提供
摘要:本发明公开了一种面向物联网可信执行环境的模糊测试方法和系统,包括:根据目标物联网可信执行环境文档使用的内核函数与实体,构建测试模板文件;收集可信执行环境系统内核接受的合法系统调用序列作为种子文件;对模糊测试工具生成与变异阶段产生的测试样例进行翻译,产生有效载荷;设计用户端应用与可信应用完成有效载荷的转发、翻译与执行;使用硬件仿真器高效地完成数据写入与可信执行环境内核执行状态信息获取;利用获取的反馈信息进一步指导模糊测试高效进行。
该方法和系统使得模糊测试工具能够对目标物联网可信执行环境内核进行高效、可扩展的安全性测试。
申请人:浙江大学
地址:310058 浙江省杭州市西湖区余杭塘路866号
国籍:CN
代理机构:杭州天勤知识产权代理有限公司
代理人:曹兆霞
更多信息请下载全文后查看。
基于网络协议的模糊测试方法、装置和计算机可读介质[发明专利]
专利名称:基于网络协议的模糊测试方法、装置和计算机可读介质
专利类型:发明专利
发明人:王哲
申请号:CN201910150143.3
申请日:20190228
公开号:CN111628900A
公开日:
20200904
专利内容由知识产权出版社提供
摘要:本公开涉及模糊测试技术,尤其涉及一种基于网络协议的模糊测试方法、装置和计算机可读介质,以优化测试过程。
本发明实施例提供的模糊测试方法包括:模糊测试工具(20)接收来自客户端(10)且欲发送至服务器(30)的报文,其中报文符合一种网络协议;对报文进行变异;将变异后的报文发送至服务器(30);获取变异后服务器(30)和客户端(10)之间传送的符合网络协议的至少一个第二报文;基于至少一个第二报文判断是否有新的网络协议流程被触发;若有新的网络协议流程被触发,则对应于新的网络协议流程生成变异组;在变异组中记录所进行的变异的信息。
申请人:西门子股份公司
地址:德国慕尼黑
国籍:DE
代理机构:北京康信知识产权代理有限责任公司
代理人:赵冬梅
更多信息请下载全文后查看。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201910201771.X
(22)申请日 2019.03.18
(71)申请人 信联科技(南京)有限公司
地址 210000 江苏省南京市江宁经济技术
开发区东吉大道1号
(72)发明人 郭涛 李明柱 叶青
(51)Int.Cl.
G06F 11/36(2006.01)
H04L 12/26(2006.01)
(54)发明名称
一种基于协议状态机的模糊测试脚本及测
试引擎
(57)摘要
本发明公开了一种基于协议状态机的模糊
测试脚本及测试引擎,能够实现快速定义状态机
模型,并且测试平台能够自动识别状态机模型生
成状态引导脚本,
在状态机测试模式下,测试引擎首先执行状态引导脚本,将被测设备引导至测
试前的正确状态后开始正式测试流程,状态引导
脚本与主体测试脚本结构、语法一致,新增xml节
点用于定义状态机模型,状态机模型包含状态定
义和状态迁移Action,新增数据库表用于状态定
义和管理状态迁移Action集,状态机模型引用状
态定义表,
便于简化建立状态模型的过程。
权利要求书1页 说明书6页 附图1页CN 110532162 A 2019.12.03
C N 110532162
A
权 利 要 求 书1/1页CN 110532162 A
1.一种基于协议状态机的模糊测试脚本及测试引擎,其特征在于,包括以下模块,
状态机模型定义,所述状态机模型定义包括状态机模型定义元素、状态定义表和引用状态定义表;
所述状态机模型定义元素包括<model>、<state_machine>和<state>;
所述状态定义表包括表名:StateMachine;主键:TransitionID;外键:ProtocolID;说明:关联Protocol表与Script表;
所述引用状态定义表,将每个状态迁移的过程定义以后,S c r i p t表中的StateMachineScript字段内容则是引用StateMachine表中transition过程;
测试引擎状态引导执行,包括状态初始化、状态引导执行和监测脚本为空的处理;
状态监测机制,包括测试脚本和测试引擎。
2.根据权利要求1所述的一种基于协议状态机的模糊测试脚本及测试引擎,其特征在于,
所述<model>元素用于定义协议状态机模型框架,其下包括一个或多个<state_ machine>元素;
所述<state_machine>元素定义了一个协议状态机,其属性包含状态机模型名称和初始状态,在<state_machine>元素下,采用<state>元素进行状态定义;
所述<state>元素用于定义一个状态迁移过程,其属性包含当前状态名称、迁移后的目的状态名称、迁移Action集,Action集包含<assign>、<send>、<recv>等元素。
3.根据权利要求1所述的一种基于协议状态机的模糊测试脚本及测试引擎,其特征在于,所述状态机初始化包括以下步骤,
步骤A1,对测试脚本进行初始化之前,先对状态引导脚本进行初始化;
步骤A2,状态引导脚本正则匹配;
步骤A3,解析状态引导脚本中的Channel、Action信息并存储。
4.根据权利要求1所述的一种基于协议状态机的模糊测试脚本及测试引擎,其特征在于,所述状态引导执行包括以下步骤,
步骤B1,监测脚本执行完成后,在正式测试执行前,先执行状态引导脚本;
步骤B2,如果状态引导脚本执行失败,测试平台将报异常终止测试。
5.根据权利要求1所述的一种基于协议状态机的模糊测试脚本及测试引擎,其特征在于,所述监测脚本为空的处理,当监测脚本为空时,若不含状态引导脚本,以测试脚本作为监测脚本使用向下兼容;如果包含状态引导脚本,则以状态引导脚本作为监测脚本。
6.根据权利要求1所述的一种基于协议状态机的模糊测试脚本及测试引擎,其特征在于,所述测试脚本,其中定义了变异数据包,同时也定义了回复包解析组件,因为不同的协议需要调用不同的组件,所以组件必须要在测试脚本中定义,并由测试引擎调用执行。
7.根据权利要求1所述的一种基于协议状态机的模糊测试脚本及测试引擎,其特征在于,所述测试引擎,判断状态机测试过程中调用回复包解析组件结果异常时自动重发送正常数据包探测被测设备状态;如果反馈的结果仍然与期望不符则引擎判定此时被测设备的协议状态已经失效;用户可根据实际测试需求选择终止测试,或者重新进行状态引导继续测试。
2。