APP下载

基于Android系统的手机恶意软件检测模型

2016-09-07马晋杨

计算机测量与控制 2016年1期
关键词:调用数据挖掘规则

马晋杨,徐 蕾

(沈阳航空航天大学 计算机学院, 沈阳 110136)



基于Android系统的手机恶意软件检测模型

马晋杨,徐蕾

(沈阳航空航天大学 计算机学院, 沈阳110136)

为提高手机应用软件的安全性,提出一种基于Android系统的手机恶意软件检测模型;模型利用数据挖掘的方法对恶意软件中的敏感API调用进行数据挖掘,进而得到恶意软件检测规则;针对检测规则在检测非恶意软件时,产生较高误报率的问题,设计了加权FP-growth关联规则挖掘算法,算法在数据挖掘的两个步骤中,对敏感API调用加权,利用支持度阈值去除一些出现次数频繁而权重小的规则,降低了非恶意软件的误报率;实验结果表明,模型对恶意软件检测率达到81.7%,非恶意软件的检错率降低到11.3%。

Android系统;恶意软件;数据挖掘;敏感API;FP-growth算法

0 引言

随着手机应用软件的日益增多,人们对手机应用安全性的要求愈来愈高。鉴于多种型号的手机和平板PC使用Android操作系统,针对Android平台的恶意软件检测得到研究者的广泛关注。

基于Android系统的恶意软件检测方法主要有:1)利用软件获得的访问权限做检测。文献[1]运用统计学知识给出了权限风险等级计算方法,该方法可以计算出一组权限的风险值,并且在应用程序安装时将风险值呈现给用户,让用户决定是否安装。文献[2]通过对权限配置文件的挖掘分析,发现软件使用敏感权限之间的关联性,并将其作为检测规则进行恶意软件检测。这种方法能够发现一些敏感恶意行为,但对软件的权限申请要求严格,进而限制了具有特殊权限要求软件的使用。

2)利用软件中对敏感API的调用进行检测。恶意软件通常利用API调用获取或者操作用户关键数据和系统资源,包括短信、通讯录、通话记录等,然后向外部传送上述数据。文献[3-4]利用分类算法分别对Symbian和Android可执行文件中的函数调用进行分类,进而检测软件中是否包含恶意代码,但由于缺乏恶意软件样本,检测效果不易评价。文献[5]利用K-means算法区分基于同一应用软件改写的恶意代码和非恶意代码,该方法只能对同一应用软件不同变种进行检测。文献[6]设计了记录Android系统中敏感API调用的日志模块,实现在软件运行时记录敏感API调用及输入/输出的详细信息,文献没有涉及对记录的API进行分析的方法及结果。

本文通过对敏感API的研究发现,对敏感API的调用进行关联可以有效的检测出恶意软件,而且不会出现上述的一些问题,实验结果表明,本文提出的方法对恶意软件的检测率达到了81.7%左右,具有很好的检测效果。

1 恶意软件检测模型

本文提出的方法属于静态检测方法,即对Android系统中运行软件的源文件进行分析,得到软件中敏感API的调用,利用这些API调用判断此软件是否为恶意软件。恶意软件检测模型首先根据API调用在软件恶意行为中重要程度的不同,运用AHP层次分析法对每类敏感API做加权处理,再利用改进后的FP-growth算法对恶意软件数据集做数据挖掘,进而获得基于敏感API调用的恶意软件检测关联规则,用于手机恶意软件检测,模型结构如图1所示。

图1 恶意手机软件检测模型

1.1敏感API的定义与获取

出于安全考虑,Android应用软件在利用系统框架提供的关键性服务或系统调用时,需要申请权限,Android系统中定义了100多种权限常量,应用程序只有获得了这些权限,才能在代码中调用其对应的API,对于这类申请了权限才能进行调用的API,本文称之为敏感API。

Android恶意软件主要表现为隐私窃取、恶意扣费、资费消耗、远程控制和系统破坏。恶意软件需要在程序中调用一些敏感API的组合实现这些恶意行为,本文通过对恶意软件数据集的分析,去除恶意软件中很少使用的敏感API,最终确定71个常见的敏感API调用用于恶意软件检测,并根据其实现的功能分成六类,即交互类、系统类、网络类、隐私类、吸费类、数据读写类。表1列举几种常见的敏感API调用,为书写方便省略部分类名及参数。

表1 敏感API分类及部分调用函数

论文数据挖掘使用的是Yajin Zhou等人[7]收集的恶意软件数据集,该数据集中收集了49族1260款恶意软件。但由于Android系统的更新,一些敏感API的调用在不同的系统版本中其实现方法、参数等已经变更,本文根据Android系统的变化建立多版本的API链接关系,以适应不同时期软件API调用的检测。

1.2基于AHP层次分析法求敏感API权值

实验发现,直接对恶意软件数据集做数据挖掘,将挖掘得到的规则集用于检测恶意软件,产生较高的误报率。分析后发现,不同的API的威胁程度是不同的,例如网络访问、读手机状态、写SD卡等敏感操作在正常软件中也频繁出现,如果将这些敏感API组合在一起作为检测规则会出现较大的误差。为避免上述情况发生,针对敏感API威胁程度的不同,采用AHP层次分析法对71种敏感API做加权,再对加权后的数据集进行挖掘,这样可以在规则集中过滤掉一些出现次数较多但权重很小的规则,从而提高预测的准确率。

AHP层次分析法首先要对敏感API建立多级层次结构,本文构造两级层次结构,第一层为敏感API的分类,第二层为每类中的敏感API,构成的层次树如图2(a)。为获得权重值,在层次树双亲相同的同层节点中构造两两判断矩阵,矩阵中按照这一层各个节点之间重要程度进行两两比较,进而将节点划分为若干等级,论文采用了常用的5级定量法,对第一层构造的两两比较矩阵如图2(b)所示。

图2 敏感API分层结构图及第一层比较矩阵

计算第一层矩阵最大特征根λmax=6.6037以及其对应的归一化特征向量为:

WT=(0.485 5,0.079 8,0.128 0,0.145 3,0.128 0,0.033 4)

通过一致性检验,W为归一化的权向量,其中的每一项wi(i=1,2,….6) 即为每一类的权值。运用同样的方法计算每一类中敏感API相对于上层节点权重系数wi,api,最终每一个敏感API的权值为wapi=wi,api*wi,其中wi为此API所在类的权重值。

获得敏感API权重之后,将数据集中软件的API调用做加权处理,再利用FP-growth算法做数据挖掘。

1.3加权FP-growth关联规则挖掘

FP-growth[8]算法因无需多次扫描事务数据库,在运行效率上优于Apriori算法,本文利用FP-growth算法进行加权数据挖掘。提取恶意软件训练数据集中每个软件调用的敏感API构成一项事务加入到事务数据库中,设置API频度最小筛选阈值F和最小支持度筛选阈值S,加权FP-growth关联规则数据挖掘算法如下:

1)扫描事务数据库,计算事务数据库中个API的出现频度;计算API的加权频度=API频度*wapi;删除API的加权频度小于F的API;将API按照加权频度递减排序(这一序列称为L)。

2)再次扫描事务数据库,对于每项事务表示的软件调用API,按照L中的顺序重新排序,并将其插入到FP-Tree中。

3)从FP-Tree中找出频繁项集。

4)对第3)步中找出的每项频繁项,计算频繁项的加权支持度。设某个频繁项T中出现的API调用集合为SAPI;

T的加权支持度=max(wapi| api∈SAPI)*T的支持度;其中T的支持度是指利用数据挖掘得到的频繁项支持度,若频繁项的加权支持度小于S,则从频繁项集中删除该频繁项。

上述算法得到的频繁项集作为恶意软件的检测规则集。利用加权的方法克服了文献[2]中只选取极大频繁项的做法,对一些不是极大频繁项,但同样重要的规则也提取出来,加入到最终的检测集中,进而提高了检测率,降低了误报率。

2 实验及结果分析

为了验证系统的有效性,本文首先把收集的1 260款恶意软件分为两部分,其中70%作为数据挖掘的样本数据,对这部分数据做挖掘得到恶意软件检测规则集;另外的30%数据作为检测数据集,若恶意软件家族中只有一个恶意软件则不放入数据挖掘样本集,直接作为检测数据。实验中对每种恶意软件家族选择了不同的最小频度阈值和最小支持度阈值,以ADRD软件家族为例,选取最小频度阈值为0.8,最小支持度阈值为0.074。用数据挖掘样本做数据挖掘共得到75条规则,应用这些规则对检测数据集进行检测,检测结果如表2所示。

表2 Android系统恶意软件检测实验结果

利用数据挖掘得到的规则对404个恶意软件做检测,检测出330个恶意软件,检测率为81.7%;分析实验结果发现,由于在小样本数据(某种恶意软件家族只有几个恶意软件样本)中,用于数据挖掘的样本较少,导致部分小样本恶意软件家族的检测率较低;再有就是部分恶意软件调用的敏感API权重过小,行为与正常软件行为接近,导致此类软件的检测率低。

本文的加权数据挖掘方法主要去除了一些出现次数频繁而权重小的规则,进而降低了非恶意软件的检错率。为验证提出方法在非恶意软件中的检错率,从百度官方Android市场下载各类Android应用软件115个,其中包括常用的软件集合,如社交软件、游戏软件、Android读书软件、办公软件,最终检测结果是13个软件报出异常,误报率为11.3%;分析发现,误报软件大多是社交类软件,这类软件调用的敏感API多,组合也极其敏感。若在数据挖掘过程中不做加权,利用得到的规则检测115个非恶意软件,报出43个软件异常,误判率达到了37.4%。

3 结束语

为提高基于Android系统的手机安全性,本文提出一种检测Android系统手机恶意软件的方法;论文定义了敏感API调用及其分类,利用恶意软件样本数据集对其软件中的敏感API调用进行数据挖掘,进而得到恶意软件检测规则;针对挖掘规则检测非恶意软件时,产生较高误报率的问题,提出了加权FP-growth关联规则挖掘算法。实验结果表明,本方法的恶意软件检测率达到81.7%,非恶意软件的检错率降低到11.3%,获得了很好的检测效果。

方法获得的敏感API加权系数是根据主观判断不同类API的重要程度,给出的判定矩阵计算得到的,使得敏感API的权重系数是人为确定的,进一步的工作可利用数据集中的数据采用机器学习方法得出权重值。

[1]Sangho Lee,Da Young Ju.Assessment of malicious applications using permissions and enhanced user interfaces on Android[A].(ISI’13): Intelligence and Security Informatics, 2013 IEEE International Conference on.[C].IEEE,2013:270-S270.

[2]杨欢, 张玉清, 胡予濮,等.基于权限频繁模式挖掘算法的 Android 恶意应用检测方法[J].通信学报,2013,34(Z1):106-S115.[3]Schmidt Aubrey-Derrick,Clausen Jan Hendrik,Cam-Tepe Ahmet,et al.Detection Symbian os malware through static function call analysis[A]. (Malware 2009):Proceedings of the 4th IEEE International Conference on Malicious and Unwanted Software[C]. Montreal,Canada,2009:15-S22.[4]Schmidt Aubrey-Derrick,Bye Rainer,Schmidt Hans-Gunther,et al.Static analysis of executables for collaborative malware detection on Android[A]. (ICC’09):Proceedings of the 2009 IEEE International Conference on Communications[C].Dresden,Germany,2009:631-S635.

[5]Iker Burguea,Urko Zurutuza,Simin Nadjmtehrani.Crowdroid:Behavior-based malware detection system for Android[A].(SPSM-’11):Proceedings of the ACM CSS workshop on Security and Privacy in Smartphones and Mobile Devices[C].Chicago. USA.2011:15-S26.

[6]吕晓庆,邹仕洪.基于smali的Android软件敏感API调用日志模块嵌入系统[J].科技论文在线.2012

[7]Zhou Y J, Jiang X X. Dissecting Android malware: characterization and evolution[A]. Proceedings of the 33rd IEEE Symposium on Security and Privacy[C]. Oakland, USA, 2012. 95-S109.

[8]Han J W,P J,Y Y W.Mining frequent patterns without candidate generation:a frequent pattern tree approach[J].Data Mining and Knowledge Discovery ,2004,8(1):53-S87.

Mobile Malware Detection Model Based on Android System

Ma Jinyang, Xu Lei

(School of Computer, Shenyang Aerospace University, Shenyang110136, China)

In order to improve the security of mobile application software based on Android system , a mobile malware detection model is proposed. The model manipulates sensitive API call via data mining to obtain detection rules.To reduce the false positive rate when the rule is used to detect the non malware. a weighted FP-growth association rule mining algorithm is proposed. Based on weighting the sensitive API call, we employ a support threshold to eliminate the rules which preserve small weight and occur with high frequency. The experiments show that the model achevied a detection rate of 81.7% for malwares, and reduced the false positive rate to 11.3%.

Android system; malicious software; data mining ; sensitive API ; FP-growth algorithm

2015-06-29;

2015-08-25。

马晋杨(1991-),男,江苏南通人,硕士研究生,主要从事网络与信息安全方向的研究。

徐蕾(1964-),女,上海人,教授,硕士研究生导师,主要从事网络与信息安全方向的研究。

1671-4598(2016)01-0156-03

10.16526/j.cnki.11-4762/tp.2016.01.043

TP309.5

A

猜你喜欢

调用数据挖掘规则
撑竿跳规则的制定
数独的规则和演变
探讨人工智能与数据挖掘发展趋势
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
让规则不规则
基于并行计算的大数据挖掘在电网中的应用
TPP反腐败规则对我国的启示
基于系统调用的恶意软件检测技术研究
一种基于Hadoop的大数据挖掘云服务及应用