一种基于生物启发特征优化的Android恶意软件检测方法
2022-07-12黄啸晨封化民王子晔鱼海洋
黄啸晨 封化民 刘 飚 王子晔 鱼海洋 葛 鸽
1(西安电子科技大学通信工程学院 陕西 西安 710071) 2(北京电子科技学院 北京 100070)
0 引 言
Android平台自2007年发布以来,凭借其开源、免费的优势,迅速成为目前市场占有量最大的智能终端平台。截至2019年10月,Android平台在全球移动市场的占有率已经高达76.67%[1],也因此成为恶意犯罪者的首选目标。据360互联网安全中心统计,2019年上半年Android平台新增恶意软件样本约92.0万个,平均每天截获新增手机恶意软件样本约0.5万个[2]。面对Android平台日益严重的安全问题,研究如何快速高效检测Android恶意软件具有重要意义。
近年来,许多研究者尝试通过机器学习的方法,分析软件的静态或动态行为特征,对Android恶意软件进行检测[3]。相比之下,静态行为特征的获取时间开销较低、代码覆盖率较高、易于统计分析,成为目前国内外学者的主要研究方法。
静态行为特征主要通过对Android软件安装包(APK)进行逆向处理,获得如权限、应用程序编程接口(API)、意图信息、网络地址、硬件组件等静态特征。文献[4]提出一种基于权限的检测框架,使用主成分分析(PCA)选择突出特征并应用SVM进行分类。文献[5]利用BNS(Bi-normal Separation)文本分类技术和MI(Mutual Information)互信息技术进行权限特征提取,借助数据挖掘工具WEKA进行分类。但是单一的权限特征无法全面反映Android软件的行为特征,检测精度不高。文献[6]使用权限和API作为特征,分别使用卡方校验(CHI)和信息增益(IG)对特征进行选择。文献[7]通过提取权限、意图、API、组件等8类特征,结合SVM算法设计了Android恶意软件检测工具Drebin。然而该工具使用的行为特征数量庞大,导致在检测过程中时间、计算开销较高。
针对Android软件静态行为特征数量庞大、冗余信息较多,文献[8]对Drebin软件样本集分别采用粒子群算法(PSO)和进化算法(EC)优化选择分类特征,并采用AdaBoost算法构建Android恶意软件检测模型,该研究仅提取了单一的权限特征进行分析,检测精度较低。文献[9]对权限和组件特征利用遗传算法(GA)获得最优特征子集,使用SVM和神经网络进行分类,降低了分类器的训练时间复杂度,然而GA参数较多,严重影响了最优解的品质。文献[10]提出基于邻域粗糙集与PSO的PSORS-FS方法,使用粗糙集概念作为特征之间依赖性的度量,并利用两个Android软件样本集对该方法进行评估,该方法使用属性依赖度和特征子集长度构成适应度函数,而未考虑分类器的准确率,降低了计算开销,但最终检测精度不高。文献[11]使用L1正则化与改进的粒子群算法(SVBPSO)进行混合式特征优化选择,提高了Android恶意软件检测精度,但L1选择的特征数量、SV最佳组合、局部搜索间隔对优化算法影响较大,计算复杂度较高。
本文在已有的研究基础上,提出一种基于BWOA进行特征优化的Android恶意软件检测方法,主要工作如下:
(1) 提取Android软件的权限、组件、API作为静态行为特征,以便于全面准确地描述Android软件。
(2) 提出融合信息增益(IG)和离散二进制鲸鱼优化算法(BWOA)的混合特征选择算法,将无关和冗余特征去除,提高分类器的效率和性能。
(3) 将WOA与SVM分类模型相结合,设计了一种基于分类准确率、特征子集长度、支持向量个数的新适应度函数,利用WOA在最优特征子集选择的同时,同步优化SVM的关键参数。
1 信息增益算法
信息增益算法[12]通过计算每个特征对数据集的信息增益,过滤选择出具有更强分类能力的特征。设Android软件数据集为D,特征A对D的信息增益为IG(D,A),其计算公式如下:
IG(D,A)=H(D)-H(D|A)
(1)
根据信息论中信息熵的概念,H(D)与H(D|A)的计算公式如下:
(2)
(3)
式中:E为类别集合,|E|为类别数;P(ci)表示ci类在Android软件数据集D中出现的概率;P(A)为特征A在D中出现的概率,P(A)为未出现的概率;P(ci|A)为Android样本包含特征A时属于ci的概率,P(ci|A)为不包含A时属于ci的概率。
IG(D,A)表示由于特征A而对Android软件数据集D的分类的不确定性减少的程度。当Android软件数据集中的某个特征的信息增益越大,说明这个特征越重要,对分类影响越大。反之,信息增益很小的特征对分类影响较小,甚至会影响分类精度,增加计算开销[13]。
2 离散二进制鲸鱼优化算法
2.1 基本鲸鱼优化算法
WOA是文献[14]于2016年提出的一种新型群体智能优化算法。由以下三个阶段构成:
(1) 收缩包围。鲸鱼可以识别猎物位置并将其包围,其数学模型如下:
D=|H·X*(t)-X(t)|
(4)
X(t+1)=X*(t)-A·D
(5)
式中:t为迭代次数,X*(t)目前为止最优鲸鱼个体位置向量,X(t)为当前鲸鱼个体位置向量。A和H由以下公式得出:
A=2a·r1-a
(6)
H=2r2
(7)
式中:r1和r2为[0,1]之间随机数,a的值从2到0线性递减。
(2) 螺旋更新。鲸鱼会针对猎物位置以螺旋轨迹更新位置,其数学模型如下:
D′=|X*(t)-X(t)|
(8)
X(t+1)=D′·ebl·cos(2πl)+X*(t)
(9)
式中:b是定义螺旋形状的常数,l是[-1,1]的随机数。
(3) 随机搜索。当|A|>1时,鲸鱼个体根据彼此位置进行随机搜索,其数学模型如下:
D=|H·Xrand(t)-X(t)|
(10)
X(t+1)=Xrand(t)-A·D
(11)
式中:Xrand(t)为随机选择的鲸鱼个体位置向量。
2.2 WOA的离散二进制化
在WOA中,鲸鱼粒子的搜索空间为连续空间。然而在特征选择问题中,解向量是一条只包含0和1的数值向量,其中每一维的值代表是否选择该特征。为了解决特征选择问题,必须将连续空间的值转换为相应的二进制值。因此提出离散二进制鲸鱼优化算法。
为保证鲸鱼粒子位置向量的每一维只能取值0或1,引入sigmoid映射函数将连续空间的值转换到离散空间:
(12)
(13)
2.3 适应度函数设计
适应度函数用于评估WOA中鲸鱼粒子的优劣。在以往的特征选择问题研究中,研究者通常使用分类器的准确率和选取特征的数量来定义适应度函数,用于评估每个特征子集[15]。
在使用群体智能优化算法进行特征选择时,最常使用的是SVM分类器[16]。因支持向量(Support Vector)的个数对模型的泛化能力有重要影响,故在适应度函数上增加了模型支持向量个数项。新的适应度函数如下:
(14)
式中:Acc是模型准确率;α是其权重;L是特征总数;R是所选特征子集长度;β是特征数量的权重;M是Android样本总数;Vi表示第i个样本是否为支持向量,若是取值为1,反之取值为0;ω是支持向量个数项的权重。
3 BWOA-SVM恶意软件检测方法
3.1 模型设计
本文提出的基于BWOA-SVM的Android恶意软件检测方法的框架如图1所示。整个过程主要包括三个部分:
(1) 逆向分析Android样本文件,提取权限、组件、API静态行为特征构造特征向量集合。
(2) 利用信息增益和BWOA算法进行特征选择,同时对SVM参数组合(C,γ)同步优化。
(3) 根据最优特征子集和最佳参数组合(C,γ)对Android软件进行分类检测。
图1 Android恶意软件检测方法框架
3.2 特征提取
特征提取部分运用Androguard工具[17]对样本进行逆向处理,提取权限、组件、API作为特征,通过量化特征构建特征向量并合并为数据集。具体过程如下:
(1) 逆向处理Android软件样本,获取AndroidManifest.xml和smali文件。
(2) 解析AndroidManifest.xml,统计权限、组件信息;解析smali文件,获取API信息。
(3) 对提取的特征进行去重处理,去除重复特征,构建特征集合FS。
(4) 将特征的有无量化为“1”或“0”,并在特征向量末尾添加标志位“mal”或“ben”,其中“mal”表示恶意软件,“ben”表示良性软件。
3.3 BWOA-SVM特征参数同步优化方法
Android软件静态行为特征数量庞大,属性之间相关性强,冗余信息较多。大量的不相干、冗余特征会降低分类器的精度和分类算法运行效率。本节利用信息增益和BWOA进行特征选择。首先通过信息增益算法过滤掉对分类没有影响或分类影响不大的特征,以减少后续BWOA的搜索空间,提高BWOA的搜索效率;然后运用BWOA寻找最优特征子集,并对SVM分类模型的关键参数(惩罚因子C,核函数参数γ)进行同步优化。
3.3.1粒子编码方案
种群中每个粒子的位置向量由两部分组成。粒子的第一部分前n位采用离散编码,对应特征选择的一个特征子集,n为数据集特征总数。如果第i位为1,则表示第i个特征被选中;如果为0,则未被选中。粒子的第二部分后2位采用连续编码,对应SVM分类模型的关键参数(C,γ)。粒子编码方案如图2所示。
图2 粒子编码方案
3.3.2算法流程
基于BWOA-SVM的同步优化算法首先将原始数据集输入,去掉信息增益小于给定阈值的特征,然后运用BWOA和连续WOA分别对所选特征和参数进行编码,以SVM模型的准确率、特征子集长度、支持向量个数三种指标作为评价标准,输出得到使适应度函数最高时的特征子集和SVM参数组合。算法实现过程如下:
输入:原始数据集D,鲸鱼种群规模N,最大迭代次数T。
输出:最优特征子集M,最优参数组合(C,γ)。
1) 采用式(1)计算数据集D中每个特征的信息增益,去除低于阈值的特征,得到初选特征子集D′。
2) 初始化鲸鱼种群,设定相关参数,包括种群规模N、最大迭代次数T、粒子维度n+2(其中n为D′特征数量)。
3) 利用式(14)计算每个鲸鱼个体的适应度值,记录最优个体位置向量X*。
4) 当t≤T时,更新a、A、H、l、p的值。
5) 当p<0.5时,若|A|<1,根据式(5)更新个体位置向量;若|A|≥1,根据式(11)更新个体位置向量。
6) 当p≥0.5时,根据式(9)更新个体位置向量。
7) 利用式(13)对个体前n维进行离散二进制化。
8) 利用式(14)计算新的种群中每个个体的适应度值,更新最优个体位置向量X*。
9) 判断是否达到最大迭代次数T,若未达到T,使得t=t+1,重复步骤4)至步骤8)。若已达到T,输出最优特征子集M和最优参数组合(C,γ)。
4 实 验
4.1 数据集和评判指标
本文实验所用的Android恶意样本来源于virusshare[18],良性样本借助爬虫从Google Play抓取,去除其中无法逆向分析的无效样本后,共收集恶意、良性样本各1 000个。
为评判检测方案效果,作如下定义:TP表示恶意样本判为恶意的数量,FP表示良性样本误判为恶意的数量,TN表示良性样本判为良性的数量,FN表示恶意样本误判为良性的数量。由此构成评判Android检测方案的4个常用指标[3]:
检测率:TPR=TP/(TP+FN),表示恶意样本中正确分类为恶意软件的比例。
误报率:FPR=FP/(FP+TN),表示良性样本中错误分类为恶意软件的比例。
漏报率:FNR=FN/(TP+FN),表示恶意样本中错误分类为良性软件的比例。
准确率:ACC=(TP+TN)/(TP+FP+FN+TN),表示所有样本中正确分类的比例。
4.2 实验设置
本文提出的BWOA-SVM方法是用Python 3.7语言编程设计实现的,SVM为Sklearn库[19]中集成,并以径向基函数(RBF)为核函数,采用十折交叉验证法对SVM分类器进行评价。BWOA-SVM方法的参数设置如表1所示。
表1 参数设置
4.3 不同优化算法对比实验
为了验证本文方法的有效性,本文实现了基于GA、BPSO的同步优化方法,并与本文方法进行比较和分析。GA、BPSO、BWOA三种同步优化算法的适应度函数值迭代曲线如图3-图5所示。图中X轴表示迭代次数,Y轴表示适应度函数值,两条曲线分别代表最优适应度值和平均适应度值。其中最优适应度值为截止到第t代时最优个体的适应度函数值,平均适应度值为第t代中所有个体的适应度函数的平均值。各算法在Android软件样本集上最优适应度值迭代曲线如图6所示。
图3 GA-SVM算法适应度函数值迭代曲线
图4 BPSO-SVM算法适应度函数值迭代曲线
图5 BWOA-SVM算法适应度函数值迭代曲线
图6 各算法最优适应度函数值迭代曲线
可以看出,本文提出的BWOA-SVM方法在寻优过程中全局搜索能力更强,相对于GA、BPSO两种优化算法可以很好地避免陷入局部最优的困境,并且本文算法的收敛速度也明显快于其他两种算法,在第16次迭代时便已趋于稳定,趋于稳定之后的适应度函数值高于GA、BPSO优化算法,特征参数同步优化性能较好。
4.4 与其他方法对比实验
由于Android软件样本集多为研究者各自收集整理的样本集,因此本文通过复现文献[9]、文献[10]、文献[11]的方法进行对比分析。文献[9]利用遗传算法将特征数量减少到原始特征集的不到一半,以减少SVM分类器的复杂度,同时保持分类的准确率。文献[10]提出基于邻域粗糙集与粒子群算法的PSORS-FS方法,获得了很好的分类性能。文献[11]通过改进BPSO算法,使用SVBPSO算法进行特征选择后的检测性能得到提高。为使实验结果更具有说服力,在对比实验中采用双层交叉验证方法进行验证,首先通过五折交叉验证法确定最优特征子集以及SVM参数,然后对特征参数同步优化结果通过十折交叉验证法评价SVM分类器性能,取5次实验的平均结果。各方法的分类结果如表2所示。
表2 不同方法实验结果比较
可以看出,文献[9]仅使用GA进行特征选择,该算法参数较多,且初始种群对算法的寻优能力影响较大,易陷入局部最优,因此检测能力较差。文献[10]提出的PSORS-FS方法使用粗糙集概念中属性依赖度和特征子集长度构成适应度函数,而未考虑将分类器的准确率作为评判指标,虽然相比于GA的性能得到改善,但仍拥有较高的漏报率。文献[11]针对BPSO进行改进,在使用S型函数进行离散二进制化的过程中,每隔一定的迭代次数使用V型函数进行离散二进制化,一定程度上改善了BPSO的易早熟收敛的缺点。
本文提出的BWOA-SVM算法实现简单,相比于传统的基于梯度的优化算法而言可以通过粒子二进制编码有效解决特征选择这类离散优化问题,完成特征与参数的同步优化,拥有较好的自适应性,而且群体内个体的故障不影响整体优化问题的求解,保证了较好的鲁棒性。BWOA需要设置的参数较少,仅需要设置种群规模和最大迭代次数便可进行寻优,而且三个寻优阶段使得该算法相比于其他优化算法全局搜索能力更强,保证了种群的多样性,对随机生成的初始种群依赖度较低,更易找到最优解,避免陷入局部最优解。将SVM分类器的准确率、特征子集长度、支持向量个数作为适应度函数,保证在最小的特征数量、最少的支持向量个数的同时,获得最高的准确率,降低了计算开销,避免过拟合,提高了模型的泛化能力。通过实验表明,对Android软件数据集的检测准确率和检测率分别达到97.88%和97.85%,相对于其他方法有明显的提高,误报率和漏报率也有一定程度的降低,证明了本文提出方法的可行性和有效性。
5 结 语
面对日益严重的Android恶意软件泛滥问题,本文提出了一种基于生物启发BWOA进行特征优化的Android恶意软件检测方法。该方法提取权限、组件、API等作为特征属性,利用BWOA实现在选择最优特征子集的同时,同步优化SVM关键参数,其中适应度函数采用分类准确率、特征子集长度、支持向量个数作为评判标准。实验结果表明,该方法能够达到97.88%的准确率,拥有很好的自适应性,在Android恶意软件检测方面具有较好的性能。