CN114371682B - Plc控制逻辑攻击检测方法及装置 - Google Patents

Plc控制逻辑攻击检测方法及装置 Download PDF

Info

Publication number
CN114371682B
CN114371682B CN202111306385.0A CN202111306385A CN114371682B CN 114371682 B CN114371682 B CN 114371682B CN 202111306385 A CN202111306385 A CN 202111306385A CN 114371682 B CN114371682 B CN 114371682B
Authority
CN
China
Prior art keywords
program
plc
baseline
control logic
attack detection
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.)
Active
Application number
CN202111306385.0A
Other languages
English (en)
Other versions
CN114371682A (zh
Inventor
孙利民
孙怡亭
刘俊矫
陈新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN202111306385.0A priority Critical patent/CN114371682B/zh
Publication of CN114371682A publication Critical patent/CN114371682A/zh
Application granted granted Critical
Publication of CN114371682B publication Critical patent/CN114371682B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B23/00Testing or monitoring of control systems or parts thereof
    • G05B23/02Electric testing or monitoring
    • G05B23/0205Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
    • G05B23/0218Electric 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/0256Electric 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
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/24Pc safety
    • G05B2219/24065Real time diagnostics

Abstract

本发明提供一种PLC控制逻辑攻击检测方法、装置及存储介质,其中方法包括:获取PLC基线程序;对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息;所述基线程序特征信息包括基线程序梯级信息;基于所述基线程序特征信息生成白名单规则;基于所述白名单规则进行PLC控制逻辑攻击检测。本发明通过提取PLC基线程序进行解析获取包括基线程序梯级在内的基线程序特征信息,生成细粒度的白名单规则,通过实时对PLC程序解析得到的程序特征信息与白名单规则进行比对,实现了PLC控制逻辑攻击的自动化检测,并将检测精度定位到具体的程序块和梯级号,提升了检测精度。

Description

PLC控制逻辑攻击检测方法及装置
技术领域
本发明涉及工业控制技术领域,尤其涉及一种PLC控制逻辑攻击检测方法及装置。
背景技术
可编程逻辑控制器(Programmable Logic Controller,PLC)在工业控制系统(Industrial Control System,ICS)中起着至关重要的作用。
由于PLC设备存在的认证缺陷以及PLC采用的通信协议被公开,因此攻击者只需掌握通信协议的构造方式并接入工控网络中,就可以对PLC设备发送指令,对PLC设备进行攻击。其中,针对PLC 控制逻辑的攻击会造成最为严重的破坏。目前针对PLC控制逻辑攻击的检测通过两个方面进行,一是利用公开的工控系统协议规范和格式,对数据包进行深度解析,从而实现异常的检测;二是通过 PLC代码的形式化验证技术,对PLC控制逻辑攻击进行检测。
但是,上述方案只能针对特定的PLC编程语言,无法获得精准的检测信息,并且需要技术人员定义特定于域的安全属性,无法实现检测过程的全自动化。
发明内容
针对现有技术存在的上述问题,本发明实施例提供一种PLC控制逻辑攻击检测方法。
本发明提供一种PLC控制逻辑攻击检测方法,包括:
获取PLC基线程序;所述PLC基线程序为PLC未遭受控制逻辑攻击时运行的控制程序;
对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息;所述基线程序特征信息包括基线程序梯级信息;
基于所述基线程序特征信息生成白名单规则;
基于所述白名单规则进行PLC控制逻辑攻击检测。
可选地,所述获取PLC基线程序,包括:
根据PLC设备对应的通信协议构造控制程序上载数据包获取所述PLC基线程序。
可选地,所述对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息,包括:
将二进制的所述PLC基线程序通过预设映射数据库进行反编译处理,得到指令表IL语言控制程序;
对所述IL语言控制程序进行文本分析,确定所述基线程序特征信息。
可选地,所述白名单规则包括程序列表白名单,程序块属性白名单和程序内容白名单;所述程序列表白名单为基线程序的列表集合;所述程序块属性白名单为基线程序块的元信息集合;所述程序内容白名单为基线程序块的梯级信息集合。
可选地,所述基于所述白名单规则进行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是本发明实施例提供的PLC控制逻辑攻击检测方法的流程示意图之一;
图2是本发明实施例提供的PLC控制逻辑攻击检测平台的架构示意图;
图3是本发明实施例提供的白名单规则生成模块生成白名单规则的流程示意图;
图4是本发明实施例提供的实时在线检测模块进行检测的流程示意图;
图5是本发明实施例提供的PLC控制逻辑攻击检测装置的结构示意图;
图6是本发明实施例提供的PLC控制逻辑攻击检测系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
ICS是工业生产中使用的一类控制系统的总称,包括监控和数据采集系统、分布式控制系统和其他工业部门常见的控制系统,以及用于基础设施的关键小型控制系统。
PLC是专门为在工业环境下应用而设计的数字运算操作电子系统。采用可编程的存储器,在其内部存储执行逻辑运算、顺序控制定时、计数和算术运算等操作的指令,通过数字式或模拟式的输入输出来控制各种类型的机械设备或生产过程。
在工业控制领域,PLC起着至关重要的作用。ICS通过PLC控制物理过程,PLC对传感器数据执行逻辑操作,将结果输出到执行器,最后作用到物理设备。这种闭环级联反馈使工业过程能够根据所需规则或者预定程序自动化进行,无需人的直接参与。
由于PLC设备无需接入方进行密码验证,接入方只需要访问工控网络即可接入PLC设备,存在认证缺陷。加之PLC设备的通信协议被公开,因此攻击者只需要掌握对应的通信协议构造方式并接入工控网络中,就可以向PLC设备发送指令,上传恶意程序等。
在针对PLC的各种攻击中,控制逻辑攻击会造成最严重的破坏,利用PLC控制程序中的缺陷来影响ICS的安全运行。PLC控制逻辑攻击是指通过修改或注入恶意的PLC控制程序来改变PLC原有的物理控制过程,对PLC进行精准的攻击。在对通用漏洞披露 (CommonVulnerabilities and Exposures,CVE)的分析中,与PLC 控制逻辑相关的漏洞随着时间的推移不断增加。
目前,针对PLC控制逻辑攻击的检测主要通过两种方法进行,一是利用公开的工控系统协议规范和格式,对数据包进行深度解析,从而发现异常;二是通过PLC代码的形式化验证技术,对PLC控制逻辑攻击进行检测。
但是,上述方案中通常只能针对特定的PLC编程语言进行检测,无法获取精准的检测信息。并且需要技术人员手动定义特定于域的安全属性,无法实现检测过程的全自动化。
针对现有技术中存在的上述问题,本发明实施例提供了一种 PLC控制逻辑攻击检测方法及装置。
图1是本发明实施例提供的PLC控制逻辑攻击检测方法的流程示意图之一,如图1所示,该方法至少包括以下步骤:
步骤101、获取PLC基线程序;所述PLC基线程序为PLC未遭受控制逻辑攻击时运行的控制程序。
具体地,PLC基线程序是指PLC未遭受控制逻辑攻击时运行的控制程序,为PLC在正常PLC设备上运行的合法控制程序,通常为二进制程序。在进行PLC控制逻辑攻击之前,获取PLC基线程序。
PLC基线程序将作为特征数据用于生成白名单规则。当合法的控制逻辑下载到PLC之后,且在PLC运行程序之前,检测平台与 PLC进行交互,获取PLC基线程序等信息以供后续的处理。当工业控制上位机或工作站更新了PLC源程序的情况下,需要同时更新检测系统的基线程序,并对原本的白名单规则进行更新。
可选地,所述获取PLC基线程序,包括:
根据PLC设备对应的通信协议构造控制程序上载数据包获取所述PLC基线程序。
PLC基线程序的提取主要是根据PLC对应的厂商和型号,选取对应的通信协议构造控制程序上载数据包获取PLC基线程序。
本发明实施例中通过提取基线程序进行PLC控制逻辑攻击的检测,增加了PLC控制逻辑攻击检测方法的通用性,适用于厂商和型号清楚的各类PLC设备。
步骤102、对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息;所述基线程序特征信息包括基线程序梯级信息。
具体地,对PLC基线程序进行分析处理,包括反编译处理和文本分析等,进而获得基线程序的梯级信息以及其它相关的特征信息。基线程序特征信息包含基线程序梯级信息。
对于大部分的PLC来说,控制逻辑可以分为:配置块、代码块、数据块和信息块四种不同的块。其中,配置块包含其它三种块的信息,例如块的地址和大小;配置块还包括PLC的其它配置信息,例如PLC的网际互连协议(Internet Protocol,IP)地址、网络配置、安全配置等。代码块存储着在PLC上运行的控制逻辑代码。数据块中维护这在代码块中使用的变量,例如输入、输出、计时器、计数器等。信息块是上位机解析PLC中的程序的依据,当PLC控制逻辑上载到工程软件时,工程软件使用信息块将其恢复成原始的项目文件。
可选地,所述对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息,包括:
将二进制的所述PLC基线程序通过预设映射数据库进行反编译处理,得到指令表IL语言控制程序;
对所述IL语言控制程序进行文本分析,确定所述基线程序特征信息。
具体地,对于PLC基线程序中的二进制程序需要进行逆向分析,将其反编译为更利于文本分析的IL语言控制程序。控制程序可以分为多个梯级,每个梯级都有可以串联或者并联放置的符号,串联代表“and”,并联代表“or”。控制程序的执行按照梯级的指令进行,从第一个梯级的指令开始,从左至右,然后移至序列中的下一个梯级。
对于二进制程序的反编译,包括将二进制的PLC基线程序通过预设映射数据库进行反编译,得到指令表IL语言控制程序。
由于二进制级别理解梯级的结构和不同的控制逻辑指令,并且由于不同厂商和不同设备的二进制控制程序结构的控制逻辑指令都不相同,因此为保证准确的反编译,在反编译之前,还需要对将二进制程序转化为IL语言控制程序的过程进行分析,得到二进制程序和IL语言控制程序之间的对应关系,根据该对应关系构建预设映射数据库。
反编译的流程主要包括:识别梯级,识别梯级中的指令,解析与这些指令相关联的数据文件以获取相关联的变量信息。
在通过反编译获得IL语言控制程序后,对其进行文本分析。文本分析是指对IL语言控制程序的解析和特征项的选取,把从文本中选取的特征词进行量化来表示程序特征信息,程序特征信息中包含有程序梯级信息。对PLC基线程序进行反编译和文本分析后,可以得到基线程序梯级信息以及其它基线程序特征信息。例如程序梯级数目,程序使用变量集合,程序地址范围集合,程序调用集合等信息。
步骤103、基于所述基线程序特征信息生成白名单规则。
具体地,将量化后的基线程序梯级信息等基线程序特征信息作为输入,可以生成对应的白名单规则。
由于处于特定ICS系统中PLC设备上运行的控制程序、操作对象和行为模式是相对固定,不轻易修改的,因此可以采用白名单方法为系统建立正常的行为模式。
白名单规则是基于PLC基线程序的程序特征信息来建立的,其中包括有基线程序梯级信息。
可选地,所述白名单规则包括程序列表白名单,程序块属性白名单和程序内容白名单;所述程序列表白名单为基线程序的列表集合;所述程序块属性白名单为基线程序块的元信息集合;所述程序内容白名单为基线程序块的梯级信息集合。
其中,程序列表白名单用于存储合法的程序列表集合,用于判断控制程序中是否出现了非法的数据块或者代码块。程序块属性白名单用于存储合法的程序块的元信息,例如块号、块地址、程序块大小、程序块创建或修改时间、程序块校验和等信息。程序内容白名单用于存储每个程序块的程序特征信息,包括程序梯级信息,例如梯级数目、梯级指纹、程序中合法的变量类型和访问地址等。合法的程序即基线程序。程序列表白名单和程序块属性白名单属于粗粒度白名单规则,程序内容白名单属于细粒度白名单规则。
步骤104、基于所述白名单规则进行PLC控制逻辑攻击检测。
具体地,在本发明实施例中,按照粗粒度白名单规则到细粒度白名单规则的顺序进行PLC控制逻辑攻击检测。粗粒度白名单规则主要对网络实体和设备控制程序的元信息进行检测,包括程序列表白名单和程序块属性白名单;细粒度白名单规则主要对程序内部和数据特征进行更加细致的检测,包括程序内容白名单。
通过对获取到的正在运行中的PLC程序进行反编译处理和文本分析,获得PLC程序特征信息。将该PLC程序特征信息与白名单规则进行比对,若不符合白名单,则判定为PLC程序出现异常,进行异常告警和提醒。
可选地,所述基于所述白名单规则进行PLC控制逻辑攻击检测,包括:
按照预设周期实时获取PLC程序;
将二进制的所述PLC程序进行反编译处理和文本分析后与所述白名单规则进行比对,确定PLC控制逻辑攻击检测结果。
具体地,可以通过主动请求的方式对PLC控制逻辑攻击进行实时监听和检测。由于针对PLC控制逻辑攻击有时并不会反应在网络流量中,例如通过恶意固件,本地通用串行总线(Universal Serial Bus,USB)对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控制逻辑攻击检测的精度。
并且,对于IEC61131-3标准制定的五种编程语言,在本发明实施例中都可以进行自动化的检测,不限制于下载到PLC上的具体编程语言。
本发明实施例提供的PLC控制逻辑攻击检测方法,通过提取 PLC基线程序进行解析获取包括基线程序梯级在内的基线程序特征信息,生成细粒度的白名单规则,通过实时对PLC程序解析得到的程序特征信息与白名单规则进行比对,实现了PLC控制逻辑攻击的自动化检测,并将检测精度定位到具体的程序块和梯级号,提升了检测精度。
图2是本发明实施例提供的PLC控制逻辑攻击检测平台的架构示意图,如图2所示,PLC控制逻辑攻击检测平台至少包括PLC程序提取模块201、PLC程序解析模块202、白名单规则生成模块203 和实时在线检测模块204。
其中,PLC程序提取模块201的第一端与工业交换机205连接,第二端与PLC程序解析模块202的第一端连接,第三端与白名单规则生成模块203的第一端连接,第四端与实时在线监测模块204的第一端连接。
PLC程序解析模块202的第二端与白名单规则生成模块203的第二端连接,第三端与实时在线检测模块204的第二端连接。
白名单规则生成模块203的第三端和白名单数据库206连接。
PLC程序提取模块201包括设备通信子系统2011、流量捕获子系统2012和数据包解析子系统2013。
其中,设备通信子系统2011可以通过工业交换机205接入工控网络中,根据PLC的厂商和型号选取对应的通信协议,通过构建 PLC程序上载数据包,从PLC中检索到控制逻辑并接受PLC的响应包。
流量捕获子系统2012用于被动监听与PLC交互的网络流量,实时捕获具有PLC程序下载功能码或PLC数据读写功能码的数据包。
数据包解析子系统2013通过对设备通信子系统2011或流量捕获子系统2012传入的通信数据包进行深度解析,提取出所有的控制程序、符号表等数据转存为二进制文件。
PLC程序解析模块202包括反编译子系统2021、文本分析子系统2022和程序特征信息子系统2023。
其中,反编译子系统2021用于将从PLC程序提取模块201汇总获取的二进制控制程序文件,通过反编译处理得到更利于文本分析的IL语言控制程序。对二进制控制程序进行反编译处理的流程包括:识别梯级,识别梯级中的指令,解析与这些指令相关联的数据文件以获取相关联的变量信息。在反编译之前,还需要对将二进制程序转化为IL语言控制程序的过程进行分析,得到二进制程序和IL语言控制程序之间的对应关系,根据该对应关系构建预设映射数据库。根据预设数据库对二进制控制程序进行反编译处理,得到IL语言控制程序。
文本分析子系统2022用于对IL语言控制程序进行解析和特征选取,把从文本中选取的特征词进行量化来生成程序特征信息,例如程序大小、程序梯级数目、程序使用变量集合、程序地址范围集合、程序调用集合等程序特征信息。量化后的PLC基线程序特征信息将提供给白名单规则生成模块203用于生成白名单规则,量化后的PLC程序特征信息将提供给实时在线检测模块204进行实时检测。
程序特征信息子系统2023用于存储量化后的PLC程序特征信息。
白名单规则生成模块203包括基线程序提取子系统2031和白名单规则生成子系统2032。
其中,基线程序提取子系统2031一方面通过PLC程序提取模块201获取PLC设备未经篡改或攻击的源程序,即PLC基线程序;一方面通过PLC程序解析模块202对基线程序进行反编译处理和文本分析,获取基线程序特征信息。基线程序可以在PLC设备投入生产过程之前进行提取。如果技术人员对PLC程序进行了修改或调整,则需要重新调用白名单规则生成模块203对白名单规则进行更新。
白名单规则生成子系统2032是基于基线程序特征信息建立的,主要分为程序列表白名单、程序块属性白名单和程序内容白名单。白名单规则生成子系统2032使用特定的白名单生成算法生成程序特征的白名单规则并存储至白名单数据库206中。程序列表白名单用于存储合法的程序列表集合,用于判断控制程序中是否出现了非法的数据块或者代码块。程序块属性白名单用于存储合法的程序块的元信息,例如块号、块地址、程序块大小、程序块创建或修改时间、程序块校验和等信息。程序内容白名单用于存储每个程序块的程序特征信息,包括程序梯级信息,例如梯级数目、梯级指纹、程序中合法的变量类型和访问地址等。合法的程序即基线程序。
实时在线检测模块204包括实时程序提取子系统2041和异常检测子系统2042。
其中,实时程序提取子系统2041用于实时获取当前PLC设备上运行的控制程序。获取方法分为两种:一是通过主动请求的方式周期性从PLC中获取当前运行的控制程序;二是通过监听工业交换机205中与PLC程序下载上传以及数据读写操作相关的网络流量,通过对网络流量进行深度解析,提取当前要下载到PLC设备中的控制程序。
异常检测子系统2042利用白名单规则生成模块203中生成的白名单规则,使用特定的白名单检测算法,将当前PLC中运行的控制程序与正常状态下的基线程序进行特征匹配和对比,若不符合白名单规则,则PLC控制逻辑攻击检测平台将判定为控制逻辑遭受了估计,控制程序被篡改,将篡改位置定位待具体程序块和梯级号,并进行异常告警和提醒。
图3是本发明实施例提供的白名单规则生成模块生成白名单规则的流程示意图,如图3所示,至少包括以下步骤:
步骤301、PLC控制逻辑攻击检测平台和PLC设备之间建立连接。
步骤302、设备通信子系统发送程序上载请求获取PLC基线程序。
步骤303、对基线程序进行处理,包括对基线程序进行反编译处理和文本分析,将二进制程序通过预设映射数据库进行反编译处理得到IL语言程序,对IL语言程序进行文本分析得到基线程序特征信息,其中包括基线程序梯级特征信息。
步骤304、白名单规则生成。根据步骤303中获取的基线程序特征信息生成白名单规则,包括程序列表白名单、程序块属性白名单和程序内容白名单。
图4是本发明实施例提供的实时在线检测模块进行检测的流程示意图,如图4所示,本发明实施例中分为主动请求和被动检测两种方式,其中:
(1)主动请求。
在实时在线检测模块和PLC设备建立连接后,周期性向PLC设备发送PLC程序上载请求,获取当前设备运行的二进制的PLC程序。对PLC程序进行反编译处理得到IL语言程序,对IL语言程序进行文本分析获得PLC程序特征信息。根据获取的PLC程序特征信息与白名单规则进行比对,并输出检测结果。
(2)被动检测。
实时在线检测模块实时监听并捕获带有PLC程序下载功能码和 PLC数据读写功能码的数据包。对捕获的数据包进行深度解析获得当前传输的二进制的PLC程序,对PLC程序进行反编译处理得到 IL语言程序,对IL语言程序进行文本分析获得PLC程序特征信息。根据获取的PLC程序特征信息与白名单规则进行比对,并输出检测结果。
图5是本发明实施例提供的PLC控制逻辑攻击检测装置的结构示意图,如图5所示,该装置包括:
获取模块501,用于获取可编程逻辑控制器PLC基线程序;所述PLC基线程序为PLC未遭受控制逻辑攻击时运行的控制程序;
解析模块502,用于对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息;所述基线程序特征信息包括基线程序梯级信息;
生成模块503,用于基于所述基线程序特征信息生成白名单规则;
检测模块504,用于基于所述白名单规则进行PLC控制逻辑攻击检测。
可选地,所述获取模块包括:
第一获取子模块,用于根据PLC设备对应的通信协议构造控制程序上载数据包获取所述PLC基线程序。
可选地,所述解析模块包括:
第一确定子模块,用于将二进制的所述PLC基线程序通过预设映射数据库进行反编译处理,得到指令表IL语言控制程序;
第二确定子模块,用于对所述IL语言控制程序进行文本分析,确定所述基线程序特征信息。
可选地,所述白名单规则包括程序列表白名单,程序块属性白名单和程序内容白名单;所述程序列表白名单为基线程序的列表集合;所述程序块属性白名单为基线程序块的元信息集合;所述程序内容白名单为基线程序块的梯级信息集合。
可选地,所述检测模块包括:
第二获取子模块,用于按照预设周期实时获取PLC程序;
第三确定子模块,用于将二进制的所述PLC程序进行反编译处理和文本分析后与所述白名单规则进行比对,确定PLC控制逻辑攻击检测结果。
可选地,所述检测模块包括:
监控子模块,用于监控具有PLC程序下载功能码或PLC数据读写功能码的数据包;
解析子模块,用于解析所述数据包获取对应的二进制的PLC程序;
第四确定子模块,用于将所述PLC程序进行反编译处理和文本分析后与所述白名单规则进行比对,确定PLC控制逻辑攻击检测结果。
在此需要说明的是,本发明实施例提供的上述装置,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
图6是本发明实施例提供的PLC控制逻辑攻击检测系统的结构示意图,如图6所示,该PLC控制逻辑攻击检测系统可以包括:处理器(Processor)601、通信接口(Communications Interface)602、存储器(Memory)603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信。处理器601可以调用存储器603中的逻辑指令,以执行PLC控制逻辑攻击检测方法,该方法包括:
获取PLC基线程序;所述PLC基线程序为PLC未遭受控制逻辑攻击时运行的控制程序;
对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息;所述基线程序特征信息包括基线程序梯级信息;
基于所述基线程序特征信息生成白名单规则;
基于所述白名单规则进行PLC控制逻辑攻击检测。
此外,上述的存储器603中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的PLC控制逻辑攻击检测方法,该方法包括:
获取PLC基线程序;所述PLC基线程序为PLC未遭受控制逻辑攻击时运行的控制程序;
对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息;所述基线程序特征信息包括基线程序梯级信息;
基于所述基线程序特征信息生成白名单规则;
基于所述白名单规则进行PLC控制逻辑攻击检测。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的PLC控制逻辑攻击检测方法,该方法包括:
获取PLC基线程序;所述PLC基线程序为PLC未遭受控制逻辑攻击时运行的控制程序;
对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息;所述基线程序特征信息包括基线程序梯级信息;
基于所述基线程序特征信息生成白名单规则;
基于所述白名单规则进行PLC控制逻辑攻击检测。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种可编程逻辑控制器PLC控制逻辑攻击检测方法,其特征在于,包括:
获取PLC基线程序;所述PLC基线程序为PLC未遭受控制逻辑攻击时运行的控制程序;
对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息;所述基线程序特征信息包括基线程序梯级信息;
基于所述基线程序特征信息生成白名单规则;
基于所述白名单规则进行PLC控制逻辑攻击检测。
2.根据权利要求1所述的PLC控制逻辑攻击检测方法,其特征在于,所述获取PLC基线程序,包括:
根据PLC设备对应的通信协议构造控制程序上载数据包获取所述PLC基线程序。
3.根据权利要求1所述的PLC控制逻辑攻击检测方法,其特征在于,所述对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息,包括:
将二进制的所述PLC基线程序通过预设映射数据库进行反编译处理,得到指令表IL语言控制程序;
对所述IL语言控制程序进行文本分析,确定所述基线程序特征信息。
4.根据权利要求1所述的PLC控制逻辑攻击检测方法,其特征在于,所述白名单规则包括程序列表白名单,程序块属性白名单和程序内容白名单;所述程序列表白名单为基线程序的列表集合;所述程序块属性白名单为基线程序块的元信息集合;所述程序内容白名单为基线程序块的梯级信息集合。
5.根据权利要求1所述的PLC控制逻辑攻击检测方法,其特征在于,所述基于所述白名单规则进行PLC控制逻辑攻击检测,包括:
按照预设周期实时获取PLC程序;
将二进制的所述PLC程序进行反编译处理和文本分析后与所述白名单规则进行比对,确定PLC控制逻辑攻击检测结果。
6.根据权利要求1所述的PLC控制逻辑攻击检测方法,其特征在于,所述基于所述白名单规则进行PLC控制逻辑攻击检测,包括:
监控具有PLC程序下载功能码或PLC数据读写功能码的数据包;
解析所述数据包获取对应的二进制的PLC程序;
将所述PLC程序进行反编译处理和文本分析后与所述白名单规则进行比对,确定PLC控制逻辑攻击检测结果。
7.一种PLC控制逻辑攻击检测装置,其特征在于,包括:
获取模块,用于获取PLC基线程序;所述PLC基线程序为PLC未遭受控制逻辑攻击时运行的控制程序;
程序解析模块,用于对所述PLC基线程序进行反编译处理和文本分析,确定基线程序特征信息;所述基线程序特征信息包括基线程序梯级信息;
生成模块,用于基于所述基线程序特征信息生成白名单规则;
检测模块,用于基于所述白名单规则进行PLC控制逻辑攻击检测。
8.一种PLC控制逻辑攻击检测系统,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述PLC控制逻辑攻击检测方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述PLC控制逻辑攻击检测方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述PLC控制逻辑攻击检测方法的步骤。
CN202111306385.0A 2021-11-05 2021-11-05 Plc控制逻辑攻击检测方法及装置 Active CN114371682B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111306385.0A CN114371682B (zh) 2021-11-05 2021-11-05 Plc控制逻辑攻击检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111306385.0A CN114371682B (zh) 2021-11-05 2021-11-05 Plc控制逻辑攻击检测方法及装置

Publications (2)

Publication Number Publication Date
CN114371682A CN114371682A (zh) 2022-04-19
CN114371682B true CN114371682B (zh) 2024-04-05

Family

ID=81138161

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111306385.0A Active CN114371682B (zh) 2021-11-05 2021-11-05 Plc控制逻辑攻击检测方法及装置

Country Status (1)

Country Link
CN (1) CN114371682B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115033881B (zh) * 2022-08-12 2022-12-09 中国电子科技集团公司第三十研究所 Plc控制器病毒检测方法、装置、设备及存储介质
CN115793562A (zh) * 2023-01-30 2023-03-14 国家工业信息安全发展研究中心 可编程逻辑控制器plc设备的异常处理方法及装置
CN117118981A (zh) * 2023-10-19 2023-11-24 广州翼辉信息技术有限公司 一种基于codesys编程环境的工业云平台通信方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834858A (zh) * 2015-04-24 2015-08-12 南京邮电大学 一种android应用中恶意代码的静态检测方法
CN105141604A (zh) * 2015-08-19 2015-12-09 国家电网公司 一种基于可信业务流的网络安全威胁检测方法及系统
CN107544470A (zh) * 2017-09-29 2018-01-05 杭州安恒信息技术有限公司 一种基于白名单的控制器防护技术
CN110825040A (zh) * 2019-10-22 2020-02-21 中国科学院信息工程研究所 一种工业控制系统的过程控制攻击检测方法及装置
CN113132346A (zh) * 2021-03-05 2021-07-16 国家计算机网络与信息安全管理中心 一种移动应用信息窃取回传主控地址的检测方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200314130A1 (en) * 2017-01-19 2020-10-01 Mitsubishi Electric Corporation Attack detection device, attack detection method, and computer readable medium
CN112583763B (zh) * 2019-09-27 2022-09-09 财团法人资讯工业策进会 入侵侦测装置以及入侵侦测方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834858A (zh) * 2015-04-24 2015-08-12 南京邮电大学 一种android应用中恶意代码的静态检测方法
CN105141604A (zh) * 2015-08-19 2015-12-09 国家电网公司 一种基于可信业务流的网络安全威胁检测方法及系统
CN107544470A (zh) * 2017-09-29 2018-01-05 杭州安恒信息技术有限公司 一种基于白名单的控制器防护技术
CN110825040A (zh) * 2019-10-22 2020-02-21 中国科学院信息工程研究所 一种工业控制系统的过程控制攻击检测方法及装置
CN113132346A (zh) * 2021-03-05 2021-07-16 国家计算机网络与信息安全管理中心 一种移动应用信息窃取回传主控地址的检测方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《可编程逻辑控制器的控制逻辑注入攻击入侵检测方法》;孙怡亭 等;《计算机应用》;20230705;第43卷(第6期);第1861-1869页 *

Also Published As

Publication number Publication date
CN114371682A (zh) 2022-04-19

Similar Documents

Publication Publication Date Title
CN114371682B (zh) Plc控制逻辑攻击检测方法及装置
CN110825040B (zh) 一种工业控制系统的过程控制攻击检测方法及装置
Ahmed et al. Programmable logic controller forensics
CN108600193B (zh) 一种基于机器学习的工控蜜罐识别方法
Yang et al. iFinger: Intrusion detection in industrial control systems via register-based fingerprinting
CN110704816B (zh) 接口破解的识别方法、装置、设备及存储介质
CN109459995B (zh) 一种面向多种工业以太网协议的状态监测系统及监测方法
CN113259392A (zh) 一种网络安全攻防方法、装置及存储介质
Hadziosmanovic et al. Through the eye of the PLC: towards semantic security monitoring for industrial control systems
CN107666468A (zh) 网络安全检测方法和装置
CN105468981B (zh) 基于漏洞识别技术的插件安全扫描装置及扫描方法
CN112632560A (zh) 一种web漏洞确认方法以及装置
CN113315767A (zh) 一种电力物联网设备安全检测系统及方法
CN111092912B (zh) 安全防御方法及装置
CN115550049A (zh) 一种物联网设备的漏洞检测方法及系统
Alsabbagh et al. A control injection attack against S7 PLCs-manipulating the decompiled code
CN114329452A (zh) 一种异常行为检测方法、装置及相关设备
CN113163012B (zh) 一种基于区块链的物联网设备管理方法及装置
CN114338104A (zh) 安全网关解析功能验证方法、装置、设备及存储介质
CN111339785B (zh) 一种基于业务建模的语义级安全审计方法
CN106411816B (zh) 一种工业控制系统、安全互联系统及其处理方法
CN113721960A (zh) 基于rpa和ai的应用程序漏洞修复方法和装置
CN113835954A (zh) 一种动态网络安全监测方法、装置及设备
CN115378825B (zh) 基于应用层工控协议解析的交互式仿真系统和方法
CN115801643B (zh) 协议解析功能的测试方法、装置、终端设备及存储介质

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