一种应用于工控网络的两级入侵检测系统的制作方法

文档序号:19951102发布日期:2020-02-18 10:31阅读:722来源:国知局
一种应用于工控网络的两级入侵检测系统的制作方法

本发明涉及一种应用于工控网络的两级入侵检测系统,属于工业控制安全技术领域。



背景技术:

入侵检测是一个传统安全研究领域,目前已有多种针对工控网络的入侵检测系统,近年来基于机器学习的入侵检测越来越被重视。构建一个基于机器学习的入侵检测系统首先面对的挑战是需要处理不平衡的数据集,需要识别的异常数据只是数据集中的少数样本,这极大影响算法训练的效果;另一个主要的挑战是大多数的入侵检测系统需要基于特定的签名来进行检测,难以识别“零日攻击”。此外,传统的入侵检测系统,大多存在检测率低或者误报率高的问题。



技术实现要素:

有鉴于此,本发明的目的在于针对上述现有技术中存在的问题,提出了一种应用于工控网络的两级入侵检测系统。为达到上述发明的目的,本发明通过以下技术方案实现:

一种应用于工控网络的两级入侵检测系统,包括如下步骤:

步骤1,下载源数据集,对数据集进行预处理,解决数据不平衡问题。

步骤2,训练第一级基于布鲁姆过滤器的入侵检测器。

步骤3,数据包通过训练好的第一级检测器,被第一级检测器识别为异常的数据包丢弃。

步骤4,通过了第一级检测的数据包,再经过第二级基于k-means聚类算法的检测器,进一步识别攻击。

有益效果:与现有技术相比,本发明的有益效果:使用真实工控网络的数据集进行训练得到的模型更有利于识别工控网络中的异常;经过平衡的数据集更好地提高了系统的性能;两级检测,通过了第一级检测的数据包,再进行与特定签名无关的基于k-means聚类算法的二级检测,可以有效识别“零日攻击”;与现有的入侵检测系统相比,两级的入侵检测系统有更高的检测率。

附图说明

图1为本发明的系统流程图。

图2为本发明的数据预处理模块示意图。

图3为本发明的第一级检测模型示意图。

图4为本发明的第二级检测模型示意图。

具体实施方式

为使本发明实施例的目的、技术方案和有益效果更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明公开一种应用于工控网络的两级入侵检测系统,包括如下步骤:

步骤1,下载数据集,对数据集进行预处理。具体步骤如下:

步骤1.1,首先下载数据集,使用的是由密西西比州立大学公开的天然气管道系统数据集,该数据集是一个真实的大规模工控网络数据集,包括了工控网络实际流量的数据日记,使用的是工控网络的协议,所以使用该数据集训练的模型更有利于工控网络的异常检测。

步骤1.2,对数据集进行预处理。使用处理之后的数据集,对第一级模型进行训练。

步骤2,训练第一级基于布鲁姆过滤器的入侵检测器。具体步骤如下:

步骤2.2,首先利用特征矩阵的所有特征向量和一个签名生成函数生成数据包签名。

步骤2.3,将布鲁姆过滤器记为bf,所有规则数据的集合记为sn,判断生成的签名是否属于sn,如果属于则加入bf中。

步骤2.4,训练完成之后,利用该检测器进行第一阶段的异常检测。

步骤3,数据包首先通过训练好的第一级检测器,被第一级检测器识别为异常的数据包被丢弃。

步骤4,通过了第一级检测的数据包,再经过第二级检测器,进一步识别攻击。具体步骤如下:

步骤4.1,首先将数据包与模式库进行比对,如果没有比对成功,则进行下一步操作;

步骤4.2,对整个数据集进行聚类分析,输出聚类结果,进行判断。

如图2所示,本发明提供一个数据预处理模块示意图。该模块包括攻击生成、标准化、降维、重采样。

首先对下载的源数据集使用autolt技术来发起攻击,该技术是一种自动攻击生成技术,可以丢弃、延迟、注入、修改网络数据包,使用该技术生成攻击之后的数据集,就是有大量正常数据、也有异常数据的不平衡数据集。

接下来对该数据集进行标准化操作,目的是使数据标准、一致、无噪声,使数据具有均值mean为0,标准差σ为1的特性。

所述标准化问题的求解如公式1所示:

所述公式1中,x'是标准化后的新数据,x是原始数据,mean代表原始数据的均值,σ代表原始数据的标准差。

对标准化后的数据集进行降维操作,使用的是主成分分析法(pca)。具体步骤如下:

若有n个样本,每个样本都是一个d维向量。将该数据集的所有数据组成n行d列的矩阵x,每一行代表了一个样本的所有特征,每一列就代表了一个特征属性。

首先进行零均值化,即计算每一列的均值,该列的所有数据都减去该列的均值。

计算矩阵x的协方差矩阵以及协方差矩阵的特征值和对应的特征向量。将特征值从大到小排列,保留最大的n个特征值对应的特征向量,将特征向量按特征值的大小从上到下排列成矩阵p。计算得到降维后的数据如公式2所示:

y=px(2)

所述公式2中,将矩阵p左乘矩阵x就得到了降维后的特征矩阵y。

接着对数据集进行重采样。经过上述操作之后的数据集是不平衡的,大多数的数据都是正常数据,异常数据只是少部分,这也是现实中的情况,使用这样的数据集,大多数机器学习算法都会因为不平衡问题而不能高效的训练,所以需要进行重采样。使用的是smote方法,该方法对异常数据样本进行分析,然后根据异常样本合成新的异常样本加入到数据集中,使数据集数据类别达到平衡。具体步骤如下:

首先找到每一个异常样本的与其他异常样本的距离,样本与样本之间的距离计算方法如公式3所示:

所述公式3中,d(a,b)即为样本a和样本b的欧式距离。其中n是a和b的维数。

然后按照计算结果找到该异常样本的k个最近邻(即欧氏距离最近的k个样本),再从k个最近邻中随机抽取样本,将每一个抽取的样本与该点经过计算得到新的异常样本,计算方法如公式4所示:

xnew=x+rand(0,1)×(x'-x)(4)

所述公式4中,xnew即为生成的新的异常样本,x'是从x的最近邻中随机抽取的样本。

如图3所示,本发明提供一个第一级检测模型示意图。包括数据包签名生成和训练布鲁姆过滤器。

首先利用数据包的所有特征生成数据包的签名。数据包的特征向量a(t)={a1(t),a2(t)......ak(t)},其中每个分量都是一个特征。所述数据包签名的生成如公式5所示:

d(a(t))=f(a1(t),a2(t)......an(t))(5)

所述公式5中,d(a(t))即为生成的数据包签名。f(·)是签名生成函数,该函数使用分隔符将参数连接到字符串。

接下来对布鲁姆过滤器进行训练。布鲁姆过滤器是一种利用哈希函数来查找的数据结构,它包括k个哈希函数{h1,h2......hk}和一个所有位置都初始化为0的m位的位列阵,每一个数据经过哈希函数的计算都对应了位列阵中的一个位置。将布鲁姆过滤器记为bf,所有正常数据的规则签名的集合记为sn,在训练的过程中,数据包生成的每一个签名都判断是否属于sn,如果属于sn则按照如下操作加入到bf中:将该签名与所有哈希函数分别进行计算,得到的k个位置,将布鲁姆过滤器的位列阵对应位置的值都置为1。训练完成之后,检测异常的过程如公式6所示:

所述公式6中,fp(a(t))即为a(t)的检测结果。当它的数据包签名不在bf中时,fp(a(t))=1,检测为异常;当它的数据包签名在bf中时,fp(a(t))=0,说明该数据包通过了第一级检测器的检测。检查一个签名是否在bf中,需要把该签名与所有哈希函数进行计算,得到了位列阵中的k个位置,若每个位置都为1,说明在bf中,即该数据包为异常攻击数据。

如图4所示,本发明提供一个第二级检测模型示意图。

因为通过了第一级检测的数据包也有可能是以前未知的异常数据,所以需要对通过了第一级检测的数据包再进行第二级检测,这样可以有效检测出“零日攻击”。为了识别出“零日攻击”,使用的是基于k-means聚类算法的第二级检测,它不依赖于特定的签名,是一种无监督的学习方法,不需要特定标签就可以将数据包分成不同的类别。将特征向量看作特征空间中的一个点,用欧式距离来描述点与点的相异性。

首先取k值,k的取值和数据集大小和分布有关,取k=3能够得到较好的结果。从数据集中选择k个样本作为该簇的中心点。计算余下的所有点到中心点的欧氏距离。所述欧氏距离的计算方法见公式3。

每个点都计算得到三个欧氏距离,选择最小的一个,说明离该中心点最近,则把该点归入这个簇。读入数据集的所有元素后,重新计算中心点。中心点的计算方法是取簇中所有元素各自维度的算术平均数。

将数据集中的所有元素都按照新的中心点进行聚类。重复该过程,直到聚类结果不再变化则输出结果。

对聚类结果进行判断:如果该类的成员数目和所有元素数目之比大于预设的参数值,则判定为正常数据的聚类,并且移入正常行为模式库;反之,则判定为异常数据的聚类,并且将其该新识别的异常移入异常行为模式库。

进行检测时,首先比对模式库,看是否能直接判断异常与否,不能,再进行下面的操作。检测的过程也是对攻击模式库进行填充、对检测器进行训练的过程。

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