一种改进的加权贝叶斯恶意软件识别方法

2019-04-11 02:05黄迎春张雨薇
沈阳理工大学学报 2019年1期
关键词:贝叶斯权值萤火虫

黄迎春,张雨薇

(1.沈阳理工大学 信息科学与工程学院,沈阳 110159;2.东北大学,沈阳 110169)

目前,网络已成为人们日常生活及办公的重要环节,越来越多的人依赖网络办公、购物,因此恶意软件的检测显得尤为重要。

目前,恶意软件检测主要有两种检测方法:静态检测方法和动态检测方法。静态检测方法易受到包装和加密的攻击,而动态检测却能有效地应对软件加密加壳的手段。吴丽娟等人提出了一种基于明可夫斯基距离的加壳PE文件识别方法,来检测文件是否加壳[1]。Rieck等人提出一种基于机器学习恶意样本分类方法,通过对软件行为分析报告的处理,研究恶意程序行为,根据报告处理结果,使用SVM(支持向量机)算法进行恶意样本分类,得到了88%的分类准确率[2]。Mosli等人采用注册表、DLL、API函数,运用朴素贝叶斯算法识别恶意软件,取得了89.4%的准确率[3]。徐婵通过分析恶意软件的动态行为特征,使用BP神经网络进行训练,判断是否是恶意软件[4]。王博等人针对恶意软件的行为数据,建立行为数据词袋模型,将数据映射到向量空间中,采用SVM算法进行恶意软件分类,得到了86%的分类准确率[5]。

本文通过对行为分析报告中的恶意软件和良性软件的行为数据处理,根据报告中出现的字符串的次数量化行为数据,从而得到数据样本。由于数据样本复杂,考虑到行为数据中各个特征属性之间关联性问题,提出一种基于萤火虫优化算法改进的加权贝叶斯模型,来进行恶意软件识别。通过萤火虫优化算法不断地迭代,寻找软件行为数据集中属性与类别之间权值,削弱各属性之间的独立性,采用加权贝叶斯分类模型分析检测其行为特征,进而识别恶意软件。

1 恶意行为描述

恶意软件的“行为”,是指一个恶意程序运行后的操作。对程序来说,将其执行的一系列操作,称为“行为特征”[6]。使用virustotal 沙箱[7]监控恶意样本的行为特征,并生成行为报告,分析报告的信息如下。

(1)更改系统文件:包括创建、修改、删除文件;

(2)更改注册表:包括创建、修改注册表键值;

(3)对运行过程的感染:包括恶意代码插入到其它进程中;

(4)互斥体的创建和获取:包括对系统资源的独占访问;

(5)Windows服务的启动与停止:包括停止、启动某程序。

行为分析报告中包含许多恶意行为数据信息,恶意行为数据的特征处理过程如下。

恶意软件会通过敏感目录创建可疑文件,并会在计算机的系统目录下释放文件,以躲避用户的察觉,如“C: WINDOWS”,“C: Documents”等目录。木马程序在将自身复制到系统敏感目录下的同时,常会将当前目录下的自身文件删除,以躲避用户的察觉。后门病毒运行后会将病毒自身拷贝到系统目录下,文件属性隐藏,名称不定,同时写入注册表启动项。蠕虫病毒运行后会把自身拷贝到系统目录下,添加注册表自启动项,同时删除文件并终止系统中的进程。广告软件运行后,在用户不知情时会在特定目录下创建文件,并进行进程自启动。

由此根据恶意软件创建、复制文件目录下的Windows、Documents,删除文件的delete_file,创建互斥体create_mutex等字符串,统计每个报告中字符串出现的次数,作为恶意软件行为数据集的特征。根据报告字符串次数的统计,得到量化后的恶意行为样本数据集,为恶意软件的分类识别提供数据基础。

2 恶意软件识别方法

对于目前越来越多的恶意软件,数据挖掘技术在识别恶意软件方面有着较好的应用,成为恶意软件识别领域的研究热点。以分类算法为主线,以提高恶意软件识别准确率为目标,开展以朴素贝叶斯算法为基础的恶意软件识别研究,提出一种基于萤火虫算法优化的加权贝叶斯恶意软件识别方法,通过萤火虫算法寻找数据属性与类别的权值,选取一部分数据训练,代入加权贝叶斯公式,计算每个样本数据的类归属,可得到样本分类的准确率。使分类准确率最高的权值,既为最优权值,将得到的权值保存在加权贝叶斯分类器中。对另一部分数据进行分类测试,识别恶意软件,得到恶意软件识别的准确率。

当前,思想政治理论课在教学形式和方法的改革上做了非常多的探索和努力,取得了很大成效。但有一点还是需要明确的,教学形式、教学方法始终要服务于教学内容,这是课堂教学的“重头戏”。那么,怎样用内容打动学生呢?

2.1 朴素贝叶斯定理及模型

贝叶斯分类器的原理是根据样本的先验概率并使用贝叶斯公式来获得后验概率,其中最大后验概率所对应的类就是该样本所属的类。其数据样本X有n个属性,既X={x1,x2,x3,…,xn},有k个类别,既C={c1,c2,…,ck},其样本属性在每类下的条件概率为p(X|ck),先验概率为p(X),根据贝叶斯后验概率

(1)

判断在哪类下的后验概率大,既样本属于哪一类[8]。其中

(2)

由于p(X)对所有类来说都是常数,所以只需计算p(X|ck)p(ck)即可。则贝叶斯的模型为

(3)

由于朴素贝叶斯(NB)对于属性的独立性要求较强,而大多数数据集不能满足属性之间独立的假设。Webb等人首先将特征加权的思想运用在贝叶斯算法上,在每个条件概率上赋予合适的权值wi来削弱属性之间的独立性,提高分类的准确率[9]。加权贝叶斯模型(WNB)为

(4)

文献[10]采用属性与类别之间的互信息作为权值,根据每个条件属性值xi和类别ck,计算类别下属性值出现的概率p(xi|ck)和类别概率p(ck),由此得到属性与类别之间的互信息为

(5)

基于互信息的加权贝叶斯模型,虽然在一定程度上削弱了属性之间的独立性,但却具有局限性,其公式单一固定,不能根据数据样本自身的特点来寻找权值,其加权值对于数据样本来说不一定是较优的权值。互信息的加权模型较朴素贝叶斯模型虽提高了识别的准确率,但其分类识别结果并不太理想。本文在此基础上提出一种改进的加权贝叶斯模型。

2.2 改进的加权贝叶斯模型

本文提出改进的加权贝叶斯模型,通过萤火虫启发式算法[11]来搜索加权贝叶斯模型中的权值wi,并通过加权贝叶斯模型来求得恶意软件识别的准确率。萤火虫算法是一种启发式算法,能够根据数据自身的特点,通过不断地迭代寻找数据属性与类别之间的权值。在贝叶斯算法中,分类的准确率越高,说明分类正确的数量越多,即选择分类准确率Eval(xi)作为萤火虫算法的适应度函数。适应度函数值越大,说明恶意软件识别的准确率越高,即数据样本属性与类别之间的权值越优。

(1)读入由软件行为特征构成的数据集,计算p(ck)和条件概率p(X|ck)。

(2)初始化萤火虫各参数,包括荧火虫个数,在数据集样本空间中萤火虫位置xi和荧光素li,最大迭代次数tmax,且令当前迭代次数为t=0。

(3)每个个体在样本空间中的位置代表加权贝叶斯中的权值,即wi=xi,并对wi进行归一化处理,使权值之和为1。利用式(4)中的加权贝叶斯模型对数据进行分类,得到样本行为数据的分类准确率Eval(xi)。

(4)利用轮盘赌法选择一个合适的萤火虫j,萤火虫j的亮度大于萤火虫i,使得萤火虫i朝着萤火虫j移动,进行位置更新,并计算新的分类准确率Eval(xi),位置更新公式为

xi=xi+β(xj-xi)+α(rand-1/2)

(6)

式中:β和α为(0,1)的随机数;rand为(0,1)均匀分布的随机因子。萤火虫的位置更新后,下一次迭代前,将全部的萤火虫种群荧光素更新,荧光素更新公式为

li=li×e-γrij

(7)

式中:γ为(0,1)的随机数;rij为萤火虫i和萤火虫j的空间距离,其距离越大,荧光素的值越小。

判断分类准确率Eval(xi)是否连续t次迭代不变,若不变则当前萤火虫位置xi即为数据属性与类别的最优权值;若改变则继续步骤(4),直到达到最大迭代次数,找到使得分类准确率最大对应的样本位置。

(5)将分类准确率最大值对应的样本位置,即加权贝叶斯模型中的最优权值,带入加权贝叶斯分类器模型中,得到恶意软件识别的准确率。

通过萤火虫算法改进的加权贝叶斯模型对一部分数据样本进行训练,既得到恶意软件分类识别模型。

3 结果分析

本文从www.virusshare.com网站上下载约1300个样本,其中恶意软件包括250个后门样本、300个木马样本、200个蠕虫样本、250个广告软件样本,以及300个良性样本。使用VirusTotal沙箱扫描样本,得到行为分析报告。根据其行为特征,创建、修改、删除文件,修改、删除注册表项,启动或关闭程序;调用系统的API函数,创建互斥体,并统计分析报告中各特征的字符串Windows、create_mutex、creat_process等在分析报告中的频次,得到量化后的样本数据集。通过萤火虫优化算法来确定数据集属性与类别之间的最优权值,通过不断地迭代来寻找该权值,随着迭代次数的增加,其分类准确率也会变化,迭代次数与准确率的关系如图1所示。

图1 迭代次数与准确率的关系

图1横轴代表迭代次数,纵轴代表恶意软件的分类准确率。由图1可以看出,萤火虫优化的加权贝叶斯算法,在蠕虫、木马、后门、广告软件四类恶意软件的分类识别准确率都维持在较高的水平。

进一步验证改进的加权贝叶斯恶意软件识别方法在分类准确率上的性能。分别对包括木马、蠕虫、后门、广告软件及良性样本在内的数据样本,采用朴素贝叶斯、互信息加权贝叶斯、萤火虫算法改进的加权贝叶斯进行恶意软件的识别。上述三种模型评价的相关符号含义如表1所示。

表1 符号的含义

评价指标采用准确率Eval来判断,公式如下。

(8)

选取80%数据集作为模型的训练集,分别利用朴素贝叶斯、互信息的加权贝叶斯模型[10]以及萤火虫改进的加权贝叶斯模型对数据进行训练;20%数据样本作为测试集,对各个种类的恶意样本进行分类识别,采用朴素贝叶斯模型、互信息的加权模型及萤火虫算法改进的加权贝叶斯模型对恶意样本进行识别。各模型的分类准确率见表2 所示。

表2 各恶意样本的分类准确率 %

由表1可以看出,萤火虫算法改进的加权贝叶斯算法对于木马、蠕虫、后门、广告软件这四类恶意样本分别取得了94.75%、95.28%、93.68%、96.87%的分类准确率,相对于朴素贝叶斯、互信息加权的贝叶斯模型取得了较好的识别效果。

4 结束语

本文提出的萤火虫算法改进的加权贝叶斯模型,能根据样本行为数据本身的特点,通过不断迭代,并根据分类准确率来寻找数据样本属性与类别的权值,将得到的权值带入加权贝叶斯分类模型,得到基于萤火虫算法改进的加权贝叶斯模型。相对于朴素贝叶斯、互信息加权的贝叶斯模型,本文提出的模型对于恶意软件具有更好的识别效果。

猜你喜欢
贝叶斯权值萤火虫
一种融合时间权值和用户行为序列的电影推荐模型
基于贝叶斯解释回应被告人讲述的故事
CONTENTS
基于动态贝叶斯估计的疲劳驾驶识别研究
萤火虫
程序属性的检测与程序属性的分类
萤火虫
基于权值动量的RBM加速学习算法研究
基于互信息的贝叶斯网络结构学习
抱抱就不哭了