CN115167261B - 一种针对罗克韦尔plc的漏洞挖掘方法 - Google Patents

一种针对罗克韦尔plc的漏洞挖掘方法 Download PDF

Info

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
Application number
CN202210725709.2A
Other languages
English (en)
Other versions
CN115167261A (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.)
Second Research Institute of CAAC
Original Assignee
Second Research Institute of CAAC
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 Second Research Institute of CAAC filed Critical Second Research Institute of CAAC
Priority to CN202210725709.2A priority Critical patent/CN115167261B/zh
Publication of CN115167261A publication Critical patent/CN115167261A/zh
Application granted granted Critical
Publication of CN115167261B publication Critical patent/CN115167261B/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
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15028Controller and device have several formats and protocols, select common one
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total 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的抗攻击能力,对于提升工业控制系统的安全性至关重要。
但是,由于工业控制系统的模块相对封闭,研究难点较大,从而导致其漏洞挖掘难度大,特别是对于罗克韦尔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服务异常的变异测试数据包,再次进行重放,以确定挖掘漏洞的有效性。
CN202210725709.2A 2022-06-24 2022-06-24 一种针对罗克韦尔plc的漏洞挖掘方法 Active CN115167261B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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
Udd et al. Exploiting bro for intrusion detection in a SCADA system
Parvania et al. Hybrid control network intrusion detection systems for automated power distribution systems
CN113507436B (zh) 一种针对goose协议的电网嵌入式终端模糊测试方法
Settanni et al. Protecting cyber physical production systems using anomaly detection to enable self-adaptation
CN113037745A (zh) 一种基于安全态势感知的智能变电站风险预警系统及方法
Kleinmann et al. Stealthy deception attacks against SCADA systems
Singh et al. Security evaluation of two intrusion detection systems in smart grid scada environment
Foglietta et al. From detecting cyber-attacks to mitigating risk within a hybrid environment
CN101034976B (zh) Ip连接安全系统中的入侵检测设备
CN112398829A (zh) 一种电力系统的网络攻击模拟方法及系统
Hu et al. An enhanced multi-stage semantic attack against industrial control systems
Ciancamerla et al. Modeling cyber attacks on a critical infrastructure scenario
CN115167261B (zh) 一种针对罗克韦尔plc的漏洞挖掘方法
Hong et al. Security monitoring and network management for the power control network
CN115834218A (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攻击的防护方法
CN109818973B (zh) 一种基于串接方式的协议模糊测试方法
Sagala et al. Improving SCADA security using IDS and MikroTIK
EP4155998B1 (en) Intrusion prevention device, intrusion prevention method, and program
Fei et al. Reserch on cyber attack of key measurement and control equipment in power grid
CN111404919A (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