[发明专利]一种工业控制设备固件的模糊测试方法有效

专利信息
申请号: 202010512591.6 申请日: 2020-06-08
公开(公告)号: CN111830928B 公开(公告)日: 2021-07-30
发明(设计)人: 徐向华;邵帅;朱佳超 申请(专利权)人: 杭州电子科技大学
主分类号: G05B23/02 分类号: G05B23/02
代理公司: 杭州君度专利代理事务所(特殊普通合伙) 33240 代理人: 朱月芬
地址: 310018 浙*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 工业 控制 设备 模糊 测试 方法
【权利要求书】:

1.一种工业控制设备固件的模糊测试方法,其特征在于具体包括四个阶段:固件下载、可执行程序提取、程序模拟运行、模糊测试;

所述的固件下载阶段:对每个制造商得镜像下载地址分别进行解析得到对应得URL,将下载的固件文件保存于目录;

所述的可执行程序提取阶段:创建工作目录,对固件进行递归的提取操作,提出可执行二进制程序和相关资源文件;

所述的程序模拟运行阶段:创建磁盘镜像,构建对应指令集架构的VxWorks系统和板级支持包并写入磁盘镜像;创建网桥绑定IP地址,最后通过QEMU模拟器运行VxWorks系统;

所述的模糊测试阶段:根据被测二进制可执行文件特征值,编写对应测试用例脚本,对模拟运行的VxWorks系统进行模糊测试;

所述固件下载阶段包括以下操作:

1-1.创建固件保存目录,用于存放下载成功的固件;

1-2.收集各个制造商各个型号的工控设备网站和FTP网站的地址保存至爬取列表;

1-3.对爬取列表每一个地址编写页面解析逻辑,提取每一个固件文件的下载地址,保存至固件下载地址集合;

1-4.使用Python爬虫框架Scrapy从固件下载地址集合中拿出一个待下载固件地址,Scrapy的调度器驱动下载器下载固件文件,保存至固件保存目录;重复步骤1-4直至固件下载地址集合为空,完成下载地址集合中的所有固件;

所述可执行程序提取阶段对固件进行递归提取,具体包含以下步骤:

2-1.创建工作目录,用于存放提取二进制可执行文件与执行所需资源;

2-2.对固件保存目录中的每一个固件文件进行可执行程序提取操作,具体包括以下步骤:

2-2-1.通过Linux系统调用mmap将固件加载至内存,将用于定位当前识别固件内容的偏移量设为0;

2-2-2.在开源库libmagic的基础上,定义工控设备固件特征值,然后在当前字节偏移量处调用开源库libmagic,识别固件内容,得到当前文件类型、长度;偏移量单位为字节;

当文件类型为压缩文件时,使用tar工具解压缩文件,然后对解压后的文件逐一递归的进行步骤2-2提取文件;

当文件类型为目录元文件时,解析得到目录的文件数量、目录名以及当前目录路径,在工作目录创建对应目录,递归的对对应目录中包含的文件进行步骤2-2提取操作;

当文件类型为二进制可执行程序时,使用Linux系统的file工具阅读文件的可执行可链接文件格式获得该文件指令集架构、字节序;将可执行文件保存至工作目录;

所述程序模拟运行阶段,具体包含以下步骤:

3-1.使用WindRiver公司的Workbench工具创建指定指令集架构、字节序、寄存器的VxWorks系统内核文件和VxWorks BSP文件;

3-2.通过QEMU-IMG程序创建模拟运行所需的磁盘镜像,为了将VxWorks系统镜像写入,需要将磁盘镜像格式为DOS文件系统,并将BSP与VxWorks系统内核文件写入DOS文件系统中,同时BSP文件作为启动项;

3-3.创建网桥并分配ip地址,用于模拟器与外界网络通信;

3-4.根据可执行文件指定指令集架构选择对应的QEMU模拟器版本;通过模拟器以磁盘镜像为参数启动VxWorks系统虚拟机;

3-5.通过FTP协议,将工作目录中二进制可执行文件、资源文件夹写入虚拟机,然后执行二进制可执行文件等待模糊测试。

2.根据权利要求1所述一种工业控制设备固件的模糊测试方法,其特征在于:所述模糊测试阶段,具体包含以下步骤:

4-1.根据二进制可执行文件特征值,查询特征值与网络服务的映射表得到文件提供的网络服务类型,通过网络服务类型进行针对性的协议模糊测试;具体包含以下步骤:

4-1-1.通过Linux系统的readelf工具读取二进制可执行文件的符号表信息,通过Linux系统的strings工具读取二进制可执行文件的ASCII编码字符串;

4-1-2.遍历特征值与网络服务的映射表,查询每个条目的键(key)是否存在于步骤4-1-1中获得的符号表信息和字符串中;其中映射表中每个条目的键(key)由函数符号和关键字符串组成,每个条目的值(value)为对应网络服务类型名称;

如果映射表中没有匹配的条目时,说明当前测试的二进制可执行文件需要使用人工方式对二进制可执行文件反编译后获得该二进制可执行文件执行错误时显示的错误信息字符串、固件对应型号的字符串以及常见函数符号,并在映射表中建立对应条目,更新映射表;进入步骤4-1-2,继续匹配;

如果映射表中获得匹配的条目,获得条目的网络服务类型,得到二进制可执行文件提供的网络服务类型名称;

4-2.编写测试用例脚本文件;

4-2-1.使用Python语言描述各种类型的协议字段,由这些协议字段组成TCP/IP参考模型中每一层网络协议;每个协议字段由字段长度、字段默认值、字段名称组成;

4-2-2.在测试用例脚本文件中添加被测二进制可执行文件的网络服务的协议字段描述;在测试用例脚本文件执行时,根据协议字段描述生成协议数据;部分需要测试的协议字段使用模糊函数代替并且设置该协议字段的模糊化次数;模糊函数使用特殊字符、随机值、超长字符串构造协议字段值,这样的测试用例脚本文件执行时通过调用模糊函数生成模糊化的协议报文;

4-2-3.在测试用例脚本文件中添加测试目标IP地址和端口号;测试目标IP为模拟器网桥的IP地址,端口号与二进制可执行文件的网络服务类型相关;同时测试用例脚本文件与网络服务类型相关,Web服务模糊测试主要测试HTTP协议的实现;

4-3.执行测试用例脚本;

在每一次协议报文发送前通过Linux的Socket连接模拟器;

如果连接失败,说明当前VxWorks系统中被测二进制可执行文件已经崩溃,将上一次测试用例保存至工作目录,然后重新运行模拟器,由于被测二进制可执行文件已经写入磁盘镜像,因此可以直接进行模糊测试,即重新执行测试用例脚本;

如果连接成功,通过执行测试用例脚本不断生成模糊化协议报文,使用Linux的Socket连接发送至QEMU模拟器,由VxWorks系统中运行的被测二进制可执行文件接收模糊化协议报文,其中VxWorks系统在QEMU模拟器运行;

如果当前测试次数超过或等于测试用例脚本中模糊化字段的模糊化次数,那么测试结束;否则当前测试次数加一,然后继续在每一次测试报文发送前通过Linux的Socket连接模拟器,继续模糊测试。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州电子科技大学,未经杭州电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202010512591.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top