一种基于Modbus数据包重组的入侵检测方法及装置

文档序号:29068520发布日期:2022-03-01 20:20阅读:86来源:国知局
一种基于Modbus数据包重组的入侵检测方法及装置
一种基于modbus数据包重组的入侵检测方法及装置
技术领域
1.本发明属于网络空间安全入侵检测技术领域,具体涉及一种基于modbus数据包重组的入侵检测方法及装置。


背景技术:

2.随着工业4.0时代的到来,工业互联网得到快速发展,工业设备不断接入到互联网环境中,使得工业控制系统与外界的物理隔离被打破,导致其所面临的安全威胁不断增加。工业控制系统的安全防护机制通常有三种,即防火墙、入侵检测技术和加密技术。与其他安全防护机制不同的是,入侵检测技术是对系统的流量、协议、主机采取的主动防御技术,可实时监控系统工作并感知系统的异常行为,具有数据分析和告警的功能。其既可满足工业控制系统的整体防护,又可满足安全策略要求;既可实现工业控制系统的内部防护,还可抵御外部攻击,在工控安全领域得到广泛应用。相较于普通互联网环境,工业环境普遍具有工业通信协议特殊、上下文联系紧密和通信模式固定等特点。现有的工业控制系统入侵检测技术主要针对单个数据包进行检测,无法充分利用数据包之间的上下文信息,缺乏对工控系统中业务逻辑关系的理解,造成漏检率过高。并且缺少对控制指令的语义理解和利用,无法有效地检测针对工业过程进行攻击的行为。
3.在工业系统中,操作人员发出的指令与工业系统状态之间存在着明显的因果关系,这种因果关系体现在指令包和状态查询包之间。为此,提出了基于数据包重组的方法,从多个数据包中提取体现这种因果关系的上下文信息,然后在此基础上,设计深度学习模型,对modbus网络中的入侵行为进行检测。


技术实现要素:

4.本发明的目的在于针对工业互联网环境的特点,提出了一种基于modbus数据包重组的工业控制系统入侵检测方法。
5.本发明解决其技术问题所采用的技术方案如下:
6.一种基于modbus数据包重组的入侵检测方法,包括以下步骤:
7.步骤1、modbus数据包获取;
8.获取工控系统中modbus网络流量包中的命令读、响应读、命令写和响应写四种类型的modbus数据包;
9.步骤2、modbus数据包重组以及特征提取;
10.将上述四种类型modbus数据包按命令读、响应读、命令写和响应写的顺序以及时间先后顺序进行首尾拼接,得到重组数据;对重组后数据按照modbus帧结构的特点,以8bit为单位进行划分,得到若干特征;
11.步骤3、特征筛选;
12.由于重组后数据中包含很多冗余信息,为了去除不必要的信息进而提高检测的准确率,需进行特征筛选;
13.对步骤2划分得到的所有特征计算信息增益,并将其进行从大到小排序,保留前n个信息增益对应的特征;所述信息增益用于衡量特征与分类标签的相关程度,从而判断特征的重要性;n为人为定义参数;
14.3-1计算每个特征的信息熵,信息熵是衡量无序度的度量,计算公式见公式(1):
[0015][0016]
其中x
i,j
表示特征xi的第j个取值情况,xi为第i个特征的所有取值情况集合,p(x
i,j
)表示特征取值为x
i,j
的概率,h(xi)为第i个特征的信息熵;
[0017]
3-2计算每个特征的条件熵,条件熵是在某种条件前提下的信息熵,计算公式见公式(2):
[0018][0019]
其中h(y|xi)表示选取第i个特征时y的不确定性,yi为第i个分类类别,y表示分类类别集合;
[0020]
3-3根据每个特征的条件熵,并结合分类类别的信息熵,通过公式(3)计算特征信息增益:
[0021]
ig(xi)=h(y)-h(y|xi)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0022][0023]
其中ig(xi)表示第i个特征的信息增益,h(y)为分类类别的信息熵;
[0024]
3-4对所有特征的信息增益进行从大到小排序,保留前n个信息增益对应的特征;
[0025]
步骤4、数据图像化处理:采用现有常规技术将步骤3筛选后的特征数据转为二进制图像;
[0026]
四种类型数据包组合成一条数据并去除冗余特征之后,需要将原本的十六进制数据流转为二进制流,然后将二进制流变成正方形的rgb图像;其中二进制流中的0替换为rgb(255,255,255),二进制流中的1替换为rgb(0,0,0);
[0027]
步骤5、根据步骤4得到的二进制图像构建数据集,并进行人工标注;同时将数据集分为训练集和测试集;其中每种类型modbus数据包拥有两类标签,分别是攻击行为、正常行为;
[0028]
作为优选,数据集的标签采用4位二进制数字,从最高位到最低位的数字分别代表命令读、响应读、命令写和响应写四种类型modbus数据包的标签。
[0029]
步骤6、构建基于卷积深度神经网络的入侵检测模型,并利用训练集进行训练;
[0030]
所述基于卷积深度神经网络的入侵检测模型包括依次级联的输入层、第一卷积层、第一最大池化层、第二卷积层、第二最大池化层、第三卷积层、第一线性全连接层、第二线性全连接层、第三线性全连接层;
[0031]
所述输入层的输入为训练集的二进制图像,输入大小为3*图像长度*图像宽度;
[0032]
所述第一卷积层、第二卷积层、第三卷积层的卷积核个数、卷积核大小、步长以及填充根据输入数据的大小调整,输入与输出大小关系如公式(4)所示:
[0033][0034]
其中o为输出图像的尺寸,i为输入图像的尺寸,k为卷积核的尺寸,p为填充padding尺寸,s为卷积核移动步长。
[0035]
第一卷积层、第二卷积层、第三卷积层卷积后的结果均使用relu函数作为激活函数;relu函数如公式(5)所示:
[0036]
relu(r)=max(0,r)
ꢀꢀꢀꢀ
(5)
[0037]
其中r为第一卷积层、第二卷积层、第三卷积层卷积后的结果数值,max(0,r)函数表示取0和r中最大值。
[0038]
所述第一最大池化层、第二最大池化层的池化窗口大小依据输入数据大小进行设置;
[0039]
所述第三卷积层的输出需要进行展平,形成一维张量,作为所述第一线性全连接层的输入;
[0040]
所述第一线性全连接层、第二线性全连接层、第三线性全连接层,用于线性运算,并最终输出十六维的向量。
[0041]
第三线性全连接层输出的向量通过softmax函数计算得到最终分类的结果,softmax函数公式见公式(6);
[0042][0043]
其中zi为第i个节点的输出值,c为输出节点的个数,即分类类别个数。
[0044]
模型的优化选用adam优化器,它结合adagrad和rmsprop两种优化算法的优点,能综合考虑梯度的一阶矩估计和二阶矩估计进行步长的更新。损失函数选用categorical_crossentropy分类交叉熵函数,计算公式为式(7)
[0045][0046]
其中n是样本数,m是分类类别的个数,l为模型的实际输出值即预测值,为真实值。
[0047]
训练好的模型将保存到文件中,以方便之后检测模块对模型的提取调用。
[0048]
步骤7、利用测试集对已训练的基于卷积深度神经网络的入侵检测模型进行测试;
[0049]
步骤8、从网络流量、数据库或者日志文件中获取工控系统中待检测的modbus网络流量包重复步骤2至4,利用测试好的基于卷积深度神经网络的入侵检测模型,实现对modbus网络流量包进行入侵检测。
[0050]
本发明的另一个目的是提供一种基于modbus数据包重组的入侵检测系统,包括数据包重组模块、入侵检测模型训练模块和检测模块;
[0051]
所述数据包重组模块,用于根据工业控制系统中的业务关系,将四种modbus数据包重组,并对重组后的数据做特征筛选以及数据图像化处理;
[0052]
所述入侵检测模型训练模块,用于将经过数据包重组模块处理后数据进行人工打标,并将其分为训练集和测试集,然后利用训练集中的数据训练基于卷积神经网络的入侵
检测模型,并利用测试集中的数据优化基于卷积神经网络的入侵检测模型;
[0053]
所述检测模块,用于将未经标记的modbus数据包经数据包重组模块处理后输入至已经训练好的基于卷积神经网络的入侵检测模型中,根据检测结果识别是否为入侵数据。
[0054]
本发明与现有的入侵检测方法相比,其显著优点在于:
[0055]
(1)本发明考虑了工业控制系统中独特的业务逻辑关系,通过包重组并对其中特征数据做进一步筛选的方式,实现了对工业网络数据中的上下文信息的提取,比现有的工控系统流量检测方法能更充分地利用modbus流量数据包之间的相关性。
[0056]
(2)本发明采用深度学习网络模型(即基于卷积神经网络的入侵检测模型),比起传统的机器学习入侵检测模型,节省了专家特征工程的人工成本,能够自动从数据中提取出更深层的特征。
附图说明
[0057]
图1为基于modbus数据包重组的入侵检测方法的流程图;
[0058]
图2modbus通信过程图;
[0059]
图3modbus数据包示例图;
[0060]
图4卷积神经网络结构图。
具体实施方式
[0061]
下面结合附图和具体实例对本发明作进一步的详细说明。
[0062]
本发明的入侵检测系统主要由数据包重组模块、入侵检测模型训练模块和检测模块构成,如图1所示。
[0063]
(1)数据包重组模块,根据工业控制系统中的业务关系,将有关联的四个modbus数据包按时间顺序包首对包尾地组装到一起,并对重组后的数据做特征筛选以及图像化处理。
[0064]
(2)入侵检测模型训练模块,把经过数据包重组模块处理并带有标签的数据分为训练集和测试集,利用训练集中的数据训练基于卷积神经网络的入侵检测模型,再利用测试集中的数据作为训练后模型的输入,模型的输出结果作为评判的依据来优化模型。最后将优化训练好的模型存入文件中保存,方便后续调用。
[0065]
(3)检测模块,用于将未经标记的待检测modbus数据包经数据包重组模块处理后输入已经训练好的入侵检测模型中,得到检测结果,依据检测结果筛选出攻击行为的可疑数据包。
[0066]
本发明的基本流程图如图1所示,包括以下步骤:
[0067]
步骤1、modbus数据包获取;
[0068]
modbus协议是应用最为广泛的工业网络协议。该协议采用主从架构,在工业控制系统中只有一个主节点,其他的都是从节点。只有主节点能发起请求,而从属节点只能被动进行回应。在modbus协议中,单个数据包只包含一个功能。按功能类型,modbus协议数据包具体可分为命令读、命令写、响应读和响应写四类不同的数据包。这四类数据包的通信过程如图2所示。
[0069]
其中命令读数据包是客户端发送给服务器端读取系统状态的请求信息。响应写数
据包是服务端发送给客户端的确认收到指令的响应信息。响应读数据包中包含了服务器端发送给客户端系统状态信息。命令写数据包中包含了客户端对服务器端下达的指令信息。同类数据包具有相同功能的信息和长度。如响应读数据包都包含设备的状态信息,命令写数据包都包含操作人员对设备下达的命令信息。四种数据包示例见图3。
[0070]
步骤2、modbus数据包重组以及特征提取
[0071]
根据工业控制系统中的业务关系,将从工业环境中采集得到的modbus网络流量中的命令读、响应读、命令写和响应写四个数据包重新组合拼接,形成一条新的重组后数据信息。具体的重组策略如下:
[0072]
(1)根据数据携带的信息可以将所有的数据包分为命令读数据包、命令写数据包、响应读数据包和响应写数据包四类。四种类型的数据包每种都有两类情况,分别是带有攻击数据的数据包和正常行为的数据包。
[0073]
(2)按照命令读、响应读、命令写、响应写的顺序,以及时间先后顺序将四种数据包进行首尾拼接,重新组合为一条新的数据信息。
[0074]
对重组后数据按照modbus帧结构特点以8bit为单位进行划分,得到若干特征;
[0075]
步骤3、特征筛选
[0076]
重组后数据中包含很多冗余信息,为了去除不必要的信息进而提高检测的准确率,需进行特征筛选。
[0077]
对步骤2划分得到的所有特征计算信息增益,并将其进行从大到小排序,保留前n个信息增益对应的特征。所述信息增益用于衡量特征与分类标签的相关程度,从而判断特征的重要性。
[0078]
3-1计算每个特征的信息熵,信息熵是衡量无序度的度量,计算公式见公式(1):
[0079][0080]
其中x
i,j
表示特征xi的第j个取值情况,xi为第i个特征的所有取值情况集合,p(x
i,j
)表示特征取值为x
i,j
的概率,为第i个特征的信息熵。
[0081]
3-2计算每个特征的条件熵,条件熵是在某种条件前提下的信息熵,计算公式见公式(2):
[0082][0083]
其中h(y|xi)表示选取第i个特征时y的不确定性。yi为第i个分类类别,y表示分类类别集合。
[0084]
3-3特征信息增益可以通过公式(3)计算:
[0085]
ig(xi)=h(y)-h(y|xi)
ꢀꢀꢀꢀꢀꢀ
(3)
[0086][0087]
其中ig(xi)表示第i个特征的信息增益,h(y)为分类类别的信息熵。
[0088]
3-4对所有特征的信息增益进行从大到小排序,保留前n=40个信息增益对应的特征。
[0089]
步骤4、将步骤3特征筛选后的数据转为二进制图像;
[0090]
四个modbus数据包组合成一条数据并去除冗余特征之后,需要将原本的十六进制数据流转为二进制流,然后将二进制流变成正方形的rgb图像,其中二进制流中的0替换为rgb(255,255,255),二进制流中的1替换为rgb(0,0,0)。
[0091]
步骤5、根据步骤4得到的二进制图像构建数据集,并进行人工标注;同时将数据集分为训练集和测试集;
[0092]
四种类型的数据包每种都有两类情况,分别是带有攻击数据的数据包和正常行为的数据包,将四种数据包组合后,总共有十六种不同的分类情况,人工标注的标签由4位二进制数字组成,从最高位到最低位的数字分别代表了第一个数据包、第二个数据包、第三个数据包和第四个数据包的结果。每个数字采用二进制,为0代表该数据包正常,为1则代表该数据包为攻击数据包。例如,标签0000,则表明组合后的四个数据包全都是正常的;标签0101,则表明组合后的四个数据包第二个和第四个是攻击数据包。
[0093]
所构建的数据集经过随机打乱,并按照比例划分为训练集和测试集。
[0094]
步骤6、构建基于卷积深度神经网络的入侵检测模型,并利用训练集进行训练;
[0095]
所述基于卷积深度神经网络的入侵检测模型包括依次级联的输入层、第一卷积层、第一最大池化层、第二卷积层、第二最大池化层、第三卷积层、第一线性全连接层、第二线性全连接层、第三线性全连接层;其模型的结构如图4所示,具体模型详细构成及参数设置描述如下。
[0096]
模型第一层是输入层,将图像数据矩阵作为输入,输入大小为3*26*26;
[0097]
所述第一卷积层、第二卷积层、第三卷积层的卷积核个数、卷积核大小、步长以及填充根据输入数据的大小调整,输入与输出大小关系如公式(4)所示:
[0098][0099]
其中o为输出图像的尺寸,i为输入图像的尺寸,k为卷积核的尺寸,p为填充padding尺寸,s为卷积核移动步长。卷积后的结果使用relu函数作为激活函数;relu函数如公式(5)所示:
[0100]
relu(r)=max(0,r)
ꢀꢀ
(5)
[0101]
其中r为卷积后的结果数值,max(0,r)函数将取0和r中最大值。
[0102]
模型第二层为第一卷积层,卷积层的卷积核个数设置为32,卷积核大小设置为3*3,步长设置为1,padding填充设置为1;
[0103]
模型第三层是第一最大池化层,池化窗口大小设置为2*2;
[0104]
模型第四层是第二卷积层,卷积核个数设置为32,卷积核大小设置为5*5,步长设置为1,padding设置为2;
[0105]
模型第五层是第二最大池化层,池化窗口同样也是2*2;
[0106]
模型第六层为第三卷积层,卷积核个数设置为64,卷积核大小设置为3*3,步长设置为1,padding设置为2;
[0107]
模型第七层为第一线性全连接层,其输入为模型第六层得到的输出展平后的结果,具体为3136维的向量,其输出为1024维的向量;
[0108]
模型第八层是第二线性全连接层,其输入为1024维的向量,其输出为128维的向
量;
[0109]
模型第九层是第三线性全连接层,其输入为128维的向量,其输出为16维的向量。
[0110]
第三线性全连接层输出的向量通过softmax函数计算得到最终分类的结果,softmax函数公式见公式(6),其中zi为第i个节点的输出值,c为输出节点的个数,即分类类别个数。
[0111][0112]
模型的优化选用adam优化器,它结合adagrad和rmsprop两种优化算法的优点,能综合考虑梯度的一阶矩估计和二阶矩估计进行步长的更新。损失函数选用categorical_crossentropy分类交叉熵函数,计算公式为式(7),其中n是样本数,m是分类的个数,l为模型的实际输出值即预测值,为真实值。
[0113][0114]
训练好的模型将保存到文件中,以方便之后检测模块对模型的提取调用。
[0115]
步骤7、利用测试集对已训练的基于卷积深度神经网络的入侵检测模型进行测试;
[0116]
步骤8、从网络流量、数据库或者日志文件中获取工控系统中待检测的modbus网络流量包重复步骤2至4,利用测试好的基于卷积深度神经网络的入侵检测模型,实现对modbus网络流量包进行入侵检测。
[0117]
使用从网络流量、数据库或者日志文件中提取的工业控制系统的modbus流量数据,用于入侵检测。数据经过数据包重组模块处理后直接输入检测模块。检测模块将从已保存的模型文件中选择训练准确率,召回率达到一定阈值的模型。利用模型文件中保存的模型,构建用于入侵检测的模型,并输入待检测数据,模型会输出所有数据相应的检测结果。例如,得到输出结果为0000,则表明组合后的四个数据包全都是正常的;得到输出结果为1011,则表明组合后的四个数据包第一个、第三个和第四个数据包是攻击数据包。
[0118]
虽然本说明书根据实施方式加以描述,但是并非每个实施方式仅包含一个独立的技术方案,说明书的叙述方式仅仅是为了清楚起见,本领域的相关技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以进行适当更改,按照本领域技术人员的理解来实施。上文所列出的一系列详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用于限制本发明的保护范围,凡是未脱离发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1