CN115097807A - 面向可编程逻辑控制器的内存攻击检测方法及系统 - Google Patents
面向可编程逻辑控制器的内存攻击检测方法及系统 Download PDFInfo
- Publication number
- CN115097807A CN115097807A CN202210652217.5A CN202210652217A CN115097807A CN 115097807 A CN115097807 A CN 115097807A CN 202210652217 A CN202210652217 A CN 202210652217A CN 115097807 A CN115097807 A CN 115097807A
- Authority
- CN
- China
- Prior art keywords
- plc
- memory
- data
- key
- hash value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 31
- 238000013507 mapping Methods 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 70
- 230000006854 communication Effects 0.000 claims description 24
- 238000004891 communication Methods 0.000 claims description 23
- 238000000034 method Methods 0.000 claims description 19
- 230000008859 change Effects 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 claims description 4
- 230000002452 interceptive effect Effects 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims description 3
- 238000005065 mining Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 abstract description 7
- 230000007123 defense Effects 0.000 abstract description 5
- 239000000243 solution Substances 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000002347 injection Methods 0.000 description 4
- 239000007924 injection Substances 0.000 description 4
- 238000013461 design Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000002864 sequence alignment Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B23/00—Testing or monitoring of control systems or parts thereof
- G05B23/02—Electric testing or monitoring
- G05B23/0205—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
- G05B23/0218—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults
- G05B23/0256—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults injecting test signals and analyzing monitored process response, e.g. injecting the test signal while interrupting the normal operation of the monitored system; superimposing the test signal onto a control signal during normal operation of the monitored system
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/24—Pc safety
- G05B2219/24065—Real time diagnostics
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
- Programmable Controllers (AREA)
Abstract
本发明属于工业控制系统防御技术领域,特别涉及一种面向可编程逻辑控制器(programmable logic controller,PLC)的内存攻击检测方法及系统,通过PLC协议的语义逆向分析和内存结构的分析,获取PLC协议语义和物理内存映射,并提取PLC关键内存数据;通过发送PLC读取请求来获取PLC关键内存数据,计算相对应的哈希值,并将该获取到的PLC关键内存数据及哈希值作为检测阶段初始内存副本;定期读取PLC关键内存数据,计算其哈希值,并将其与初始内存副本进行比较,依据比较结果来检测PLC关键内存数据的完整性。本发明能够实现面向PLC的内存完整性保护及运行时的攻击检测和应急响应,提升工业控制系统攻击防御的可靠性。
Description
技术领域
本发明属于工业控制系统防御技术领域,特别涉及一种面向可编程逻辑控制器的内存攻击检测方法及系统。
背景技术
工业控制系统(Industrial control system,ICS)广泛应用于电力,水利,燃气,化工等国家关键基础设施行业中。然而,针对这些关键系统的恶意攻击将对社会造成广泛而巨大的破坏。例如,Stuxnet病毒感染某地区的核设施,通过篡改控制器中的控制程序,导致该地区核电站的核设施受损。Industroyer恶意软件利用协议漏洞操纵基辅的变电站,导致大规模停电。ICS中通常存在大量的可编程逻辑控制器(programmable logiccontroller,PLC),然而,PLC已经被证明容易受到各种类型的内存攻击,例如控制逻辑注入攻击、变量篡改攻击、固件修改攻击、应用程序保护密码篡改攻击,以及配置篡改攻击等。
现有通过防御措施以缓解PLC内存攻击的方案主要分为以下几类:1)验证控制逻辑字节码或高级源代码的完整性,2)基于机器学习、不变式规则和物理模型识别物理过程行为中的异常,3)使用可信平台模块或基于软件的证明(Attestation)PLC的完整性。但,针对仍然存在以下的局限性:针对PLC控制逻辑篡改攻击提出的代码完整性验证方案,需要编程软件在执行上传或下载控制程序到PLC的网络流量;针对PLC的变量篡改攻击提出的异常检测方案,在很大程度上依赖于在大量物理过程数据上训练的强大模型,更糟糕的是,这些模型被证明容易受到对抗性攻击;且,现有的软硬件Attestation解决方案在实际PLC中难以应用,例如,硬件证明解决方案需要硬件信任根技术(例如,TrustZone或SGX),这些技术通常不能直接用于传统PLC。基于软件的Attestation解决方案通常假设PLC运行时系统可访问,然而由于大多数厂商的PLC通常难以通过网络访问运行时系统,基于软件的Attestation解决方案很难推广到主流的PLC。
发明内容
为此,本发明提供一种面向可编程逻辑控制器的内存攻击检测方法及系统,能够实现面向可编程逻辑控制器的内存完整性保护及运行时的攻击检测和应急响应,提升工业控制系统攻击防御的可靠性。
按照本发明所提供的设计方案,提供一种面向可编程逻辑控制器的内存攻击检测方法,包含如下内容:
通过PLC协议的语义逆向分析和内存结构的分析,获取PLC协议语义和物理内存映射,并提取PLC关键内存数据;
通过发送PLC读取请求来获取PLC关键内存数据,计算相对应的哈希值,并将该获取到的PLC关键内存数据及哈希值作为检测阶段初始内存副本;
定期读取PLC关键内存数据,计算其哈希值,并将其与初始内存副本进行比较,依据比较结果来检测PLC关键内存数据的完整性。
作为本发明面向可编程逻辑控制器的内存攻击检测方法,进一步地,提取PLC关键内存数据中,通过协议逆向分析和内存结构分析来定位并提取PLC控制应用中关键编译后的二进制数据,其中,关键编译后的二进制数据包含但不限于:控制逻辑程序、配置数据、变量数据、应用保护密码及固件。
作为本发明面向可编程逻辑控制器的内存攻击检测方法,进一步地,协议语义逆向分析中,使用逆向调试软件对PLC编程软件进行逆向工程并分析私有协议语义,具体包含:首先,定位PLC通信的关键动态链接库文件;然后,通过执行关键动态链接库文件中可执行函数来挖掘支持PLC与编程软件通信的关键类;接着,通过PLC控制应用的单步调试来识别关键类函数数据包中的功能码;再者,观察编程软件与PLC之间交互式网络流量并识别请求序列,以恢复协议状态机;最后,获取PLC执行不同通信功能的功能码,使用标准序列比对技术分析协议中不同功能码语义。
作为本发明面向可编程逻辑控制器的内存攻击检测方法,进一步地,定位PLC通信的关键动态链接库文件中,运行编程软件并将编程软件连接到PLC,利用调试器识别编程软件调用的所有动态链接库文件;过滤掉system32目录下所有系统动态链接库文件和.NET目录下动态链接库文件,通过分析剩余的动态链接库文件来查找并定位与PLC通信的关键动态链接库文件。
作为本发明面向可编程逻辑控制器的内存攻击检测方法,进一步地,通过PLC控制应用的单步调试来识别关键类函数数据包中的功能码,运行编程软件并保持编程软件与PLC的连接,定位并执行带有调试器的通信类中的关键函数,并识别负责向PLC发送指令的关键函数;通过网络包分析工具在调试期间捕获关键函数发送的数据包,进而识别捕获的数据包中的功能码。
作为本发明面向可编程逻辑控制器的内存攻击检测方法,进一步地,内存结构分析中,依据协议功能码读取PLC内存空间,并分析PLC内存布局,进而通过PLC读内存的功能来提取关键内存数据。
作为本发明面向可编程逻辑控制器的内存攻击检测方法,进一步地,分析PLC内存布局中,首先,过滤PLC内存空间的填充数据,并定位执行上传和下载时关键内存数据,寻找对应地址段;然后,对PLC内存数据进行差异分析,利用PLC内存块内容变化规律来识别出不同内存块的地址和大小。
作为本发明面向可编程逻辑控制器的内存攻击检测方法,进一步地,通过PLC读内存的功能来提取关键内存数据中,根据定位到的PLC内存分布中不同数据的起始地址段和内存块大小,提取对应类型的内存数据,其中,根据内存数据的地址分布、功能和访问权限将内存数据划分为如下数据类型:控制逻辑程序、变量数据、配置数据、应用保护数据及固件数据。
作为本发明面向可编程逻辑控制器的内存攻击检测方法,进一步地,利用动态校验和机制,定期请求读取PLC内存中,随机选择数据块并随机生成校验和大小和偏移地址,利用生成的检验和大小和偏移地址构造校验和请求包并发送至PLC,将哈希值及校验和与初始内存副本进行比较,如果哈希值和校验与初始内存副本不一致,则检测为攻击并发送相应警报消息。
进一步地,本发明还提供一种面向可编程逻辑控制器的内存攻击检测系统,包含:分析模块和检测模块,其中,
分析模块,用于通过PLC协议的语义逆向分析和内存结构的分析,获取PLC协议语义和物理内存映射,并提取PLC关键内存数据;
检测模块,用于通过发送PLC读取请求来获取PLC关键内存数据及相对应的哈希值,将该获取到的PLC关键内存数据及计算的哈希值作为检测阶段初始内存副本;并定期读取PLC关键内存数据并计算其哈希值,将其与初始内存副本进行比较,依据比较结果来检测PLC关键内存数据的完整性。
本发明的有益效果:
本发明基于软件逆向工程和网络流量差异的PLC专有协议的综合语义分析、及关键内存数据细粒度内存结构分析,并通过定期检查这些内存数据的哈希值来对PLC的关键内存进行完整性检查,能够有效的防御针对PLC的控制逻辑注入攻击、配置篡改攻击、固件修改攻击及应用保护密码篡改攻击,并可在发现攻击后及时作出应急响应,无需对PLC的硬件本身进行更改,方便部署,具有较好的应用前景。
附图说明:
图1为实施例中面向可编程逻辑控制器的内存攻击检测方法流程示意;
图2为实施例中内存攻击检测原理示意;
图3为实施例中CPLC通信类关键功能函数示意;
图4为实施例中Wireshark中捕获的数据示意;
图5为实施例中M221的PLC通信流程示意;
图6为实施例中M221的内存地址分布示意。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
本发明实施例,参见图1所示,提供一种面向可编程逻辑控制器的内存攻击检测方法,包含如下内容:
S101、通过PLC协议的语义逆向分析和内存结构的分析,获取PLC协议语义和物理内存映射,并提取PLC关键内存数据;
S102、通过发送PLC读取请求来获取PLC关键内存数据,计算相对应的哈希值,并将该获取到的PLC关键内存数据及哈希值作为检测阶段初始内存副本;
S103、定期读取PLC关键内存数据,计算其哈希值,并将其与初始内存副本进行比较,依据比较结果来检测PLC关键内存数据的完整性。
通过PLC协议语义分析和内存结构分析,并利用定期检查内存数据的哈希值来实现对PLC关键内存的完整性检查,能够有效的防御针对PLC的控制逻辑注入攻击、配置篡改攻击、固件修改攻击及应用保护密码篡改攻击,提升工业控制系统ICS的安全。
进一步地,本案实施例中,提取PLC关键内存数据中,通过协议逆向分析和内存结构分析来定位并提取PLC控制应用中关键编译后的二进制数据,其中,关键编译后的二进制数据包含但不限于:控制逻辑程序、配置数据、变量数据、应用保护密码及固件。
PLC通常支持使用私有的协议执行编程控制和数据访问的功能,例如上传或下载工程文件,读取或写入PLC不同的内存数据。内存提取的目的是定位并提取出PLC控制应用中关键的编译后的二进制数据,如控制逻辑程序,配置数据,变量数据,应用保护密码,固件等。参见图2所示的原理示意中,内存提取的过程分为协议逆向分析和内存结构分析两个部分。
进一步地,协议语义逆向分析中,使用逆向调试软件(例如IDA、dnSpy)对PLC编程软件进行逆向工程并分析私有协议语义,具体包含:首先,定位PLC通信的关键动态链接库文件;然后,通过执行关键动态链接库文件中可执行函数来挖掘支持PLC与编程软件通信的关键类;接着,通过PLC控制应用的单步调试来识别关键类函数数据包中的功能码;再者,观察编程软件与PLC之间交互式网络流量并识别请求序列,以恢复协议状态机;最后,获取PLC执行不同通信功能的功能码,使用标准序列比对技术分析协议中不同功能码语义。
由于PLC编程软件通常调用相对独立的动态链接库DLL文件来执行通信功能,本案实施例中,通过动态调试定位关键的DLL文件,具体可为:首先通过运行编程软件并将其连接到PLC;然后,可以使用调试器(例如IDA)识别编程软件调用的所有DLL文件;过滤掉system32目录下的所有系统DLL文件和.NET的DLL文件后,分析剩下的DLL文件从而找到与PLC通信的关键DLL文件。
通过动态调试找到的DLL文件中的可执行函数进一步挖掘出支持PLC与编程软件通信的重要类。例如,图3列举了施耐德M221 PLC的plcif.dll中CPLC类的几个关键功能,其中,runPlc和stopPlc是切换PLC运行模式的函数,runPlc可以发送指令将PLC从停止状态切换到运行状态),getPlcState和getProductVersion是诊断功能,getPlcState可以发送指令获取PLC运行状态、编程软件连接状态和内存保护状态。uploadPlcApp函数执行上传操作。这些函数可用于挖掘不同的功能码。
进一步地,本案实施例中,通过PLC控制应用的单步调试来识别关键类函数数据包中的功能码中,运行编程软件并保持编程软件与PLC的连接,定位并执行带有调试器的通信类中的关键函数,并识别负责向PLC发送指令的关键函数;通过网络包分析工具在调试期间捕获关键函数发送的数据包,进而识别捕获的数据包中的功能码。
应用单步调试来获得功能码,具体调试过程可包括如下内容:1)运行编程软件并保持与PLC的连接;2)定位并执行带有调试器的通信类中的关键函数,例如,runplc函数;3)识别负责向PLC发送指令关键函数;4)打开网络包分析工具,例如Wireshark,并在调试期间捕获关键函数发送的数据包;5)识别捕获的Wireshark数据包中的功能码号。例如,图4为Wireshark捕获的数据包,从数据中可以获取runplc函数对应的功能码号为0x40。
本案实施例中,进一步地,内存结构分析中,依据协议功能码读取PLC内存空间,并分析PLC内存布局,进而通过功能码来提取关键内存数据。
在编程软件与PLC建立正常通信之前,通常存在一个授权过程,例如,会话ID认证和访问控制认证。为了绕过身份验证并与PLC建立通信,需要先恢复协议状态机,以构建正确的请求序列。本案实施例中,可以通过观察交互式网络流量和识别必要的请求序列来恢复协议的状态机,图5为M221 PLC整个通信过程。完成通信类中的所有函数逆向分析后,可以获取PLC执行不同通信功能的功能码;然后,使用标准的序列比对技术分析协议中不同功能码的详细语义。
进一步地,本案实施例中,分析PLC内存布局中,首先,过滤PLC内存空间的填充数据,并定位执行上传和下载时关键内存数据,寻找对应地址段;然后,对PLC内存数据进行差异分析,利用PLC内存块内容变化规律来识别出不同内存块的地址和大小。
编程软件将程序下载到PLC后,这些包括PLC中的逻辑程序、变量数据、配置数据、应用程序保护密码和固件等关键内存数据的地址在物理内存中是固定的,这使得检测这些内存区域完整性可以防御针对PLC的内存攻击。应用读取内存的协议功能码读取PLC整个内存空间,如,读取从地址0x00到0xffffffff的内存数据。并通过过滤掉整个内存空间的填充数据并定位执行上传和下载时关键的内存数据,找到有意义的地址段。随后,对PLC的内存数据进行差异分析,具体来说,通过对编程软件的工程文件进行细微的修改,并下载到PLC中,查看PLC中内存块的内容变化规律。最终识别出不同内存块的地址和大小,例如,控制逻辑程序的地址为0x701e090、大小为60字节,并找出数据块的含义。例如,图6为定位到的M221的关键内存布局图。
进一步地,本案实施例中,通过PLC读内存的功能码来提取关键内存数据,根据定位到的PLC内存分布中不同数据的起始地址段和内存块大小,提取对应类型数据,其中,根据内存数据的地址分布、功能和访问权限将内存数据划分为如下数据类型:控制逻辑程序、变量数据、配置数据、应用保护数据及固件数据。不同的内存数据具有不同的访问权限,例如,固件仅有读取访问权限。为了得到攻击后的响应策略,可根据内存数据的地址分布、功能和访问权限进一步将内存数据分为五类:控制逻辑程序、变量数据、配置数据、应用保护密码哈希和解密后的固件。并根据定位到的PLC内存分布中不同数据的起始地址和块大小,使用读内存数据的功能码自动提取不同类型的数据。
本案实施例中,进一步地,利用动态校验和机制,定期请求读取PLC内存中,随机选择数据块并随机生成校验和大小和偏移地址,利用生成的检验和大小和偏移地址构造校验和请求包并发送至PLC,将哈希值及校验和与初始内存副本进行比较,如果哈希值和校验与初始内存副本不一致,则检测为攻击并发送相应警报消息。
完整性检验的目的是为了保护内存提取阶段获取的关键内存数据的完整性,检验过程可设计为如下步骤:
(a)工程师将配置好的工程文件下载到PLC。
(b)验证器发送读取请求以获取关键内存数据。
(c)验证器从PLC中接收带有相应内存数据的响应。
(d)验证器计算提取的内存块的SHA-256哈希,并将接收到的数据与SHA-256哈希值一起存储在数据库中,作为后续检测中的原始副本。
(e)验证器会定期请求物理内存并计算所有关键内存数据的SHA-256哈希值。同时,为了缓解中间人攻击,本发明设计了一种动态校验和机制,首先随机选择一个数据块,然后随机生成校验和大小和偏移地址,最后用些生成的偏移地址和数据大小构造校验和请求包,并将其发送到PLC。
(f)将SHA-256哈希和校验和与数据库中的原始副本进行比较来实现变量内存的完整性检查。
如果哈希和校验与数据库中的原始副本不一致,验证器将识别攻击并发送相对应的警报消息。根据报警消息,工程师可以根据响应规则应急处理。例如,如果验证器发送与固件相关的警报消息,工程师将重新配置项目或更新PLC中的固件。
进一步地,基于上述的方法,本发明实施例还提供一种面向可编程逻辑控制器的内存攻击检测系统,包含:分析模块和检测模块,其中,
分析模块,用于通过PLC协议的语义逆向分析和内存结构的分析,获取PLC协议语义和物理内存映射,并提取PLC关键内存数据;
检测模块,用于通过发送PLC读取请求来获取PLC关键内存数据及计算相对应的哈希值,将该获取到的PLC关键内存数据及哈希值作为检测阶段初始内存副本;并定期读取PLC关键内存数据并计算其哈希值,将其与初始内存副本进行比较,依据比较结果来检测PLC关键内存数据的完整性。
本发明中,通过语义逆向分析和内存结构分析,并通过定期读取PLC内存数据,能够有效防御针对PLC的控制逻辑注入攻击、配置篡改攻击、固件修改攻击、应用保护密码篡改攻击,并可在发现攻击后及时作出应急响应,无需对PLC的硬件本身进行更改,方便部署、实施。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种面向可编程逻辑控制器的内存攻击检测方法,其特征在于,包含如下内容:
通过PLC协议的语义逆向分析和内存结构的分析,获取PLC协议语义和物理内存映射,并提取PLC关键内存数据;
通过发送PLC读取请求来获取PLC关键内存数据,计算内存数据相对应的哈希值,并将获取到的PLC关键内存数据及哈希值作为检测阶段初始内存副本;
定期读取PLC关键内存数据,计算内存数据的哈希值,并将其与初始内存副本进行比较,依据比较结果来检测PLC关键内存数据的完整性。
2.根据权利要求1所述的面向可编程逻辑控制器的内存攻击检测方法,其特征在于,提取PLC关键内存数据中,通过协议逆向分析和内存结构分析来定位并提取PLC控制应用中关键编译后的二进制数据,其中,关键编译后的二进制数据包含但不限于:控制逻辑程序、配置数据、变量数据、应用保护密码及固件。
3.根据权利要求1或2所述的面向可编程逻辑控制器的内存攻击检测方法,其特征在于,协议语义逆向分析中,使用逆向调试软件对PLC编程软件进行逆向工程并分析私有协议语义,具体包含:首先,定位PLC通信的关键动态链接库文件;然后,通过执行关键动态链接库文件中可执行函数来挖掘支持PLC与编程软件通信的关键类;接着,通过PLC控制应用的单步调试来识别关键类函数数据包中的功能码;再者,观察编程软件与PLC之间交互式网络流量并识别请求序列,以恢复协议状态机;最后,获取PLC执行不同通信功能的功能码,使用标准序列比对技术分析协议中不同功能码语义。
4.根据权利要求3所述的面向可编程逻辑控制器的内存攻击检测方法,其特征在于,定位PLC通信的关键动态链接库文件中,运行编程软件并将编程软件连接到PLC,利用调试器识别编程软件调用的所有动态链接库文件;过滤掉system32目录下所有系统动态链接库文件和.NET目录下动态链接库文件,通过分析剩余的动态链接库文件来查找并定位负责PLC通信的关键动态链接库文件。
5.根据权利要求3所述的面向可编程逻辑控制器的内存攻击检测方法,其特征在于,通过PLC控制应用的单步调试来识别关键类函数数据包中的功能码,运行编程软件并保持编程软件与PLC的连接,定位并执行带有调试器的通信类中的关键函数,并识别负责向PLC发送指令的关键函数;通过网络包分析工具在调试期间捕获关键函数发送的数据包,进而识别捕获的数据包中的功能码。
6.根据权利要求1或2所述的面向可编程逻辑控制器的内存攻击检测方法,其特征在于,内存结构分析中,依据协议规范读取PLC内存数据,并分析PLC内存布局,进而提取关键内存数据。
7.根据权利要求6所述的面向可编程逻辑控制器的内存攻击检测方法,其特征在于,分析PLC内存布局中,首先,过滤PLC内存空间的填充数据,并定位执行上传和下载时关键内存数据,寻找对应地址段;然后,对PLC内存数据进行差异分析,利用PLC内存块内容变化规律来识别出不同内存块的地址和大小。
8.根据权利要求7所述的面向可编程逻辑控制器的内存攻击检测方法,其特征在于,利用PLC读内存的功能码来提取关键内存数据中,根据定位到的PLC内存分布中不同数据的起始地址段和内存块大小,提取对应类型的内存数据,其中,根据内存数据的地址分布、功能和访问权限将内存数据划分为如下数据类型:控制逻辑程序、变量数据、配置数据、应用保护数据及固件数据。
9.根据权利要求1所述的面向可编程逻辑控制器的内存攻击检测方法,其特征在于,利用动态校验和机制,定期请求读取PLC内存中,随机选择数据块并随机生成校验和大小和偏移地址,利用生成的检验和大小和偏移地址构造校验和请求包并发送至PLC,将哈希值及校验和与初始内存副本进行比较,如果哈希值和校验与初始内存副本不一致,则检测为攻击并发送相应警报消息。
10.一种面向可编程逻辑控制器的内存攻击检测系统,其特征在于,包含:分析模块和检测模块,其中,
分析模块,用于通过PLC协议的语义逆向分析和内存结构的分析,获取PLC协议语义和物理内存映射,并提取PLC关键内存数据;
检测模块,用于通过发送PLC读取请求来获取PLC关键内存数据及相对应的哈希值,将该获取到的PLC关键内存数据及哈希值作为检测阶段初始内存副本;并定期读取PLC关键内存数据中哈希值,将其与初始内存副本进行比较,依据比较结果来检测PLC关键内存数据的完整性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210652217.5A CN115097807B (zh) | 2022-06-10 | 2022-06-10 | 面向可编程逻辑控制器的内存攻击检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210652217.5A CN115097807B (zh) | 2022-06-10 | 2022-06-10 | 面向可编程逻辑控制器的内存攻击检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115097807A true CN115097807A (zh) | 2022-09-23 |
CN115097807B CN115097807B (zh) | 2024-08-16 |
Family
ID=83290085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210652217.5A Active CN115097807B (zh) | 2022-06-10 | 2022-06-10 | 面向可编程逻辑控制器的内存攻击检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115097807B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115793563A (zh) * | 2023-02-01 | 2023-03-14 | 北京六方云信息技术有限公司 | 设备控制方法、装置、终端设备以及存储介质 |
CN116520809A (zh) * | 2023-06-02 | 2023-08-01 | 西南石油大学 | 面向高危气田的工业控制系统安全行为识别方法及系统 |
CN118378252A (zh) * | 2024-06-20 | 2024-07-23 | 北京六方云信息技术有限公司 | 组态软件防控方法、装置、设备以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109672569A (zh) * | 2019-01-13 | 2019-04-23 | 国网信通产业集团有限公司 | 一种基于协议深度分析的工控安全监测系统研究与应用 |
CN110825040A (zh) * | 2019-10-22 | 2020-02-21 | 中国科学院信息工程研究所 | 一种工业控制系统的过程控制攻击检测方法及装置 |
CN111176202A (zh) * | 2019-12-31 | 2020-05-19 | 成都烽创科技有限公司 | 工业控制网络的安全管理方法、装置、终端设备及介质 |
CN114285599A (zh) * | 2021-11-23 | 2022-04-05 | 中国人民解放军战略支援部队信息工程大学 | 基于控制器深度内存仿真的工控蜜罐构建方法及工控蜜罐 |
CN114371682A (zh) * | 2021-11-05 | 2022-04-19 | 中国科学院信息工程研究所 | Plc控制逻辑攻击检测方法及装置 |
-
2022
- 2022-06-10 CN CN202210652217.5A patent/CN115097807B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109672569A (zh) * | 2019-01-13 | 2019-04-23 | 国网信通产业集团有限公司 | 一种基于协议深度分析的工控安全监测系统研究与应用 |
CN110825040A (zh) * | 2019-10-22 | 2020-02-21 | 中国科学院信息工程研究所 | 一种工业控制系统的过程控制攻击检测方法及装置 |
CN111176202A (zh) * | 2019-12-31 | 2020-05-19 | 成都烽创科技有限公司 | 工业控制网络的安全管理方法、装置、终端设备及介质 |
CN114371682A (zh) * | 2021-11-05 | 2022-04-19 | 中国科学院信息工程研究所 | Plc控制逻辑攻击检测方法及装置 |
CN114285599A (zh) * | 2021-11-23 | 2022-04-05 | 中国人民解放军战略支援部队信息工程大学 | 基于控制器深度内存仿真的工控蜜罐构建方法及工控蜜罐 |
Non-Patent Citations (4)
Title |
---|
YANG YANG GENG: ""Defending Cyber–Physical Systems Through Reverse-Engineering-Based Memory Sanity Check"", 《IEEE INTERNET OF THINGS JOURNAL》, vol. 10, no. 10, 15 May 2023 (2023-05-15), pages 8331 - 8347 * |
张蔚瑶: ""未知协议的逆向分析与自动化测试"", 《计算机学报》, vol. 43, no. 04, 15 April 2020 (2020-04-15), pages 653 - 667 * |
李程: ""基于分解重构的网络软件测试数据生成方法"", 《计算机科学》, vol. 40, no. 10, 15 October 2013 (2013-10-15), pages 108 - 113 * |
杨亚辉: ""基于工控私有协议逆向的黑盒模糊测试方法"", 《计算机科学》, vol. 50, no. 04, 29 December 2022 (2022-12-29), pages 323 - 332 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115793563A (zh) * | 2023-02-01 | 2023-03-14 | 北京六方云信息技术有限公司 | 设备控制方法、装置、终端设备以及存储介质 |
CN116520809A (zh) * | 2023-06-02 | 2023-08-01 | 西南石油大学 | 面向高危气田的工业控制系统安全行为识别方法及系统 |
CN116520809B (zh) * | 2023-06-02 | 2023-12-12 | 西南石油大学 | 面向高危气田的工业控制系统安全行为识别方法及系统 |
CN118378252A (zh) * | 2024-06-20 | 2024-07-23 | 北京六方云信息技术有限公司 | 组态软件防控方法、装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115097807B (zh) | 2024-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106775716B (zh) | 一种基于度量机制的可信plc启动方法 | |
CN115097807B (zh) | 面向可编程逻辑控制器的内存攻击检测方法及系统 | |
Kalle et al. | CLIK on PLCs! Attacking control logic with decompilation and virtual PLC | |
Alanazi et al. | SCADA vulnerabilities and attacks: A review of the state‐of‐the‐art and open issues | |
CN112134761B (zh) | 基于固件分析的电力物联网终端脆弱性检测方法及系统 | |
Ma et al. | Cdrep: Automatic repair of cryptographic misuses in android applications | |
Pan et al. | Review of PLC security issues in industrial control system | |
Zubair et al. | PEM: Remote forensic acquisition of PLC memory in industrial control systems | |
Liu et al. | ShadowPLCs: A novel scheme for remote detection of industrial process control attacks | |
CN115580491B (zh) | 一种基于国密算法的工控编程平台及构建方法与运行方法 | |
CN114021142A (zh) | 一种安卓应用程序漏洞检测方法 | |
Zubair et al. | Control logic obfuscation attack in industrial control systems | |
Geng et al. | Defending cyber–physical systems through reverse-engineering-based memory sanity check | |
CN112948086A (zh) | 一种可信plc控制系统 | |
Alsabbagh et al. | A control injection attack against S7 PLCs-manipulating the decompiled code | |
Liu et al. | Fuzzing proprietary protocols of programmable controllers to find vulnerabilities that affect physical control | |
Xie et al. | A malware detection method using satisfiability modulo theory model checking for the programmable logic controller system | |
CN114095228A (zh) | 基于区块链和边缘计算的物联网数据安全存取方法、系统、装置及存储介质 | |
Feichtner | A comparative study of misapplied crypto in Android and iOS applications | |
CN117032831A (zh) | 一种可信dcs上位机系统、其启动方法及软件启动方法 | |
KR101320680B1 (ko) | 소프트웨어의 무결성 검사 장치 및 방법 | |
López-Morales et al. | SoK: Security of Programmable Logic Controllers | |
Geng et al. | Control Logic Attack Detection and Forensics through Reverse-engineering and Verifying PLC Control Applications | |
Ma et al. | Towards comprehensively understanding the run-time security of programmable logic controllers: A 3-year empirical study | |
Lee et al. | Detection and analysis technique for manipulation attacks on PLC control logic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |