掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及工业网络安全监测技术领域,尤其涉及一种基于Modbus协议的工业控制系统资产及威胁识别方法。

背景技术

由于工业控制系统以及它们的通信协议在设计之初几乎没有考虑过网络以及通信安全的问题,所以导致许多工业控制系统极其脆弱,尤其是暴露在公网中的设备,面临着日益严重的攻击威胁。由于工业控制系统通常应用在关系国计民生的重点行业领域,一旦遭到破坏,造成的影响和损失将非常大。因此工业控制系统应当按照网络安全等级保护制度的要求参加等级保护测评。其中最重要的就是风险评估工作,而资产识别和威胁识别作为风险评估过程的核心模块,其方法直接决定风险评估结果的合理性和有效性。

由于国内网络环境相对封闭并且工业控制领域入门难度较高,并且不能在真实的工业生产环境中进行资产及威胁识别。同时相较于设备安全性,使用者往往更关注工控设备的可用性、稳定性以及实时性。一般的资产识别方法较多依赖各类测试工具,其中资产识别方法基本通过发送特定的数据包,之后针对返回的数据包进行指纹识别。这些方法通过大量发送数据包可能影响工业控制系统的网络稳定性,从而对工业控制系统的稳定性及实时性带来一定影响。

因此需要提供一种不影响工业控制设备可用性、稳定性以及实时性的工业控制系统资产及威胁识别方法。

发明内容

本发明的目的在于:针对现有技术的不足,现提出一种通过监测Modbus流量数据来识别和提取工业控制系统中的资产信息,实现在不影响工业控制系统实时性、可用性的情况下对工业系统资产进行准确识别,同时通过流量监测、分析也可对工业控制系统中的威胁进行识别的方法,不主动发送报文,不主动进行任何探测,只是收集网络中的数据包,对数据包中新增的Modbus设备进行捕捉和分析,并及时判断和处理,提高工控系统的稳定性和安全性。

本发明的技术方案如下:

本发明公开了一种基于Modbus协议的工业控制系统资产及威胁识别方法,包括如下具体步骤:

步骤一、构建四个数据结构,包括IQueue、TQueue、IReq和IDevice;

步骤二、捕获工业控制系统中传输的数据包,判断收集到的数据包是不是Modbus数据包,若是,则将该Modbus数据包加入IQueue队列;

步骤三、对步骤二中的IQueue队列中的Modbus数据包按先进先出的顺序进行检查和分析,依次得到每个Modbus数据包的TCP/IP消息报头中的关键参数;

步骤四、对Modbus数据包进行匹配,区分是请求消息还是响应消息,并根据步骤三中的关键参数计算哈希值,若为请求消息则将计算得到的哈希值存储到IReq中,若为响应消息则在判断事务有效后将键值对{IReq[a],i}存入TQueue中,其中IReq[a]为步骤三中的关键参数计算的哈希值,i为完整的Modbus数据包;

步骤五、依次对TQueue中的信息进行处理,若为IDevice中不存在的设备,则将新增Modbus设备相关的条目添加到IDevice中;

步骤六、监测网络中新增Modbus设备的信息,根据步骤五中记录的新增Modbus设备进行威胁识别,并进行日志记录。

以上方法,通过数据包收集模块在不影响工控系统实时性以及可用性的情况下捕获工业控制系统中传输的数据包,并且通过收集到的数据包进行Modbus数据包,通过对Modbus数据包的检查以及分析,来识别和提取工业控制系统中的资产信息,同时通过新增的Modbus设备信息的趋势变化来判断是否存在恶意攻击等异常行为,并进行日志记录,进一步实现系统监控、设备故障排除、检测系统异常和网络攻击复现;通过数据包收集以及对数据包信息利用三个数据结构进行存储、分析,方便后续资产识别以及威胁识别的分析和记录,上述六个步骤实现了对工控系统资产及威胁的识别,不主动发送数据包,进一步保证了工控系统的稳定性,通过已识别出的资产清单对短时间内突然出现的Modbus设备进行威胁识别,当出现威胁时及时阻断,提高了工控系统威胁识别的及时性并降低威胁可能带来的损害。

进一步地,所述IQueue是一个先进的数据先出,后进的数据后出(First in,Firstout:FIFO)的队列,用于存储数据包收集模块采集到的,未处理的Modbus数据包;

TQueue是一个临时性数据结构,也是先进的数据先出,后进的数据后出的队列,用于存储键值对{IReq[a],i};

IReq是一个哈希表,用于存储等待处理的Modbus数据包,其存储的哈希值根据Modbus消息队列中每个Modbus数据包的关键参数包括从设备IP、主设备IP、从设备端口号、主设备端口号和事务ID进行计算得到;

IDevice是一个哈希表,用于存储与特定Modbus设备相关的对象,其存储的哈希值根据Modbus消息队列中每个Modbus数据包的关键参数包括从设备IP、从设备MAC地址和单元ID(UnitId)进行计算得到。

以上方法,通过构建三个关键的数据结构,在三个不同算法中用这三个关键的数据结构存储相应的Modbus数据包以及Modbus设备相关的对象。

进一步地,所述步骤三中,所述步骤三中,通过检查Modbus数据包结构得到TCP/IP消息报头中的关键参数,Modbus数据包中的TCP/IP消息报头中的关键参数始终包含从设备信息,Modbus事务检查模块分析出的结果主要集中在从设备。

进一步地,所述步骤四中,若是请求消息,则判断是否已经存在相同请求,若存在,则进行提示并记录日志;若不存在,则将该请求消息的关键参数计算出哈希值存入IReq。

进一步地,所述步骤四中,若是响应消息,则判断是否有匹配请求,若没有,则进行提示并记录日志;若有,则进一步判断事务是否有效,若有效,则将响应消息计算出的哈希值和响应消息加入临时数据结构TQueue,并令该哈希值为空,表示该事务已经处理,若无效,则进行提示并记录日志。

进一步地,只有请求消息会存储在IReq中,没有匹配请求的响应消息将被立即记录以指示异常,并且IReq保持不变;若收到并验证了匹配的响应,则会向临时数据结构TQueue中添加一个条目,并从IReq中删除该请求;若未验证匹配的响应,则会生成一个日志条目,并且请求消息将保留在IReq中。

进一步地,所述步骤五中TQueue中的信息处理方法为增量映射算法,首先判断是否涉及新增Modbus设备,包括是否包含主设备信息、是否包含功能码信息和是否包含功能参数信息。

进一步地,所述增量映射算法按顺序对是否包含主设备信息、是否包含功能码信息和是否包含功能参数信息进行判断,三个信息的判断相互独立,只要判断为是,则直接将该信息加入IDevice中。

以上方法,由于SCADA网络中的消息往往遵循重复的、可预测的通信模式,且算法3中采用增量映射算法。因此在大多数情况下,新增信息的速率会随时间增加而降低,当设备信息及网络流量趋于稳定后,在相对长的时间段内可能不会添加新信息。当短期内信息采集趋势产生突然变化时,即可能存在恶意攻击等异常活动。此时,对威胁进行识别,并进行日志记录。这些日志可用于系统监控、设备故障排除、检测系统异常和网络攻击复现。

进一步地,所述步骤六中威胁识别的步骤为:

根据IDevice中新增Modbus设备条目中的资产IP判断是否是资产识别列表中不存在的从设备,若是,则查看该从设备IP、对应的操作系统类型、开放的端口、开放的服务以及承载的业务,并进一步根据这些信息判断是否为工控系统内的合法资产,若判断为是工控系统内的合法资产,则将该从设备加入资产列表当中,退出威胁识别程序;若否,则分析并记录该从设备的功能码及子功能码,并记录日志,显示出现新的设备且新的设备出现异常操作,立即封锁IP,提示管理员进行处理;

根据未被记录在IDevice中的新增Modbus设备,判断是否采用私有加密协议进行加密,若是,则记录日志,显示出现新的设备且新的设备出现异常操作,立即封锁IP,提示管理员进行处理;若否,则查看设备IP、对应的操作系统类型和开放的端口,通过端口判断是否为非常用的大端口号端口,若判断为非常用的大端口号端口,则记录日志,显示出现新的设备且新的设备出现异常操作,立即封锁IP,提示管理员进行处理;若判断不是非常用的大端口号端口,则进一步地查看设备开放的服务和承载的业务,判断是否为工控系统中不常用业务或无关业务,若为否,则退出威胁识别程序;若为是,则记录日志,显示出现新的设备且新的设备出现异常操作,立即封锁IP,提示管理员进行处理。

与现有的技术相比本发明的有益效果是:

1、本发明通过六个步骤实现对工控系统资产和威胁的快速识别,首先将捕获的数据包中的Modbus数据包存入IQueue队列,在通过直接对IQueue队列中Modbus数据包进行依次分析了解每个Modbus数据包的TCP/IP消息报头中的关键参数,再对Modbus数据包内容进行匹配分析,最后对Modbus设备信息进行资产识别和威胁识别,威胁识别是通过资产识别来进一步判断的,直接利用资产识别得到的信息进行新增Modbus设备的监测,并对短时间内新增的Modbus设备进行威胁监测,能够在资产识别的同时快速进行威胁识别,进一步提高工控系统的稳定性和安全性。

2、本发明所采用增量映射算法可识别工业控制系统中存在的威胁及其他异常活动,通过收集并存储与从设备相关联的地址、与从设备通信的主设备地址以及在与设备相关的事务中看到的功能代码和参数。工控系统经过一段时间稳定运行后,新增信息的速率会随时间增加而降低,当设备信息及网络流量趋于稳定后,在相对长的时间段内可能不会添加新信息;若之后短期内信息采集趋势产生突然变化时,即可能存在恶意攻击等异常活动,并同时对新增的Modbus设备进行威胁识别,及时作出反应并提醒管理员处理,进一步保证工控系统使用的安全性同时充分减小工控系统威胁带来的影响。

3、本发明实时监测网络中设备及流量传输变化,进行威胁识别,并进行日志记录,这些日志可用于系统监控、设备故障排除、检测系统异常和网络攻击复现。

附图说明

图1为本发明一种基于Modbus协议的工业控制系统资产及威胁识别方法流程图;

图2为本发明的数据包收集算法的流程图;

图3为本发明的Modbus事务检查模块算法的流程图;

图4为本发明的Modbus设备对象检测算法的流程图;

图5为本发明威胁识别流程示意图;

图6为本发明资产识别过程中设备生成的Modbus设备信息文档;

图7为本发明威胁识别过程生成的Modbus设备信息文档。

具体实施方式

需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

下面结合实施例对本发明的技术方案作进一步的详细描述。

如图1所示,本发明公开了一种基于Modbus协议的工业控制系统资产及威胁识别方法流程图:

采用两个可编程逻辑控制器(PLC)模拟两个设备间正常的Modbus通信。其中一个PLC作为主设备IP地址为192.168.21.22,另一个PLC作为从设备IP地址为192.168.21.21。

步骤1、构建四个数据结构,包括IQueue、TQueue、IReq和IDevice。

IQueue是一个FIFO(先进先出)的队列。用于存储数据包收集模块采集到的,未处理的Modbus数据包。

TQueue是一个临时性数据结构,也是先进的数据先出,后进的数据后出的队列,用于存储键值对{IReq[a],i}。

IReq是一个哈希表,用于存储等待处理的Modbus数据包。其中存储的哈希值IReq[a]是根据Modbus消息队列进行计算的。即a=hash(x1,x2,x3,…,xn),其中可让x1=从设备IP、x2=主设备IP、x3=从设备端口号、x4=主设备端口号、x5=事务ID(TransactionId)。

IDevice是一个哈希表,用于存储与特定Modbus设备相关的对象。其中存储的哈希值IDevice[b]是根据Modbus消息队列进行计算的。即b=hash(y1,y2,y3,…,yn),在此情况下可唯一标识网络中的Modbus设备。其中可让y1=从设备IP、y2=从设备MAC地址、y3=单元ID(UnitId)。哈希表中的各个实体存储着每个设备的具体信息,如:与从设备相关联的地址、与从设备通信的主设备地址以及在与设备相关的事务中看到的功能代码和参数。

步骤2、开启数据包收集器,按照数据包收集算法捕获工业控制系统中传输的数据包,如图2所示,数据包收集算法具体操作步骤为:

考虑各种异常中断、超时检测作为退出条件;当收集数据包过程不满足退出条件时按照判断条件判断采集到的数据包是否为Modbus数据包,判断条件基于消息头包含的相关信息,如事务标识符、协议标识符、数据长度等。之后将Modbus数据包逐一加入IQueue队列。

步骤3、对步骤二中的IQueue队列中的Modbus数据包按先进先出的顺序进行检查和分析,依次得到每个Modbus数据包的TCP/IP消息报头中的关键参数。如图6所示,通过分析Modbus数据包可知两个输入线圈地址为3344和3408,输出线圈地址为3306。

步骤4、对Modbus数据包进行匹配,区分是请求消息还是响应消息,并根据步骤三中的关键参数计算哈希值,若为请求消息则将计算得到的哈希值存储到IReq中,若为响应消息则在判断事务有效后将键值对{IReq[a],i}存入TQueue中,其中IReq[a]为步骤三中的关键参数计算的哈希值,i为完整的Modbus数据包。参见图3,Modbus事务检查模块算法具体操作步骤为:

使用从设备IP、主设备IP、从设备端口号、主设备端口号、事务ID计算等待处理的Modbus数据包的哈希值。其中从设备IP=192.168.21.21、主设备IP=192.168.21.22、从设备端口号=502、主设备端口号=2080、事务ID=251,计算出哈希值为IReq[a]=TM9b/U+t0jpgulIcHDuW8FoFQyDRmF8jzC1PzV4dXZk=。并判断Modbus数据包为请求数据包还是响应数据包。比对IReq中是否存在对应哈希值,若为Modbus请求且IReq中已存在相同哈希值则显示“存在多个请求”并记录日志;若为Modbus请求且IReq中不存在相同哈希值则将计算出的哈希值写入IReq;若为Modbus响应且IReq中已存在相同哈希值则验证请求是否与IReq中存放的哈希值相等,如果相等则将响应消息计算出的哈希值和响应消息({IReq[a],i})加入辅助数据结构TQueue,若不相等则证明Modbus消息请求或响应无效,显示“事务无效”并记录日志;若为Modbus响应且IReq中不存在相同哈希值则证明没有对应的请求消息,显示“未发现匹配的请求”并记录日志。

在上述算法中,只有请求消息会存储在IReq中,没有匹配请求的响应消息将被立即记录以指示异常,并且IReq保持不变。如果收到并验证了匹配的响应,则会向事务队列TQueue(辅助数据结构)添加一个条目,并从IReq中删除该请求。另一方面,如果未验证匹配的响应,则会生成一个日志条目,并且请求消息将保留在IReq中,以防以后收到匹配的响应。

步骤5、依次对TQueue中的信息进行处理,资产识别模块根据Modbus设备对象检测算法记录在网络通信中检测到的所有设备信息,若为IDevice中不存在的设备,则将新增Modbus设备相关的条目添加到IDevice中。参见图4,Modbus设备对象检测算法具体步骤为:

使用从设备IP、从设备MAC地址、单元ID(UnitId)计算等待处理的Modbus数据包的哈希值。其中从设备IP=192.168.21.22、从设备MAC地址=00:0d:e0:80:49:31、单元ID(UnitId)=10,计算出的哈希值为m2LJHetz4N7hWBtTVPcIA4D8P2OeIERlss78NbvFwh4=。之后判断是否涉及新增Modbus设备,如果是则将与新设备相关的条目添加到IDevice中,其中包括相关的事务信息,即主设备ID、功能码及功能参数。资产识别的结果如图6所示。

对于单个IP地址支持多个独立Modbus终端单元的现象,例如:网桥、路由器和网关。在Modubs报文中存在MBAP报文头,其中包含单元标识符即前文提到的单元ID(UnitId),单元ID相当于Modbus串行链路中使用的从设备地址,用于系统内路由。通过单元ID可实现通过以太网TCP/IP网络和Modbus串行链路之间的网关对Modbus或Modbus+串行链路从站的通信。因此,对于单个IP地址支持多个独立Modbus终端单元的现象,通过单元ID可唯一标识Modbus设备,图四所示的算法中计算哈希值的过程就已经使用了单元ID计算哈希值,所以即使是单个IP地址支持的多个独立Modbus终端单元也可因为不同的单元ID计算得到不同的哈希值。

步骤6、威胁识别模块监测网络中新增Modbus设备增加的趋势,若短期内信息采集趋势产生突然变化时,根据步骤五中记录的新增Modbus设备进行威胁识别,并进行日志记录。由于SCADA网络中的消息往往遵循重复的、可预测的通信模式,且算法3中采用增量映射算法。因此在大多数情况下,新增信息的速率会随时间增加而降低,当设备信息及网络流量趋于稳定后,在相对长的时间段内可能不会添加新信息。当短期内信息采集趋势产生突然变化时,即可能存在恶意攻击等异常活动,此时,威胁识别模块识别到短时间内出现了资产识别列表中不存在的设备时,如图5所示,具体的威胁识别步骤为:

根据捕获的数据包判断新的资产是否使用Modbus协议,若是,则根据资产IP进一步判断是否是资产识别列表中不存在的从设备;若否,则判断是否采用私有加密协议进行加密。

新的资产使用了Modbus协议:

若判断为属于资产识别列表中不存在的从设备,则查看该从设备IP、对应的操作系统类型、开放的端口、开放的服务以及承载的业务,并进一步根据这些信息判断是否为工控系统内的合法资产,若判断为是工控系统内的合法资产,则将该从设备加入资产列表当中,退出威胁识别程序;

若判断为不属于资产识别列表中不存在的从设备,则分析并记录该从设备的功能码及子功能码,并记录日志,显示出现新的设备且新的设备出现异常操作,立即封锁IP,提示管理员进行处理。

新的资产并未使用Modbus协议:

若判断为采用私有加密协议进行加密,则记录日志,显示出现新的设备且新的设备出现异常操作,立即封锁IP,提示管理员进行处理;

若判断没有采用私有加密协议进行加密,则进一步查看设备IP、对应的操作系统类型和开放的端口,通过端口判断是否为非常用的大端口号端口,若判断为非常用的大端口号端口,则记录日志,显示出现新的设备且新的设备出现异常操作,立即封锁IP,提示管理员进行处理;若判断不是非常用的大端口号端口,则进一步地查看设备开放的服务和承载的业务,判断是否为工控系统中不常用业务或无关业务,若为否,则退出威胁识别程序;若为是,则记录日志,显示出现新的设备且新的设备出现异常操作,立即封锁IP,提示管理员进行处理。

如图7所示,威胁识别工作原理:在工控系统中加入一个攻击者,IP地址为192.168.21.221。当前工控系统中存在的合法资产为192.168.21.21和192.168.21.22。此时,威胁识别模块识别到短时间内出现了资产识别列表中不存在的设备时,首先根据数据包结构判断得知新出现的设备发送了Modbus数据包,即新的资产使用了Modbus协议,同时根据数据包可知新的资产为资产识别列表中不存在的从设备,因此新出现的资产为主设备,设备IP为192.168.21.221。按照威胁分析步骤,分析并记录该从设备的功能码及子功能码,发现该设备试图用子功能码14执行功能代码43,是一种通过封装接口传输读取从属设备标志信息的诊断功能。通过此功能攻击者可获得设备的基本设备识别码(商名称、产品代码和修订本号等)、正常设备识别码(除基本数据对象以外,设备提供了附加的和可选择的识别码以及数据对象描述)、扩展设备识别码(除正常数据对象以外,设备提供了附加的和可选的识别码以及专用数据描述),一旦攻击者通过恶意获得上述信息,则可通过多种攻击方式对工控系统进行攻击。此时立即封锁IP,提示管理员进行处理。

本申请的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请技术方案构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。

技术分类

06120116571031