发明内容
有鉴于此,本发明实施例提供一种工控设备异常检测方法及系统,以解决现有异常检测的方式存在的网络攻击检测能力较差等问题。
为实现上述目的,本发明实施例提供如下技术方案:
本发明实施例第一方面公开一种工控设备异常检测方法,所述方法包括:
提取工控设备的待处理数据包序列中每一待处理数据包的属性特征;
根据每一所述待处理数据包的所述属性特征中的基本属性特征,判断所述待处理数据包是否符合预设规则;
若所述待处理数据包不符合所述预设规则,判定所述工控设备的交互行为为异常行为;
若所述待处理数据包符合所述预设规则,利用每一所述待处理数据包的属性特征,确定所述待处理数据包序列的交互模式;
判断所述待处理数据包序列的交互模式是否为交互模式集合中的交互模式,所述交互模式集合预先根据历史数据包构建得到;
若所述待处理数据包序列的交互模式不是所述交互模式集合中的交互模式,判定所述工控设备的交互行为为异常行为;
若所述待处理数据包序列的交互模式为所述交互模式集合中的交互模式,针对所述待处理数据包序列中每种交互模式对应的子序列,解析得到上行数据包的上行数据值,以及确定所述上行数据值的模型预测值,其中,所述模型预测值根据所述上行数据值的预测模型确定得到,所述预测模型预先根据历史数据包构建得到;
若所述上行数据值和所述模型预测值之间的差值不在预设范围内,判定所述工控设备的交互行为为异常行为;
将所述工控设备的异常行为及相关数据记录在区块链上,实现异常信息可信记录和共享,并为所述工控设备的行为审计提供依据。
优选的,属性特征至少包括:源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向,构建交互模式集合的过程包括:
提取每一历史数据包的源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向属性特征,构建其属性特征向量,并按照历史数据包生成的时间顺序形成历史数据包序列,所述历史数据包序列为数据包属性特征向量序列;
将每一所述历史数据包的源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向属性特征作为特征变量,采用分层聚类算法对所有所述历史数据包进行分类,得到包类型集合;
根据流量包协议号分析,获得交互尾包的共性特征,从所述历史数据包序列中挑选出所有的交互尾包,进而基于所述包类型集合确定交互尾包类型集合,从所述包类型集合中删除所述交互尾包类型集合中的所有元素,并对交互尾包类型重新命名,所述交互尾包为每次交互的最后一个数据包;
根据所述包类型集合和所述交互尾包类型集合,替换每个所述历史数据包的属性特征向量为包类型,以所述交互尾包为界,将所有所述历史数据包组成的序列划分为多个相互独立的单次交互数据包序列;
对所述多个单次交互数据包序列进行分类,得到包括多种交互模式的交互模式集合。
优选的,构建上行数据值的预测模型的过程包括:
针对所述交互模式集合中的每一交互模式,提取所述交互模式对应的所述历史数据包中的上行数据包;
针对所述交互模式集合中的每一交互模式,解析所述交互模式对应的每一所述上行数据包,得到数据字段值序列;
针对所述交互模式集合中的每一交互模式,利用所述数据字段值序列,构建所述交互模式对应的上行数据值的预测模型。
优选的,基本属性特征至少包括:源IP、目的IP、源端口号、目的端口号和协议号,所述根据每一所述待处理数据包的所述属性特征中的基本属性特征,判断所述待处理数据包是否符合预设规则,包括:
针对每一所述待处理数据包,判断所述待处理数据包的源IP是否为预设的黑名单中的IP,以及判断所述待处理数据包的目的IP、源端口号、目的端口号和协议号特征是否符合预设要求;
若每一所述待处理数据包的源IP不是所述黑名单中的IP,并且每一所述待处理数据包的目的IP、源端口号、目的端口号和协议号特征符合所述预设要求,判定所述待处理数据包符合预设规则;
若任一所述待处理数据包的源IP为所述黑名单中的IP,和/或,任一所述待处理数据包的目的IP、源端口号、目的端口号和协议号特征中的一种或多种不符合所述预设要求,判定所述待处理数据包不符合所述预设规则。
优选的,还包括:
若所述上行数据值和所述模型预测值之间的差值在所述预设范围内,利用每一所述待处理数据包的数据值,更新所述上行数据值的预测模型。
本发明实施例第二方面公开一种工控设备异常检测系统,所述系统包括:
提取单元,用于提取工控设备的待处理数据包序列中每一待处理数据包的属性特征;
第一处理单元,用于根据每一所述待处理数据包的所述属性特征中的基本属性特征,判断所述待处理数据包是否符合预设规则,若所述待处理数据包不符合所述预设规则,判定所述工控设备的交互行为为异常行为,若所述待处理数据包符合所述预设规则,利用每一所述待处理数据包的属性特征,确定所述待处理数据包序列的交互模式;
第二处理单元,用于判断所述待处理数据包序列的交互模式是否为交互模式集合中的交互模式,若所述待处理数据包序列的交互模式不是所述交互模式集合中的交互模式,判定所述工控设备的交互行为为异常行为,若所述待处理数据包序列的交互模式为所述交互模式集合中的交互模式,针对所述待处理数据包序列中每种交互模式对应的子序列,解析得到上行数据包的上行数据值,确定所述上行数据值的模型预测值,其中,所述模型预测值根据所述上行数据值的预测模型确定得到,所述上行数据值的预测模型预先根据历史数据包构建得到,所述交互模式集合预先根据历史数据包构建得到;
第三处理单元,用于若所述上行数据值和所述模型预测值之间的差值不在预设范围内,判定工控设备的交互行为为异常行为;
上传单元,用于将所述工控设备的异常行为及相关数据记录在区块链上,实现异常信息可信记录和共享,并为所述工控设备的行为审计提供依据。
优选的,属性特征至少包括:源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向,用于构建交互模式集合的第二处理单元包括:
提取模块,用于提取每一历史数据包的源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向属性特征,构建其属性特征向量,并按照历史数据包生成的时间顺序形成历史数据包序列,所述历史数据包序列为数据包属性特征向量序列;
第一分类模块,用于将每一所述历史数据包的源IP、目的IP、源端口号、目的端口号、包大小和包方向属性特征作为特征变量,采用分层聚类算法对所有所述历史数据包进行分类,得到包类型集合;
划分模块,用于根据流量包协议号分析,获得交互尾包的通用特征,从所述历史数据包序列中挑选出所有的交互尾包,进而基于所述包类型集合确定交互尾包类型集合,从所述包类型集合中删除所述交互尾包类型集合中的所有元素,并对交互尾包类型重新命名,以及根据所述包类型集合和所述交互尾包类型集合,替换每个所述历史数据包的属性特征向量为包类型,以所述交互尾包为界,将所有所述历史数据包组成的序列划分为多个相互独立的单次交互数据包序列,所述交互尾包为每次交互的最后一个数据包;
第二分类模块,用于对所述多个单次交互数据包序列进行分类,得到包括多种交互模式的交互模式集合。
优选的,用于构建上行数据值的预测模型的所述第二处理单元包括:
处理模块,用于针对所述交互模式集合中的每一交互模式,提取所述交互模式对应的所述历史数据包中的上行数据包;
解析模块,用于针对所述交互模式集合中的每一交互模式,解析所述交互模式对应的每一所述上行数据包,得到数据字段值序列;
构建模块,用于针对所述交互模式集合中的每一交互模式,利用所述数据字段值序列,构建所述交互模式对应的上行数据值的预测模型。
优选的,基本属性特征至少包括:源IP、目的IP、源端口号、目的端口号和协议号,所述第一处理单元包括:
处理模块,用于针对每一所述待处理数据包,判断所述待处理数据包的源IP是否为预设的黑名单中的IP,以及判断所述待处理数据包的目的IP、源端口号、目的端口号和协议号特征是否符合预设要求;
第一确定模块,用于若每一所述待处理数据包的源IP不是所述黑名单中的IP,并且每一所述待处理数据包的目的IP、源端口号、目的端口号和协议号特征符合所述预设要求,判定所述待处理数据包符合预设规则;
第二确定模块,用于若任一所述待处理数据包的源IP为所述黑名单中的IP,和/或,任一所述待处理数据包的目的IP、源端口号、目的端口号和协议号特征中的一种或多种不符合所述预设要求,判定所述待处理数据包不符合所述预设规则。
优选的,所述系统还包括:
更新单元,用于若所述上行数据值和所述模型预测值之间的差值在所述预设范围内,利用每一所述待处理数据包的数据值,更新所述上行数据值的预测模型。
基于上述本发明实施例提供的一种工控设备异常检测方法及系统,该方法为:提取待处理数据包序列中每一待处理数据包的属性特征;根据每一待处理数据包的属性特征中的基本属性特征,判断待处理数据包是否符合预设规则;若不符合,判定工控设备的交互行为为异常行为;若符合,利用每一待处理数据包的属性特征,确定待处理数据包序列的交互模式;判断待处理数据包序列的交互模式是否为交互模式集合中的交互模式;若不是,判定工控设备的交互行为为异常行为;若是,针对待处理数据包序列中每种交互模式对应的子序列,解析得到上行数据包的上行数据值,确定其上行数据值的模型预测值;若上行数据值和模型预测值之间的差值不在预设范围内,判定工控设备的交互行为为异常行为;将异常行为记录在区块链上。通过多层次的方式判断工控设备的交互行为是否为异常行为,提高ICS的网络攻击检测能力和效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
由背景技术可知,目前对ICS进行异常检测的方式,无法检测内部攻击、通信流量特性无变化攻击和篡改测量数据攻击等异常行为,网络攻击检测能力较差,不能保证ICS的网络安全性。
因此,本发明实施例提供一种工控设备异常检测方法及系统,利用待处理数据包序列中每一待处理数据包的属性特征,对待处理数据包序列对应的交互行为进行多层次判断,判断工控设备的交互行为是否为异常行为,以提高ICS的网络攻击检测能力和效率。
需要说明的是,本发明实施例中所涉及的交互模式是指通信主体之间周期性或有规律的交互,一次交互是指通信主体之间一个连续的数据包序列,并以特定包(根据通信协议定义)结束,比如:在传输控制协议(Transmission Control Protocol,TCP)中,前述提及的特定包为确认字符(Acknowledge character,ACK)包。
参见图1,示出了本发明实施例提供的一种工控设备异常检测方法的流程图,该工控设备异常检测方法包括:
步骤S101:提取工控设备的待处理数据包序列中每一待处理数据包的属性特征。
在具体实现步骤S101的过程中,获取工控设备的待处理数据包序列,该待处理数据包序列中包括多个待处理数据包(也称交互流量数据包)。对于待处理数据包序列,提取该待处理数据包序列中每一待处理数据包的属性特征,待处理数据包的属性特征包括但不仅限于:源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向等特征。
需要说明的是,包方向指示待处理数据包为上行数据包还是下行数据包,当人机界面向控制器发送待处理数据包时,待处理数据包为下行数据包,包方向记为1,控制器向人机界面发送待处理数据包时,待处理数据包为上行数据包,包方向记为0。
步骤S102:根据每一待处理数据包的属性特征中的基本属性特征,判断待处理数据包是否符合预设规则。若待处理数据包不符合预设规则,确定工控设备的交互行为为异常行为,若待处理数据包符合预设规则,执行步骤S103。
需要说明的是,属性特征中的基本属性特征包括但不仅限于:源IP、目的IP、源端口号、目的端口号和协议号。
在具体实现步骤S102的过程中,预先设置包括多个IP的黑名单,也就是说,黑名单中的IP即为非法IP。针对每一待处理数据包,判断该待处理数据包的源IP是否为黑名单中的IP,以及判断该待处理数据包的目的IP、源端口号、目的端口号和协议号是否符合预设要求(比如ICS的常规要求)。
若每一待处理数据包的源IP不是黑名单中的IP,并且每一待处理数据包的目的IP、源端口号、目的端口号和协议号符合预设要求,确定待处理数据包符合预设规则,也就是说,若待处理数据包序列中的每个待处理数据包的源IP都不是黑名单中的IP,且每个待处理数据包的目的IP、源端口号、目的端口号和协议号特征都符合预设要求,则确定待处理数据包符合预设规则。
若任一待处理数据包的源IP为黑名单中的IP,和/或,任一待处理数据包的目的IP、源端口号、目的端口号和协议号特征中的一种或多种不符合预设要求,确定待处理数据包不符合预设规则,触发预设的报警流程,提示待处理数据包不符合预设规则。
步骤S103:利用每一待处理数据包的属性特征,确定待处理数据包序列的交互模式。
在具体实现步骤S103的过程中,利用每一待处理数据包的包大小和包方向等属性特征,并且根据ACK包将待处理数据包序列划分出交互,从而确定待处理数据包序列的交互模式。
步骤S104:判断待处理数据包序列的交互模式是否为交互模式集合中的交互模式。若待处理数据包序列的交互模式不是交互模式集合中的交互模式,判定工控设备的交互行为为异常行为,若待处理数据包序列的交互模式为交互模式集合中的交互模式,执行步骤S105。
需要说明的是,预先根据历史数据包构建得到交互模式集合,该交互模式集合中包括多种交互模式(已有的交互模式),在具体实现步骤S104的过程中,判断待处理数据包序列的交互模式是否为交互模式集合中的交互模式。
若待处理数据包序列的交互模式不是交互模式集合中的交互模式,即表示待处理数据包序列的交互模式为新的交互模式,确定工控设备的交互行为为异常行为,触发预设的报警流程,提示工控设备的交互行为为异常行为。
若待处理数据包序列的交互模式是交互模式集合中的交互模式,即表示待处理数据包序列的交互模式为已有的交互模式,执行以下内容继续判断待处理数据包序列对应的交互行为是否为异常行为。
步骤S105:针对待处理数据包序列中每种交互模式对应的子序列,解析得到上行数据包的上行数据值,以及确定上行数据值的模型预测值。
需要说明的是,模型预测值根据上行数据值的预测模型确定得到。
进一步需要说明的是,预先根据历史数据包构建得到上行数据值的预测模型(模型类型可选择ARIMA模型,在此不做限定),可以理解的是,针对交互模式集合中的每一交互模式,利用该交互模式对应的历史数据包构建对应的上行数据值的预测模型,也就是说,交互模式集合中的每一交互模式都有与之对应的上行数据值的预测模型,即交互模式集合中的一种交互模式对应一个预测模型。
在具体实现步骤S105的过程中,针对待处理数据包序列中每种交互模式对应的子序列,利用待处理数据包的包方向,解析得到相应的上行数据包的上行数据值。若待处理数据包序列的交互模式为交互模式集合中的交互模式,由上述内容可知,交互模式集合中的一种交互模式对应一个预测模型,因此可确定与待处理数据包序列的交互模式对应的预测模型。
利用与待处理数据包序列的交互模式对应的预测模型,对待处理数据包序列中的上行数据包进行预测,得到相应的上行数据值的模型预测值。
需要说明的是,该模型预测值为一个数值。
步骤S106:判断上行数据值和模型预测值之间的差值是否不在预设范围内,若上行数据值和模型预测值之间的差值不在预设范围内,判定工控设备的交互行为为异常行为,若上行数据值和模型预测值之间的差值在预设范围内,判定工控设备的交互行为为正常行为。
同理,也可判断上行数据值和模型预测值之间的差值的绝对值是否大于阈值,若该绝对值大于该阈值,判定工控设备的交互行为为异常行为,若该绝对值小于等于该阈值,判定工控设备的交互行为为正常行为。
在具体实现步骤S106的过程中,计算上行数据值和模型预测值之间的差值,若该差值不在预设范围内,即表示待处理数据包为异常数据,存在数据被篡改的可能性,也就是工控设备的交互行为为异常行为,若该差值在预设范围内,确定工控设备的交互行为为正常行为。
需要说明的是,对于每一个预测模型而言,构建该预测模型的历史数据包为距当前时间最近的X(正整数)个历史数据包,因此每次获取正常数据包后需要对上行数据值的预测模型进行更新。
优选的,若上行数据值和模型预测值之间的差值在预设范围内,表示工控设备的交互行为为正常行为,利用每一待处理数据包的数据值,更新与待处理数据包序列的交互模式对应的预测模型。
步骤S107:将工控设备的异常行为及相关数据记录在区块链上,实现异常信息可信记录和共享,并为工控设备的行为审计提供依据。
在具体实现步骤S107的过程中,确定工控设备的异常行为后,将工控设备的异常行为及相关数据记录在区块链上,从而实现异常信息可信记录和共享,并为工控设备的行为审计提供依据。
在本发明实施例中,提取待处理数据包序列中每一待处理数据包的属性特征。根据每个待处理数据包的属性特征,对待处理数据包进行多个层次的检测,当待处理数据包不满足所有的检测时,判定工控设备的交互行为为异常行为,当待处理数据包序列满足所有的检测时,判定工控设备的交互行为为正常行为。也就是说,通过多层次的方式判定工控设备的交互行为是否为异常行为,并将异常行为记录在区块链上,提高ICS的网络攻击检测能力和效率,以及实现异常信息可信记录和共享,并为工控设备的行为审计提供依据。
上述本发明实施例图1步骤S104涉及的构建交互模式集合的过程,参见图2,示出了本发明实施例提供的构建交互模式集合的流程图,包括以下步骤:
步骤S201:提取每一历史数据包的源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向属性特征,构建其属性特征向量,并按照历史数据包生成的时间顺序形成历史数据包序列。
需要说明的是,历史数据包序列为数据包属性特征向量序列。
在具体实现步骤S201的过程中,获取多个历史数据包(比如从通信网络中抓取多个数据包),针对每个历史数据包,提取该历史数据包的源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向属性特征,并建立该历史数据包对应的属性特征向量F={源IP;目的IP;源端口号;目的端口号;协议号;包大小;包方向}。
按照历史数据包生成的时间顺序,对每个历史数据包对应的属性特征向量进行排序,得到对应的历史数据包序列{F1,F2,F3…}。
步骤S202:将每一历史数据包的源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向属性特征作为特征变量,采用分层聚类算法对所有历史数据包进行分类,得到包类型集合。
需要说明的是,预先根据历史数据包的属性特征确定分类特征变量,比如选择历史数据包的源IP、目的IP、源端口号、目的端口号、包大小和包方向作为特征变量。
需要说明的是,由于控制人机界面之间的工控通信只有一种,因此协议号只有一种,不需要对协议号进行分类。
在具体实现步骤S202的过程中,根据每一历史数据包的源IP、目的IP、源端口号、目的端口号、包大小和包方向属性特征与前述预先确定的特征变量,通过分层聚类算法对所有历史数据包进行分类,基于前述聚类结果(分类结果)可得到包类型集合,假设包类型集合中包括m类历史数据包,m种类别分别记为{C1,…,Cm}。
具体对历史数据包进行分类的过程如下:
将源IP和目的IP转化为数值型变量,具体转化方式为:将IP(源IP或目的IP)的四段数值相加得到的值作为该IP新的值,比如:IP=192.168.1.1,则转化后的IP=192+168+1+1=362。
第一层聚类选择包方向,包方向只有1和0两类,1表示下行数据包(人机界面向控制器发送的数据包),0表示上行数据包(控制器向人机界面发送的数据包)。
第二层聚类选择源IP和目的IP。
第三层聚类选择源端口号和目的端口号。
第四层选择包大小,完成前述多个层次的聚类后,终止分层聚类算法。
可以理解的是,所有历史数据包中包括多个交互,通过解析控制器和人机界面之间的工控通信协议获得任意一个交互的最后一个历史数据包(称为交互尾包)的特征,将每个交互的交互尾包分离出来,基于上述包类型集合得到交互尾包类型集合,假设交互尾包类型集合中包括n(n<m)类尾包,n种类别重新分别记为{I1,…,In},同时将包类型集合中的尾包类型删除。
步骤S203:根据流量包协议号分析,获得交互尾包的通用特征,从历史数据包序列中挑选出所有的交互尾包,进而基于包类型集合确定交互尾包类型集合,从包类型集合中删除交互尾包类型集合中的所有元素,并对交互尾包类型重新命名。
步骤S204:根据包类型集合和交互尾包类型集合,替换每个历史数据包的属性特征向量为包类型,以交互尾包为界,将所有历史数据包组成的序列划分为多个相互独立的单次交互数据包序列。
在具体实现步骤S204的过程中,根据上述得到的包类型集合和交互尾包类型集合,将历史数据包序列中的每个历史数据包替换成与之对应的包类型Ci,i取值于{1,…,m},并且将每个交互的最后一个历史数据包(交互尾包)替换为与之对应的交互尾包类型Ij,j取值于{1,…,n}。
完成上述替换后,将所有历史数据包组成的序列划分为多个相互独立的单次交互数据包序列,比如:单次交互数据包序列的形式为{C1,C2,I1}。
步骤S205:对多个单次交互数据包序列进行分类,得到包括多种交互模式的交互模式集合。
在具体实现步骤S205的过程中,以单次交互数据包序列为样本数据,通过分层聚类算法对多个单次交互数据包序列进行分类,得到包括多种交互模式的交互模式集合。
具体对多个单次交互数据包序列进行分类的过程为:
获取每个单次交互数据包序列的长度L,将其该长度作为单次交互数据包序列的新属性添加至该单次交互数据包序列中,比如:单次交互数据包序列为{C1,C2,I1},长度L为3,则将{C1,C2,I1}转化为{C1,C2,I1;L=3}。
第一层聚类选择单次交互数据包序列的长度,对多个单次交互数据包序列进行分类,具有相同长度的单次交互数据包序列为同一类,不同长度的为不同类。
针对长度L=k(k为正整数)的单次交互数据包序列{C1,…C(k-1),Ij;L=k},第二层聚类基于单次交互数据包序列{C1,…C(k-1),Ij;L=k}中第一个元素聚类,每种包类型分一类。
第三层聚类基于单次交互数据包序列{C1,…C(k-1),Ij;L=k}中第二个元素聚类,每种包类型分一类。
依次聚类至第k层,第k层聚类基于单次交互数据包序列{C1,…C(k-1),Ij;L=k}中第k个元素聚类,每种包类型分一类。
根据上述k层聚类得到的聚类结果,得到包括多种交互模式的交互模式集合,假设有w类交互模式,则该交互模式集合记为{IM1,…,IMw}。
在本发明实施例中,利用历史数据包的属性特征,对所有历史数据包对应的交互模式进行分类,得到包括多种交互模式的交互模式集合。通过交互模式集合,判断待处理数据包序列对应的交互模式是否为已有的交互模式,提高ICS的网络攻击检测能力。
上述本发明实施例图1步骤S105涉及的构建上行数据值的预测模型的过程,参见图3,示出了本发明实施例提供的一种构建上行数据值的预测模型的流程图,包括以下步骤:
步骤S301:针对交互模式集合中的每一交互模式,提取交互模式对应的历史数据包中的上行数据包。
在具体实现步骤S301的过程中,针对交互模式集合中的每一交互模式,提取该交互模式对应的历史数据包中的上行数据包,并根据上述本发明实施例图2步骤S201中提及的包特征向量序列的顺序,对该交互模式对应的上行数据包进行排序(按照序号排序),形成子序列。
步骤S302:针对交互模式集合中的每一交互模式,解析交互模式对应的每一上行数据包,得到数据字段值序列。
在具体实现步骤S302的过程中,针对交互模式集合中的每一交互模式,根据该交互模式对应的子序列的顺序,按顺序解析该交互模式对应的每一上行数据包,得到数据字段值序列,也就是说,将该交互模式对应的每一上行数据包的数据字段解析出来,形成相应的数据字段值序列,该数据字段值序列记为{x1,x2,x3,…}。
比如:解析一上行数据包得到可编程逻辑控制器(Programmable LogicController,PLC)的上传数据(例如运行状态数据)。
需要说明的是,对于不包含运行状态数据的上行数据包(比如ACK包),可删除该上行数据包。
步骤S303:针对交互模式集合中的每一交互模式,利用数据字段值序列,构建交互模式对应的上行数据值的预测模型。
可以理解的是,不同的交互模式所处理的业务差别较大,因此针对每一交互模式,需要建立该交互模式对应的上行数据值的预测模型。
在具体实现步骤S303的过程中,针对交互模式集合中的每一交互模式,利用数据字段值序列确定上行数据值的预测模型的系数,并根据上行数据值的预测模型的系数构建预测模型。
利用数据字段值序列{x1,x2,x3,…}构建预测模型(比如ARIMA模型)的具体过程如下:
确定ARIMA模型中p、d和q的取值,其中,p为自回归的项数,d为差分的阶数,q为移动平均的项数,p、d和q均为大于等于0的整数。
获取ARIMA模型,ARIMA模型的具体内容如公式(1)。
其中,在公式(1)中,
、
至
和
至
为常数,
为x的d阶差分,
为
的预测误差,t为第t个数据包。
基于移动平均算法,计算
至
,其中
,
其中i取值{1, …,p},N为移动平均算法使用的历史数据的个数。
利用样本数据,进行上述涉及的计算,拟合得到最优的
、
至
和
至
。
依次进行迭代得到后续的M项模型预测值。
将M项
的值的绝对值之和作为判断p、d和q的取值优劣性的标准,通过预设的
测试标准选择最优的p、d和q参数组合,利用最优的p、d和q参数组合确定最优的ARIMA模型
为预测模型。
在本发明实施例中,针对交互模式集合中的每一交互模式,建立该交互模型对应的上行数据值的预测模型,即一种交互模式对应一个预测模型。确定与待处理数据包序列的交互模式对应的预测模型,并以该预测模型确定待处理数据包序列的上行数据的模型预测值,通过判断上行数据值和模型预测值的差值是否在预设范围内来判断交互行为是否为异常行为,提高ICS的网络攻击检测能力。
为更好解释说明上述本发明实施例图1至图3示出的内容,通过图4进行举例说明,需要说的是,图4仅用于举例。
参见图4,示出了本发明实施例提供的一种工控设备异常检测方法的另一流程图,该工控设备异常检测方法包括以下步骤:
步骤S401:抓取人机界面和控制器之间的所有数据包(即历史数据包),并提取每个历史数据包的属性特征。
步骤S402:根据每个历史数据包的属性特征,对所有数据包进行分类得到包类型集合和交互尾包类型集合。
步骤S403:根据包类型集合和交互尾包类型集合,结合分层聚类算法,对所有历史数据包对应的交互模式进行分类,得到交互模式集合。
步骤S404:针对交互模式集合中的每一交互模式,构建该交互模式对应的上行数据值的预测模型。
可以理解的是,上述步骤S401至步骤S404为准备步骤。
步骤S405:对于待处理数据包序列,确定待处理数据包是否符合预设规则。若待处理数据包符合预设规则,执行步骤S406,若待处理数据包不符合预设规则,判定工控设备的交互行为为异常行为。
步骤S406:确定待处理数据包序列的交互模式是否为预设的交互模式集合中的交互模式。若待处理数据包序列的交互模式不是交互模式集合中的交互模式,判定工控设备的交互行为为异常行为,若待处理数据包序列的交互模式为交互模式集合中的交互模式,执行步骤S407。
步骤S407:确定与待处理数据包序列的交互模式对应的上行数据值的预测模型,并确定上行数据包的上行数据值和上行数据值的模型预测值,判断上行数据值和模型预测值之间的差值是否不在预设范围内。若上行数据值和模型预测值之间的差值不在预设范围内,判定工控设备的交互行为为异常行为,若上行数据值和模型预测值之间的差值在预设范围内,判定工控设备的交互行为为正常行为。
需要说明的是,步骤S401至步骤S407的执行原理,可参见上述本发明实施例图1至图3示出的内容,在此不再进行赘述。
与上述本发明实施例提供的一种工控设备异常检测方法相对应,参见图5,本发明实施例还提供了一种工控设备异常检测系统的结构框图,该工控设备异常检测系统包括:提取单元501、第一处理单元502、第二处理单元503,第三处理单元504和上传单元505;
提取单元501,用于提取工控设备的待处理数据包序列中每一待处理数据包的属性特征。
第一处理单元502,用于根据每一待处理数据包的属性特征中的基本属性特征,判断待处理数据包是否符合预设规则,若待处理数据包不符合预设规则,判定工控设备的交互行为为异常行为,若待处理数据包符合预设规则,利用每一待处理数据包的属性特征,确定待处理数据包序列的交互模式。
第二处理单元503,用于判断待处理数据包序列的交互模式是否为交互模式集合中的交互模式,若待处理数据包序列的交互模式不是交互模式集合中的交互模式,判定工控设备的交互行为为异常行为,若待处理数据包序列的交互模式为交互模式集合中的交互模式,针对待处理数据包序列中每种交互模式对应的子序列,解析得到上行数据包的上行数据值,确定上行数据值的模型预测值,其中,模型预测值根据上行数据值的预测模型确定得到,上行数据值的预测模型预先根据历史数据包构建得到,交互模式集合预先根据历史数据包构建得到。
第三处理单元504,用于若上行数据值和模型预测值之间的差值不在预设范围内,判定工控设备的交互行为为异常行为。
上传单元505,用于将工控设备的异常行为及相关数据记录在区块链上,实现异常信息可信记录和共享,并为工控设备的行为审计提供依据。
在本发明实施例中,提取待处理数据包序列中每一待处理数据包的属性特征。根据每个待处理数据包的属性特征,对待处理数据包进行多个层次的检测,当待处理数据包不满足所有的检测时,判定工控设备的交互行为为异常行为,当待处理数据包序列满足所有的检测时,判定工控设备的交互行为为正常行为。也就是说,通过多层次的方式判定工控设备的交互行为是否为异常行为,并将异常行为记录在区块链上,提高ICS的网络攻击检测能力和效率,以及实现异常信息可信记录和共享,并为工控设备的行为审计提供依据。
优选的,结合图5示出的内容,属性特征至少包括:源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向,用于构建交互模式集合的第二处理单元503包括:提取模块、第一分类模块、划分模块和第二分类模块,各个模块的执行原理如下:
提取模块,用于提取每一历史数据包的源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向属性特征,构建其属性特征向量,并按照历史数据包生成的时间顺序形成历史数据包序列,历史数据包序列为数据包属性特征向量序列。
第一分类模块,用于将每一历史数据包的源IP、目的IP、源端口号、目的端口号、包大小和包方向属性特征作为特征变量,采用分层聚类算法对所有历史数据包进行分类,得到包类型集合。
划分模块,用于根据流量包协议号分析,获得交互尾包的通用特征,从历史数据包序列中挑选出所有的交互尾包,进而基于包类型集合确定交互尾包类型集合,从包类型集合中删除交互尾包类型集合中的所有元素,并对交互尾包类型重新命名,以及根据包类型集合和交互尾包类型集合,替换每个历史数据包的属性特征向量为包类型,以交互尾包为界,将所有历史数据包组成的序列划分为多个相互独立的单次交互数据包序列,交互尾包为每次交互的最后一个数据包。
第二分类模块,用于对多个单次交互数据包序列进行分类,得到包括多种交互模式的交互模式集合。
在本发明实施例中,利用历史数据包的属性特征,对所有历史数据包对应的交互模式进行分类,得到包括多种交互模式的交互模式集合。通过交互模式集合,判断待处理数据包序列对应的交互模式是否为已有的交互模式,提高ICS的网络攻击检测能力。
优选的,结合图5示出的内容,用于构建上行数据值的预测模型的所述第二处理单元503包括:处理模块、解析模块和构建模块,各个模块的执行原理如下:
处理模块,用于针对交互模式集合中的每一交互模式,提取交互模式对应的历史数据包中的上行数据包。
解析模块,用于针对交互模式集合中的每一交互模式,解析交互模式对应的每一上行数据包,得到数据字段值序列。
构建模块,用于针对交互模式集合中的每一交互模式,利用数据字段值序列,构建交互模式对应的上行数据值的预测模型。
在本发明实施例中,针对交互模式集合中的每一交互模式,建立该交互模型对应的上行数据值的预测模型,即一种交互模式对应一个预测模型。确定与待处理数据包序列的交互模式对应的预测模型,并以该预测模型确定待处理数据包序列的上行数据的模型预测值,通过判断上行数据值和模型预测值的差值是否在预设范围内来判断交互行为是否为异常行为,提高ICS的网络攻击检测能力。
优选的,结合图5示出的内容,基本属性特征至少包括:源IP、目的IP、源端口号、目的端口号、协议号、包大小和包方向,第一处理单元包括:处理模块、第一确定模块和第二确定模块,各个模块的执行原理如下:
处理模块,用于针对每一待处理数据包,判断待处理数据包的源IP是否为预设的黑名单中的IP,以及判断待处理数据包的目的IP、源端口号、目的端口号和协议号特征是否符合预设要求。
第一确定模块,用于若每一待处理数据包的源IP不是黑名单中的IP,并且每一待处理数据包的目的IP、源端口号、目的端口号和协议号特征符合预设要求,判定待处理数据包符合预设规则。
第二确定模块,用于若任一待处理数据包的源IP为黑名单中的IP,和/或,任一待处理数据包的目的IP、源端口号、目的端口号和协议号特征中的一种或多种不符合预设要求,确定待处理数据包序列不符合预设规则。
优选的,结合图5示出的内容,该工控设备异常检测系统还包括:
更新单元,用于若上行数据值和模型预测值之间的差值在预设范围内,利用每一待处理数据包的数据值,更新上行数据值的预测模型。
综上所述,本发明实施例提供一种工控设备异常检测方法及系统,利用待处理数据包序列中每一待处理数据包的属性特征,对待处理数据包序列对应的交互行为进行多层次判断,判断工控设备的交互行为是否为异常行为,并将异常行为记录在区块链上,提高ICS的网络攻击检测能力和效率,以及实现异常信息可信记录和共享,并为工控设备的行为审计提供依据。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。