一种基于数据依赖的工控行为异常检测系统的制作方法

文档序号:12478015阅读:219来源:国知局
一种基于数据依赖的工控行为异常检测系统的制作方法与工艺

本发明涉及工业控制网络技术领域,尤其涉及一种基于数据依赖的工业控制系统行为异常检测系统。



背景技术:

工业控制系统(Industrial Control System)是由各种自动化控制组件和实时数据采集、监测的过程控制组件共同构成的。工业控制系统是一个管理和控制系统,它能确保工业设备的正常运行,控制和监测工业生产过程。工业控制系统主要由SCADA(Supervisory Control And Data Acquisition),DCS(Distribution Control System),PLC(Programmable Logic Controller),RTU(Remote Terminal Unit),IED(Intelligent Electronic Device)和接口技术组成。工业控制系统普遍存在于石油、核电站、化工、运输和电力等等。工业控制系统是国家关键基础设施的重要组成部分,工业控制系统的安全关系到国家的战略安全。

工业控制系统在设计之初由于普遍采用专有的通信协议、操作系统、硬件设备,并且与其他网络隔离,主要关注物理安全和功能安全,很少考虑到网络与信息安全。近年来,随着工业化与信息化的深度融合,工控系统的开放性也越来越多,TCP/IP技术、开放的工业通讯协议、通用的操作系统等越来越广泛的应用,使本来就缺少网络与信息安全考虑的工业控制系统更加脆弱。造成了病毒、木马、入侵等安全威胁向工控网络的扩散,因此工业控制系统面临严重的信息安全问题。

为了解决工控网络的信息安全问题,学术界和工业界都在积极的寻找合适的解决方案。而异常检测技术作为信息安全的重要解决方案, 也被应用到了工业控制网络中。但是传统的异常检测技术只是对网络行为特征进行统计建立模型进行异常检测,但是工业控制系统过程行为的篡改不会引起网络行为特征的变化,所以传统异常检测技术不能识别过程行为的篡改攻击。



技术实现要素:

为了解决上述问题,本发明提出了基于数据依赖的工控行为异常检测系统,能够有效的对控制器(PLC等)和被控对象(阀门等)的过程行为进行异常检测,具有检测准确率高、实时性强的特点。

为了解决上述问题,本发明采用如下的技术方案:

一种基于数据依赖的工控行为异常检测系统包括:

数据采集模块,用于获取网络数据包;

行为数据提取模块,用于提取网络数据包中的行为数据,建立用于规则学习的输入输出行为数据列表和用于规则检测的输入输出行为数据列表;

规则学习模块,用于根据预存的学习配置文件和规则学习的输入输出行为数据列表,生成规则文件;

规则检测模块,根据所述规则文件规则检测的输入输出行为数据列表,对所述行为数据进行异常检测。

作为优选,所述数据采集模块,用于从工业控制系统网络中,利用WinPcap捕获网络数据包,保存到系统的一级缓存队列中;再通过判断数据包是否属于工控ModbusTCP协议,如果属于此协议,则保存到ModbusTCP协议的二级缓存队列中,否则丢弃数据包。

作为优选,所述行为数据提取模块用于:

如果判断是规则学习模式,则从学习配置文件中提取使用行为数据地址列表以及构建用于规则学习的输入输出行为数据列表,同时将提取的行为数据通过该行为数据的地址值保存到每一个包含该行为数据地址值的用于规则学习的输入输出行为数据列表中;

如果判断是规则检测模式,则从规则文件中提取使用行为数据地址列表以及构建用于规则检测的输入输出行为数据列表,同时将提取的行为数据通过该行为数据的地址值保存到每一个包含该行为数据地址值的用于规则检测的输入输出行为数据列表中。

作为优选,所述行为数据提取模块从ModbusTCP协议的二级缓存队列中提取数据包,再通过ModbusTCP协议数据包的深度解析;首先判断是否Modbus请求或响应,再判断数据包中是否包括使用行为数据地址列表中的地址,如果是请求的话需要先保存到请求行为数据列表中;判断响应是否与请求行为数据列表中有配对,然后再判断是否是读或写功能码,如果是读功能码,直接提取出行为数据值和行为数据地址;如果是写功能码需要再判断是否请求与响应行为数据相等,如果相等才能提取出行为数据值和行为数据地址,如果不相等报出异常。

作为优选,所述规则学习模块通过学习配置文件中的每一条规则学习配置信息中的输入输出行为数据地址表,从每一条规则学习配置信息对应的输入输出行为数据列表中获取计算数据,基于输入的滞后值、输入阶数值与输出阶数值,再通过最小二乘递推参数估计方程,计算输入输出系统模型参数;根据用于规则学习的输入输出行为数据列表中提取的输入行为数据,通过输入输出系统模型计算得到第一输出数据,同时所述第一数据与用于规则学习的输入输入行为数据列表中的输出行为数据做差计算得到第一误差值,当第一误差值满足预设要求时,将输入输出模型转化为状态空间模型的形式保存到规则文件中。

作为优选,规则检测模块通过规则文件的输入输出对应的行为数据地址,从用于规则检测的输入输出行为数据列表中提取行为数据;根据用于规则检测的输入输出行为数据列表中提取的输入行为数据,基于状态空间参数和输入输出最大值,通过状态空间方程计算得到第二输出数据,同时所述第二输出数据与用于规则检测的输入输出行为数据列表中提取的输入行为数据做差计算得到第二误差值,再通过比 较规则文件中的误差值,判断所述行为数据是否存在错误或由于攻击引起的错误,如果判断行为异常,产生报警信息,保存到报警文件中。

作为优选,所述学习配置文件包括:输入行为数据的地址值、输出行为数据的地址值、输入的滞后值、输入的阶数、输出的阶数。

作为优选,所述规则文件包括:输入行为数据的地址值、输出行为数据的地址值、状态空间参数、误差值和输入输出最大值。

本发明的基于数据依赖的工控行为异常检测方法和系统,在不改变工业网络结构和不影响日常生产的前提下,为用户提供了对控制对象(PLC)和被控对象(物理设备)的行为异常检测系统,漏报和误报的现象少,入侵识别快,从而以较低的成本大大提高了工业控制系统的网络安全水平。

附图说明

图1是本发明异常检测系统的结构示意图;

图2是本发明行为数据提取模块的流程示意图;

图3是本发明规则学习模块的流程示意图;

图4是本发明规则异常检测的流程示意图。

具体实施方式

以下将结合附图所示的具体实施方式对本发明进行详细描述。

如图1所示,本发明实施例提供一种基于数据依赖的工控异常检测系统,包括:

数据采集模块,从工业控制系统网络环境中,利用WinPcap捕获网络数据包,保存到系统的一级缓存队列中;再通过判断数据包是否属于工控ModbusTCP协议,如果属于此协议,则保存到ModbusTCP协议的二级缓存队列中,否则丢弃数据包。

行为数据提取模块,用于为规则学习模块或规则检测模块提取行为数据。此模块首先判断是规则学习模式,还是规则检测模式。如果 是规则学习模式,则从学习配置文件中提取使用行为数据地址列表;如果是规则检测模式,则从规则文件中提取使用行为数据地址列表。此模块构建一个输入输出行为数据字典,如果是规则学习模式,则字典为每一条规则学习配置信息构建一个规则学习的输入输出行为数据列表。如果是规则检测模式,则字典为每一条规则构建一个规则检测的输入输出行为数据列表。然后此模块从ModbusTCP协议的二级缓存队列中提取数据包,再通过ModbusTCP协议数据包的深度解析,首先判断是Modbus请求或响应,再判断数据包中是否包括使用行为数据地址列表中的地址。由于Modbus协议是会话通信,所以如果是请求的话需要先保存到请求行为数据列表中。判断响应是否与请求行为数据列表中有配对,然后再判断是否是读或写功能码,如果是读功能码,直接提取出行为数据值和行为数据地址。如果是写功能码需要再判断是否请求与响应行为数据相等,如果相等才能提取出行为数据值和行为数据地址,如果不相等报出异常。如果是规则学习模式,此模块把提取出的行为数据通过此行为数据的地址值保存到字典中每一个包含此行为数据地址值的规则学习的输入输出行为数据列表中;如果是规则检测模式,此模块把提取出的行为数据通过此行为数据的地址值保存到字典中每一个包含此行为数据地址值的规则检测的输入输出行为数据列表中。最后为规则学习模块提供每一条规则学习的输入输出行为数据列表;为规则检测模块提供每一条规则检测的输入输出行为数据列表。

规则学习模块,通过学习配置文件,用来学习描述控制行为和系统行为的正常行为规则。所述学习配置文件包括:输入行为数据的地址值、输出行为数据的地址值、输入的滞后值、输入的阶数、输出的阶数。规则学习模块通过学习配置文件中的每一条规则学习参数,参数描述了哪些行为数据是输入,哪些是输出。这些行为数据有的是工控系统中的控制行为数据,有的是工控系统中的被控设备的系统行为数据。再通过输入行为数据的滞后和输入行为数据的阶数值以及输出行为数据的阶数,将字典中的每一条规则学习信息的输入输出行为数 据列表中的过程行为数据之间的数据依赖关系化为多输入多输出系统模型,这些模型中包含控制行为数据的是控制行为正常行为模型,只包含系统行为数据的是被控设备系统行为正常行为模型,采用最小二乘参数估计方法计算输入输出模型参数和用模型计算的输出数据与规则学习的输入输入行为数据队列中的输出行为数据的误差值。当误差值很小的时候,用户可以停止学习,将输入输出模型转化为状态空间模型的形式保存到规则文件中,并且将误差值、规则学习参数中的表示输入或输出的输入行为数据地址,输出行为数据地址、输入滞后和输入阶数值的和的最大值与输出滞后比较再取最大值,将输入输出最大值也保存到规则中。最后每一条规则学习信息生成一个规则;具体如下:

所述规则学习模块通过学习配置文件中的每一条规则学习配置信息中的输入输出行为数据地址表,从每一条规则学习配置信息对应的输入输出行为数据列表中获取计算数据,基于输入的滞后值、输入阶数值与输出阶数值,再通过最小二乘递推参数估计方程(公式1),计算输入输出系统模型参数;根据用于规则学习的输入输出行为数据列表中提取的输入行为数据,通过输入输出系统模型计算得到第一输出数据,同时所述第一数据与用于规则学习的输入输入行为数据列表中的输出行为数据做差计算得到第一误差值。

r表示输入个数,m表示输出个数,i=1,2,…,m,j=1,2,…,r,yi(k)表示k时刻第i个输出的值,uj(k)表示k时刻第j个输入的值,na表示输出阶数,nb表示输入阶数矩阵,表示第j个输入对第i个输出的阶数,d表示输入滞后矩阵,dij表示第j个输入对第i个输出的滞后值。

a=[a(1),a(2),…,a(na)]T,

表示待估参数,

yi=[-yi(k-1),-yi(k-2),…-yi(k-na)]T,

表示测量数据,

Y(k)=[y1(k),y2(k),…,ym(k)]T,∈Rm×1表示输出变量,

表示增益矩阵,

表示P矩阵,

当第一误差值满足预设要求时,将输入输出模型转化为状态空间模型的形式保存到规则文件中,转化公式如下:

输入输出最大值为n,r表示输入个数,输入行为数据列表为u1,u2,…ur,m表示输出个数,输出行为数据列表为y1,y2,…ym,i=1,2,…,m,j=1,2,…,r,s1=1,2,…,na,s3=2,3,…,n,s4=2,3,…,n-1,状态空间参数

A∈R[n*(r+m)-r]×[n*(r+m)-r],如果存在以下值,并且存在位置,则赋值:

如果没有,则矩阵A其他位置赋值为零。

参数B∈R[n*(r+m)-r]×r,如果dij==1,则赋值

B[m*(i-1)+1]×j=bij(0);

并且赋值

B[m*n+(n-1)*(j-1)+1]×j=1。

参数C∈Rm×[n*(r+m)-r],赋值

Ci×[n*(i-1)+1]=1。

参数D∈Rm×r,全部赋值为零。

将用于规则学习的输入输入行为数据列表中的输出行为数据的3%作为误差值、规则学习参数中的表示输入或输出的输入行为数据地址和输出行为数据地址、输入滞后和输入阶数值的和的最大值与输出滞后比较再取最大值作为输入输出最大值,保存到规则文件中;最后每一条规则学习信息生成一个规则。

规则检测模块,通过规则文件的输入输出对应的数据地址,从行为数据提取模块为规则检测模块构建的字典中,为一条规则从字典中对应的规则的输入输出行为数据列表中提取行为数据值,开始用规则中的状态空间参数和输入输出最大值,计算输出的值,然后和提取的行为输出数据做差计算出误差值,在通过比较规则文件中的误差值,判断这些行为数据是否存在错误或由于攻击引起的错误等,如果判断行为异常,产生报警信息,保存到报警文件中。具体如下:

规则检测模块,通过规则文件的输入输出对应的数据地址,从行为数据提取模块为规则检测模块构建的字典中,为一条规则从字典 中对应的规则的输入输出行为数据列表中提取行为数据值,开始用规则中的状态空间参数和输入输出最大值,组成状态空间方程,如下所示:

输入输出最大值为n,r表示输入个数,m表示输出个数,i=1,2,…,m,j=1,2,…,r,q1=1,2,…,n,q2=2,3,…,n,yi(k)表示k时刻第i个输出的值,uj(k)表示k时刻第j个输入的值,

通过状态空间方程计算得到第二输出值,同时所述第二输出值与用于规则检测的输入输出行为数据列表中提取的输入行为数据做差计算得到误差值,再通过比较规则文件中的误差值,判断所述行为数据是否存在错误或由于攻击引起的错误,如果判断行为异常,产生报警信息,保存到报警文件中。

图2是本发明行为数据提取模块的执行流程示意图,如图2所示,包括:

步骤21,启动行为数据提取模块。

步骤22,判断是否是规则学习模式,如果是执行步骤23,如果不是执行步骤25。

步骤23,从学习配置文件中的输入输出行为数据地址中,提取使用行为数据地址列表。

步骤24,构建字典,通过学习配置文件中的每一条规则学习配置信息,为每一条规则学习配置信息构建一个规则学习的输入输出行为数据列表。

步骤25,判断是否是规则检测模块,如果是则执行步骤26,如 果不是则执行步骤28。

步骤26,从规则文件中的输入输出行为数据地址值中提取使用行为数据地址列表。

步骤27,构建字典,通过规则文件中的每一条规则信息,为每一条规则构建一个规则检测的输入输出行为数据列表。

步骤28,停止行为数据提取。

步骤29,从ModbusTCP协议的二级缓存队列中,取一个数据包。

步骤210,判断是否为Modbus请求,如果是则执行步骤211,如果不是则执行步骤214。

步骤211,判断数据包是否包含在使用行为数据地址列表中,如果是则执行步骤212,如果不是则执行步骤29。

步骤212,通过当前数据包的时间,删除请求行为数据列表中已经超时没有响应的Modbus请求。

步骤213,将数据保存到请求行为数据列表中。

步骤214,判断是否是Modbus响应数据包,如果是则执行步骤215,如果不是则执行步骤29。

步骤215,判断响应数据是否能与请求行为数据列表中的请求配对,如果是则执行步骤216,如果不是则执行步骤29。

步骤216,判断是否读功能码数据,如果是则执行步骤217,如果不是则执行步骤218。

步骤217,提取出行为数据值和行为数据地址值。

步骤218,判断是否写功能码数据,如果是则执行步骤219,如果不是则执行步骤29。

步骤219,判断请求数据和响应数据是否相等,如果是则执行步骤217,如果不是则执行步骤220。

步骤220,出现了异常数据,报出报警信息。

步骤221,判断是否是规则学习模式,如果是则执行步骤222,如果不是则执行步骤223。

步骤222,将提取的行为数据,根据行为数据地址值包含在字典 中的任意一个规则学习的输入输出行为数据列表中,保存到列表中。

步骤223,判断是否是规则检测模式,如果是则执行步骤224。

步骤224,将提取的行为数据,根据行为数据地址值是否包含在字典中的任意一个规则检测的输入输出行为数据列表中,保存到列表中。

图3是本发明规则学习模块的执行流程示意图,如图3所示,包括:

步骤31,启动规则学习模块。

步骤32,从学习配置文件中提取规则学习信息。

步骤33,为学习配置文件中的每一条规则学习信息启动一个规则学习线程。

步骤34,从每条规则学习配置信息对应的规则学习的输入输出行为数据列表中提取输入输出行为数据值。

步骤35,通过规则学习信息中的输入的滞后值、输入的阶数、输出的阶数,判断规则学习的输入输出行为数据列表中每个输入输出行为数据个数是否足够,如果是则执行步骤36,如果不是则执行步骤34。

步骤36,根据学习配置信息中的输入的滞后值、输入的阶数、输出的阶数和规则学习的输入输出行为数据列表中提取的输入输出行为数据值,通过递推最小二乘参数估计方程计算输入输出系统模型参数,并且通过输入输出系统模型计算的输出数据与规则学习的输入输入行为数据队列中的输出行为数据做差计算误差值。

步骤37,用户判断计算误差值是否很小,如果是则执行步骤38,如果不是则执行步骤34。

步骤38,根据规则学习配置信息和计算的输入输出系统模型参数,通过转化公式,转化为一条规则。

步骤39,停止此学习配置信息对象的规则学习线程。

图4是本发明规则检测模块的执行流程示意图,如图4所示,包括:

步骤41,启动异常检测调度线程。

步骤42,从规则文件中提取规则信息。

步骤43,从提取的规则信息列表中顺序提取一条规则信息。

步骤44,根据规则信息中的输入输出最大值,判断规则对应的规则检测的输入输出行为数据列表的行为数据的个数是否满足,如果是则执行步骤45,如果不是则执行步骤43。

步骤45,根据规则信息中的输入行为数据地址值、输出行为数据地址值,提取出规则检测的输入输出行为数据列表中的输入输出行为数据值。

步骤46,根据规则信息中的状态空间参数和提取的输入输出行为数据值构建状态空间方程,计算输出值。

步骤47,根据计算的输出值与规则检测的输入输出行为数据队列中的输出值做差计算出输出误差值。

步骤48,判断计算的输出误差值是否大于规则误差值。如果是则执行步骤49,如果不是则执行步骤43。

步骤49,产生出报警信息。

以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1