CN115167261B - 一种针对罗克韦尔plc的漏洞挖掘方法 - Google Patents
一种针对罗克韦尔plc的漏洞挖掘方法 Download PDFInfo
- Publication number
- CN115167261B CN115167261B CN202210725709.2A CN202210725709A CN115167261B CN 115167261 B CN115167261 B CN 115167261B CN 202210725709 A CN202210725709 A CN 202210725709A CN 115167261 B CN115167261 B CN 115167261B
- Authority
- CN
- China
- Prior art keywords
- plc
- vulnerability
- rockwell
- enip
- data packet
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012360 testing method Methods 0.000 claims abstract description 68
- 238000005065 mining Methods 0.000 claims abstract description 42
- 238000004458 analytical method Methods 0.000 claims abstract description 23
- 238000012544 monitoring process Methods 0.000 claims abstract description 20
- 238000004088 simulation Methods 0.000 claims abstract description 9
- 230000004044 response Effects 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 60
- 230000005856 abnormality Effects 0.000 claims description 20
- 230000035772 mutation Effects 0.000 claims description 8
- 230000009466 transformation Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 7
- 230000002159 abnormal effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 240000005809 Prunus persica Species 0.000 description 2
- 235000006040 Prunus persica var persica Nutrition 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000011160 research Methods 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
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
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/054—Input/output
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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/10—Plc systems
- G05B2219/15—Plc structure of the system
- G05B2219/15028—Controller and device have several formats and protocols, select common one
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请属于工业控制***安全技术领域,具体涉及一种针对罗克韦尔PLC的漏洞挖掘方法,包括如下步骤:搭建漏洞挖掘仿真环境;进行PLC编程,并将程序下载到罗克韦尔PLC中;启动程序,同时抓取Request、Response数据包;对数据包进行ENIP协议解析并适配不同的漏洞挖掘策略;编写漏洞挖掘脚本;编写变异测试数据包并进行测试;进行异常监控。本申请的针对罗克韦尔PLC的漏洞挖掘方法,不依赖于传统的模糊测试工具,也无需对PLC进行逆向分析,从而有效减少模糊测试过程中的人力消耗,另外,该方法能够提高测试覆盖率和漏洞发现概率,解决丢包率高的问题。
Description
技术领域
本申请属于工业控制***安全技术领域,具体涉及一种针对罗克韦尔PLC的漏洞挖掘方法。
背景技术
工业控制***广泛分布于工业、能源、电力、水利、交通等关键基础设施领域,是保障生产***安全可靠运行的重要基础设施,其安全性直接影响国家安全,PLC作为工业控制***中操作指令的运算控制器,其重要性不言而喻。因此,如何有效地挖掘PLC的潜在漏洞,提高PLC的抗攻击能力,对于提升工业控制***的安全性至关重要。
但是,由于工业控制***的模块相对封闭,研究难点较大,从而导致其漏洞挖掘难度大,特别是对于罗克韦尔PLC的漏洞,其在各类漏洞库中占比非常少;以我国国家互联网应急中心(CNCERT)建立的国家信息安全漏洞共享平台(CNVD)数据为例,自2002建立以来,长期跟踪并收集全球各大公开漏洞库的数据,截至2021年已公布17万余条漏洞数据,但如图1所示,其中各类工控***的漏洞数据仅占漏洞总数的1.8%左右,约3000余条,而这其中关于罗克韦尔PLC的更是少之又少,占比不到工控***漏洞数据总量的1%。
另外,除了上述由于工业控制***本身的原因导致罗克韦尔PLC漏洞挖掘难度大之外,另外一个原因就是现有的针对其他工业控制***的漏洞挖掘方法无法运用到罗克韦尔PLC上,或者说运用到罗克韦尔PLC时存在如下一些不足:
1)现有针对其他工业控制***的漏洞挖掘主要依赖Peach等模糊测试工具,Peach主要是根据通信协议规则编写pit配置文件,由于其对语法要求极为严苛,所以需要对通信协议有全面的认识;另外,Peach是基于变异算法设计的模糊测试工具,在Fuzzing过程中根据随机变异算法会产生很多非法数据包,当非法数据包发送至罗克韦尔PLC时会被直接丢弃,因此增加了很多无效测试时间;
2)现有针对其他工业控制***的漏洞挖掘过程中的漏洞挖掘策略单一、覆盖不够全面,从而导致针对性不强、覆盖性太低的问题;
3)现有针对其他工业控制***的漏洞挖掘过程中,异常监控方法主要是基于PING的心跳异常监控,但经测试实验发现,罗克韦尔PLC发生拒绝服务异常后依旧能够PING通,所以基于PING包的心跳异常监控不能全面地监控到罗克韦尔PLC的异常,存在一定的漏报率。
发明内容
为了解决现有技术中存在的至少一个技术问题,本申请提供了一种针对罗克韦尔PLC的漏洞挖掘方法。
本申请公开了一种针对罗克韦尔PLC的漏洞挖掘方法,包括如下步骤:
步骤一、搭建针对罗克韦尔PLC的漏洞挖掘仿真环境,其中包括安装PLC编程软件;
步骤二、通过所述PLC编程软件进行PLC编程,并将编写好的PLC程序下载到所述罗克韦尔PLC中;
步骤三、所述罗克韦尔PLC启动下载的PLC程序,同时通过Wireshark抓包软件抓取所述PLC编程软件流向所述罗克韦尔PLC的Request数据包,以及所述罗克韦尔PLC返回的Response数据包;
步骤四、对所述步骤三中抓取的数据包进行ENIP协议解析,并根据不同解析结果适配不同的漏洞挖掘策略;
步骤五、基于所述步骤四中解析得到的漏洞挖掘策略,编写漏洞挖掘脚本;
步骤六、根据所述漏洞挖掘脚本编写变异测试数据包,并发送至所述罗克韦尔PLC进行Fuzzing测试;
步骤七、对步骤六中的测试进行异常监控。
根据本申请的至少一个实施方式,所述步骤一中,在安装PLC编程软件之前,还包括如下步骤:
将RSLinx软件安装于一台win10x64的上位机中,并将所述上位机的IP和所述罗克韦尔PLC的IP设置于同一网段,使得所述RSLinx软件能够正确识别罗克韦尔PLC;
其中,所述PLC编程软件是采用FactoryTalk View SE软件,并安装在所述上位机中。
根据本申请的至少一个实施方式,在所述步骤二中,编写好的PLC程序中涵盖的数据类型至少包括:SINT、INT、DINT、REAL、BOOL。
根据本申请的至少一个实施方式,所述步骤四中,对抓取的数据包进行ENIP协议解析至少包括:
对ENIP协议的会话建立、帧格式、功能码和字段进行解析;
对应的,根据不同解析结果适配不同的漏洞挖掘策略包括:
根据ENIP协议字段的不同解析结果,适配不同的漏洞挖掘策略。
根据本申请的至少一个实施方式,所述步骤四中,根据ENIP协议字段解析的结果至少包括:ENIP协议中规定值的字段、Length等长度字段、功能码Command字段、请求路径字段以及所述罗克韦尔PLC的整型数据;
对应的,针对不同解析结果相适配漏洞挖掘策略包括:
1)针对ENIP协议中规定值的字段,采用非规定值填充策略,来构建ENIP变异测试数据包;
2)针对Length等长度字段,采用Length长度的值小于实际内容的长度的填充策略,以及Length长度的值大于实际内容的长度的填充策略,以及Length长度的值与实际内容的长度相等但实际内容为随机填充的策略,构建ENIP变异测试数据包;
3)针对功能码Command字段,采用随机填充策略,构建包含非法功能码的ENIP变异测试数据包;
4)针对请求路径字段,采用随机变换请求路径策略,构建包含非法路径的ENIP变异测试数据包;
5)针对罗克韦尔PLC的整型数据,采用取临界值或取非法值的取值策略,构建ENIP变异测试数据包。
根据本申请的至少一个实施方式,在所述步骤四解析得到的多种功能码中,有一部分功能码其各自对应的数据包中仅包含协议头,为此,所述步骤五具体包括:
基于功能码和所述步骤四中得到的漏洞挖掘策略两个维度,来编写漏洞挖掘脚本,其中的功能码采用的是除上述仅包含协议头的功能码之外的功能码。
根据本申请的至少一个实施方式,在所述步骤六中,根据所述漏洞挖掘脚本编写变异测试数据包时,采用了如下四种函数,以及各种功能如下:
registerSession()函数,用于实现ENIP协议的Session注册,以及Register功能的测试;
unregisterSession()函数,用于实现ENIP协议的会话关闭;
sendRRData()函数,用于发送封装的未链接报文;
sendUnitData()函数,用于发送单元数据。
根据本申请的至少一个实施方式,在所述步骤四中,针对ENIP协议的解析共计得到的八种功能码,其中有四种功能码仅包含协议头。
根据本申请的至少一个实施方式,所述步骤一中,在安装PLC编程软件之前,还包括如下步骤:
将所述罗克韦尔PLC与一个继电器进行连接;
对应的,在所述步骤二中还包括:
定义一个BOOL变量用于控制所述继电器的开或关,并将编写好的PLC程序下载到所述罗克韦尔PLC中;
对应的,在所述步骤三中,在所述罗克韦尔PLC启动下载的PLC程序后,还包括:
手动切换BOOL变量,并通过Wireshark单独抓取一段利用BOOL变量控制继电器开关的流量;
对应的,在所述步骤六中,在进行Fuzzing测试时还包括:
循环重放上述利用BOOL变量控制继电器开关的流量;
对应的,在所述步骤七中,进行异常监控时还包括:
若抓取的流量能够正常循环,使得继电器开关正常,则判断罗克韦尔PLC能够正常提供服务,不报异常;以及
若抓取的流量不能正常循环,使得无法控制继电器开关,则判断罗克韦尔PLC不能正常提供服务,并报异常。
根据本申请的至少一个实施方式,所述的漏洞挖掘方法还包括:
步骤八、对步骤七中触发罗克韦尔PLC服务异常的变异测试数据包,再次进行重放,以确定挖掘漏洞的有效性。
本申请至少存在以下有益技术效果:
1)本申请的针对罗克韦尔PLC的漏洞挖掘方法,基于罗克韦尔PLC搭建的仿真***和预编的PLC程序,抓取有效通信数据,解析ENIP数据包,根据不同的解析结果适配不同的漏洞挖掘策略,因此该方法不依赖于传统的模糊测试工具,也无需对PLC进行逆向分析,从而有效减少模糊测试过程中的人力消耗,另外,该方法能够提高测试覆盖率和漏洞发现概率,解决丢包率高的问题;
2)本申请的针对罗克韦尔PLC的漏洞挖掘方法,采用基于服务的PLC异常监控,相较于基于心跳的异常监控,能够降低异常的漏报率,同时提高漏洞挖掘的准确率。
附图说明
图1是现有CNVD近20年工控漏洞统计图;
图2是本申请针对罗克韦尔PLC的漏洞挖掘方法的流程图。
具体实施方式
为使本申请实施的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行更加详细的描述。所描述的实施例是本申请一部分实施例,而不是全部的实施例。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
如图2所示,本申请公开了一种针对罗克韦尔PLC的漏洞挖掘方法,包括如下步骤:
步骤S101、搭建针对罗克韦尔PLC的漏洞挖掘仿真环境。
具体的,仿真环境涉及的器部件可以包括一套罗克韦尔PLC、一台win10x64电脑(上位机)、上位机软件RSLinx、罗克韦尔PLC编程软件FactoryTalk View SE等。
对应的,该步骤S101具体包括:
将上位机软件RSLinx安装于上位机中,并将上位机的IP和罗克韦尔的IP设置于同一网段,使得上位机软件能够正确识别罗克韦尔PLC。
步骤S102、通过PLC编程软件进行PLC梯形图编程,并将编写好的PLC程序下载到罗克韦尔PLC中。
其中,编写好的PLC程序应该涵盖尽可能多的数据类型,以便包含更多的漏洞挖掘测试面,本实施例中,优选数据类型至少包括SINT(8位整型)、INT(16位整型)、DINT(32位整型)、REAL(实型)、BOOL(布尔型)等。
步骤S103、罗克韦尔PLC启动下载的PLC程序,并保证PLC编程软件与罗克韦尔PLC通信正常,同时通过Wireshark抓包软件抓取PLC编程软件流向罗克韦尔PLC的Request数据包,以及罗克韦尔PLC返回的Response数据包。
步骤S104、对步骤S103中抓取的数据包进行ENIP协议解析,并根据不同解析结果适配不同的漏洞挖掘策略。其中,ENIP是EtherNet/IP的简称,属于标准协议。
具体的,本步骤是结合协议文档(即已知技术中公开的关于该ENIP协议的详细设计文档)对抓取的数据包进行ENIP协议的会话建立、帧格式、功能码和字段等进行解析,并且是根据ENIP协议字段的不同解析结果,适配不同的漏洞挖掘策略。
进一步的,ENIP协议字段解析的结果至少包括:ENIP协议中规定值的字段、Length等长度字段、功能码Command字段、请求路径字段以及罗克韦尔PLC的整型数据。
对应的,本步骤中针对不同解析结果相适配漏洞挖掘策略包括:
1)针对ENIP协议中规定值的字段,采用非规定值填充策略,来构建ENIP变异测试数据包。
例如,ENIP协议中规定协议头的Options字段的值必须为0,则漏洞挖掘策略中采用非0值填充Options字段以构建测试数据。
2)针对Length等长度字段,分三种策略构建ENIP变异测试数据包,具体包括:采用Length长度的值小于实际内容的长度的填充策略;Length长度的值大于实际内容的长度的填充策略;Length长度的值与实际内容的长度相等但实际内容为随机填充的策略,构建ENIP变异测试数据包。
例如,如针对ENIP协议中的Options字段,长度规定必须为4字节,变异测试数据包构造方法如下:Length=3内容为“0000”、Length=5内容为“0000”、Length=4内容为“abcd”。
3)针对功能码Command字段,采用随机填充策略,构建包含非法功能码的ENIP变异测试数据包。
例如,ENIP协议有八种常用功能码,分别为0x0000、0x0004、0x0063、0x0064、0x0065、0x0066、0x006F、0x0070,则漏洞挖掘策略中采用除常用功能码之外的数据随机构造测试数据,如Command=“0x0099”。
4)针对请求路径字段,采用随机变换请求路径策略,构建包含非法路径的ENIP变异测试数据包。
例如,在步骤S102中PLC编程阶段定义了一个变量Number1,正常请求路径字段Request_Path=“Number1”,则漏洞挖掘策略中采用非法请求路径构建测试数据,如Request_Path=“Number2”。
5)针对罗克韦尔PLC的整型数据,采用取临界值或取非法值的取值策略,构建ENIP变异测试数据包,从而测试ENIP协议和罗克韦尔PLC对数据溢出和非法数据的处理能力。
例如,DINT(32位整型)的取值范围为-2147483648~+2147483647,构建测试数据时取值2147483648,观察整型数据取临界值时罗克韦尔PLC是否会发生数据溢出;再如除法运算的除数不能为0,构建测试数据时除数取值为0,观察PLC程序对非法数据是否会发生异常。
步骤S105、基于步骤S104中解析得到的漏洞挖掘策略,编写漏洞挖掘脚本。
具体的,本实施例的此步骤中,基于功能码和步骤S104中得到的漏洞挖掘策略两个维度,来编写漏洞挖掘脚本。
并且,在上述步骤S104中,针对ENIP协议的解析通常能够得到的八种功能码,而对于其中四种功能码,其各自对应的数据包中仅包含协议头,因此本步骤中,主要是围绕剩余的四种功能码和步骤S104中得到的漏洞挖掘策略两个维度来进行漏洞挖掘脚本的编写。
步骤S106、根据漏洞挖掘脚本编写变异测试数据包,并发送至罗克韦尔PLC进行Fuzzing测试。
具体的,本步骤中根据编写漏洞挖掘脚本编写变异测试数据包时,采用了如下四种函数,且四种函数各种功能如下:
registerSession()函数,用于实现ENIP协议的Session注册,以及Register功能的测试;
unregisterSession()函数,用于实现ENIP协议的会话关闭;
sendRRData()函数,用于发送封装的未链接报文;
sendUnitData()函数,用于发送单元数据。
需要说明的是,在编写漏洞挖掘脚本时,上述这四种函数可以根据情况采用适合的命名规则进行命名,例如registerSession()属于Java编程语言的函数命名规则(驼峰命名法),在其他例如Python编程语言的函数命名规则(下划线命名法)中,registerSession()也可以命名为session_register()。
随后,每个函数根据适配的漏洞挖掘策略变异字段内容,再将变异的内容封装为格式完整、内容变异的变异测试数据包,最后将变异测试数据包发送至被测试的罗克韦尔PLC进行Fuzzing测试。
步骤S107、对步骤S106中的测试进行异常监控。
综上,本申请的针对罗克韦尔PLC的漏洞挖掘方法,基于罗克韦尔PLC搭建的仿真***和预编的PLC程序,抓取有效通信数据,解析ENIP数据包,根据不同的解析结果适配不同的漏洞挖掘策略,因此该方法不依赖于传统的模糊测试工具,也无需对PLC进行逆向分析,从而有效减少模糊测试过程中的人力消耗,另外,该方法能够提高测试覆盖率和漏洞发现概率,解决丢包率高的问题。
需要说明的是,经测试实验发现,罗克韦尔PLC发生拒绝服务异常后依旧能够PING通,所以基于PING包的心跳异常监控不能全面地监控到罗克韦尔PLC的异常,存在一定的漏报率。
为此,本实施例提供了一种基于服务的异常监控手段,通过监控罗克韦尔PLC能否正常提供服务,从而监控罗克韦尔PLC是否发生异常,具体的,是对上述各步骤进行如下改进:
在上述步骤S101中,在安装PLC编程软件之前,还包括如下步骤:
将罗克韦尔PLC与一个继电器进行连接,该继电器带一个指示灯。
对应的,在上述步骤S102中还包括:
定义一个BOOL变量用于控制该继电器的开或关(即控制继电器指示灯的开或关),并将编写好的PLC程序下载到罗克韦尔PLC中;也即是说,此时下载到罗克韦尔PLC中的PLC程序,既包括原步骤二中PLC程序,也包括此处新增的关于BOOL变量控制继电器的开或关的程序。
对应的,在上述步骤S103中,在罗克韦尔PLC启动下载的PLC程序后,还包括:
在一定时间区间内,通过手动方式对BOOL变量进行多次循环切换,即控制继电器的在开与关之间进行切换,需要说明的是,以继电器原始状态为关闭状态为例,这里的一次循环切换指的是控制继电器从关闭状态切换至开启状态,再从而开启状态切换回关闭状态的过程;
随后,再通过Wireshark单独抓取一段在上述时间区间内利用BOOL变量控制继电器开关的流量,此处为了便于描述,将其定义为监控流量;另外需要说明的是,在后续的步骤S104-步骤S106中,并不对上述这段控制继电器开关的流量进行协议解析、变异等处理。
对应的,在上述步骤S106中,具体在进行Fuzzing测试时还包括:
循环重放上述利用BOOL变量控制继电器开关的流量(即监控流量);同样需要说明的是,此时进行Fuzzing测试的数据中既包括原步骤S106中编写的变异测试数据包,也包括监控流量。
对应的,在步骤S107中,进行异常监控时还包括:
若抓取的流量能够正常循环(即能够按照上述步骤S103中的手动切换的频次和频率对继电器开关进行控制),使得继电器开关正常,则判断罗克韦尔PLC能够正常提供服务,不报异常;以及
若抓取的流量不能正常循环,使得无法控制继电器开关,则判断罗克韦尔PLC不能正常提供服务,并报异常。
进一步的,本申请的针对罗克韦尔PLC的漏洞挖掘方法还可以包括:
步骤S108(又叫漏洞验证步骤)、对步骤S107中触发罗克韦尔PLC服务异常的变异测试数据包,再次进行重放,以确定挖掘漏洞的有效性。
可以理解的是,上述基于服务的罗克韦尔PLC异常监控手段,相较于传统PLC的基于心跳的异常监控手段,能够降低异常的漏报率,同时提高漏洞挖掘的准确率。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (6)
1.一种针对罗克韦尔PLC的漏洞挖掘方法,其特征在于,包括如下步骤:
步骤一、搭建针对罗克韦尔PLC的漏洞挖掘仿真环境,其中包括安装PLC编程软件;
步骤二、通过所述PLC编程软件进行PLC编程,并将编写好的PLC程序下载到所述罗克韦尔PLC中;
步骤三、所述罗克韦尔PLC启动下载的PLC程序,同时通过Wireshark抓包软件抓取所述PLC编程软件流向所述罗克韦尔PLC的Request数据包,以及所述罗克韦尔PLC返回的Response数据包;
步骤四、对所述步骤三中抓取的数据包进行ENIP协议解析,并根据不同解析结果适配不同的漏洞挖掘策略;
步骤五、基于所述步骤四中解析得到的漏洞挖掘策略,编写漏洞挖掘脚本;
步骤六、根据所述漏洞挖掘脚本编写变异测试数据包,并发送至所述罗克韦尔PLC进行Fuzzing测试;
步骤七、对步骤六中的测试进行异常监控;
所述步骤一中,在安装PLC编程软件之前,还包括如下步骤:
将所述罗克韦尔PLC与一个继电器进行连接;
对应的,在所述步骤二中还包括:
定义一个BOOL变量用于控制所述继电器的开或关,并将编写好的PLC程序下载到所述罗克韦尔PLC中;
对应的,在所述步骤三中,在所述罗克韦尔PLC启动下载的PLC程序后,还包括:
手动切换BOOL变量,并通过Wireshark单独抓取一段利用BOOL变量控制继电器开关的流量;
对应的,在所述步骤六中,在进行Fuzzing测试时还包括:
循环重放上述利用BOOL变量控制继电器开关的流量;
对应的,在所述步骤七中,进行异常监控时还包括:
若抓取的流量能够正常循环,使得继电器开关正常,则判断罗克韦尔PLC能够正常提供服务,不报异常;以及
若抓取的流量不能正常循环,使得无法控制继电器开关,则判断罗克韦尔PLC不能正常提供服务,并报异常;
所述步骤四中,对抓取的数据包进行ENIP协议解析至少包括:对ENIP协议的会话建立、帧格式、功能码和字段进行解析;对应的,根据不同解析结果适配不同的漏洞挖掘策略包括:根据ENIP协议字段的不同解析结果,适配不同的漏洞挖掘策略;
所述步骤四中,根据ENIP协议字段解析的结果至少包括:ENIP协议中规定值的字段、Length等长度字段、功能码Command字段、请求路径字段以及所述罗克韦尔PLC的整型数据;
对应的,针对不同解析结果相适配漏洞挖掘策略包括:
1)针对ENIP协议中规定值的字段,采用非规定值填充策略,来构建ENIP变异测试数据包;
2)针对Length等长度字段,采用Length长度的值小于实际内容的长度的填充策略,以及Length长度的值大于实际内容的长度的填充策略,以及Length长度的值与实际内容的长度相等但实际内容为随机填充的策略,构建ENIP变异测试数据包;
3)针对功能码Command字段,采用随机填充策略,构建包含非法功能码的ENIP变异测试数据包;
4)针对请求路径字段,采用随机变换请求路径策略,构建包含非法路径的ENIP变异测试数据包;
5)针对罗克韦尔PLC的整型数据,采用取临界值或取非法值的取值策略,构建ENIP变异测试数据包;
在所述步骤四解析得到的多种功能码中,有一部分功能码其各自对应的数据包中仅包含协议头,为此,所述步骤五具体包括:
基于功能码和所述步骤四中得到的漏洞挖掘策略两个维度,来编写漏洞挖掘脚本,其中的功能码采用的是除上述仅包含协议头的功能码之外的功能码。
2.根据权利要求1所述的漏洞挖掘方法,其特征在于,所述步骤一中,在安装PLC编程软件之前,还包括如下步骤:
将RSLinx软件安装于一台win10x64的上位机中,并将所述上位机的IP和所述罗克韦尔PLC的IP设置于同一网段,使得所述RSLinx软件能够正确识别罗克韦尔PLC;
其中,所述PLC编程软件是采用FactoryTalk View SE软件,并安装在所述上位机中。
3.根据权利要求1所述的漏洞挖掘方法,其特征在于,在所述步骤二中,编写好的PLC程序中涵盖的数据类型至少包括:SINT、INT、DINT、REAL、BOOL。
4.根据权利要求1所述的漏洞挖掘方法,其特征在于,在所述步骤六中,根据所述漏洞挖掘脚本编写变异测试数据包时,采用了如下四种函数,以及各种功能如下:
registerSession()函数,用于实现ENIP协议的Session注册,以及Register功能的测试;
unregisterSession()函数,用于实现ENIP协议的会话关闭;
sendRRData()函数,用于发送封装的未链接报文;
sendUnitData()函数,用于发送单元数据。
5.根据权利要求1所述的漏洞挖掘方法,其特征在于,在所述步骤四中,针对ENIP协议的解析共计得到的八种功能码,其中有四种功能码仅包含协议头。
6.根据权利要求1所述的漏洞挖掘方法,其特征在于,还包括:
步骤八、对步骤七中触发罗克韦尔PLC服务异常的变异测试数据包,再次进行重放,以确定挖掘漏洞的有效性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210725709.2A CN115167261B (zh) | 2022-06-24 | 2022-06-24 | 一种针对罗克韦尔plc的漏洞挖掘方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210725709.2A CN115167261B (zh) | 2022-06-24 | 2022-06-24 | 一种针对罗克韦尔plc的漏洞挖掘方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115167261A CN115167261A (zh) | 2022-10-11 |
CN115167261B true CN115167261B (zh) | 2024-03-08 |
Family
ID=83488229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210725709.2A Active CN115167261B (zh) | 2022-06-24 | 2022-06-24 | 一种针对罗克韦尔plc的漏洞挖掘方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115167261B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104168288A (zh) * | 2014-08-27 | 2014-11-26 | 中国科学院软件研究所 | 一种基于协议逆向解析的自动化漏洞挖掘***及方法 |
CN108255711A (zh) * | 2017-12-29 | 2018-07-06 | 湖南优利泰克自动化***有限公司 | 一种基于污点分析的plc固件模糊测试***及测试方法 |
CN110505111A (zh) * | 2019-07-09 | 2019-11-26 | 杭州电子科技大学 | 基于流量重放的工控协议模糊测试方法 |
CN111427305A (zh) * | 2020-03-29 | 2020-07-17 | 博智安全科技股份有限公司 | 针对西门子plc漏洞挖掘的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200053117A1 (en) * | 2018-08-07 | 2020-02-13 | Telesis Corporation | Method, system, and/or software for finding and addressing an information/data or related system's security risk, threat, vulnerability, or similar event, in a computing device or system |
AU2021331486A1 (en) * | 2020-08-27 | 2023-04-13 | Virsec Systems, Inc. | Automated application vulnerability and risk assessment |
-
2022
- 2022-06-24 CN CN202210725709.2A patent/CN115167261B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104168288A (zh) * | 2014-08-27 | 2014-11-26 | 中国科学院软件研究所 | 一种基于协议逆向解析的自动化漏洞挖掘***及方法 |
CN108255711A (zh) * | 2017-12-29 | 2018-07-06 | 湖南优利泰克自动化***有限公司 | 一种基于污点分析的plc固件模糊测试***及测试方法 |
CN110505111A (zh) * | 2019-07-09 | 2019-11-26 | 杭州电子科技大学 | 基于流量重放的工控协议模糊测试方法 |
CN111427305A (zh) * | 2020-03-29 | 2020-07-17 | 博智安全科技股份有限公司 | 针对西门子plc漏洞挖掘的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115167261A (zh) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Slowik | Crashoverride: Reassessing the 2016 ukraine electric power event as a protection-focused attack | |
Roy et al. | Scalable optimal countermeasure selection using implicit enumeration on attack countermeasure trees | |
Parvania et al. | Hybrid control network intrusion detection systems for automated power distribution systems | |
Settanni et al. | Protecting cyber physical production systems using anomaly detection to enable self-adaptation | |
CN113507436A (zh) | 一种针对goose协议的电网嵌入式终端模糊测试方法 | |
CN214306527U (zh) | 一种燃气管网调度监控网络安全*** | |
CN112398829A (zh) | 一种电力***的网络攻击模拟方法及*** | |
Hu et al. | An enhanced multi-stage semantic attack against industrial control systems | |
CN115167261B (zh) | 一种针对罗克韦尔plc的漏洞挖掘方法 | |
Ciancamerla et al. | Modeling cyber attacks on a critical infrastructure scenario | |
Hong et al. | Security monitoring and network management for the power control network | |
CN115834218A (zh) | 一种调度数据网多级阻断的安全防护方法及*** | |
CN116743447A (zh) | 基于模糊测试的电力物联网设备漏洞挖掘方法及*** | |
CN109818973B (zh) | 一种基于串接方式的协议模糊测试方法 | |
Pranggono et al. | Intrusion detection systems for critical infrastructure | |
CN113285937B (zh) | 一种基于传统变电站配置文件和iec103协议流量的安全审计方法及*** | |
Yang et al. | Cybersecurity testing technology in smart substations | |
CN110138773B (zh) | 一种针对goose攻击的防护方法 | |
Yu et al. | Research on key technology of industrial network boundary protection based on endogenous security | |
Sagala et al. | Improving SCADA security using IDS and MikroTIK | |
Sahu et al. | Score: A security-oriented cyber-physical optimal response engine | |
Fei et al. | Reserch on cyber attack of key measurement and control equipment in power grid | |
CN111404919A (zh) | 一种感知核动力控制***网络安全状态的多样性方法 | |
CN215912109U (zh) | 实时检测网络数据流量及攻击的工控网架构 | |
Anand et al. | Network intrusion detection and prevention |
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 |