基于混合特征的Android恶意软件静态检测

2014-01-01 03:10卢文清何加铭曾兴斌樊玲慧
无线电通信技术 2014年6期
关键词:调用静态分类器

卢文清,何加铭,2,曾兴斌,2,樊玲慧

(1.宁波大学通信技术研究所,浙江宁波315211;2.浙江省移动网应用技术重点实验室,浙江宁波315211;3.宁波新然电子信息科技发展有限公司,浙江宁波315211)

0 引言

恶意软件作用一般分为搜集用户信息、窃取信用卡信息、组建僵尸网络和获取root权限等。趋势科技的监测数据显示,截止到2012年底,Android系统中的恶意应用已经达到35万个。而在2013年,这一数字很有可能增长4倍,跃升至140万个,对信息安全构成严重挑战[1]。

SVM是在高维特征空间使用线性函数假设空间的学习系统,它是由一个来自最优化理论的学习算法训练,该算法实现了一个由统计学理论导出的学习偏置。它在文本分类、生物信息、语音识别、图像分类[2]、故障识别和预测以及信息安全等诸多领域有了成功的应用。因此,将支持向量机引入手机恶意检测是一种非常有效的方法。手机恶意检测方法分为静态检测和动态检测。文献[3]是基于行为的恶意检测,需要模拟应用运行环境,监控系统变化,属于动态检测。本文的方法是在Android应用包上做静态分析,导出分类器所需的向量集,属于静态检测。

对于Android恶意检测,静态分析有很多有利条件。不用模拟手机软件运行环境,耗用资源少、快速且有较高的检测准确率。像Android Leaks[4]和文献[5]提到的组件都属于静态检测工具,但是都集中在检测信息泄露的方面。文献[6]应用机器学习方法对Android应用进行分类,其研究对象为工具类应用和游戏类应用。文献[7]通过抽取DEX文件的类与函数名应用信息,作为程序的行为特征,应用机器学习算法对样本进行分类,但分类精度不高。文献[8]采用用户级和内核级的特征向量,应用机器学习算法对恶意软件分类,也是没有考虑到权限方面的影响。文献[9]特征集来源静态链接库和应用程序接口,未涉及到Android权限和命令行的调用,文献[10]则使用的是单类支持向量机。

综上所述,提出了基于混合特征的Android恶意软件静态检测方案,利用危险API调用、命令行和权限集结合组成的混合特征集,然后采用主成分分析(PCA)方法和支持向量机(SVM)结合构造分类器,对Android样本进行恶意检测。混合特征更能全方面地表现 Android恶意软件的特征,且采用PCA方法能够去除一些冗余特征,提高分类精度。

1 基于混合特征的Android恶意静态检测

1.1 Android应用基础

Android应用大部分都是运用Java语言开发的。Android SDK工具编译源代码,将数据和资源打包成一个以.apk结尾的包文件。编译生成的apk文件都可以看做一个在Android上运行的应用。

Android应用程序由4个组件组成:活动(Activities)、服务(Services)、广播接收(Broadcast Receivers)和内容提供者(Content Providers)。每一个应用程序必须在程序工程根目录下的manifest文件中声明自己的组件。在Android系统运行一个程序组件前,系统必须读取应用程序的manifest文件来确定有多少组件存在。这个文件还声明了应用需要的权限,例如网络访问权限和通讯录访问权限等。

Android应用程序apk文件是由一系列的文件压缩而成,这些文件主要包括:AndroidManifest.xml,classes.dex(一个完整的字节码文件,由Dalvik VM解释),其他二进制或XML等资源文件都保存在res/和assets/目录下。

本文的检测方法是利用Android应用依赖的平台API和它的权限列表、系统调用等属性来作为应用程序可疑行为的指示器,例如信息泄露、运行时实时下载恶意软件或嵌入额外的程序。这些属性作为分类器的样本数据,可以用来决定Android应用程序是正常的还是恶意的。

1.2 样本集的获取

VirusTotal是一个免费的病毒、蠕虫、木马和各种恶意软件分析服务,可以针对可疑文件和网址进行快速检测。在第3方应用市场下载多款Android应用,这些软件覆盖多种不同类型,包括娱乐、工具、体育、健康卫生、新闻和杂志、财经、音乐、商贸、教育以及游戏等。使用VirusTotal对这些应用进行检测分析,确认是否为恶意软件。为了试验中正、负样本的平衡,经过人工整理,整理出450款恶意软件和450款正常软件。分析过程中发现,经过官方发布的软件,含有较少的威胁,而非官方的软件,则包含较多的恶意行为。

1.3 Android应用逆向工程

恶意软件和正常软件都为apk文件,为了获得建立分类器模型的样本数据,采用开源工具apktool,将apk文件解压成mainifest文件、资源文件、签名文件和dex文件,然后利用工具dex2jar将dex文件反编译成.jar文件,最后利用Java Decompiler生成java源文件。然后在代码源文件和mainifest文件中提取所需要的混合特征,具体过程如图1所示。

图1 Android逆向工程过程

1.4 特征向量的获取

经过Android应用的逆向工程后,得到应用源代码和manifest文件,采用匹配算法,探测程序中出现的API调用、命令行和权限列表,并计算它们出现的次数作为这个应用的特征。

API调用是应用程序与手机相互作用的纽带,API调用可以获取手机的subscriber ID、phone ID和其他类似个人隐秘信息。同样,可以发送/接收SMS、调用手机号码、获取手机信息和下载其他应用程序等。而Android恶意行为包括窃取用户隐私、远程控制、私自下载和恶意扣费等行为,这些行为涉及的API如表1所示,利用匹配算法,计算出每个应用中对应API的数目,形成API特征向量[FAPI]1×14。

表1 恶意软件涉及的API列表

因为Android是基于Linux系统的,因而Linux系统命令可以在Android上运行。这些命令包括‘chmod’、‘mount’、‘remount’和‘chown’等。其他包括Java Realtime.exec命令,它可以运行子进程来下载恶意软件。分析450款恶意软件,统计其中使用频率较高的系统命令如表2所示,利用匹配算法,计算出每个应用中对应系统命令行的数目,形成命令行特征向量[FCMD]1×10。

表2 命令行列表

每个 apk文件都包含一个 mainifest文件,Android系统可以在这个文件中获得应用所需要的权限的详细信息。这些权限包括各种硬件访问权限(GPS、照相机等)和敏感信息(通讯录、短信等),还有访问其他应用的权限。例如,权限“android.permission.INTERNET”允许应用连接网络;权限“android.permission.READ_CONTACTS”允许应用访问手机通讯录。450个恶意软件中使用频率较高的权限列表如表3所示,利用匹配算法,计算出每个应用中对应权限的数目,形成权限特征向量[FPER]1×20。

表3 恶意软件使用频率较高的权限列表

1.5 评价方法

有多种方法可以评价基于机器学习方法的分类器性能。在本文中引用以下提到的公式来评价分类器性能。以下公式中,nnor→nor代表正常应用软件被分类器正确分类的数目;nnor→sus代表正常应用软件被分类器错误分类的数目;nsus→sus代表恶意软件被分类器正确分类的数目;nsus→nor代表恶意软件被分类器错误分类的数目。准确率Acc和错误率Err分别为:

式中,Acc代表所有被正确分类的应用占所有测试应用的比例,包括正常软件和恶意软件;Err代表所有被错误分类的应用占测试应用的比例。其中,Err=1-Acc。还定义了 FPR、FNR、TPR、TNR 和精度P:

FPR代表正常应用被分类器错误分类的数目占所有测试正常应用中的比例。TNR测量的是正常应用被分类器正确分类的数目占所有测试正常应用中的比例。TPR和检测率意义相同,因为它测量的是恶意应用被分类器正确分类的数目占所有测试恶意应用中的比例,它同样代表着分类器检测未知恶意软件的能力。FNR代表恶意应用被分类器错误分类的数目占所有测试恶意应用中的比例,是检测率的补充。预测率反映整个恶意检测模型预测恶意软件的预测能力。

2 方法和实验

实验所用均来自Android第3方应用市场,经过VirusTotal分析检测,最终整理得到450款正常软件和450款恶意软件,经过图1所示的方法,将每个apk文件转化为对应的[FAPI,FCMD,RPER]1 ×44 的特征向量,随机选择正常软件和恶意软件的70%作为训练集,剩余作为测试集。

所有实验在Intel(R)Core(TM)i5、内存4G的计算机上运行,算法在matlap 2010a上实现,SVM实现采用libsvm3-17,实验中所有参数都采用默认参数。式(1)和式(2)对应,式(4)和式(5)对应,式(3)和式(6)对应,因而实验结果只记录 Acc、FPR、TPR 和P。

2.1 实验1

首先分别提取应用放入 API特征[FAPI]1×14、系统命令行调用特征[FCMD]1×10和权限特征[FPER]1×20这3个特征;然后采用SVM对Android应用进行分类,2类应用在不同的单一特征下的运行10次后平均分类结果如表4示。

表4 单一特征对应的分类结果

从表4以看出,无论使用哪种单一特征对恶意软件的分类,其分类的结果都不高。其中权限特征的分类结果要明显低于其他两种特征,检测准确率Acc只有0.725 9,其原因是在于正常软件与恶意软件大体上都拥有相似的权限,区分度不高。系统命令行特征分类结果Acc为0.833 3,低于API特征分类结果的0.870 4,可以看出API特征在3种特征中对Andriod恶意软件的检测能力最高。而基于系统命令行特征分类结果在于有些恶意软件不调用系统命令行,也能达到其恶意攻击用户手机的目的。同样,有些恶意软件只在代码中调用危险的API,也能攻击用户手机,因此可以看出,单一特征不能为Android恶意软件检测提供高精度的检测率。

2.2 实验2

首先对实验1中所提取的3种特征进行合并,从而得到 Android应用的混合特征[FAPI,FCMD,RPER]1×44。然后利用PCA方法对混合特征进行降维处理,去除冗余信息,最后利用libsvm对Android应用进行分类,记为PCA-SVM算法。同样,为了对比实验,不对混合特征做处理,利用libsvm对Android应用进行分类,记为SVM算法。10次运行后平均分类结果如表5所示。

表5 2种算法的图像分类结果比较

从表4和表5可以看出,单一特征的Android恶意软件检测都要低于混合特征的Android恶意检测。实验结果表明,混合特征在Android恶意检测方面有更佳的检测能力。从PCA-SVM算法和SVM算法的比较结果上可以看出,PCA-SVM算法在去除混合特征中冗余特征后,分类结果更优。

综上所述,Android静态恶意检测中,混合特征恶意检测准确率要高于单一特征的恶意检测准确率,Android恶意软件实现手段的多样化,使得单一特征不足以表现Android恶意软件的特征。而混合特征可以多方面地表现 Android恶意软件,基于PCA的SVM分类器对Android恶意静态检测有很高的准确率。

3 结束语

通过多款恶意软件,从中分析出恶意软件中的危险API调用、危险系统命令行和权限集,并以这些特征建立Andriod恶意静态检测模型。通过对450款恶意软件和450款正常软件进行恶意检测仿真实验,实验结果表明,基于混合特征的Android静态检测方法能够有效地提高Andriod恶意检测的检测精度和恶意检测模型的泛化能力。

[1] 趋势科技.2013信息安全关键十大预测报告[J].计算机安全,2013(2):75-76.

[2] 李钊,李建军,李智生,等.基于生物视觉特征的SVM目标分类算法[J].无线电工程,2012,42(10):58-60.

[3] BURGUERA I,ZURUTUZA U,NADJM-TEHRANI S.Crowdroid:Behavior-based Malware Detection System for Android[C]∥ Proc.First ACM Workshop on Security and Privacy in Smartphones and Mobile devices(SPSM’11),New York,NY,USA,2011:15 -26.

[4] GIBLER C,CRUSSELL J,ERICKSON J,et al.Android Leaks:Automatically Detecting Potential Privacy Leaks in Android Applications on a Large Scale[C]∥ Proc.Fifth Int.Conf.Trust and Trustworthy Computing(TRUST 2012),Vienna,Austria,2012:291 -307.

[5] MANN C,STAROSTIN A.A Framework for Static Detection of Privacy Leaks in Android Applications[C]∥Proc.27thAnnualACM Symp.AppliedComputing(SAC’12),Trento,Italy,2012:1457 -1462.

[6] SHABTAI A,FLEDEL Y,ELOVICI Y.Automated Static Code Analysis for Classifying Android Applications Using Machine Learning[C]∥ in Proceedings of the 2010 International Conf.on Computational Intelligence and Security,2010:329 -333.

[7] 房鑫鑫.Android恶意软件实现及检测研究[D].南京:南京邮电大学,2013:36-46.

[8] DINI G,MARTINELLI F,SARACINO A,et al.A Multilevel Anomaly Detector for Android Malware[J].In:Kotenko,I.,Skormin,V.(eds.)MMM-ACNS 2012.LNCS,2012(7531):240-253.

[9] WANG T Y,WU C H,HSIEH C C.A Virus Prevention Model Based on Static Analysis and Data Mining Methods[C]∥ Proc.IEEE Eighth Int.Conf.Computer and Information Technology Workshops,Sydney,2008:288 -293.

[10] SAHS J,KHAN L.A Machine Learning Approach to Android Malware Detection[C]∥ European Intelligence and Security Informatics Conf.,Odense,Denmark,2012:141-147.

猜你喜欢
调用静态分类器
最新进展!中老铁路开始静态验收
静态随机存储器在轨自检算法
核电项目物项调用管理的应用研究
基于实例的强分类器快速集成方法
基于系统调用的恶意软件检测技术研究
加权空-谱与最近邻分类器相结合的高光谱图像分类
结合模糊(C+P)均值聚类和SP-V-支持向量机的TSK分类器
油罐车静态侧倾稳定角的多体仿真计算
一种基于置换的组合分类器剪枝方法
利用RFC技术实现SAP系统接口通信