[发明专利]一种基于多层检测的网络攻击类型识别方法有效
申请号: | 201811146113.7 | 申请日: | 2018-09-29 |
公开(公告)号: | CN109299741B | 公开(公告)日: | 2022-03-04 |
发明(设计)人: | 胡昌振;吕坤;孙冲 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06V10/764 | 分类号: | G06V10/764;G06V10/774;G06K9/62;H04L9/40 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 仇蕾安 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于多层检测的网络攻击类型识别方法,属于信息安全技术领域。具体操作步骤为:步骤一、获取原始训练数据,并做预处理。步骤二、构建集成分类模型。步骤三、训练集成分类模型。步骤四、对测试数据进行预处理。步骤五、对测试数据进行分类。本专利提出的一种基于多层检测的网络攻击类型识别方法与已有技术相比较,有如下有点:①采用smote算法对少数样本升采样,对多数样本降采样,解决数据集样本不平衡问题。②采用集成模型,提高了检测的精确率与召回率。③将果蝇优化算法FOA与支持向量机SVM结合,实现SVM中参数C和gamma的最优和自适应选择。 | ||
搜索关键词: | 一种 基于 多层 检测 网络 攻击 类型 识别 方法 | ||
【主权项】:
1.一种基于多层检测的网络攻击类型识别方法,其特征在于:其具体操作步骤如下:步骤一、获取原始训练数据,并做预处理;步骤1.1:获取网络攻击数据,组成原始训练数据集;所述网络攻击数据包括数值型特征和字符离散型特征;所述字符离散型特征包括:协议类型、服务类型和连接错误标识;步骤1.2:将原始训练数据集中的每条原始训练数据转换成一个数值型的原始训练数据特征向量;具体为:步骤1.2.1:从每条数据中抽取出字符离散型特征,分别以one‑hot向量形式进行编码,一个字符离散型特征对应得到一个one‑hot向量;步骤1.2.2:利用每条数据中的数值型特征的值,构建一个数值型的特征向量;步骤1.2.3:将步骤1.2.2中所述数值型的特征向量与步骤1.2.1得到的全部one‑hot向量进行合并;经过上述步骤的操作,对应一条原始训练数据,得到一个数值型的原始训练数据特征向量;步骤1.3:通过数据降采样和数据升采样,解决原始训练数据集的各类型数据的数量不平衡问题;经过one‑hot编码、数据降采样、数据升采样处理之后的原始训练数据集称为基础训练数据集,用符号X表示;用符号xij表示基础训练数据集X的第i条数据的第j个特征,i∈[1,n],n为基础训练数据集X中的数据数量;步骤1.4:通过公式(1)对基础训练数据集X中的数据进行标准化处理;
其中,x′ij为数据xij经过标准化处理之后得到的数据;AVGj为基础训练数据集X中所有数据的第j个特征的平均值,通过公式(2)计算得到;STDj为基础训练数据集X中所有数据的第j个特征的标准差,通过公式(3)计算得到;![]()
经过步骤一的操作,对基础训练数据集进行预处理后,得到训练数据集,用符号X′表示;步骤二、构建集成分类模型;所述集成分类模型包括GBDT分类器、KNN分类器和stacking分类器;所述GBDT分类器是通过迭代构建分类回归树CART进行增强Boosting的思想来学习的;用符号ft‑1(x)表示第(t‑1)轮迭代得到的GBDT分类器,t为正整数;用符号ft(x)表示第t轮迭代得到的GBDT分类器;用符号L(y,ft‑1(x))表示第(t‑1)轮迭代得到的GBDT分类器的损失函数;用符号L(y,ft(x))表示第t轮迭代得到的GBDT分类器的损失函数;用符号ht(x)表示在第t轮学习得到的拟合函数;在GBDT分类器的学习过程中,第(t‑1)轮迭代就是寻找使得公式(4)中L(y,ft(x))取值最小的ht(x);寻找最小的ht(x)的过程采用的是损失函数负梯度拟合的方法;L(y,ft(x))=L(y,ft‑1(x)+ht(x)) (4)所述KNN分类器用于对DoS类型数据进行分类,预测出DoS类型数据的子类型;设置KNN分类器的参数K=3;所述stacking分类器用于对非DoS类型数据进行分类;stacking分类器分为初级分类模型和次级分类模型两层;所述初级模型分为上、下两层,初级模型的上层由3个xgboost分类模块组、1个SVM分类模块组、1个GBDT分类模块组和1个RF分类模块组并联而成;其中每个xgboost分类模块组由m个xgboost分类模块并联而成,每个SVM分类模块组由m个SVM分类模块并联而成,每个GBDT分类模块组由m个GBDT分类模块并联而成,每个RF分类模块组由m个RF分类模块并联而成;m为人为设定值,m∈[3,8];初级模块的下层为拼接与投票模块;所述初级模型上层的3个xgboost分类模块组、1个SVM分类模块组、1个GBDT分类模块组和1个RF分类模块组的输出端分别与初级模型下层的拼接与投票模块的输入端连接;在训练阶段,所述拼接与投票模块的作用是:将初级模型上层的每个xgboost分类模块组、SVM分类模块组、GBDT分类模块组和RF分类模块组的输出结果进行合并,得到一个向量矩阵,称为stacking向量矩阵;在测试阶段,所述拼接与投票模块的作用是:对应一条测试数据,将初级模型上层的每个xgboost分类模块组、SVM分类模块组、GBDT分类模块组和RF分类模块组的输出结果分别进行投票,每个分类模块组得到一个分类结果,然后对分类结果进行合并,得到一个1×6的stacking特征向量;所述次级模型为SVM分类器,采用FOA算法优化,其输入为初级模型生成的stacking特征向量;所述集成分类模型的连接关系为:外部数据通过GBDT分类器的输入端进入所述集成分类模型;GBDT分类器的输出端分别与KNN分类器和stacking分类器的输入端连接;KNN分类器和stacking分类器的输出作为集成分类模型的外部输出;步骤三、训练集成分类模型;在步骤一和步骤二操作的基础上,训练集成分类模型;具体为:步骤3.1:训练GBDT分类器;具体为:步骤3.1.1:对训练数据集X′中的数据做类别标记;将训练数据集X′中的数据标记为DoS类型和其它类型2种;步骤3.1.2:使用标记好的训练数据集X′训练GBDT分类器;经过步骤3.1的操作,得到训练好的GBDT分类器;步骤3.2:训练KNN分类器;具体为:步骤3.2.1:对训练数据集X′中标记为DoS类型的数据构建DoS类型数据集,用符号X′1表示;步骤3.2.2:对DoS类型数据集X′1中的数据进行细分类标记;所述DoS类型数据集,用符号X′1中的数据细分为:smurf攻击、neptune攻击、back攻击、teardrop攻击、pod攻击和Other攻击;步骤3.2.3:对DoS类型数据集X′1按照细分类型进行数据降采样处理,解决DoS类型数据集X′1中各细分类型数据的数量不平衡问题;经过数据降采样处理后的数据集,称为KNN训练数据集,用符号X1表示;步骤3.2.4:使用KNN训练数据集X1训练KNN分类器;经过步骤3.2的操作,得到训练好的KNN分类器;步骤3.3:训练stacking分类器;具体为:步骤3.3.1:使用训练数据集X′中标记为其它类型的数据构建stacking训练数据集,用符号X2表示,然后对stacking训练数据集中的数据进行细分类标记,所述stacking训练数据集X2中细分为:Normal、Probe、U2L、R2L;步骤3.3.2:将stacking训练数据集X2的数据均匀分为m个子集,分别称为第1子集、第2子集、……、第m子集;每个子集的数据数量用符号M表示,M为正整数;步骤3.3.3:训练RF分类模块组;具体为:步骤3.3.3.1:用符号h表示临时变量,h∈[1,m];设置h的初始值为1;步骤3.3.3.2:将stacking训练数据集X2的第h子集作为验证数据;然后,使用stacking训练数据集X2的其它数据作为训练数据,对RF分类模块组里的一个没有训练过的RF分类模块进行训练;步骤3.3.3.3:将第h子集的数据输入到步骤3.3.3.2训练好的RF分类模块中进行分类,得到一个M×1的向量矩阵;步骤3.3.3.4:如果h<m,使h的值自增1,重复步骤3.3.3.2至步骤3.3.3.4;否则,执行步骤3.3.3.5的操作;步骤3.3.3.5:将步骤3.3.3.2得到的第1子集到第m子集的分类结果进行合并,得到一个stacking训练数据集的数据在RF分类模块组的分类结果,并发送到拼接与投票模块;经过步骤3.3.3.1至步骤3.3.3.5的操作,完成对RF分类模块组的训练,并得到一个stacking训练数据集X2的数据在RF分类模块组的分类结果;步骤3.3.4:训练SVM分类模块组;具体为:步骤3.3.4.1:用符号h表示临时变量,h∈[1,m];设置h的初始值为1;步骤3.3.4.2:将stacking训练数据集X2的第h子集作为验证数据;然后,使用stacking训练数据集X2的其它数据作为训练数据,对SVM分类模块组里的一个没有训练过的SVM分类模块进行训练;步骤3.3.4.3:将第h子集的数据输入到步骤3.3.4.2训练好的SVM分类模块中进行分类,得到一个M×1的向量矩阵;步骤3.3.4.4:如果h<m,使h的值自增1,重复步骤3.3.4.2至步骤3.3.4.4;否则,执行步骤3.3.4.5的操作;步骤3.3.4.5:将步骤3.3.4.2得到的第1子集到第m子集的分类结果进行合并,得到stacking训练数据集X2的数据在SVM分类模块组的分类结果,并发送到拼接与投票模块;经过步骤3.3.4.1至步骤3.3.4.5的操作,完成对SVM分类模块组的训练,并得到一个stacking训练数据集的数据在SVM分类模块组的分类结果;步骤3.3.5:训练GBDT分类模块组;具体为:步骤3.3.5.1:用符号h表示临时变量,h∈[1,m];设置h的初始值为1;步骤3.3.5.2:将stacking训练数据集X2的第h子集作为验证数据;然后,使用stacking训练数据集X2的其它数据作为训练数据,对GBDT分类模块组里的一个没有训练过的GBDT分类模块进行训练;步骤3.3.5.3:将第h子集的数据输入到步骤3.3.5.2训练好的GBDT分类模块中进行分类,得到一个M×1的向量矩阵;步骤3.3.5.4:如果h<m,使h的值自增1,重复步骤3.3.5.2至步骤3.3.5.4;否则,执行步骤3.3.5.5的操作;步骤3.3.5.5:将步骤3.3.5.2得到的第1子集到第m子集的分类结果进行合并,得到stacking训练数据集X2的数据在GBDT分类模块组的分类结果,并发送到拼接与投票模块;经过步骤3.3.5.1至步骤3.3.5.5的操作,完成对GBDT分类模块组的训练,并得到stacking训练数据集的数据在GBDT分类模块组的分类结果;步骤3.3.6:训练一个XGBOOST分类模块组;具体为:步骤3.3.6.1:用符号h表示临时变量,h∈[1,m];设置h的初始值为1;步骤3.3.6.2:将stacking训练数据集X2的第h子集作为验证数据;然后,使用stacking训练数据集X2的其它数据作为训练数据,对XGBOOST分类模块组里的一个没有训练过的XGBOOST分类模块进行训练;步骤3.3.6.3:将第h子集的数据输入到步骤3.3.6.2训练好的XGBOOST分类模块中进行分类,得到一个M×1的向量矩阵;步骤3.3.6.4:如果h<m,使h的值自增1,重复步骤3.3.6.2至步骤3.3.6.4;否则,执行步骤3.3.6.5的操作;步骤3.3.6.5:将步骤3.3.6.2得到的第1子集到第m子集的分类结果进行合并,得到stacking训练数据集的数据在XGBOOST分类模块组的分类结果,并发送到拼接与投票模块;经过步骤3.3.6.1至步骤3.3.6.5的操作,完成对XGBOOST分类模块组的训练,并得到stacking训练数据集X2的数据在XGBOOST分类模块组的分类结果;步骤3.3.7:将步骤3.3.6重复执行2次,完成对另外2个XGBOOST分类模块组的训练,并得到stacking训练数据集X2的数据在另外2个XGBOOST分类模块组的分类结果,并发送到拼接与投票模块;步骤3.3.8:拼接与投票模块将步骤3.3.3至步骤3.3.7得到的stacking训练数据集X2在各分类模块组的分类结果进行合并,得到一个P×6的向量矩阵,即stacking向量矩阵;其中,P表示stacking训练数据集X2的数据数量;步骤3.3.9:将步骤3.3.8得到的stacking向量矩阵输入到stacking分类器的次级模型SVM分类器中,经过训练操作,得到训练好的stacking分类器;经过上述步骤的操作,完成stacking分类器的训练,得到训练好的集成分类模型;步骤四、对测试数据进行预处理;具体为:步骤4.1:获取网络攻击数据,组成原始测试数据集;所述网络攻击数据包括数值型特征和字符离散型特征;所述字符离散型特征为:协议类型、服务类型和连接错误标识;步骤4.2:将原始测试数据集中的每条原始测试数据转换成一个数值型的原始测试数据特征向量;具体为:步骤4.2.1:从每条数据中抽取出字符离散型特征,分别以one‑hot向量形式进行编码,一个字符离散型特征对应得到一个one‑hot向量;步骤4.2.2:利用每条数据中的数值型特征的值,构建一个数值型的特征向量;步骤4.2.3:将步骤4.2.2中所述数值型的特征向量与步骤4.2.1中所述得到one‑hot向量进行合并;经过上述步骤的操作,对应一条原始测试数据,得到一个数值型的原始测试数据特征向量;将经过one‑hot编码的原始测试数据集称为基础测试数据集,用符号Xtest表示;用符号xtest,ij表示基础测试数据集Xtest的第i条数据的第j个特征;步骤4.3:通过公式(5)对基础测试数据集Xtest中的数据进行标准化处理;
其中,x′test,ij为数据xtest,ij经过标准化处理之后得到的数据;AVGj为步骤1.4得到的基础训练数据集X中所有数据的第j个特征的平均值;STDj为步骤1.4得到的基础训练数据集X中所有数据的第j个特征的标准差;经过步骤4的操作,对基础测试数据集进行预处理后,得到测试数据集,用符号X′test表示;步骤五、对测试数据进行分类;将经过步骤四预处理得到的测试数据,输入到步骤三训练好的集成分类模型中进行分类;具体步骤为:步骤5.1:将一条将经过步骤四预处理得到的测试数据,输入到GBDT分类器,如果分类结果为DoS类型,则执行步骤5.2的操作;如果分类结果为非DoS类型,则执行步骤5.3的操作;步骤5.2:将所述测试数据输入到KNN分类器进行分类,得到最终分类结果并输出,结束操作;步骤5.3:将所述测试数据分别输入到RF分类模块组里的每个RF分类模块中,经过分类操作,分类结果输出到拼接与投票模块;拼接与投票模块将RF分类模块组的输出结果进行投票,确定分类结果;步骤5.4:将所述测试数据分别输入到GBDT分类模块组里的每个GBDT分类模块中,经过分类操作,分类结果输出到拼接与投票模块;拼接与投票模块将GBDT分类模块组的输出结果进行投票,确定分类结果;步骤5.5:将所述测试数据分别输入到SVM分类模块组里的每个SVM分类模块中,经过分类操作,分类结果输出到拼接与投票模块;拼接与投票模块将SVM分类模块组的输出结果进行投票,确定分类结果;步骤5.6:将所述测试数据分别输入到一个xgboost分类模块组里的每个xgboost分类模块中,经过分类操作,分类结果输出到拼接与投票模块;拼接与投票模块将xgboost分类模块组的输出结果进行投票,确定分类结果;步骤5.7:重复2次步骤5.6的操作,得到另外2个xgboost分类模块组的分类结果;步骤5.8:将步骤5.3至5.7的结果进行合并,得到一个1×6的stacking向量;步骤5.9:将步骤5.8得到的1×6的stacking向量输入到stacking分类器的次级模型SVM分类器中,经过分类操作,得到一条测试数据的分类结果并输出,结束操作。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201811146113.7/,转载请声明来源钻瓜专利网。