[发明专利]基于序列生成对抗网络的DNP3协议模糊测试方法有效
申请号: | 202010982882.1 | 申请日: | 2020-09-18 |
公开(公告)号: | CN112104525B | 公开(公告)日: | 2021-07-30 |
发明(设计)人: | 于振华;王浩芦;刘颖;王丹;叶鸥;赵禹博 | 申请(专利权)人: | 西安科技大学 |
主分类号: | H04L12/26 | 分类号: | H04L12/26;H04L29/06;G06N3/04;G06N3/08 |
代理公司: | 西安众星蓝图知识产权代理有限公司 61234 | 代理人: | 张倩 |
地址: | 710054 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 序列 生成 对抗 网络 dnp3 协议 模糊 测试 方法 | ||
1.基于序列生成对抗网络的DNP3协议模糊测试方法,其特征在于,该方法包括以下步骤:
步骤一、构建DNP3协议样本数据库:利用公开的DNP3协议样本数据集和人工采集的DNP3工控系统中的多个随机DNP3协议样本数据构建DNP3协议样本数据库;
步骤二、DNP3协议样本数据预处理:根据DNP3协议格式对DNP3协议样本数据库中DNP3协议样本数据进行提取,并按字段分离DNP3协议样本数据,再通过进制转换的构造方法对DNP3协议样本数据进行预处理;
步骤三、预处理后的DNP3协议样本数据变异:使用字符填充、数值位翻转或数值取反的方法对预处理后的DNP3协议样本数据进行变异;
步骤四、生成初级测试用例,过程如下:
步骤401、将预处理且变异后的DNP3协议样本数据作为训练数据,输入至序列生成对抗网络SeqGAN中的LSTM生成器,学习训练数据的一维序列特征;
步骤402、LSTM生成器生成的数据输入至嵌入层,得到数据的二维阵列,再将数据的二维阵列输入到CNN判别器,获取数据的真伪值;其中,所述LSTM生成器为步骤401训练的LSTM生成器;
步骤403、选取交叉熵作为CNN判别器的损失函数,将数据的真伪值带入至损失函数,计算数据损失目标函数,将数据损失目标函数计算的值送入Adam优化器,对步骤401中的序列生成对抗网络SeqGAN中的LSTM生成器的权重参数集合和步骤402中的CNN判别器的权重参数集合交替进行更新,进而得到优化后的LSTM生成器和CNN判别器;
步骤404、调取新的训练数据,循环步骤401至步骤403,直至数据损失目标函数计算的值小于数据损失目标函数计算的值的阈值,此时,得到LSTM生成器各个权重参数训练结果,并确定最终训练完成的LSTM生成器;
步骤405、利用训练完成的LSTM生成器自动生成多个初级测试用例;
步骤五、测试用例相似度对比去冗余:
根据公式计算第i个初级测试用例stri和第j个初级测试用例strj之间的相似度si,j,其中,edit()为编辑函数,edit(stri,strj)为将第i个初级测试用例stri变换为第j个初级测试用例strj所用的步数,len()为字段长度函数,max()为最大值函数,i和j均为初级测试用例编号且i≠j;
当si,j≥Δ时,说明第i个初级测试用例stri和第j个初级测试用例strj相似,随机去除第i个初级测试用例stri和第j个初级测试用例strj中的任意一个初级测试用例,将保留的初级测试用例视为种子测试用例,并存储在种子测试用例集中,其中,Δ为相似度阈值;
当si,j<Δ时,说明第i个初级测试用例stri和第j个初级测试用例strj不相似,将第i个初级测试用例stri和第j个初级测试用例strj均视为种子测试用例,并存储在种子测试用例集中;
步骤六、种子测试用例变异:对种子测试用例集内的种子测试用例进行变异,选取种子测试用例中随机数量长度的字段作为变异字段,使用边界值变异、字符填充、数值位翻转或数值取反方式对变异字段进行变异,完成种子测试用例的随机变异,将种子测试用例集内的种子测试用例和变异后的种子测试用例集中存储,得到测试用例集;
步骤七、DNP3协议模糊测试:将测试用例集中的测试用例输入至DNP3工控系统中进行DNP3协议模糊测试,若测试用例未引起DNP3协议异常,则该测试用例为正常测试用例,进而该测试用例未测试出DNP3协议漏洞;
若测试用例引起DNP3协议异常,则该测试用例为预异常测试用例,进而该测试用例测试出DNP3协议存在漏洞风险,执行步骤八;
步骤八、漏洞验证:将步骤七中的预异常测试用例再次输入至DNP3工控系统中进行DNP3协议模糊测试,若该预异常测试用例未引起DNP3协议异常,将该预异常测试用例更改为正常测试用例;
若该预异常测试用例再次引起DNP3协议异常,该预异常测试用例确定为异常测试用例,并记录该异常测试用例及其引起的漏洞;
步骤九、异常测试用例的调试及监控:利用调试工具检测异常测试用例,并追踪异常测试用例在DNP3工控系统中的运行信息和栈帧信息,分析并记录漏洞触发原因;
异常测试用例调试过程中同时通过监控包方式、进程监控方式和日志记录方式对异常测试用例和DNP3工控系统进行监控。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安科技大学,未经西安科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010982882.1/1.html,转载请声明来源钻瓜专利网。