工业控制系统的PLC运行时攻击检测方法及系统
未命名
10-19
阅读:124
评论:0
工业控制系统的plc运行时攻击检测方法及系统
技术领域
1.本发明涉及工业控制技术领域,尤其涉及一种工业控制系统的plc运行时攻击检测方法及系统。
背景技术:
2.目前,水利、化工、能源、电力等领域,超过80%以上的基础设施依靠工业控制系统(industrial control system,ics)来实现自动化作业。随着工业4.0的兴起,工控设备通过互联网的连通性不断增强,导致ics的漏洞利用率大幅增加,攻击面更加广泛。ics已成为重要攻击目标,如何保护ics的安全是当前最紧迫的国际问题之一。
3.可编程逻辑控制器(programmable logic controller,plc)是工业控制系统的核心控制装置,其控制着关键基础设施中的物理过程,在工控系统中起着至关重要的作用。工程师通过开发控制程序对plc进行编程,进而控制物理过程。然而,plc控制过程的高实时性、高可用性要求以及plc有限的存储资源和计算能力等特点,使得许多现有通用计算机安全技术所依赖的假设在plc中是无效的,这导致plc容易遭受黑客攻击,进而操纵目标进程。
4.攻击者们利用plc漏洞和脆弱性发动攻击行为,通过复杂、先进且隐蔽多样的技术手段操纵目标进程,使得物理过程无法按照预期运行,造成工厂非计划停产、关键设施服务中断、设备损毁、社会恐慌甚至人员伤亡等严重后果。攻击者们可以通过对plc进行程序内存操纵来实施控制程序运行时劫持攻击。目前针对plc程序运行时劫持攻击的实时检测尚没有成熟的研究成果与应用示范。
技术实现要素:
5.本发明提供一种工业控制系统的plc运行时攻击检测方法及系统,能够及时、有效地检测plc程序运行时是否遭受劫持攻击,保障工业控制系统的安全。
6.本发明提供一种工业控制系统的plc运行时攻击检测方法,包括:
7.获取plc初始的控制逻辑,并对所述初始的控制逻辑进行二进制静态插桩,得到重写后的控制逻辑;
8.根据控制逻辑构建控制流图,所述控制逻辑包括所述初始的控制逻辑或者所述重写后的控制逻辑;
9.运行所述重写后的控制逻辑,并获取运行过程中第一控制流指令的执行路径;所述重写后的控制逻辑包括所述第一控制流指令,所述第一控制流指令包括第一间接函数调用指令和第一函数返回指令;
10.当所述控制流图的有效路径中包括所述第一控制流指令的执行路径时,确定所述plc未受到攻击。
11.可选地,所述运行所述重写后的控制逻辑,并获取运行过程中第一控制流指令的执行路径,包括:
12.运行所述重写后的控制逻辑,并将所述运行过程中第一控制流指令的目标地址实
时传输到共享内存中;
13.基于所述共享内存获取所述运行过程中第一控制流指令的目标地址,并跟踪所述目标地址的执行路径。
14.可选地,所述对所述初始的控制逻辑进行二进制静态插桩,包括:
15.获取所述初始的控制逻辑中所有子例程的间接函数调用指令和函数返回指令;
16.利用蹦床指令来代替所述间接函数调用指令和函数返回指令。
17.可选地,所述对所述初始的控制逻辑进行二进制静态插桩,还包括:
18.对所述初始的控制逻辑静态插桩共享内存的汇编代码。
19.可选地,所述对所述初始的控制逻辑进行二进制静态插桩,还包括:
20.对所述初始的控制逻辑静态插桩传输程序起始地址的代码。
21.可选地,所述根据控制逻辑构建控制流图,包括:
22.获取所述控制逻辑中所有子例程的代码段、数据段和符号表信息;
23.根据所述代码段、数据段和符号表信息确定第二控制流指令的目标地址和执行路径;所述第二控制流指令包括第二间接函数调用指令和第二函数返回指令;
24.基于所述第二控制流指令的目标地址和执行路径构建控制流图。
25.可选地,还包括:
26.检测所述控制流图的有效路径是否包括所述第一控制流指令的执行路径;其中,所述检测所述控制流图的有效路径是否包括所述控制流指令的执行路径的进程与所述运行所述重写后的控制逻辑,并获取运行过程第一控制流指令的执行路径的进程分离执行;所述检测所述控制流图的有效路径是否包括所述控制流指令的执行路径的进程与所述运行所述重写后的控制逻辑,并获取运行过程第一控制流指令的执行路径的进程通过共享内存进行通信。
27.本发明还提供一种工业控制系统的plc运行时攻击检测系统,包括:
28.静态插桩模块,用于获取plc初始的控制逻辑,并对所述初始的控制逻辑进行二进制静态插桩,得到重写后的控制逻辑;
29.控制流图构建模块,用于根据控制逻辑构建控制流图,所述控制逻辑包括所述初始的控制逻辑或者所述重写后的控制逻辑;
30.运行模块,用于运行所述重写后的控制逻辑,并获取运行过程第一控制流指令的执行路径;所述重写后的控制逻辑包括所述第一控制流指令,所述第一控制流指令包括第一间接函数调用指令和第一函数返回指令;
31.攻击检测模块,用于当所述控制流图的有效路径中包括所述控制流指令的执行路径时,确定所述plc未受到攻击。
32.本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的工业控制系统的plc运行时攻击检测方法。
33.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的工业控制系统的plc运行时攻击检测方法。
34.本发明提供的一种工业控制系统的plc运行时攻击检测方法及系统,通过获取plc初始的控制逻辑,并对所述初始的控制逻辑进行二进制静态插桩,得到重写后的控制逻辑;
根据控制逻辑构建控制流图,所述控制逻辑包括所述初始的控制逻辑或者所述重写后的控制逻辑;运行所述重写后的控制逻辑,并获取运行过程中第一控制流指令的执行路径;所述重写后的控制逻辑包括所述第一控制流指令,所述第一控制流指令包括第一间接函数调用指令和第一函数返回指令;当所述控制流图的有效路径中包括所述第一控制流指令的执行路径时,确定所述plc未受到攻击。本发明可以通过检测控制流图的有效路径是否包括运行过程中第一控制流指令的执行路径,从而判断plc是否受到攻击,当所述控制流图的有效路径中包括所述第一控制流指令的执行路径时,确定所述plc未受到攻击,即本发明能够有效检测plc程序运行时是否遭受控制流劫持攻击,保障工业控制系统的安全。
附图说明
35.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1是本发明提供的工业控制系统的plc运行时攻击检测方法流程图;
37.图2是本发明提供的工业控制系统的plc运行时攻击检测方法原理图;
38.图3是本发明提供的工业控制系统的plc运行时攻击检测系统模块图;
39.图4是本发明提供的电子设备的结构示意图。
具体实施方式
40.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.下面结合图1-图4描述本发明的工业控制系统的plc运行时攻击检测方法及系统。总的来说,本发明包括两个主要阶段:离线分析和在线检测。第一阶段对plc初始的控制逻辑二进制程序进行离线分析和控制流指令二进制插桩,得到重写后的控制逻辑,然后基于初始的控制逻辑或者重写后的控制逻辑抽取完整、合法的第二控制流指令的目标地址和执行路径,并构建用作检测基线的控制流图(control flow graph,cfg)。第二阶段涉及运行时的在线攻击检测。plc运行重写后的控制逻辑,在动态运行过程中实时传输第一控制流指令的目标地址到共享内存,通过异步控制流完整性(control flow integrity,cfi)检查器获取共享内存中的第一控制流指令的目标地址来跟踪程序的执行路径,并将该执行路径与第二控制流指令中的执行路径作比较,从而检测是否存在恶意控制流劫持或者偏离正常程序执行的行为。
42.具体的,图1为本发明提供的工业控制系统的plc运行时攻击检测方法流程图,图2是本发明提供的工业控制系统的plc运行时攻击检测方法原理图,其中,本发明方法的执行主体可以是计算机设备。
43.另外,因为大部分plc使用arm处理器,所以本发明特别关注基于arm(acorn risc machine)架构的plc设备,在基于arm的程序执行流中,攻击者可劫持的控制流主要有两个
手段:一是通过在执行间接函数调用指令中修改寄存器值,二是通过在执行函数返回指令之前修改返回地址。基于此,本发明一种工业控制系统的plc运行时攻击检测方法,如图1和图2所示,包括:
44.步骤101:获取plc初始的控制逻辑,并对所述初始的控制逻辑进行二进制静态插桩,得到重写后的控制逻辑。
45.在一个具体的实施例中,对所述初始的控制逻辑进行二进制静态插桩之前,需要对plc初始的控制逻辑进行反汇编(本发明实施例利用开源工具capstone进行实现);根据反汇编结果,查找和定位间接函数调用指令(例如:mov pc,r8)和函数返回指令(例如:ldmdb fp,{fp,sp,pc}),需要插桩位置就是:间接函数调用指令(例如:bl r8/blx r8/mov pc,r8/ldr pc,r8等)和函数返回指令(例如:ldmdb fp,{fp,sp,pc}/pop{r11,pc}等)。
46.在一个具体的实施例中,步骤101具体包括:获取所述初始的控制逻辑中所有子例程的间接函数调用指令和函数返回指令;利用蹦床指令来代替所述间接函数调用指令和函数返回指令。
47.本发明的上述实施例通过用蹦床指令来代替分支指令(间接函数调用指令和函数返回指令),可以实现通过蹦床直接分支到未使用内存部分的蹦床区域,当插桩的蹦床区域完成了它的任务后,程序控制返回到原来的区域。所以本发明中基于蹦床的插桩策略无需源码,不会改变代码的相对位置。
48.在一个具体的实施例中,蹦床区域的主要功能是将第一控制流指令的目标地址传递到共享内存中。插桩代码是一组轻量级的arm汇编指令,除了将间接函数调用指令地址和返回函数地址转移至共享内存外,还需要在重写后的控制逻辑运行之前插桩创建共享内存的汇编代码。
49.在一个具体的实施例中,codesys runtime(plc应用层运行时环境)在加载重写后的控制逻辑时,其程序入口地址是随机的,因此还需要事先插桩传输程序起始地址(即plc_prg的程序入口地址)的代码,以应对地址随机化。
50.在一个具体的实施例中,本发明还可以在步骤103运行所述重写后的控制逻辑时,根据plc_prg函数基址的偏移,更新cfg,让cfg更准确。
51.在一个具体的实施例中,本发明还可以对重写后的控制逻辑代码段和数据段进行校验和计算,以替换重写后的控制逻辑(.prg文件)中的校验和信息,之后再执行步骤103。
52.步骤102:根据控制逻辑构建控制流图,所述控制逻辑包括所述初始的控制逻辑或者所述重写后的控制逻辑。
53.其中,根据初始的控制逻辑和重写后的控制逻辑中的任一个控制逻辑构建控制流图即可。
54.在一个具体的实施例中,根据控制逻辑构建控制流图,包括:
55.获取所述控制逻辑中所有子例程的代码段、数据段和符号表信息;
56.根据所述代码段、数据段和符号表信息确定第二控制流指令的目标地址和执行路径,即第二控制流指令;所述第二控制流指令包括第二间接函数调用指令和第二函数返回指令;基于所述第二控制流指令的目标地址和执行路径构建控制流图。
57.在一个具体的实施例中,本发明利用icsref(一种开源的工业控制系统逆向工程框架)解析二进制控制逻辑文件(.prg格式),从而获取控制逻辑所有子例程的代码段、数据
段和符号表信息,为后期cfg构建提供依据。然后,基于控制逻辑的代码段、数据段和符号表信息通过查找和解析第二控制流指令的目标地址和执行路径来构建cfg。
58.进一步的,本发明构建的cfg是轻量级的,只关注间接分支,而忽略直接分支,这是由于直接分支静态指定目标,攻击者无法对其进行利用,而间接分支是动态指令,攻击者容易利用间接分支进行plc攻击。但是间接分支依赖于寄存器或内存值在运行时指定目标,所以构建完整cfg的一个难点在于确定间接分支目标,本发明通过解析.prg文件,重建符号表来确定间接分支目标,从而解决这一问题。
59.具体来说,.prg二进制文件只包含从一个子例程调用到另一个子例程或动态链接函数的间接跳转,并且所有此类间接分支目标的位置完全包含在此二进制文件中。对.prg文件进行解析的具体过程例如:从一个子例程到一个动态链接函数的间接跳转的指令序列为ldr r8,[0x00002e58]、ldr r8,[r8]、mov lr,pc、mov pc,r8,其中跳转目标[0x00002e58]包含在符号表中,符号表可以通过对.prg文件进行分析来恢复。基于此,本发明可以提取和解析所有第二控制流指令,从而得到一个完整和健全的cfg。
[0060]
在一个具体的实施例中,步骤101和步骤102是在上位机完成的,以尽可能少地占用plc的内部资源。
[0061]
步骤103:运行所述重写后的控制逻辑,并获取运行过程中第一控制流信指令的执行路径;所述重写后的控制逻辑包括所述第一控制流指令,所述第一控制流指令包括第一间接函数调用指令和第一函数返回指令。
[0062]
其中,第一控制流指令是根据重写后的控制逻辑在运行过程中得到的,所以,得到第一控制流指令是一个动态的过程;而第二控制流指令是用于构建控制流图,是通过对初始的控制逻辑或者重写后的控制逻辑进行解析得到的,不涉及程序运行过程,这是第一控制流指令与第二控制流指令的区别点。同时二者也有相同点:由于第二控制流指令是根据初始的控制逻辑或者重写后的控制逻辑得到,同时第一控制流指令是根据重写后的控制逻辑在运行过程中得到的,而重写后的控制逻辑也是根据初始的控制逻辑静态插桩而来,所以二者也都与初始的控制逻辑相关,这也是能够根据控制流图的有效路径和第一控制流指令的执行路径判断plc是否受到攻击的基础。
[0063]
在一个具体的实施例中,步骤103包括:
[0064]
运行所述重写后的控制逻辑,并将所述运行过程中第一控制流指令的目标地址实时传输到共享内存中;基于所述共享内存获取所述运行过程中第一控制流指令的目标地址,并跟踪所述目标地址的执行路径,所述执行路径即为上述第一控制流指令的执行路径,这样能够保证不影响plc的正常运行。
[0065]
在一个可选的实施例中,异步cfi检查器基于所述共享内存获取所述运行过程中第一控制流指令的执行路径,这样可以保证后续对攻击的实时在线检测。
[0066]
在一个具体的实施例中,本发明还包括:
[0067]
检测所述控制流图的有效路径是否包括所述第一控制流指令的执行路径;其中,所述检测所述控制流图的有效路径是否包括所述控制流指令的执行路径的进程与步骤103分离执行;所述检测所述控制流图的有效路径是否包括所述控制流指令的执行路径的进程与步骤103通过共享内存进行通信。二者通过访问同一块固定大小的内存区域(共享内存),从而实现数据的共享与交互。在重写后的控制逻辑运行过程中,将第一控制流指令的目标
地址推送至共享内存中,并跟踪其执行路径,这样能够在保证检测的准确、实时之外,还不影响plc的正常运行。
[0068]
在一个可选的实施例中,异步cfi检查器检测所述控制流图的有效路径是否包括所述第一控制流指令的执行路径。
[0069]
在一个可选的实施例中,检测所述控制流图的有效路径是否包括所述第一控制流指令的执行路径,包括:
[0070]
获取控制流图的有效路径和第一控制流指令的执行路径;
[0071]
判断第一控制流指令的执行路径是否属于控制流图的有效路径中的一种。
[0072]
步骤104:当所述控制流图的有效路径中包括所述第一控制流指令的执行路径时,确定所述plc未受到攻击。
[0073]
在一个具体的实施例中,由于本发明中cfi的核心是确保程序的执行只通过cfg中获得批准的执行路径。为了实现这一点,在执行每个间接跳转调指令和返回指令时,都要检查其目的地址,以确定它是否遵循cfg中的有效路径。
[0074]
在一个具体的实施例中,cfi验证的过程为:从共享内存中读取plc-prg的函数基址(相当于main函数地址),并根据基址的偏移信息更新先前构建的cfg(主要用于更新第二函数返回指令),更新之后的cfg作为cfi检测的基线。然后,依次读取共享内存中第一控制流指令的执行路径,核对第一间接函数调用指令的目标地址和第一函数返回指令的目标地址是否在cfg的有效路径中,若第一间接函数调用指令的目标地址和第一函数返回指令的目标地址均在cfg的有效路径中,则plc未受到攻击。
[0075]
下面对本发明提供的工业控制系统的plc运行时攻击检测系统进行描述,下文描述的工业控制系统的plc运行时攻击检测系统与上文描述的工业控制系统的plc运行时攻击检测方法可相互对应参照。
[0076]
图3是本发明提供的工业控制系统的plc运行时攻击检测系统,如图3所示,包括:
[0077]
静态插桩模块301,用于获取plc初始的控制逻辑,并对所述初始的控制逻辑进行二进制静态插桩,得到重写后的控制逻辑。
[0078]
控制流图构建模块302,用于根据控制逻辑构建控制流图,所述控制逻辑包括所述初始的控制逻辑或者所述重写后的控制逻辑。
[0079]
运行模块303,用于运行所述重写后的控制逻辑,并获取运行过程第一控制流指令的执行路径;所述重写后的控制逻辑包括所述第一控制流指令,所述第一控制流指令包括第一间接函数调用指令和第一函数返回指令。
[0080]
攻击检测模块304,用于当所述控制流图的有效路径中包括所述控制流指令的执行路径时,确定所述plc未受到攻击。
[0081]
在一个具体的实施例中,运行模块303用于:
[0082]
运行所述重写后的控制逻辑,并将所述运行过程中第一控制流指令的目标地址实时传输到共享内存中;
[0083]
基于所述共享内存获取所述运行过程中第一控制流指令的目标地址,并跟踪所述目标地址的执行路径。
[0084]
在一个具体的实施例中,静态插桩模块301用于:
[0085]
获取所述初始的控制逻辑中所有子例程的间接函数调用指令和函数返回指令;
[0086]
利用蹦床指令来代替所述间接函数调用指令和函数返回指令。
[0087]
在一个具体的实施例中,静态插桩模块301还用于:
[0088]
对所述初始的控制逻辑静态插桩共享内存的汇编代码。
[0089]
在一个具体的实施例中,静态插桩模块301还用于:
[0090]
对所述初始的控制逻辑静态插桩传输程序起始地址的代码。
[0091]
在一个具体的实施例中,控制流图构建模块302用于:
[0092]
获取所述控制逻辑中所有子例程的代码段、数据段和符号表信息;
[0093]
根据所述代码段、数据段和符号表信息确定第二控制流指令目标地址和执行路径;所述第二控制流指令包括第二间接函数调用指令和第二函数返回指令;
[0094]
基于所述第二控制流指令的目标地址和执行路径构建控制流图。
[0095]
在一个具体的实施例中,攻击检测模块304还用于:
[0096]
检测所述控制流图的有效路径是否包括所述第一控制流指令的执行路径;其中,运行模块303与攻击检测模块304中的进程分离执行;运行模块303与攻击检测模块304通过共享内存进行通信。
[0097]
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(communications interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行工业控制系统的plc攻击检测方法,包括:
[0098]
获取plc初始的控制逻辑,并对所述初始的控制逻辑进行二进制静态插桩,得到重写后的控制逻辑。
[0099]
根据控制逻辑构建控制流图,所述控制逻辑包括所述初始的控制逻辑或者所述重写后的控制逻辑。
[0100]
运行所述重写后的控制逻辑,并获取运行过程中第一控制流指令的执行路径;所述重写后的控制逻辑包括所述第一控制流指令,所述第一控制流指令包括第一间接函数调用指令和第一函数返回指令。
[0101]
当所述控制流图的有效路径中包括所述第一控制流指令的执行路径时,确定所述plc未受到攻击。
[0102]
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0103]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行工业控制系统的plc运行时攻击检测方法,包括:
[0104]
获取plc初始的控制逻辑,并对所述初始的控制逻辑进行二进制静态插桩,得到重写后的控制逻辑。
[0105]
根据控制逻辑构建控制流图,所述控制逻辑包括所述初始的控制逻辑或者所述重写后的控制逻辑。
[0106]
运行所述重写后的控制逻辑,并获取运行过程中第一控制流指令的执行路径;所述重写后的控制逻辑包括所述第一控制流指令,所述第一控制流指令包括第一间接函数调用指令和第一函数返回指令。
[0107]
当所述控制流图的有效路径中包括所述第一控制流指令的执行路径时,确定所述plc未受到攻击。
[0108]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行工业控制系统的plc运行时攻击检测方法,包括:
[0109]
获取plc初始的控制逻辑,并对所述初始的控制逻辑进行二进制静态插桩,得到重写后的控制逻辑。
[0110]
根据控制逻辑构建控制流图,所述控制逻辑包括所述初始的控制逻辑或者所述重写后的控制逻辑。
[0111]
运行所述重写后的控制逻辑,并获取运行过程中第一控制流指令的执行路径;所述重写后的控制逻辑包括所述第一控制流指令,所述第一控制流指令包括第一间接函数调用指令和第一函数返回指令。
[0112]
当所述控制流图的有效路径中包括所述第一控制流指令的执行路径时,确定所述plc未受到攻击。
[0113]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0114]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0115]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:
1.一种工业控制系统的plc运行时攻击检测方法,其特征在于,包括:获取plc初始的控制逻辑,并对所述初始的控制逻辑进行二进制静态插桩,得到重写后的控制逻辑;根据控制逻辑构建控制流图,所述控制逻辑包括所述初始的控制逻辑或者所述重写后的控制逻辑;运行所述重写后的控制逻辑,并获取运行过程中第一控制流信指令的执行路径;所述重写后的控制逻辑包括所述第一控制流指令,所述第一控制流指令包括第一间接函数调用指令和第一函数返回指令;当所述控制流图的有效路径中包括所述第一控制流指令的执行路径时,确定所述plc未受到攻击。2.根据权利要求1所述的工业控制系统的plc运行时攻击检测方法,其特征在于,所述运行所述重写后的控制逻辑,并获取运行过程中第一控制流指令的执行路径,包括:运行所述重写后的控制逻辑,并将所述运行过程中第一控制流指令的目标地址实时传输到共享内存中;基于所述共享内存获取所述运行过程中第一控制流指令的目标地址,并跟踪所述目标地址的执行路径。3.根据权利要求1所述的工业控制系统的plc运行时攻击检测方法,其特征在于,所述对所述初始的控制逻辑进行二进制静态插桩,包括:获取所述初始的控制逻辑中所有子例程的间接函数调用指令和函数返回指令;利用蹦床指令来代替所述间接函数调用指令和函数返回指令。4.根据权利要求3所述的工业控制系统的plc运行时攻击检测方法,其特征在于,所述对所述初始的控制逻辑进行二进制静态插桩,还包括:对所述初始的控制逻辑静态插桩共享内存的汇编代码。5.根据权利要求3所述的工业控制系统的plc攻击检测方法,其特征在于,所述对所述初始的控制逻辑进行二进制静态插桩,还包括:对所述初始的控制逻辑静态插桩传输程序起始地址的代码。6.根据权利要求1-5任一项所述的工业控制系统的plc运行时攻击检测方法,其特征在于,所述根据控制逻辑构建控制流图,包括:获取所述控制逻辑中所有子例程的代码段、数据段和符号表信息;根据所述代码段、数据段和符号表信息确定第二控制流指令的目标地址和执行路径;所述第二控制流指令包括第二间接函数调用指令和第二函数返回指令;基于所述第二控制流指令的目标地址和执行路径构建控制流图。7.根据权利要求1所述的工业控制系统的plc运行时攻击检测方法,其特征在于,还包括:检测所述控制流图的有效路径是否包括所述第一控制流指令的执行路径;其中,所述检测所述控制流图的有效路径是否包括所述控制流信息的执行路径的进程与所述运行所述重写后的控制逻辑,并获取运行过程第一控制流指令的执行路径的进程分离执行;所述检测所述控制流图的有效路径是否包括所述控制流指令的执行路径的进程与所述运行所述重写后的控制逻辑,并获取运行过程第一控制流指令的执行路径的进程通过共享内存进
行通信。8.一种工业控制系统的plc运行时攻击检测系统,其特征在于,包括:静态插桩模块,用于获取plc初始的控制逻辑,并对所述初始的控制逻辑进行二进制静态插桩,得到重写后的控制逻辑;控制流图构建模块,用于根据控制逻辑构建控制流图,所述控制逻辑包括所述初始的控制逻辑或者所述重写后的控制逻辑;运行模块,用于运行所述重写后的控制逻辑,并获取运行过程第一控制流指令的执行路径;所述重写后的控制逻辑包括所述第一控制流指令,所述第一控制流指令包括第一间接函数调用指令和第一函数返回指令;攻击检测模块,用于当所述控制流图的有效路径中包括所述控制流指令的执行路径时,确定所述plc未受到攻击。9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述的工业控制系统的plc运行时攻击检测方法。10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的工业控制系统的plc运行时攻击检测方法。
技术总结
本发明提供一种工业控制系统的PLC运行时攻击检测方法及系统,属于工业控制领域,该方法包括:获取PLC初始的控制逻辑,并对初始的控制逻辑进行二进制静态插桩,得到重写后的控制逻辑;根据控制逻辑构建控制流图,控制逻辑包括初始的控制逻辑或者重写后的控制逻辑;运行重写后的控制逻辑,并获取运行过程中第一控制流指令的执行路径;重写后的控制逻辑包括第一控制流指令,第一控制流指令包括第一间接函数调用指令和第一函数返回指令;当控制流图的有效路径中包括第一控制流指令的执行路径时,确定PLC未受到攻击。本发明能够有效检测PLC程序运行时是否受到控制流劫持攻击,提升PLC的安全防护水平,保障工业控制系统的安全。保障工业控制系统的安全。保障工业控制系统的安全。
技术研发人员:孙利民 陈新 付家乐 路晓 吕世超 李志
受保护的技术使用者:中国科学院信息工程研究所
技术研发日:2023.06.30
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
