首页 > 专利 > 杭州电子科技大学 > 一种工业控制设备固件的模糊测试方法专利详情

一种工业控制设备固件的模糊测试方法   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2020-06-08
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2020-11-13
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2021-07-30
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2040-06-08
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN202010512591.6 申请日 2020-06-08
公开/公告号 CN111830928B 公开/公告日 2021-07-30
授权日 2021-07-30 预估到期日 2040-06-08
申请年 2020年 公开/公告年 2021年
缴费截止日
分类号 G05B23/02 主分类号 G05B23/02
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 1
权利要求数量 2 非专利引证数量 1
引用专利数量 0 被引证专利数量 0
非专利引证 1、CN 111124926 A,2020.05.08CN 110661778 A,2020.01.07CN 101859274 A,2010.10.13CN 106557412 A,2017.04.05CN 105391729 A,2016.03.09蒋轶焜.大规模自动化固件安全分析技术研究《.中国优秀硕士学位论文全文数据库信息科技辑》.2020,王海翔.基于逆向分析的工控协议模糊测试方法《.电力信息与通信技术》.2019,郑尧文.物联网设备漏洞挖掘技术研究综述《.信息安全学报》.2019,;
引用专利 被引证专利
专利权维持 2 专利申请国编码 CN
专利事件 事务标签 公开、实质审查、授权
申请人信息
申请人 第一申请人
专利权人 杭州电子科技大学 当前专利权人 杭州电子科技大学
发明人 徐向华、邵帅、朱佳超 第一发明人 徐向华
地址 浙江省杭州市下沙高教园区2号大街 邮编 310018
申请人数量 1 发明人数量 3
申请人所在省 浙江省 申请人所在市 浙江省杭州市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
杭州君度专利代理事务所 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
朱月芬
摘要
本发明公开了一种工业控制设备固件的模糊测试方法。本发明包括四个阶段:固件下载、可执行程序提取、程序模拟运行、模糊测试。本发明通过自动爬虫下载各制造商设备固件、递归式的提取二进制可执行文件、模拟执行可执行文件、固件网络服务模糊测试的方法。本发明实现了对工业控制设备固件中可执行程序的高效模糊测试方法,不需要针对特定型号PLC工控固件搭建各种专用嵌入式硬件执行环境,测试过程中也不需要手动重启嵌入式设备,使得整个模糊测试过程更加便捷高效,并且可以方便地实现大批量并行的漏洞挖掘测试,以支持大规模固件漏洞测试工作。本发明适用于已有工业控制系统漏洞挖掘、工业控制系统的自动化测试等工作。
  • 摘要附图
    一种工业控制设备固件的模糊测试方法
  • 说明书附图:图1
    一种工业控制设备固件的模糊测试方法
  • 说明书附图:图2
    一种工业控制设备固件的模糊测试方法
  • 说明书附图:图3
    一种工业控制设备固件的模糊测试方法
  • 说明书附图:图4
    一种工业控制设备固件的模糊测试方法
  • 说明书附图:图5
    一种工业控制设备固件的模糊测试方法
  • 说明书附图:图6
    一种工业控制设备固件的模糊测试方法
  • 说明书附图:图7
    一种工业控制设备固件的模糊测试方法
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2021-07-30 授权
2 2020-11-13 实质审查的生效 IPC(主分类): G05B 23/02 专利申请号: 202010512591.6 申请日: 2020.06.08
3 2020-10-27 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
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连接模拟器,继续模糊测试。
说明书
专利联系人(活跃度排行)
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号