李旭阳,牛 鑫,胡军星,袁俊锋,孟 晗
(1. 国网河南省电力公司 经济技术研究院,河南 郑州 450000;2.大河南九域腾龙信息工程有限公司,河南 郑州 450000)
随着信息通信及互联网技术的发展,智能电网逐步发展起来,并给电力系统带来了巨大变革。智能电网是一种新型的电力系统,它能够监测分析客户、电网设备及网络节点上电力流与信息流,控制电力流与信息流双向流动,实现电网自主优化运行。
智能电网是建立在集成的、高速双向通信网络的基础上,通过先进的传感和测量技术、先进的设备技术、先进的控制方法以及先进的决策支持系统技术,实现电网的可靠、安全、经济、高效、环境友好和使用安全的目标,其主要特征包括自愈、激励和包括用户、抵御攻击、提供满足21世纪用户需求的电能质量、容许各种不同发电形式的接入、启动电力市场以及资产的优化高效运行[1-2]。
智能电网给人们生活带来巨大的便利的同时,也面临着一些安全威胁,特别是恶意软件威胁。在智能电网中,主机系统安全关系着信息系统的正确性,攻击者通过向主机植入恶意软件,以达到破坏电力监控系统或篡改、伪造信息流的目的,进而影响电力系统的稳定性。常见的基于恶意软件的攻击类型包括C&C、APT等。
为了能有效抵御恶意软件威胁,常通过部署恶意软件检测系统对智能电网主机操作系统进行扫描和检测。早期恶意软件检测方法常通过提取恶意软件可执行程序的Hash码对其进行唯一标志,并提取可采集的所有已知恶意软件的Hash码构建恶意软件Hash码库,通过匹配待检测样本与库中的Hash码以判别待检测样本是否是恶意软件。然而,随着恶意软件未知变种的泛滥(恶意软件变种的Hash码已发生改变),传统恶意软件检测方法已不再适用于检测未知变种。近几年学术界一些学者提出基于机器学习的检测方法以应对恶意软件未知变种威胁,然而受限于单一训练数据集和单一机器学习方法的局限性,基于机器学习的检测方法的鲁棒性存在一定不足。
针对上述问题,提出一种基于集成学习的恶意软件未知变种检测方法,采用集成学习方法,融合由多个数据集和多种机器学习方法训练得到的模型,以提升恶意软件未知变种检测的准确性和鲁棒性。研究的贡献包括:1)提出一种基于集成学习的恶意软件检测方法,集成多源数据和多种机器学习方法实现恶意软件未知变种检测;2)提出一种基于Logistic的集成学习方法,集成由支持向量机和卷积神经网络训练得到的单一检测模型;3)实验结果表明,提出的基于集成学习的恶意软件未知变种检测方法的精度约为93%,召回率约为97%。
随着机器学习等人工智能技术的发展,为检测恶意软件未知变种提供新的技术方法支撑。近年来,一些学者纷纷提出基于机器学习的恶意软件未知变种检测方法,通过提取恶意软件变种共性语义特征,并采用机器学习算法,如支持向量机[3]、卷积神经网络[4]、深度信念网络[5]等,训练恶意软件变种检测模型以判别未知样本是否为恶意软件。
McLaughlin等人[6]对恶意软件操作码n-gram模型进行分布式表征,并采用卷积神经网络自适应修正分布式表征的连接权值,以训练恶意软件检测模型。Zhang等人[7]通过n-gram模型和统计表征表示恶意软件操作码序列和API调用,分别采用卷积神经网络和多层感知器提取恶意软件操作码特征和API调用特征,通过合并操作码特征和API调用特征并采用分类器训练恶意软件检测模型。Zhang等人[8]通过计算操作码bi-gram边缘概率矩阵,并以此构建操作码图像,最后采用K近邻方法通过比较操作码图像的相似性来检测恶意软件。Yan等人[9]提取若干段等长的恶意软件操作码序列以构建等宽二维操作码图像,并以此为特征,通过采用卷积神经网络训练恶意软件检测模型。Cesare等人[10]基于操作码控制流图表示恶意软件,并采用EditString算法比较待检测的未知样本与已知恶意样本间的相似性来判别未知样本是否为恶意样本。Joshua等人[11]采用基于bi-gram模型提取恶意软件字节码特征,并采用深度神经网络算法训练恶意软件检测模型。陈志锋等人[12]采用动态分析技术,提出了一种基于数据特征的内核恶意软件检测方法。该方法首先通过分析内核数据生命周期内的访问行为以构建内核数据对象访问模型,并利用扩展页表监控内核对象访问操作,提取恶意软件内核数据特征,最后基于该特征进行检测。Huang等人[13]通过分析用户接口与程序顶层函数之间的交互,基于相似度方法检测隐藏的恶意行为。Bai等人[14]通过分析恶意软件运行时执行路径中触发的恶意行为,提取行为特征并采用机器学习分类算法训练恶意软件检测模型。
尽管基于机器学习的恶意软件未知变种检测方法已取得一定进展,但仍存在一些问题,主要体现在:1)训练样本有限,导致模型覆盖的特征分布不全面;2)模型拟合性能有限,利用有限的数据样本进行训练,容易产生过拟合问题。因此,提出一种基于集成学习的恶意软件未知变种检测方法,采用集成学习方法进一步提升恶意软件未知变种检测的准确性和鲁棒性。
集成学习方法主要分为bagging和boosting两类,bagging方法通过对若干子模型的结果进行加权平均以综合多模型的决策结果;boosting方法通过利用上一模型的错误分类样本重新训练子模型并对所有子模型的结果进行加权平均以综合多模型的决策结果,如Adaboost[15]、随机森林[16]等。
基于机器学习的恶意软件未知变种检测方法利用有限的已标记的恶意/良性样本训练检测模型,以检测恶意软件未知变种。然而,一方面受限于有限的训练样本及其特征分布,另一方面受限于单一模型拟合性能的局限性,恶意软件未知变种检测模型的准确性有待进一步提升,特别在开放环境下现有恶意软件未知变种检测模型的鲁棒性存在明显不足,在检测多来源样本数据时,检测结果存在较严重的偏斜,制约模型实际应用效果。
笔者提出一种基于集成学习的恶意软件未知变种检测方法,采用bi-gram模型提取恶意/良性软件特征,并采用2种机器学习方法分别利用3个来源不同的样本数据集进行训练,构建6个恶意软件未知变种单一检测模型,并基于bagging策略,设计一种Logistic集成学习方法通过集成6个单一模型最终形成统一的检测模型,进一步提升恶意软件未知变种检测的准确性和鲁棒性,并利用该集成模型对未知恶意软件变种进行检测,如图1所示。
图1 总体方案Fig. 1 The architecture of approach
笔者采用IDA Pro提取恶意/良性软件的操作码序列,并采用bi-gram模型通过计算相邻两两操作之间的局部语义关系。令操作码序列OP={op1,op2,…,opn},其中opi表示序列中第个i操作码,采用bi-gram模型提取操作码序列中相邻两操作码之间的概率以表示恶意/良性代码局部语义bi-gram={
基于上述提取的恶意/良性操作码序列局部语义特征p(bi-gram),分别采用支持向量机(SVM, support vector machine)和卷积神经网络(CNN, convolution neural network)2种机器学习算法,利用来源于VxHeaven、Microsoft和企业云安全中心的样本数据集,交叉训练6种恶意软件检测模型:SVMvxheaven、SVMMicrosoft、SVMsecurity_center、CNNvxheaven、CNNMicrosoft、CNNsecurity_center。其中支持向量机算法核函数采用线性核,训练一组权重W={w1,w2,…,wn},使得W={w1,w2,…,wn}满足公式(1),p(bi-gram)malw表示恶意软件特征,p(bi-gram)benign表示良性代码特征。卷积神经网络采用损失函数为最小平方误差,如公式(2)所示,通过训练一组权重W={w1,w2,…,wn},使得损失函数最小。
W·p(bi-gram)malw+b≥1或W·p(bi-gram)benign+b≤-1,
(1)
Loss=(h(W·p(hi-gram))-y)2。
(2)
基于上述6种恶意软件检测模型,基于bagging策略,设计一种Logistic集成学习方法集成6个模型。令6个模型的判别结果(输出的置信度向量)为X={x1,x2,…,x6},并为每个模型分别分配一个随机初始化的决策权重W′={w1′,w2′,…,w6′},根据样本标签y,基于Logistic函数进行有监督训练,如公式(3)所示,自适应优化每个模型的决策权重。每个模型输出的置信度作为Logistic函数的输入,Logistic函数的权重采用随机初始化,利用样本标签进行有监督训练,经过若干次迭代后决策权重收敛,此时Logistic函数中的权重即为每个模型的决策权重。当决策权重收敛时,6个模型通过该logistic函数集成为统一的判别模型。其中损失函数采用交叉熵,如公式(4)所示,采用梯度下降法进行训练,权重W′根据公式(5)进行迭代更新。
(3)
Loss=-(y·h(W′·X)+(1-y)·(1-h(W′·X))),
(4)
(5)
基于上述统一的判别模型对未知样本进行检测,通过提取未知样本的操作码bi-gram特征输入至模型中,模型对未知样本的bi-gram特征进行计算得到恶意/良性分类的置信度,如果恶意类别的置信度大于良性类别的置信度,则说明未知样本属于恶意样本,否则则属于良性样本。
所有实验均在相同计算机软硬件环境和配置中进行,其中CPU为Intel i5-3470 @ 3.20 GHz,内存容量为16.0 GB,操作系统为Ubuntu 16.04,编译器采用Eclipse 3.5/JRE 1.8。
实验所采用的恶意软件数据集来源于VxHeaven、Microsoft和企业云安全中心,其中VxHeaven包括17 000余个恶意样本,Microsoft包括5 000余个恶意样本,企业云安全中心收集4 000余个恶意样本,包含6类样本家族,其数量分布如表1所示。训练阶段和测试阶段均采用了恶意样本和良性样本,其中3个恶意样本数据集中的50%样本用于分别训练单一检测模型,合并3个恶意样本数据集中剩下50%样本形成新的数据集用于模型测试。良性样本从若干用户计算机采集,约11 000余个,其中随机选取50%的良性样本用于训练单一检测模型,剩余50%的良性样本用于模型测试。
表1 恶意软件数据集Table 1
所有实验均采取K-折交验证法,其中K=10。评估指标包括精度PRE、召回率REC和F1值。精度表示模型判别结果中正确结果的比例,如公式(6)所示,召回率表示恶意样本中被检测出来的比例,如公式(7)所示,F1值表示精度和召回率重要程度相同时的准确性,如公式(8)所示。其中,TP(true positive)表示验证集中被模型正确识别的高风险网络节点数量,FP(false positive)表示验证集中被模型错误识别的高风险网络节点数量,TN(true negative)表示验证集中被模型正确识别的低风险网络节点数量,FN(false negative)表示验证集中被模型错误识别的低风险网络节点数量。根据TP、FP、TN、FN,计算准确度精度(PRE)、召回率(REC)和F1值。
(6)
(7)
(8)
通过测试集样本对比分析多个单一检测模型以及集成模型的精度、召回率和F1值,从而验证集成模型相较于单一模型在准确性方面有显著优势,实验结果如图2所示,结果表明:
图2 准确性对比实验结果Fig. 2 The accuracy comparison results
1)对比分析采用相同机器学习算法、不同训练集的单一检测模型,单一检测模型的准确性受有限训练样本的影响较大,因此在准确性方面,利用不同数据集训练的模型准确性存在一定差异。
2)对比分析采用相同训练集、不同机器学习算法的单一检测模型,卷积神经网络的拟合性能相较于支持向量机的拟合性能更好。
3)对比分析集成模型和单一检测模型,集成模型的精度有一定提升,召回率呈现显著提升,说明集成模型的鲁棒性明显优于单一检测模型。
对比分析集成模型和单一检测模型的检测时间开销,如图3所示,结果表明:集成模型的检测时间略高于单一卷积神经网络模型,虽然单一支持向量机模型的检测时间开销相较单一卷积神经网络模型和集成模型,但在精度和召回率等指标方面存在明显不足。
图3 检测时间对比实验结果Fig. 3 The time cost comparison results
提出一种基于集成学习的恶意软件未知变种检测方法。该方法实现多种恶意软件未知变种检测模型的集成,以进一步提升恶意软件未知变种的检测性能。基于集成学习的恶意软件未知变种检测方法可以综合多个检测模型的性能,覆盖更多的样本数据特征,以改善单一检测模型样本特征和收敛性能的局限性。最后对提出的模型集成方法进行了实验分析,结果表明方法相比于单一检测模型,集成模型可以达到更高的精度、召回率和F1值。