一种分层依赖关系建模的工控入侵检测方法与流程

专利2022-06-30  56


本发明涉及工业控制系统安全技术领域,更具体地说,涉及一种分层依赖关系建模的工控入侵检测方法。



背景技术:

随着工业互联网的发展,工控系统与外部网络的连接更加频繁,这些现象使得工业控制系统面临的安全问题更加严峻。震网病毒、plcblaster、plcinject、sabot、ladderlogicbomb、dynamicpayloads、click等新兴攻击对plc的安全构成了很大的威胁。

为解决这些问题,入侵检测系统被提出。通过在网络关键节点上部署入侵检测系统,对往来流量进行监控,可以检测到是否有攻击甚至确立对应的攻击类型,从而进行应急响应。在传统领域,入侵检测系统已被大范围应用,但受限于工业控制系统的高实时性、低资源性等特性,它们并不能很好的直接应用在工业领域。

所以工控入侵检测成为一研究热点,但受限于研究人员的背景知识以及检测方案的不同,导致实现的检测系统都不尽完善。依据检测的对象,现有工控ids研究可分为基于网络流量的检测以及基于系统参数信息的检测。但基于系统参数信息的检测大都依赖于完整的参数数据,在面对数据值缺失或无法获取的情况下,无法得到很好的检测结果。同时,由于其严重依赖于系统底层参数值与工作日志,并未体现出有足够好的在线监测能力。基于网络流量的研究中,研究人员采用流量挖掘技术提取流量的各种特征,从流量的外层时间空间特征到内部的payload特征,建立不同数据包之间线性或非线性关系,进行入侵检测。针对基于网络流量的入侵检测技术,亦有研究者将其分为基于流量、基于协议两种。基于流量的入侵检测技术在不解析应用层协议的基础上进行,主要处理传输层以下的信息,而基于协议的检测会检测工控协议的具体格式,获取数据包字段的具体含义,最终提取特征构建检测模型。

传统基于流量的检测技术主要提取源目的地址、流量持续时间、平均包间隔时间等。在提取到流量特征后,常利用统计学习或者神经网络对数据进行分析。linda等人提出了基于神经网络的入侵检测算法,该算法在定长数据包序列窗口内提取包序列中的ip地址数量、每个ip地址对应数据包个数、平均包间隔、标识码数量等16种流量特征,然后利用神经网络算法进行训练,最终检测异常流量。maglaras等人提出了基于svm的检测算法,该算法将原本线性不可分的流量特征借助核函数映射到高维空间,可检测中间人攻击、同步洪泛等入侵行为。

基于协议的检测会检测工控协议的具体格式,获取数据包字段的具体含义,最终提取特征构建检测模型。cheung等人早在2006年就提出基于协议的入侵检测技术,他对modbus/tcp数据包中功能码等特定字段的取值范围以及字段间的数值关系建立模型,检测攻击,但存在较高的误报率。woola等人对modbus/tcp协议进行标准化建模,利用在一定时间内捕获的工作数据,构建正常流量的有限状态机模型,利用异常流量不符合此模型的特性进行检测。

然而这些针对流量的工控入侵检测算法都存在检测范围过窄的问题,其未考虑到流量流内部存在的多重依赖关系,易导致检测效果不理想。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种分层依赖关系建模的工控入侵检测方法。

本发明解决其技术问题所采用的技术方案是:构造一种分层依赖关系建模的工控入侵检测方法,包括步骤:

在工控系统中设置交换机流量镜像端口,部署嗅探器进行流量监听;

嗅探器对实时监听到的流量以数据包窗口的方式进行解析,分别提取流量层、数据包层及内容层特征;

利用嗅探器的解析结果,将流量层、数据包层及内容层特征分别输入lstm神经网络,对下一时刻的流量层、数据包层及内容层特征进行预测,获取lstm神经网络输出的预测值;

分别求下一时刻流量层、数据包层及内容层特征的预测值和嗅探器提取的特征真实值的偏差,并将偏差输入自编码器,获取自编码器输出结果,作为异常值;

将自编码器输出的异常值与预设的异常值阈值进行比较,若异常值大于异常值阈值,则对应的流量为攻击流量,否则为正常流量。

在本发明所述的分层依赖关系建模的工控入侵检测方法中,将流量层、数据包层及内容层特征分别输入lstm神经网络,对下一时刻的流量层、数据包层及内容层特征进行预测的步骤之前,还包括对lstm神经网络进行训练的步骤。

在本发明所述的分层依赖关系建模的工控入侵检测方法中,对lstm神经网络进行训练的步骤包括:

收集合法正常的modbus/tcp通信流量,在工业生产环境的网关中设置镜像端口,将收集的通信流量进行解析,得到流量层、数据包层及内容层特征;

将解析得到的流量层、数据包层及内容层特征分为训练集和测试集,将训练集分别输入一lstm神经网络进行训练,训练完成后将测试集输入训练好的lstm神经网络中进行测试。

在本发明所述的分层依赖关系建模的工控入侵检测方法中,嗅探器对实时监听到的流量以数据包窗口的方式进行解析,分别提取流量层、数据包层及内容层特征的步骤中,

流量层特征是采用滑动窗口的方式依次提取不同窗口内的的数据包个数、包速率、接收的字节数、数据包时间间隔的均值、方差、最大最小值,并利用这一类特征,以时间为标准建立时间向量作为空间状态特征,提取出不同时间段之间流量的内在依赖关系;

数据包特征是在一定长数据包窗口内,提取数据包事务元标识符、modbus帧长度、unitid、功能码特征;功能码在工控协议中表示数据包的行为,modbus帧长度在工业流程中呈现周期性变化,攻击行为的出现会造成畸形包,进而引起modbus帧长度产生异常;unitid作为工控协议中特定的地址字段,在同一ip地址下可区分不同的设备;采用功能码、modbus帧长度、unitid等特征构建每个数据包的特征向量,并使用此向量唯一标识每个数据包,从而准确定义数据包的行为特征;

内容层特征是采用抽取访问的地址以及操作的内容作为攻击者的更加细粒度的行为表示,从而获取深层次的语义特征,并以此提取内容层面的不同语义间的依赖关系。

在本发明所述的分层依赖关系建模的工控入侵检测方法中,内容层特征用于体现是否有异常地址被访问或是否传递异常内容;由于modbus协议有离散输入、线圈、输入寄存器、保持寄存器四种区域类型,故针对不同的区域类型有不同的取值范围;内容层特征提取地址类型、开始地址、结束地址、内容最小值与最大值五种特征。

在本发明所述的分层依赖关系建模的工控入侵检测方法中,分别求下一时刻流量层、数据包层及内容层特征的预测值和嗅探器提取的特征真实值的偏差的步骤中,采用均方根误差表示真实值与预测值的偏差,偏差值根据以下公式计算,其中rmse为均方根误差即偏差值,分别为t时刻对应真实特征向量与估计特征向量中不同特征的值,n为输入向量的维度;

通过公式(2)计算每种特征的偏差值的z-score值即zx来保证特征值量纲统一,

其中μx与σx分别是预测偏差的均值与标准差。

区别于现有技术,本发明提供的分层依赖关系建模的工控入侵检测方法通过数据包窗口的方式监控通信流量,并从流量层、数据包层、内容层三方面提取特征,通过并行lstm神经网络分别构建上述三种维度的依赖关系,从而将单一层面的关系特征转为多层次的依赖关系模型。再通过深度自编码器将不同lstm神经网络的输出进行集成,构成最终异常值的输出结果。通过本发明,能够通过分析给定数据包窗口的网络流序列,可检测出具备不同依赖关系的攻击流量,从多个维度、侧面去分析流量存在的隐含关系,从而扩大了传统流量检测的范围,提高攻击流量检测的准确率;最大化的利用了lstm神经网络的长序列学习能力,从时间维度的角度诠释了数据流的变化。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明提供的一种分层依赖关系建模的工控入侵检测方法的流程示意图。

图2是本发明提供的一种分层依赖关系建模的工控入侵检测方法的逻辑示意图。

图3是本发明提供的一种分层依赖关系建模的工控入侵检测方法的lstm神经网络结构示意图。

图4是本发明提供的一种分层依赖关系建模的工控入侵检测方法的实验结果对比示意图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

如图1所示,本发明的一种分层依赖关系建模的工控入侵检测方法包括步骤:

s110:在工控系统中设置交换机流量镜像端口,部署嗅探器进行流量监听。

s120:嗅探器对实时监听到的流量以数据包窗口的方式进行解析,分别提取流量层、数据包层及内容层特征。

s130:利用嗅探器的解析结果,将流量层、数据包层及内容层特征分别输入lstm神经网络,对下一时刻的流量层、数据包层及内容层特征进行预测,获取lstm神经网络输出的预测值。

s140:分别求下一时刻流量层、数据包层及内容层特征的预测值和嗅探器提取的特征真实值的偏差,并将偏差输入自编码器,获取自编码器输出结果,作为异常值。

s150:将自编码器输出的异常值与预设的异常值阈值进行比较,若异常值大于异常值阈值,则对应的流量为攻击流量,否则为正常流量。

在本发明所述的分层依赖关系建模的工控入侵检测方法中,将流量层、数据包层及内容层特征分别输入lstm神经网络,对下一时刻的流量层、数据包层及内容层特征进行预测的步骤之前,还包括对lstm神经网络进行训练的步骤。

在本发明所述的分层依赖关系建模的工控入侵检测方法中,对lstm神经网络进行训练的步骤包括:

收集合法正常的modbus/tcp通信流量,在工业生产环境的网关中设置镜像端口,将收集的通信流量进行解析,得到流量层、数据包层及内容层特征;

将解析得到的流量层、数据包层及内容层特征分为训练集和测试集,将训练集分别输入一lstm神经网络进行训练,训练完成后将测试集输入训练好的lstm神经网络中进行测试。

在本发明所述的分层依赖关系建模的工控入侵检测方法中,嗅探器对实时监听到的流量以数据包窗口的方式进行解析,分别提取流量层、数据包层及内容层特征的步骤中,

流量层特征是采用滑动窗口的方式依次提取不同窗口内的的数据包个数、包速率、接收的字节数、数据包时间间隔的均值、方差、最大最小值,并利用这一类特征,以时间为标准建立时间向量作为空间状态特征,提取出不同时间段之间流量的内在依赖关系;

数据包特征是在一定长数据包窗口内,提取数据包事务元标识符、modbus帧长度、unitid、功能码特征;功能码在工控协议中表示数据包的行为,modbus帧长度在工业流程中呈现周期性变化,攻击行为的出现会造成畸形包,进而引起modbus帧长度产生异常;unitid作为工控协议中特定的地址字段,在同一ip地址下可区分不同的设备;采用功能码、modbus帧长度、unitid等特征构建每个数据包的特征向量,并使用此向量唯一标识每个数据包,从而准确定义数据包的行为特征;

内容层特征是采用抽取访问的地址以及操作的内容作为攻击者的更加细粒度的行为表示,从而获取深层次的语义特征,并以此提取内容层面的不同语义间的依赖关系。

在本发明所述的分层依赖关系建模的工控入侵检测方法中,内容层特征用于体现是否有异常地址被访问或是否传递异常内容;由于modbus协议有离散输入、线圈、输入寄存器、保持寄存器四种区域类型,故针对不同的区域类型有不同的取值范围;内容层特征提取地址类型、开始地址、结束地址、内容最小值与最大值五种特征。

在本发明所述的分层依赖关系建模的工控入侵检测方法中,分别求下一时刻流量层、数据包层及内容层特征的预测值和嗅探器提取的特征真实值的偏差的步骤中,采用均方根误差表示真实值与预测值的偏差,偏差值根据以下公式计算,其中rmse为均方根误差即偏差值,分别为t时刻对应真实特征向量与估计特征向量中不同特征的值,n为输入向量的维度。

通过公式(2)计算每种特征的偏差值的z-score值即zx来保证特征值量纲统一,

其中μx与σx分别是预测偏差的均值与标准差。

本实施例提供一个采用本发明方法的工控入侵检测实例。该方法分为三个阶段,准备阶段、模型构建阶段、入侵检测阶段,系统整体框架如图2所示。

1.准备阶段:

1)事先收集合法正常的modbus/tcp通信流量,在工业生产环境的网关中设置镜像端口,并将端口直接连接到某一设备a中,将数据流信息实时引入到设备a中。

2)特征提取,从数据流层、数据包层、内容层三个层次分别提取特征信息。

针对流量方面,采用滑动窗口的方式依次提取不同窗口内的的数据包个数、包速率、接收的字节数、数据包时间间隔的均值、方差、最大最小值等特征,并利用这一类特征,以时间为标准建立时间向量作为空间状态特征,可很好的表现出不同窗口之间流量在时间上的变化,从而提取出不同时间段之间流量的内在依赖关系。

针对数据包方面,在一定长数据包窗口内,提取数据包事务元标识符、modbus帧长度、unitid、功能码等特征。在工控协议中功能码可以表示数据包的行为,例如,modbus功能码0x03,表示读取保持寄存器,在工业生产环境中hmi周期性发送着这种大量的数据包,读取设备的状态获取系统工作的各项指标。同时在工业流程中modbus帧长度呈现周期性变化,而攻击行为的出现可能会造成畸形包,进而引起modbus帧长度产生异常。而unitid作为工控协议中特定的地址字段,在同一ip地址下可区分不同的设备。采用功能码、modbus帧长度、unitid等特征构建每个数据包的特征向量,并使用此向量唯一标识每个数据包,从而准确定义数据包的行为特征。

针对内容层面,采用抽取访问的地址以及操作的内容作为攻击者的更加细粒度的行为表示,从而获取深层次的语义特征,并以此提取内容层面的不同语义间的依赖关系。相对于前两类特征,此类特征可以较容易的体现出是否有异常地址被访问或是否传递异常内容。由于modbus协议有离散输入、线圈、输入寄存器、保持寄存器四种区域类型,故针对不同的区域类型有不同的取值范围。本发明主要提取了地址类型、开始地址、结束地址、内容最小值与最大值这五种特征。

2.模型构建阶段:

为建立网络流量即数据包序列的多重依赖关系,使用lstm神经网络确立不同层次的攻击模型。lstm神经网络可提取不同数据包之间的隐含关系,这有助于提高检测模型的检测率降低假阳性。它通过获取一时间序列上不同状态关系的方式,生成网络流量模型。lstm神经网络通过增加门机制控制记忆过程,解决了长序列训练中的梯度消失与梯度爆炸问题。故其在长序列中比普通rnn有更好的表现。

在模型构建中,将特征提取中量化后到网络正常通信流量输入到lstm神经网络中,其在接收到不同阶段的数据后,进行训练,并预测某时刻对应的数据值。采用均方根误差表示真实值与估计值的偏差,偏差值根据以下公式计算,其中rmse为均方根误差即偏差值,分别为t时刻对应真实特征向量与估计特征向量中不同特征的值,n为输入向量的维度。

由于不同的特征值采用的量纲不一致,故在训练模型之前,需对值进行标准化处理,然后再将其作为模型的输入值。通过下式计算每个特征值预测偏差的z-score值来保证特征值量纲统一,其中μx与σx分别是预测偏差的均值与标准差,zx是z-score值。

为提高异常检测的准确率,降低漏报率,本发明提出三种异构lstm神经网络并行架构,依次提取流量、数据包及访问地址各层的依赖关系。其中每种神经网络的构建方式一致,层数以及各层的功能保持一致,仅是网络的节点个数不一致。

在不同层次的关联关系处理中,统一获取某段数据流n,对于流量层,在特征提取阶段会首先采用滑动窗口的方式提取出不同窗口的特征(主要特征为数据包间隔时间、大小及个数的均值方差等),滑动窗口长度为m,然后输入到lstm神经网络中,神经网络的结构在图3中展示,在输入流量序列后,会经过堆栈式的lstm处理,经过处理后,会依据全连接层输出t时刻的预测向量,然后依据公式(1)计算损失。对于数据包层,其处理过程与流量层类似,在接收到一段长度为n的数据包特征序列后(功能码、modbus帧长度、transactionid等),将其输入到lstm神经网络中,然后对数据进行训练,利用其预测出某t时刻的数据包向量,再计算损失。对于内容层,在收到表述数据包地址特征(地址类型、起始地址、内容范围等)的时间序列后,亦会依次输入序列,然后进行预测,并对比预测结果与真实结果的偏差。

在上述并行的三个lstm神经网络预测后,会出现各个模型的预测偏差rmse,后续需要对各个结果进行整合。引入一个由三层自编码器构成的输出层,并将预测偏差rmse作为输入,用以学习正常流量的rmse值,此三层自编码器负责最终异常值的产生。对于输出层深度自编码器,其在训练阶段尝试去使得神经网络函数h(x)≈x,即生成与原始数据近似的输出。通常来说,自编码器在训练集上训练后,具备重构与训练集具有相同分布规律数据的能力。若此数据与训练数据的规律不同,则期望重构后的数据具备较大的偏差。换句话来说,使用正常流量训练后的偏差rmse保持在一个较小的范围内,若采用模型未曾见过的异常流量作为输入,则期望产生较大的偏差,甚至出现陡增。最终模型会输出集成后的偏差值(rmse)。

3.入侵检测阶段:

入侵检测阶段主要利用模型输出的结果生成最优阈值以及利用此阈值进行入侵检测判断。在模型训练的时候,采用正常流量数据可得到大量的偏差值,此偏差值为正常流量数据的异常值。通过此异常值,可得到正常流量的异常值范围,在得到范围后,引入阈值判断方法进行入侵检测,此阈值使得模型输出的所有异常值都小于它,若出现大于阈值的情况则表示检测到入侵。

在实际部署中,入侵检测模块一直在持续对已接收数据进行预测、评估,若当前接收到的数据为正常流量数据,则异常值输出保持在一定较小的范围内,若接收到的数据中存在攻击或异常数据,则异常值输出会产生陡增,效果如图4所示。

区别于现有技术,本发明提供的分层依赖关系建模的工控入侵检测方法通过数据包窗口的方式监控通信流量,并从流量层、数据包层、内容层三方面提取特征,通过并行lstm神经网络分别构建上述三种维度的依赖关系,从而将单一层面的关系特征转为多层次的依赖关系模型。再通过深度自编码器将不同lstm神经网络的输出进行集成,构成最终异常值的输出结果。通过本发明,能够通过分析给定数据包窗口的网络流序列,可检测出具备不同依赖关系的攻击流量,从多个维度、侧面去分析流量存在的隐含关系,从而扩大了传统流量检测的范围,提高攻击流量检测的准确率;最大化的利用了lstm神经网络的长序列学习能力,从时间维度的角度诠释了数据流的变化。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。


技术特征:

1.一种分层依赖关系建模的工控入侵检测方法,其特征在于,包括以下步骤:

在工控系统中设置交换机流量镜像端口,部署嗅探器进行流量监听;

嗅探器对实时监听到的流量以数据包窗口的方式进行解析,分别提取流量层、数据包层及内容层特征;

利用嗅探器的解析结果,将流量层、数据包层及内容层特征分别输入lstm神经网络,对下一时刻的流量层、数据包层及内容层特征进行预测,获取lstm神经网络输出的预测值;

分别求下一时刻流量层、数据包层及内容层特征的预测值和嗅探器提取的特征真实值的偏差,并将偏差输入自编码器,获取自编码器输出结果,作为异常值;

将自编码器输出的异常值与预设的异常值阈值进行比较,若异常值大于异常值阈值,则对应的流量为攻击流量,否则为正常流量。

2.根据权利要求1所述的分层依赖关系建模的工控入侵检测方法,其特征在于,将流量层、数据包层及内容层特征分别输入lstm神经网络,对下一时刻的流量层、数据包层及内容层特征进行预测的步骤之前,还包括对lstm神经网络进行训练的步骤。

3.根据权利要求2所述的分层依赖关系建模的工控入侵检测方法,其特征在于,对lstm神经网络进行训练的步骤包括:

收集合法正常的modbus/tcp通信流量,在工业生产环境的网关中设置镜像端口,将收集的通信流量进行解析,得到流量层、数据包层及内容层特征;

将解析得到的流量层、数据包层及内容层特征分为训练集和测试集,将训练集分别输入一lstm神经网络进行训练,训练完成后将测试集输入训练好的lstm神经网络中进行测试。

4.根据权利要求1所述的分层依赖关系建模的工控入侵检测方法,其特征在于,嗅探器对实时监听到的流量以数据包窗口的方式进行解析,分别提取流量层、数据包层及内容层特征的步骤中,

流量层特征是采用滑动窗口的方式依次提取不同窗口内的的数据包个数、包速率、接收的字节数、数据包时间间隔的均值、方差、最大最小值,并利用这一类特征,以时间为标准建立时间向量作为空间状态特征,提取出不同时间段之间流量的内在依赖关系;

数据包特征是在一定长数据包窗口内,提取数据包事务元标识符、modbus帧长度、unitid、功能码特征;功能码在工控协议中表示数据包的行为,modbus帧长度在工业流程中呈现周期性变化,攻击行为的出现会造成畸形包,进而引起modbus帧长度产生异常;unitid作为工控协议中特定的地址字段,在同一ip地址下可区分不同的设备;采用功能码、modbus帧长度、unitid等特征构建每个数据包的特征向量,并使用此向量唯一标识每个数据包,从而准确定义数据包的行为特征;

内容层特征是采用抽取访问的地址以及操作的内容作为攻击者的更加细粒度的行为表示,从而获取深层次的语义特征,并以此提取内容层面的不同语义间的依赖关系。

5.根据权利要求4所述的分层依赖关系建模的工控入侵检测方法,其特征在于,内容层特征用于体现是否有异常地址被访问或是否传递异常内容;由于modbus协议有离散输入、线圈、输入寄存器、保持寄存器四种区域类型,故针对不同的区域类型有不同的取值范围;内容层特征提取地址类型、开始地址、结束地址、内容最小值与最大值五种特征。

6.根据权利要求1所述的分层依赖关系建模的工控入侵检测方法,其特征在于,分别求下一时刻流量层、数据包层及内容层特征的预测值和嗅探器提取的特征真实值的偏差的步骤中,采用均方根误差表示真实值与预测值的偏差,偏差值根据以下公式计算,其中rmse为均方根误差即偏差值,与分别为t时刻对应真实特征向量与估计特征向量中不同特征的值,n为输入向量的维度;

(1)

通过公式(2)计算每种特征的偏差值的z-score值即zx来保证特征值量纲统一,

(2)

其中μx与σx分别是预测偏差的均值与标准差。

技术总结
本发明涉及一种分层依赖关系建模的工控入侵检测方法,通过数据包窗口的方式监控通信流量,并从流量层、数据包层、内容层三方面提取特征,通过并行LSTM神经网络分别构建上述三种维度的依赖关系,从而将单一层面的关系特征转为多层次的依赖关系模型。再通过深度自编码器将不同LSTM神经网络的输出进行集成,构成最终异常值的输出结果。通过本发明,能够通过分析给定数据包窗口的网络流序列,可检测出具备不同依赖关系的攻击流量,从多个维度、侧面去分析流量存在的隐含关系,从而扩大了传统流量检测的范围,提高攻击流量检测的准确率;最大化的利用了LSTM神经网络的长序列学习能力,从时间维度的角度诠释了数据流的变化。

技术研发人员:陈永乐;马垚;高波;杨玉丽;于丹;张壮壮
受保护的技术使用者:太原理工大学
技术研发日:2020.01.15
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-55671.html

最新回复(0)