一种基于多层检测的网络攻击类型识别方法技术

技术编号:20273581 阅读:38 留言:0更新日期:2019-02-02 04:02
本发明专利技术涉及一种基于多层检测的网络攻击类型识别方法,属于信息安全技术领域。具体操作步骤为:步骤一、获取原始训练数据,并做预处理。步骤二、构建集成分类模型。步骤三、训练集成分类模型。步骤四、对测试数据进行预处理。步骤五、对测试数据进行分类。本专利提出的一种基于多层检测的网络攻击类型识别方法与已有技术相比较,有如下有点:①采用smote算法对少数样本升采样,对多数样本降采样,解决数据集样本不平衡问题。②采用集成模型,提高了检测的精确率与召回率。③将果蝇优化算法FOA与支持向量机SVM结合,实现SVM中参数C和gamma的最优和自适应选择。

【技术实现步骤摘要】
一种基于多层检测的网络攻击类型识别方法
本专利技术涉及一种基于多层检测的网络攻击类型识别方法,属于信息安全

技术介绍
在网络空间中,近年来的网络攻击数量和规模上都急剧增加,基本的主要网络攻击类型包括拒绝服务(DenialofService,DoS)、未授权的远程主机访问(Remote-to-Login,R2L)、未经授权获取超级用户访问(User-to-Root,U2R)、监听探测(Probing)等,上述每一类攻击又包括多个子攻击类型。有效的检测这些网络攻击,部署高效的入侵检测系统已成为刻不容缓的当务之急。目前比较常用的网络攻击检测方法有:①基于规则的检测方法,缺点是难以检测新的入侵,而且编辑这些规则非常耗时,高度依赖已知的入侵知识库。②依赖于网络流特征分布的熵值检测方法,缺点是熵表示随机性,不会扰乱随机性的异常流不会被检测到。③基于机器学习的检测方法,如神经网络,支持向量机,聚类算法等。基于机器学习的检测方法可以检测新的入侵,普遍应用于当前的入侵检测中,但是数据的不平衡性和算法模型的参数对检测结果的影响很大。
技术实现思路
本专利技术的目的是解决网络攻击检测数据集不平衡,网络攻击分类算法精确率和召回率低的问题,提出一种基于多层检测的网络攻击类型识别方法。本专利技术是通过以下技术方案实现的。本专利技术提出的一种基于多层检测的网络攻击类型识别方法,其具体操作步骤如下:步骤一、获取原始训练数据,并做预处理。步骤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:通过数据降采样和数据升采样,解决原始训练数据集的各类型数据的数量不平衡问题。具体为:情况1:如果原始训练数据集中某种类型(用符号A表示)的数据数量远多于其它类型的数据数量,则采用数据降采样方法减少A类型的数量,具体为:从A类型的数据中随机抽取出一部分数据,以减少A类型数据。情况2:如果原始训练数据集中某种类型(用符号B表示)的数量远低于其它类型数据的数量,则采用数据升采样方法,增加B类型数据的数量。所述数据升采样的算法为SMOTE(SyntheticMinorityOversamplingTechnique,合成少数过采样技术)算法。经过one-hot编码、数据降采样、数据升采样处理之后的原始训练数据集称为基础训练数据集,用符号X表示;用符号xij表示基础训练数据集X的第i条数据的第j个特征,i∈[1,n],n为基础训练数据集X中的数据数量;步骤1.4:通过公式(1)对基础训练数据集X中的数据进行标准化处理。其中,xi′j为数据xij经过标准化处理之后得到的数据;AVGj为基础训练数据集X中所有数据的第j个特征的平均值,通过公式(2)计算得到;STDj为基础训练数据集X中所有数据的第j个特征的标准差,通过公式(3)计算得到。经过步骤一的操作,对基础训练数据集进行预处理后,得到训练数据集,用符号X′表示。步骤二、构建集成分类模型。所述集成分类模型包括GBDT(GradientBoostDecisionTree,梯度提升树)分类器、KNN分类器和stacking分类器。所述GBDT分类器是通过迭代构建分类回归树(ClassificationAndRegressionTree,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(DenialofService,拒绝服务)类型数据进行分类,预测出DoS类型数据的子类型。设置KNN分类器的参数K=3。所述stacking分类器用于对非DoS类型数据进行分类。stacking分类器分为初级分类模型和次级分类模型两层。所述初级模型分为上、下两层,初级模型的上层由3个xgboost(eXtremeGradientBoosting,极端梯度提升)分类模块组、1个SVM(supportvectormachines,支持向量机)分类模块组、1个GBDT(GradientBoostingDecisonTree,梯度提升树)分类模块组和1个RF(randomforest,随机森林)分类模块组并联而成。其中每个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分类器,其输入为初级模型生成的stacking特征向量。所述SVM分类器中采用果蝇优化算法FOA,对SVM核函数参数(用符号γ表示)和惩罚参数(用符号C表示)表示进行最优化选择,具体操作步骤为:步骤2.1:初始化SVM核函数参数γ和惩罚参数C,γ∈[0.001,5],C∈[0.001,5]。设置果蝇的起始位置为(Cbegin,γbegin),其中Cbegin=C,γbegin=γ。步骤2.2:设定种群大小(用符号popsize表示)、迭代次数(用符号epoch表示)、惩罚参数C的搜索距离(用符号va本文档来自技高网...

【技术保护点】
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中的数据进行标准化处理;...

【技术特征摘要】
2018.06.15 CN 20181062018921.一种基于多层检测的网络攻击类型识别方法,其特征在于:其具体操作步骤如下:步骤一、获取原始训练数据,并做预处理;步骤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:将st...

【专利技术属性】
技术研发人员:胡昌振吕坤孙冲
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1