APP下载

基于And roid恶意软件检测技术的研究

2018-04-16田瑞凡刘钊远

计算机与数字工程 2018年3期
关键词:特征值静态动态

田瑞凡 刘钊远

(西安邮电大学计算机学院 西安 710061)

1 引言

科学技术的不断进步,使得移动通信越来越成熟,各种智能移动设备逐渐走进了我们的生活,并成为人们日常生活中不可或缺的工具。人们在享受打电话、发短信等传统服务的同时,也可以随时随地地通过各种智能移动设备享受网购、社交娱乐等活动,这也为智能移动设备带来了广阔的市场前景,从而吸引越来越多的开发人员加入到智能移动设备相关开发工作的行列中来。目前最流行的移动开发平台当属Android和IOS了。

Android移动开发平台于2007年正式发布,是一种基于Linux的开源操作系统。随后在2008年,Google发布了Android系统的第一个版本——Android 1.0系统,自此,Android进入了人们的视眼,开启了一个迅猛发展的全新旅程。然而Android系统生态环境所建立的这种过于开放自由式的应用软件市场,虽然在很大程度上促进了Android应用软件数量的快速增长,但同时也为Android应用的安全性埋下了诸多的隐患。因为这种开放性允许其他组织根据所需建立属于自己的Android应用市场,而有些应用市场并没有一个对应用软件严格审查、测试的流程[1],即无法有效地防范恶意软件的存在。

恶意软件是指能够对宿主机造成伤害、或使用户利益遭受损失的一种具有攻击性的软件,分为隐私窃取、恶意吸费、远程控制、资费消耗、流氓行为、系统破坏、诱骗欺诈、恶意传播8类。根据CNCERT/CC统计的数据显示,2015年共捕获到1477450个恶意程序样本,相比2014年,增长55.3%,其中,恶意吸费类程序为348859个,占23.61%,居于榜首,同时,由于Android系统高度的自由开放性,也导致了Android平台遭受的恶意攻击最为严重,由数据表明,针对Android平台的恶意程序样本所占比例约为99.6%,共计1472381个,其次是Symbian平台,占了0.19%,共计2917个,如图1。

图1 2015年移动互联网恶意程序数量按操作系统分布

目前,Android恶意软件检测主要分为两种:静态检测、动态检测。首先介绍静态检测方法,传统的静态检测方法是基于签名的,文献[3]主要介绍了针对特征码检测的方法,这种方法有一个缺点,就是无法检测未知恶意应用。所以就出现了基于行为的静态检测方法,其中文献[3~6]重点介绍了这种检测方法,解决了上述所提到的无法检测未知恶意应用的问题,并且代码覆盖率高,但对于静态检测无法检出的代码加密、以及在软件执行过程中恶意代码才被解码的问题,依然不能够得到很好地解决。对于动态检测,文献[7~11]给出了目前常用的一些方法,概括来讲,就是利用虚拟机、沙盒来模拟软件的运行,并从中获取软件在运行时的CPU使用率、网络访问、以及各种调用系统API的行为等。

从国内外研究现状来看,目前针对恶意软件检测的研究大多都着重或静态、或动态的检测,而本文将结合静态和动态两种检测技术,利用静态检测所提取到的权限特征值、以及动态检测所提取到的行为特征值构造一种混合特征,然后使用机器学习以及数据挖掘技术[12~13]对新的特征集进行分类判别,并根据比较结果,选定一种最优的分类方法,最大程度的提高用户使用软件的安全性。

2 基于混合特征的Android恶意软件检测方案

本文在对恶意软件进行检测时,通过采集正常软件和恶意软件运行时的CPU使用率、内存占用量等性能指标,以及APK文件中所包含的权限特征,构造出一种混合特征集。在进行实验的时候,将该特征集作为输入,使用 KNN[14]、J48、Naive Bayes(NB)[15~16]以及SVM这四种分类算法构建恶意软件检测模型,实现对未知软件的检测,流程图如图2。

图2 恶意软件检测总流程图

2.1 静态权限检测

文献[17]比较了良性样本和恶意样本对权限信息的使用情况,发现读取手机状态、读写SD卡、访问网络状态、监听手机短信等权限在恶意和良性应用中都得到了广泛的使用,不过,相比于恶意软件,良性程序较少使用更改WiFi状态的权限、开机自启权限以及与短信相关的权限。由此可见,Android系统的不同权限在使用频率上存在较大差异,而且恶意应用和正常应用在申请的权限上也存在着明显的不同,因此,可以利用Android应用程序的权限信息对恶意软件进行检测。

本模块将会提取出恶意样本和良性样本在AndroidManifest.xml文件中所声明的权限信息,作为分类器的一部分输入数据,并以软件的恶意属性或良性属性作为分类的唯一依据。

2.2 动态行为检测

恶意软件静态检测方法能够快速地检测出己知的恶意软件,但它也有显而易见的缺陷。首先,静态检测方法在检测未知恶意软件方面显得力不从心。其次,当已知的恶意软件代码经过加密、混淆并且重打包之后,也会变得难以辨认。因此,针对静态分析的这些缺点,本文将结合动态检测分析来提高对恶意软件的检出率。

本文所使用的动态检测方法主要是使用DroidBox对Android虚拟机中运行的软件进行动态检测,重点监测软件运行过程中的CPU使用率、内存占有率、访问通讯录、收发短信,将这些特征作为分类器的另一部分输入,同样以软件的恶意属性或良性属性作为分类的唯一依据。

2.3 生成混合特征

为了提高恶意软件检出率,本文将采用动态检测分析与静态检测分析结合的方法,即使用静态检测与动态检测所提取到的特征值构造出一种混合特征,然后选用KNN、J48、Naive Bayes以及SVM这四种分类算法来构建恶意软件检测模型,利用构建的四种分类模型分别对新的特征集进行分类,根据比较结果,选定一种最优的分类方法,实现对恶意软件的检测。

3 恶意软件检测实验

3.1 数据准备

2007年,Android移动开发平台发布之后,针对该平台的恶意程序就逐年增多,尽管如此,市场上至今也找不到公开的恶意软件样本库。同时,由于知名的官方应用网站会对所有发布的应用软件进行严格的审查与测试,所以要想通过官方应用市场获取大量的恶意软件样本,几乎是不可能的。因此本实验中所采用的恶意软件样本数据,全部是从在线恶意软件仓库VirusShare中下载得到,而正常软件样本则全部来自于华为应用市场。

本文所针对的恶意软件主要是窃取隐私、恶意扣费和资费消耗这三类软件,为确保所获取到的样本不会影响到最终的实验结果,通过VirusTotal网站对所获取到的软件样本进行检测与分类,并最终选定258个恶意软件样本和249个正常软件样本作为本次实验的样本,其中训练样本包括:126个恶意软件样本和118个正常软件样本,测试样本包括:132个恶意软件样本和131个正常软件样本。

3.2 特征提取实验

为了构造出分类所需的混合特征集,本文将分别提取APK文件中的权限特征,以及通过动态检测提取软件运行时信息特征,然后对这两种特征进行整合。

3.2.1静态提取权限特征值

本实验需要分析Android软件包中的相关文件,即配置文件中的权限信息,因此,对Android软件的APK文件进行解压缩和反编译,通过Apktool工具对AndroidManifest.xm l进行反编译,然后对反编译后的AndroidManifest.xml文件进行权限分析,抽取其中的权限信息单独存储。

经过遍历244个APK文件(恶意样本126个、正常样本118个),我们共得到136种权限,将这些软件所声明的权限特征存储在矩阵中,以权限名作为横坐标,应用名作为纵坐标。当提取一个应用程序的权限时,若某权限特征被提取到则标志为1,否则标志为0。这样,当遍历完所有的应用程序时,就会得到一个明显的数据,可以直观地显示每一个APK文件对权限的调用情况。

由文献[17~19]可知,选择合适的属性子集往往会提高分类的准确率,冗余或不相关的属性反而可能导致不准确的模型。因此需要对所得到的种类繁多的权限进行筛选,删除不利于分类的权限特征,选取合适数量的特征用于分类模型的构建,以提高恶意软件检测的准确率。

本文将通过Weka数据挖掘软件对权限进行分级评分,即使用InfoGainAttributeEval评估器,评估各个权限属性,利用Ranker“搜索”方法,对这些属性在预测目标方面的重要程度进行排名,得出各个权限的危险系数评分,根据评分选取评分最高的30个权限作为最终分类特征,然后对这30个权限特征进行整理,放入一个.arff文件中,以作为分类器的输入。

3.2.2提取软件运行时信息

本文将使用DroidBox进行自动分析,DroidBox是一款基于TrainDroid设计的沙盒分析工具,可以自动对Android APP进行动态分析,所得到的结果被放入log.txt日志文件中,该文件包含的内容有:1)发送短信及通话信息;2)使用Android API操作的密码活动;3)绕过的权限信息;4)内外部通信数据信息等等。

此外,由于Android是基于Linux系统内核的,在Linux系统中查看系统资源消耗情况可以直接通过命令行,在Android系统上保留了此功能,因此,对于实验所需的CPU占有量、内存使用率均可以在进入模拟器的Shell模式后,使用命令行的方式获取得到。

按照上述方法,遍历所有的软件样本,提取本实验所需的特征值,即软件运行中的CPU使用率、内存占有率、访问通讯录、收发短信,然后将这些特征值添加到3.2.1节创建的.arff文件中,作为分类器的输入。

4 实验结果与分析

4.1 分类模型评估

分类模型最常用到的评估标准有五种:预测的准确率、鲁棒性、速度、可解释性、可伸缩性。

其中,预测的准确率常常用来对分类器的性能进行评估和比较,对于二元分类问题,预测可能会产生四种相异的结果,如表1所示。TP(True Positive)表示良性软件预测为真的个数,TN(Ture Negative)表示恶意软件预测为真的个数,这两个都是正确分类的结果。FP(False Positive)表示良性软件预测为假的个数,即真实类别为no、而预测类别为yes;FN(False Negative)表示恶意软件预测为假的个数,即真实类别为yes、预测类别为no。

表1 二元分类预测的四种结果

二元分类问题的度量标准简单描述如下。

真阳性率(True Positive Rate,TPR)表示在所有实际为正常的软件中,被正确的预测为良性软件的比例,该值越大,表明分类效果越好,公式如下:

假阴性率(False Negative Rate,FNR)表示恶意软件漏检率,该值越小,表明分类效果越好,公式如下:

准确率(Accuracy,ACC)表示软件样本预测正确的比例,该值越大,表明分类效果越好,公式如下:

本文将通过上述度量标准对测试结果进行评估验证。

4.2 实验结果及分析

本文采用动态检测分析和静态检测分析相结合的方法,构建恶意软件检测模型。为了表明该方法的有效性,首先对静态检测所提取到的特征值进行分类,根据4.1节所介绍的度量标准,利用式(1)~(3)进行分类评估,结果如表2。

表2 静态检测的分类评估结果

然后,再对动态检测所提取到的行为特征值进行分类,同样利用式(1)~(3)进行分类评估,结果如表3。

表3 动态检测的分类评估结果

最后,我们通过对本实验所提出的方案进行测试验证,即通过静态检测提取出的权限特征值、动态检测提取出的行为特征值,构造一种混合特征集,然后对该混合特征集进行分类检测,分类结果和评估结果分别如表4、表5。

表4 混合特征的分类结果

表5 混合特征的评估结果

通过实验对比结果可知,混合特征的检测准确率均比静态权限特征值或动态行为特征值的检测率高,表明本文所提出的方案能够有效地提高恶意软件检测的准确率,并且在选定的这四种分类算法中,J48的分类准确率最高,为87.07%,说明该分类算法对本文所构造的混合特征的分类效果最优。

根据实验比较结果,最终选定J48作为本实验方案的分类算法,以此提高用户使用软件的安全性。

5 结语

本文采用动态分析和静态分析相结合的方法,并使用机器学习及数据挖掘技术,对258个恶意样本和249个良性样本进行仿真实验,结果表明,该方法能够有效地提高恶意软件检测的准确率。

本文所提出的方案虽然具备一定的检测效果,但只针对恶意吸费、隐私窃取及资费消耗这三类恶意软件,不能够很好地检测所有的恶意软件类别,因此,提出一种可针对任意类别恶意软件的检测方案至关重要。

[1]李晓洲.Android应用程序组件漏洞测试方法研究[D].太原:太原理工大学,2015.LI Xiaozhou.Study of Android Application Component Vulnerability Testing Method[D].Taiyuan:Taiyuan University of Technology,2015.

[2]王菲飞.基于Android平台的手机恶意代码检测与防护技术研究[D].北京:北京交通大学,2012.WANG Feifei.Study on Detection and Protection Techniques of Mobile Phone Malicious Code Under the Android Platform[D].Beijing:Beijing Jiaotong University,2012.

[3]房鑫鑫.Android恶意软件实现及检测研究[D].南京:南京邮电大学,2013.FANG Xinxin.Malware Implementation and Detection on Android[D].Nanjing:Nanjing University of Posts and Telecommunications,2013.

[4]Wang,T.-Y.,Wu,C.-H.,Hsieh,C.-C.:A Virus Prevention Model Based on Static Analysis and Data Mining Methods[C]//In:Proceedings of the 2008 IEEE 8th InternationalConference on Computerand Information TechnologyWorkshops,CITWORKSHOPS 2008,pp.288-293.

[5] MZheng,MSun,JCS Lui,Droid Analytics:A Signature-Based Analytic System to Collect,Extract,Analyze and Associate Android Malware[J].IEEE Computer Society,2013,8(1):163-171.

[6]刘晓东,何加铭,等.一种静态Android程序恶意性检测方法[J].无线电通信技术,2014,40(2):74-77.LIU Xiaodong,HE Jiaming,et al.Malicious Android Application Detection Method Based on Static Behavior Characteristics[J].Radio Communications Technology,2014,40(2):74-77.

[7]Blasing T,Batyuk L,Schmidt A D,etal.An android application sandbox system for suspicious software detection[C]//Malicious and unwanted software(MALWARE),2010 5th international conference on.IEEE,2010:55-62.

[8]Burguera I,Zurutuza U,Nadjm-TehraniS.Crowdroid:behavior-based malware detection system for android[C]//Proceedings of the 1st ACM workshop on Security and privacy in smartphones and mobile devices.ACM,2011:15-26.

[9]Yan L K,Yin H.DroidScope:Seam lessly Reconstructing the OS and Dalvik Semantic Views for Dynamic Android Malware Analysis[C]//USENIXSecurity Symposium,2012:569-584.

[10]李铭.Android平台下基于行为的恶意代码检测技术研究[D].成都:电子科技大学,2014.Li Ming.Android Malware Detection Based on Behavior Analysis[D].Chengdu:University of Electronic Science and Technology of China,2014.

[11]杨文.基于支持向量机的Android恶意软件检测方法研究[D].南京:南京理工大学,2015.YANG Wen.Research on Android malware detection method based on SVM[D].Nanjing:Nanjing University of Science and Technology,2015.

[12]蔡泽廷.基于机器学习的Android恶意软件检测模型研究[D].青岛:青岛理工大学,2013.CAI Zeting.Research of Android Malware Detection Model Based on Machine Learning[D].Qingdao:Qingdao Technological University,2013.

[13]李骏骁.基于监督型机器学习分类方法的Android恶意软件检测技术研究[D].南京:南京大学,2014.LI Junxiao.The Research on Android Malware Deletion Techniques in Supervised Machine Learning Classification Methods[D].Nanjing:Nanjing University,2014.

[14]刘晓明.基于KNN算法的Android应用异常检测技术研究[D].北京:北京交通大学,2016.LIU Xiaoming.Anomaly Detection of Malicious Android Application Based on K-Nearest Neighbor[D].Beijing:Beijing Jiaotong University,2016.

[15]张国印,曲家兴,李晓光.基于贝叶斯网络的Android恶意行为检测方法[J].计算机工程与应用,2016,52(17):16-23.ZHANG Guoyin,QU Jiaxing,LIXiaoguang.Way of Android malicious behavior detection based on Bayesian net-works.Computer Engineering and Applications,2016,52(17):16-23.

[16]迟庆云,刘梦琳,姜振凤,等.特征提取方法对朴素贝叶斯文本分类器的影响分析[J].长江大学学报(自科版),2013,10(25):91-93.CHIQingyun,LIUMenglin,JIANG Zhenfeng,etal.Analysis of the influence of feature extractionmethods on Naive Bayes text classifier[J].Journal of Yangtze University(Natural Science Edition),2013,10(25):91-93.

[17]ZHOU Yajin,JIANG Xuxian.Dissecting Android malware:characterization and evolution[C]//Proc of IEEE Symposium on Security and Privacy.Washington DC:IEEEComputer Society,2012:95-109.

[18]Aswini A M,Vinod P.Droid permission miner:mining prominentpermissions for Androidmalware analysis[C]//Proc of the 5th International Conference on the Applications ofDigital Information andWeb Technologies,2014:81-86.

[19]卢文清,何加铭,曾兴斌,等.基于混合特征的Android恶意软件静态检测[J].无线电通信技术,2014,40(6):64-68.LUWenqing,HE Jiaming,ZENG Xingbin,etal.Android Malware Static Detection Based on Hybrid Features[J].Radio Communications Technology,2014,40(6):64-68.

[20]张锐,杨吉云.基于权限相关性的Android恶意软件检测[J].计算机应用,2014,34(5):1322-1325.ZHANG Rui,YANG Jiyun.Android malware detection based on permission correlation[J].Computer Technology,2014,34(5):1322-1325.

猜你喜欢

特征值静态动态
国内动态
国内动态
利用LMedS算法与特征值法的点云平面拟合方法
国内动态
最新进展!中老铁路开始静态验收
静态随机存储器在轨自检算法
单圈图关联矩阵的特征值
凯莱图的单特征值
动态
猜猜他是谁