邵志鹏,李伟伟,周 诚
(国网智能电网研究院有限公司,南京 210003)
随着电力网络建设工作不断深化,攻击手段复杂多样和静态安全防护措施部署与策略配置之间形成尖锐的矛盾。 网络威胁来自多方面,并且会随着时间的变化而变化,其中网络攻击检测技术是网络安全技术中非常重要的一部分[1-3]。
前人对网络攻击检测技术进行了深入的研究,构建了多种检测工具[4-6]。 然而,在一些敏感和特殊的网络中,网络数据通常被加密或保护,传统的网络攻击检测方法并不理想。 基于网络流量统计特征的网络攻击检测方法不需要分析数据内容和连接特征,可以更好地实现敏感和特殊网络中的攻击检测[7-8]。
近年来,研究人员对人工智能技术进行了深入研究,并在各领域取得了很好的效果[9-11]。 一些研究者也将其应用到网络攻击检测领域,实现了对网络攻击指令的高效检测。 然而,目前对于已知的网络攻击指令的检测技术较多,而对于未知攻击指令的检测技术较少,检测工具也缺乏。 这些问题影响了网络攻击检测的准确性和可靠性。
为了解决上述问题,提出了一种基于机器学习的电力网络安全检测技术。 采用监督学习与非监督学习相结合的方法,实现对网络攻击指令的全面安全检测,采用随机森林算法对网络特征进行选择和优化,提高网络攻击指令检测的准确性和效率。
通常攻击者、恶意软件、计算机病毒会通过外部网络指令实施攻击,而内部网络也存在潜在的攻击指令或者错误操作。 为了实现网络攻击指令检测,本文设计了基于指令流量统计分析的网络攻击检测防护系统,系统框架如图1 所示。
图1 系统框架图Fig.1 System frame diagram
首先,本系统收集并整理已披露的网络指令流量数据,融入网络威胁数据库、网络漏洞数据库(如NVD、CNVD)中的相关特征数据,并补充通过网络数据采集与分析模块采集到的数据包,构建网络指令流量样本集。 运行于高性能计算平台中的检测模型构建模块,提取样本数据中的相关数据,分别通过SVC 算法、超球体SVM 算法和无监督聚类算法学习构建异常流量检测模型、已知攻击检测模型和未知攻击检测模型。 攻击检测模块和数据采集与分析模块综合运行于指令检测系统、网络边界、云平台、应用服务器、终端等网络设备中,提取高性能计算平台中检测模型构建模块的构建的预测模型,实现网络攻击检测。
为了实现基于对网络攻击指令的有效检测,本文设计并实现了一个基于流量统计分析的网络攻击指令检测方法。 该方法主要采用基于SharpPcap的数据采集技术、基于SVC 的异常流量检测技术、基于超球体SVM 的已知攻击检测技术、基于无监督聚类的未知攻击检测技术和基于随机森林的特征选择与优化技术5 种技术的综合运用。 下文对算法流程进行详细分析。
基于SharpPcap 构建数据采集与分析技术将网卡设置成为混杂模式,在此工作模式下,网卡不对目的地址进行判断,对收到的每个数据帧产生硬件的中断提醒操作系统进行处理。 随后通过软件编程实现相应的捕获以及分析,掌握数据报文每字段的含义。 基于SharpPcap 的数据采集工作在网络环境的最底层,拦截网络上传送的所有数据,并且通过相应的动态链接库进行处理, 实时的分析数据内容,统计所处网络的状态以及网络数据流量。 采集流程如图2 所示。
图2 基于SharpPcap 指令采集流程Fig.2 Instruction acquisition process based on SharpPcap
捕获数据包之前需要设置过滤条件,并由过滤设置模块将其传递到捕获模块。 基于SharpPcap 流量采集技术读取过滤的字符串,根据过滤的字符串判断过滤的条件所属的类型。
数据包分析使用的是SharpPcap 中数据包的处理方法。首先对数据包中的数据进行简略信息的解析,再将数据包按网络协议层次进行解析。对于链路层数据从比特流转换成数据帧后解析。 解析出链路层数据包后,根据上层使用的协议调用相关方法构建上层协议类型的数据包,以此类推一直完成数据包的指令解析。 最后将解析后的指令数据交于缓冲区,保存数据。
运用获取的指令数据集,划分数据集为训练集与测试集。 然后用这些数据集构造二分类支持向量机模型,实现正常指令与异常指令的分类,从而实现检测异常指令功能。 具体如下文所述。
首先, 将数据库中的指令数据样本集按照3∶1的比例划分为训练集与测试集,将测试集中的正常数据样本标识为+1,异常的数据样本标识为-1。 用标识完成的训练集开始模型的构建过程,再建立一个未知的超平面,设出未知的支持向量,列出支持向量到超平面的距离公式作为决策函数,根据限制条件求最大的值,选择核函数。 设置参数gamma 值和C 参数为定值,然后进行对比分类试验,通过准确率与召回率的比较,选择最优的核函数。 运用已选择好的最优核函数, 改变gamma 值和C 参数的值,形成多组对比实验,从而选择出最优的gamma值和C 参数。
为了评估所建测试模型的泛化性能,运用交叉验证的方式进行测试,即多次的划分数据,并训练多个模型,然后取平均值,计算出模型的平均精度,最终完成异常指令检测模型的构建。
针对常见的攻击指令集,分别构建一个超球体模型, 落在超球体以内的测试对象为该攻击类型,而落在超球体以外的不是该攻击的类型,实现了该常见的攻击指令类型与其它攻击类型的区分,从而实现对已知攻击指令的检测识别功能。 技术实现如下所述。
使用经过异常指令模型检测后的异常指令数据集,针对每一个已知的攻击指令集,先依据随机森林进行特征的选择,选择出最优的区分该攻击的特征。 进而构建未知超球体,既要尽量把该攻击所有数据都包入球体内部,又要保证球半径尽可能的小。 因此,根据中折关系求解超球体决策函数,并不断调整参数选出最优, 然后进行阈值计算与分析,确定球心位置与半径大小,最终完成超球体检测模型构建。 对所有的已知攻击分别按照上述过程构建一个超球体的已知攻击检测模型,实现对所有已知攻击的检测与识别。
对于已知攻击以外的其他未知攻击指令,通过构建无监督聚类模型实现对其的检测与识别。 在已构建的所有已知攻击指令检测模型的基础上,将落入超球体模型以外的数据集划分为训练集与测试集,用训练集开始未知攻击指令模型的建立。 先随机选取k 个数据点分别作为中心点建立k 个簇,随着训练集数据点的不断进入,分别计算其到各个簇中心点的距离,根据所计算的距离结果,将其划入到最近的簇中,同时取扩充后该簇内所有数据点的平均值作为新的簇中心点, 不断地循环上述过程,直至所有的训练集用完,可形成k 个聚类。 并计算各个聚类属性上任意两个离散数据值a 与b 之间的距离,从而确定每一个聚类的具体范围,每一个聚类的攻击指令集即为一个特定的未知攻击类型,从而实现未知攻击指令的分类。
在上述机器学习预测模型的构建过程中发现,由于网络流量数据集属于多特征、大容量的样本数据集,即使使用高性能计算平台,其模型构建过程花费时间过长, 且预测模型会出现过拟合的情况。因此,为了高效、准确地建立预测模型,必须对网络流量特征进行选择与优化。 通过大量研究特征选择与优化,本文使用随机森林算法对样本特征集进行排序,并通过交叉验证的方法进行不同特征子集模型间的评估比较, 实现网络流量特征的选择与优化,从而提高预测模型的构建效率和泛化能力。
将获得的流量数据集,不断地独立重复地取相同数量的测试样本,分别建立多个决策树,把每一棵决策树特征分割决策得到的基尼指数进行线性累加或者加权线性累加,可以获得特征的重要性排序,从而达到对特征的选择与优化目的。
本实验在一台自行搭建的计算机上进行,采用Intel I7-7820X 处理器,RTX2080 显卡,11 G 显存,16 G 双通道内存。 原始数据集选用IDS2017[12]及依据电力系统常用通信协议IEC60870-5-104 产生的模拟数据进行分析。
3.1.1 SVC 模型的特征选择与优化
样本子集的选取与SVC 模型调参与选择相一致。 对5 组样本子集做基于随机森林的特征选择处理和无特征处理,得到特征子集后建立SVC 二分类分类器,以准确率为主进行评估。 整合所有样本子集上的测试数据取均值与无特征选择处理后建立的分类器相比较,并基于随机森林算法计算出的特征重要性评分,决定最终特征子集的大小,测试结果见表1。结果表明,该模型特征选择与优化能力强,在当特征子集的数量为7 或8 时,SVC 二分类分类器的泛化性能最佳。
表1 SVC 模型泛化能力与特征数关系Tab.1 Relationship between generalization ability and feature number of SVC model
3.1.2 超球体SVM 模型特征选择与优化
样本子集的选取与SVM 模型调参与选择相一致, 分别构建14 个已知攻击基于部分特征的决策树,并通过引入随机数,利用随机森林算法得出这些攻击各自的特征重要性得分排序,代入不同特征子集的数量,建立对应的分类器模型,并对测试集数据进行预测,得出最终得分。 测试结果如表2 所示,分别以[10,9,8,7,6,5,4]作为特征子集的数量进行代入,当特征子集的数量为4 时,分类器泛化性能最佳。 按我们的特征选择方法能够有效的提高SVM 分类器的分类效率。
表2 测试集评估度量Tab.2 Test set evaluation metrics
本次测试选择对事先采集好的统计数据进行测试,测试用的数据集为原始数据集中除去之前用于训练和测试之外的异常流量和正常流量样本集。
3.2.1 异常流量检测测试
样本数据导入后,在数据信息部分会显示样本数据集的基本信息,包括数据集名称,样本数量以及特征数量。 对测试样本集进行同样操作,得到正常流量数量和异常流量数量。 将10 个检测结果与测试集中的标识进行比较,得到模型精度如表3 所示,模型平均精度超过99.9%,满足设计要求。
表3 异常流量检测精度Tab.3 Abnormal flow detection accuracy
3.2.2 已知网络攻击检测测试
运行已知网络攻击检测,导入异常流量检测模块检测到的异常流量,并运用预测模型进行已知网络攻击检测并标识,对测试样本集进行同样操作,得到已知攻击的各类和数量。 将10 个检测结果与测试集中的标识进行比较,得到模型精度如表4所示。 测试结果显示,模型平均精度超过99.9%,满足设计要求。
表4 已知网络攻击检测精度Tab.4 Known network attack detection accuracy
3.2.3 异常流量检测测试
在已知网络攻击预测模型组中删除一组已知网络攻击预测模型,随后重复前面两个模块的检测过程,得到新的包含该攻击样本数据异常流量的测试数据集。 运行未知网络攻击检测子模块,此时系统将自动导入包含该攻击样本数据异常流量的测试数据集,并运用预测模型进行未知网络攻击进行检测与聚类,检测结果如表5 所示。 测试结果显示,对于一种给位置攻击的检测精度超过90%,聚类精度超过80%,具有较好效果。
表5 未知网络攻击检测精度Tab.5 Unknown network attack detection accuracy
本文将SVC、超球体SVM、k 均值聚类、手肘法定k 值、回归决策树、随机森林等算法有机结合,引入到电力网络指令检测模型构建过程中,构建全面合理的预测模型实现异常网络指令、已知网络攻击指令和未知网络攻击指令的检测。 以流量统计分析为基础, 构建了更为合理的网络攻击指令检测技术,通过监督学习算法和无监督学习算法有机结合完成已知和未知攻击检测,并基于随机森林算法进行流量特征选择与优化,提高模型构建速度、运行效率和泛化能力所适合的流量特征,使网络数据集得到扩充,模型得到更新,攻击检测更为准确。