针对工业控制系统的轻量级安全性检测系统及方法

文档序号:29862173发布日期:2022-04-30 11:30阅读:160来源:国知局
针对工业控制系统的轻量级安全性检测系统及方法

1.本发明涉及网络安全技术领域,具体地,涉及针对工业控制系统的轻量级安全性检测系统及方法。


背景技术:

2.近年来,随着5g网络、工业互联网、人工智能、物联网的快速发展,万物智能移动互联时代加速到来,泛在网络上各类型工业控制系统层出不穷,如智能家居、工业机器人、无人飞行器等。与pc终端不同的是,工业控制系统面临的应用场景差异巨大,同时在适配异构的传输网络和各类cpu架构的基础上,满足客户的个性化、定制化需求。因此,终端设备往往应用定制化开发的嵌入式系统,每一类设备厂商会根据实际需求和性能要求,在均衡各类开销和成本的条件下,选用适合自身应用和匹配商业目的的系统开发模式。目前来说,终端系统包含嵌入式linux系统和工业控制系统(ics)两个大类,前者依托于开源linux社区,会更加便于开发和维护,应用广泛;后者则是在近些年快速发展,逐步替代各类mcu微处理器上简陋专一的裸机固件,统一形成了各类实时任务场景下的中间层抽象,能够调度各并发任务,较之传统的裸机固件在通用性和扩展性上都有较大提升。
3.工业控制系统的设计初衷是为了满足工业环境下的实时业务需求,比如工业流水线、航天飞行器、医疗设备等对时间性能要求敏感的任务场景,系统通过将应用分配切割成多个原子化任务,以便于在短时间内完成一个确定性操作,并通过满足实时性的调度算法来并发执行多个任务,提升执行效率。近些年,随着工业互联网和5g等通信技术的快速发展,工业终端互联互通已经成为常见的应用场景需求,原先封闭环境隔离下的各类终端系统面临全新的安全威胁。以无人驾驶为例,运行着上百个mcu汽车终端正在通过v2x等车联网架构,在5g网络通信的加持下与外界保持低延迟、高速率的互联互通,车载系统中通过lan总线、can总线或者近场通信、电信网等,实现互联互通,不同功能的终端组件暴露在外部网络的攻击面越来越多,导致安全威胁陡增。然而,ics在统一各类mcu系统层的同时,并没有发展出类似pc终端上成熟的系统安全防御方案,导致ics终端只要存在安全漏洞,将会有极大的可能被攻破。在blackhat asia 2020上,攻击者通过工业控制系统漏洞直接攻破了整个智能制造工厂,仅仅通过一个数据报文。与此同时,ics由于他天然的可靠与低延迟属性,又被广泛的应用于关键基础设施上,所以,提前于攻击者发现、检测到ics系统中存在的安全脆弱性,给予及时的修补将是非常必要的。
4.然而,已有安全检测方法在运用在ics上存在着明显的缺陷:在动态分析方法方面,基于实际设备的测试面临难以实现自动化灰盒测试和大范围应用代价高的问题,同时由于ics中各个任务模块打包在一个执行体二进制中,耦合度较高,无法对单独任务进行进程级(user-mode)模拟,需要全系统模拟(system-mode)。然而由于ics系统场景定制导致外设差异性较大,全系统模拟各类不同的外设困难大,需要借助开发者提供的源代码或者sdk来描述具体的硬件接口,导致通用性很差;在静态分析方面,缺乏基本的符号信息导致分析难度大,ics系统将多个任务静态编译成一个执行体,缺乏符号表、导入函数等语义信息,无
法定位用户数据的传入和危险函数操作,ics设备固件大小往往是单个嵌入式linux中普通elf文件的几倍甚至几十倍大小,导致单纯的符号执行也往往由于分支和循环导致路径爆炸,无法深入程序逻辑。
5.专利文献cn108737417a(申请号:201810492275.x)公开了一种面向工业控制系统的脆弱性检测方法:对目标环境进行基于工业以太网特征的网络探测,识别工控设备并捕获会话数据包。根据工控协议规范和私有协议逆向技术对数据包进行解析,并构造特征码数据包进行进一步的系统探测,获取具体的指纹信息。基于工控专有漏洞库的特征比对匹配目标的漏洞信息,并基于策略驱动进行相关的漏洞检测。基于工控协议脆弱性进行模糊测试,挖掘工控系统网络的安全漏洞并检测其安全脆弱性。


技术实现要素:

6.针对现有技术中的缺陷,本发明的目的是提供一种针对工业控制系统的轻量级安全性检测系统及方法。
7.根据本发明提供的一种针对工业控制系统的轻量级安全性检测系统,包括:
8.ics系统载入模块:对ics系统进行预处理得到可执行文件;
9.静态分析模块:通过二进制逆向分析框架对可执行文件进行二进制语义重建,输入数据流依赖度度量获得数据流扩散图;
10.动态分析模块:以数据流扩散图为基础,在裁剪控制流的基础上开展定向污点分析;
11.检测报告输出模块:对污点分析的结果进行归一化处理以及可视化展示。
12.优选地,在所述ics系统载入模块中,根据特征字符串自动化识别ics系统镜像文件,提取镜像文件中的ics系统执行体。
13.优选地,在所述静态分析模块中,
14.识别提取模块:通过启发式方法分析得到执行体二进制的加载基地址,解包还原镜像文件得到代码段、数据段在实体中的位置以及对应的符号文件;
15.面向ics固件的语义重建模块:ics系统执行体通过包括基于符号表的恢复、数据流的模拟仿真、前端服务语义提取、任务消息机制恢复以及人工分析补充恢复实现二进制语义综合;
16.输入数据流依赖性度量模块:通过ghidra的中间代码p-code实现从输入函数开始的粗粒度污点扩散,记录与输入数据形成依赖关系的条件分支和子函数调用参数,形成数据流在ics内部的扩散图,输出每个输入点对应的数据依赖图。
17.优选地,输入函数通过语义恢复自动化形成摘要,通过ghidra的中间代码p-code实现从形成摘要后的输入函数开始的粗粒度污点扩散。
18.优选地,在所述动态分析模块中,
19.控制流图裁减模块:基于数据流在ics内部的扩散图,将条件分支中影响污点数据流可达敏感函数的路径剪切,同时将参数与输入无关的子函数调用剪切,从而形成污点数据流导向的控制流调用图;
20.定向污点分析模块:基于污点数据流导向的控制流调用图进行从输入函数开始的混合符号执行,最终输出导致污点触发安全漏洞的输入条件、漏洞位置以及执行路径。
21.优选地,在所述检测报告输出模块中,对污点分析的结果进行归一化处理和可视化展示,合并各个输入导致的安全漏洞问题,形成不同的类型划分,展示漏洞形成的根本原理。
22.根据本发明提供的一种针对工业控制系统的轻量级安全性检测方法,包括:
23.步骤s1:对ics系统进行预处理得到可执行文件;
24.步骤s2:通过二进制逆向分析框架对可执行文件进行二进制语义重建,输入数据流依赖度度量获得数据流扩散图;
25.步骤s3:以数据流扩散图为基础,在裁剪控制流的基础上开展定向污点分析;
26.步骤s4:对污点分析的结果进行归一化处理以及可视化展示。
27.优选地,所述步骤s1采用:根据特征字符串自动化识别ics系统镜像文件,提取镜像文件中的ics系统执行体。
28.优选地,所述步骤s2采用:
29.步骤s2.1:通过启发式方法分析得到执行体二进制的加载基地址,解包还原镜像文件得到代码段、数据段在实体中的位置以及对应的符号文件;
30.步骤s2.2:ics系统执行体通过包括基于符号表的恢复、数据流的模拟仿真、前端服务语义提取、任务消息机制恢复以及人工分析补充恢复实现二进制语义综合;
31.步骤s2.3:通过ghidra的中间代码p-code实现从输入函数开始的粗粒度污点扩散,记录与输入数据形成依赖关系的条件分支和子函数调用参数,形成数据流在ics内部的扩散图,输出每个输入点对应的数据依赖图。
32.优选地,所述步骤s3采用:
33.步骤s3.1:基于数据流在ics内部的扩散图,将条件分支中影响污点数据流可达敏感函数的路径剪切,同时将参数与输入无关的子函数调用剪切,从而形成污点数据流导向的控制流调用图;
34.步骤s3.2:基于污点数据流导向的控制流调用图进行从输入函数开始的混合符号执行,最终输出导致污点触发安全漏洞的输入条件、漏洞位置以及执行路径。
35.与现有技术相比,本发明具有如下的有益效果:
36.1、本发明能够在抽离特定敏感控制流,大幅降低分析复杂度的条件下,判定ics系统是否存在安全问题,并且定位对应的安全漏洞和执行路径,达到轻量级检测的目的,大幅提升了污点分析的实际可行性;
37.2、本发明引入了面向ics固件的语义恢复重建功能,利用数据流分析对目标固件系统进行依赖性分析,结合上述两项技术实现针对特定敏感控制流进行检测分析并且能够定位对应的安全漏洞和执行路径,从而大幅度降低分析复杂度,对比于现有漏洞检测技术实现轻量级检测,大幅提升了污点分析的实际可行性。
附图说明
38.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
39.图1本发明较佳实施例提供的针对工业控制系统的轻量级安全性检测系统的结构图。
40.图2本发明较佳实施例提供的针对工业控制系统的轻量级安全性检测系统的结构图。
41.图3本发明较佳实施例提供的针对工业控制系统的轻量级安全性检测方法的流程图。
42.图4为二进制代码控制流裁剪流程。
43.图5为控制流拼接示意图。
44.图6为输出报告示例图。
具体实施方式
45.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
46.本发明提供了一种针对工业控制系统(ics)的轻量级安全性检测方法和系统,该方法是一套针对工业控制系统的静态分析方法。首先,开展二进制级别的函数语义重建;然后,围绕污点输入和敏感函数位置建立污点输入流导向的程序切片,即每个切片对应一个从外部输入所在程序位置开始,直到敏感函数执行位置的调用树,每个节点是一个子函数调用;最后,从输入点位置开始执行限定范围内的污点分析,在污点数据流图可达性的基础上,利用动态符号执行判断是否能达到敏感函数执行危险操作的条件(例如,超过缓存区大小的字符串拷贝,命令执行函数参数被外部控制等)。总体上,该发明能够在抽离特定敏感控制流,大幅降低分析复杂度的条件下,判定ics系统是否存在安全问题,并且定位对应的安全漏洞和执行路径,达到轻量级检测的目的,大幅提升了污点分析的实际可行性。
47.实施例1
48.根据本发明提供的一种针对工业控制系统的轻量级安全性检测系统,如图1所示,包括:
49.ics系统载入模块:对ics系统进行预处理得到可执行文件;
50.静态分析模块:通过二进制逆向分析框架对可执行文件进行二进制语义重建,输入数据流依赖度度量获得数据流扩散图;
51.动态分析模块:以数据流扩散图为基础,在裁剪控制流的基础上开展定向污点分析;
52.检测报告输出模块:对污点分析的结果进行归一化处理以及可视化展示。
53.具体地,在所述ics系统载入模块中,根据特征字符串自动化识别ics系统镜像文件,提取镜像文件中的ics系统执行体。
54.具体地,在所述静态分析模块中,
55.识别提取模块:通过启发式方法(字符串偏移地址差分方法等)分析得到执行体二进制的加载基地址,从而完成系统镜像识别与提取,解包还原镜像文件得到代码段、数据段在实体中的位置以及对应的符号文件等;
56.面向ics固件的语义重建模块:ics系统执行体通过包括基于符号表的恢复、数据流的模拟仿真、前端服务语义提取、任务消息机制恢复以及人工分析补充恢复实现二进制
语义综合;
57.输入数据流依赖性度量模块:通过ghidra的中间代码p-code实现从输入函数开始的粗粒度污点扩散,记录与输入数据形成依赖关系的条件分支和子函数调用参数,形成数据流在ics内部的扩散图,输出每个输入点对应的数据依赖图。
58.具体地,在所述动态分析模块中,
59.控制流图裁减模块:基于数据流在ics内部的扩散图,将条件分支中影响污点数据流可达敏感函数的路径剪切,同时将参数与输入无关的子函数调用剪切,从而形成污点数据流导向的控制流调用图;
60.定向污点分析模块:基于污点数据流导向的控制流调用图进行从输入函数开始的高效混合符号执行,并且复杂函数通过前期的语义恢复自动化形成摘要,进一步降低了运算复杂和提高了符号执行可用性,最终输出导致污点触发安全漏洞的输入条件、漏洞位置以及执行路径。
61.具体地,在所述检测报告输出模块中,对污点分析的结果进行归一化处理和可视化展示,合并各个输入导致的安全漏洞问题,形成不同的类型划分,展示漏洞形成的根本原理,从而能够指导开发者快速修复。
62.根据本发明提供的一种针对工业控制系统的轻量级安全性检测方法,包括:
63.ics系统载入步骤:对ics系统进行预处理得到可执行文件;
64.静态分析步骤:通过二进制逆向分析框架对可执行文件进行二进制语义重建,输入数据流依赖度度量获得数据流扩散图;
65.动态分析步骤:以数据流扩散图为基础,在裁剪控制流的基础上开展定向污点分析;
66.检测报告输出步骤:对污点分析的结果进行归一化处理以及可视化展示。
67.具体地,所述ics系统载入步骤采用,根据特征字符串自动化识别ics系统镜像文件,提取镜像文件中的ics系统执行体。
68.具体地,所述静态分析步骤采用,
69.识别提取步骤:通过启发式方法(字符串偏移地址差分方法等)分析得到执行体二进制的加载基地址,从而完成系统镜像识别与提取,解包还原镜像文件得到代码段、数据段在实体中的位置以及对应的符号文件等;
70.面向ics固件的语义重建步骤:ics系统执行体通过包括基于符号表的恢复、数据流的模拟仿真、前端服务语义提取、任务消息机制恢复以及人工分析补充恢复实现二进制语义综合;
71.输入数据流依赖性度量步骤:通过ghidra的中间代码p-code实现从输入函数开始的粗粒度污点扩散,记录与输入数据形成依赖关系的条件分支和子函数调用参数,形成数据流在ics内部的扩散图,输出每个输入点对应的数据依赖图。
72.具体地,所述动态分析步骤采用,
73.控制流图裁减步骤:基于数据流在ics内部的扩散图,将条件分支中影响污点数据流可达敏感函数的路径剪切,同时将参数与输入无关的子函数调用剪切,从而形成污点数据流导向的控制流调用图;
74.定向污点分析步骤:基于污点数据流导向的控制流调用图进行从输入函数开始的
高效混合符号执行,并且复杂函数通过前期的语义恢复自动化形成摘要,进一步降低了运算复杂和提高了符号执行可用性,最终输出导致污点触发安全漏洞的输入条件、漏洞位置以及执行路径。
75.具体地,所述检测报告输出步骤采用,对污点分析的结果进行归一化处理和可视化展示,合并各个输入导致的安全漏洞问题,形成不同的类型划分,展示漏洞形成的根本原理,从而能够指导开发者快速修复。
76.实施例2
77.实施例2是实施例1的优选例
78.针对现有技术的不足,本发明提出一种全新的针对工业控制系统的轻量级安全性检测方法,是一个面向ics系统的轻量级污点数据流检测方法和系统,综合运用了二进制语义重建、控制流切片、污点数据流分析等三个方面的关键技术。首先,在ics系统反汇编指令层面恢复函数功能,重建对应语义的基础上,进行污点数据流依赖性度量,得到每个污点输入影响的控制流范围;第二步,对污点输入到危险调用的控制流进行切片,利用污点输入导向进行污点可达控制流分析和无关子函数裁剪,屏蔽与当前污点输入无关变量对控制流的影响,提升符号执行的可行性和效率;最后,在裁剪后的控制流图上进行混合符号执行,复杂函数调用和其他干扰输入通过函数摘要快速符号执行,通过约束求解,尝试得到符合原始控制流的触发漏洞输入,从而判断是否存在安全问题。
79.根据本发明提供的针对工业控制系统的轻量级安全性检测方法,如图2所示通过轻量级高效分析方法发现工业控制系统安全漏洞,包括:
80.二进制语义重建步骤:通过二进制逆向分析方法,反汇编基础上恢复函数的高层功能语义和对应的参数语法,从而支撑后续的控制流分析;
81.控制流切片步骤:通过定位外部污点输入相关功能函数和敏感函数调用位置,从输入点出发,通过粗粒度的污点分析得到污点数据流依赖关系有向图,与从输入位置所在函数为根节点的调用树进行差分,保留其中受污点数据流影响的调用树,形成输入导向的程序切片;
82.污点数据流分析步骤:在输入导向的程序切片上利用符号执行方法进行污点数据流分析,得到各个执行路径的约束条件,并求解判断是否存在触发敏感函数危险调用的情况,从而得出是否存在安全漏洞。
83.具体地,所述二进制语义重建步骤采用:通过ics系统镜像识别与提取、镜像加载基地址识别、二进制层面语义恢复等三个方面综合应用,重建数据流处理函数语义,得到污点对应的各个函数具体功能,其中:
84.二进制层面函数语义恢复:主要包含基于符号表的恢复、数据流的模拟仿真、前端服务语义提取、任务消息机制恢复、人工分析补充恢复五个流程;
85.重建数据流处理函数语义:主要包含污点引入类函数、污点传播类函数、污点检查类函数、污点触发类函数这四类函数特征的提取和匹配。
86.具体地,通过输入数据流依赖性度量,进而进行污点导向的控制流剪裁,其中:
87.输入数据流依赖性度量:主要通过分析污点变量在污点引入函数、污点传播函数、污点高危使用函数等函数之间的传播,可以澄清污点数据在各个函数参数之间的依赖关系,得到污点变量集合和传播树,建立每个输入点对应的数据依赖图;
88.污点导向的控制流裁剪:主要为了增强工业控制系统仿真模拟执行的可行性以及符号执行效率,我们会以输入数据依赖图为导向,对上述得到的污点输入相关控制流图进行裁减,以便于后续指定程序空间范围内进行高效的污点分析和符号执行。
89.在限定的控制流切片中进行符号执行,充分利用前期的函数语义进行摘要,降低符号执行复杂度,其中:
90.动态符号执行步骤:在控制流切片的开始位置,进行污点数据符号化,在执行过程中如果遇到复杂的函数调用,如系统和外设调用,将会实例化输入参数,从而降低状态空间爆炸的可能性,提高符号执行的有效性;
91.函数自动化摘要步骤:通过前期的函数语义恢复,特别是数据流处理相关的函数功能自动化建立对应的功能摘要,在污点分析时执行对应的数据流传递操作即可,无需执行具体的指令,大幅度降低污点传播处理的复杂性。
92.实施例3
93.实施例3是实施例1和/或实施例3的优选例
94.本发明提供了针对工业控制系统的轻量级安全性检测方法,如图3所示,包括:
95.第一步,选择一类工业控制系统镜像文件载入,可以是rtos以及其他plc程序,以rtos类的系统为例,如vxworks、freertos、ecos等,二进制执行会将所有任务的功能代码和资源打包形成一个执行体。载入后分析程序开始调用解包工具进行系统文件处理,分离出系统执行体对应的二进制程序,程序包含ics系统所有功能代码;
96.第二步,对ics系统的二进制开展静态分析,首先进行二进制语义恢复,得到大部分函数的对应的功能,主要是输入函数,例如socket操作函数,文件读写函数等,以及数据流操作相关函数,例如strcpy函数,后者是敏感函数,作为后续污点分析的sink点;然后开展输入数据流依赖分析,比如从socket操作函数recvfrom开始,分析接受数据可能传递的所有路径和污点对象,包括全局变量的传递,通过中间语言p-code实现,对全局变量处理的算法的伪代码如下所示:
97.[0098][0099]
在此基础上形成控制流依赖图;
[0100]
第三步,在输入控制流依赖图的基础上,对二进制控制流代码进行裁剪。具体地,在控制流图call graph的基础对输入相关的代码调用节点进行保留,并且在条件跳转中定向选择可以达到敏感函数的路径,整个过程如图4所示,分为四个步骤:
[0101]
步骤1:以输入函数s节点作为根,提取从这个函数出发的所有子函数调用,形成call graph;
[0102]
步骤2:在上述调用树中定位敏感函数节点,如图中的x,y,z,形成从s节点开始到这些敏感函数的调用序列,为sink call traces,注意其中不包括路过函数;
[0103]
步骤3:对上述路径中节点开始粗粒度污点分析(taint analysis)保留其中被数据影响的调用节点,如图中虚线表示;
[0104]
步骤4:最后删除不受输入影响的调用结点,保留剩下的节点形成目标的调用树。
[0105]
如果输入依赖图跨越了两个不同输入函数,那么剪裁的同时将会拼接控制流,如图5所示,通过nvram_set/get这个数据传递对操作,拼接形成了完整的控制流;在得到定向控制流的基础上,利用自动化摘要进行函数级别的污点传播和混合符号执行,得到漏洞触发条件和对应的执行路径。
[0106]
第四步,对污点分析结果进行归一和可视化处理,输出完整报告,其中包含漏洞类型、导致漏洞的输入参数、漏洞位置、执行路径等,典型的报告的示例如图6所示。
[0107]
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
[0108]
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1