苗博 陈子豪 殷旭东
摘 要:Android恶意软件发展迅速,变种繁多,对Android恶意软件检测的研究与分析有着重要的实际意义。文章基于Android恶意软件的类型特点和检测技术,对国内外的检测方法进行介绍和分析。从恶意软件的发展角度,分析检测方法的技术选择;从检测技术分析检测方法的优缺点。重点分析总结了基于静态特征检测、基于动态特征检测和基于混合特征检测的几种检测方法。最后展望了Android恶意软件检测方法的发展趋势。
关键词:Android;恶意软件;检测方法;特征;机器学习
Android是Google公司的一種基于Linux的自由、开源的操作系统,由于其开放、自由的原则和应用市场的扩大,Android恶意软件开始泛滥。
2018年Android恶意软件专题报告[1]中显示,从2012年到2015年,移动端新增恶意软件数量情况急剧恶化,2015全年新增恶意软件数量达到约1 874.0万个。而从2016年开始,新增恶意软件数量逐年下降。恶意软件新增数量减少的原因除了Google每次在升级版本时加强系统安全性,更有力的是恶意软件检测方法的发展和升级。
Android恶意软件的检测引起广大研究人员的关注,对不同的检测方法进行了大量研究。本文介绍了恶意软件的发展和种类,并对恶意软件检测方法进行分析和介绍。
1 Android恶意软件
由中国互联网协会提出的恶意软件官方定义为在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。
1.1 恶意软件的发展与现状
自从2010年第一款Android恶意软件FakePlayer[2]出现开始,到目前为止,针对Android的恶意软件层出不穷。除了传统的木马、病毒、蠕虫、DDoS、后门等,最近几年,又出现了针对信息和数据的间谍软件、恐吓、勒索软件以及最普遍、最大众化的广告软件。
随着技术的发展与进步,恶意软件的技术也在不断升级。2018年来,恶意软件中利用的新兴技术主要包括:利用调试接口传播;Kotlin语言开发的恶意软件首次发现;劫持路由器设置;篡改剪切板内容等。
1.2 恶意软件的分类
除了传统的根据恶意软件形式的分类方法,也有针对Android恶意软件的行为特征进行分类的[3]。(1)恶意软件安装:重打包、更新攻击、诱惑下载、其他;(2)恶意软件运行;(3)恶意载荷:提权攻击、远程控制、信息收集;(4)权限使用。
1.3 面临的挑战和难题
虽然近年的恶意软件新增数量在逐年减少,但还存在着大量的恶意软件威胁。随着5G的到来,在全新的领域中,移动平台可能又将迎来大量的新型恶意软件的威胁。而且,随着社会的发展,未来极大可能面临的是通过基于内容的恶意软件进行的人与人之间的斗争,电信诈骗等极其损害大众利益和家庭幸福的手段可能将会利用恶意软件制造出更加让人迷惑的骗局。
2 Android恶意软件检测
Android恶意软件检测其流程主要为样本获取和特征选择,再根据不同的特征选择不同的检测方法。基于特征检测可以分为静态检测和动态检测,近年来还出现了基于静态特征和动态特征结合的检测方法,也成为混合特征检测。
目前,很多的研究人员将机器学习和传统检测方法相结合,利用不同的分类算法构成分类器对应用软件进行检测和分类,使检测更加快速和准确。
2.1 静态检测
针对Android应用程序,典型的静态特征就是APK文件。APK文件中包括各种特征,如权限、Java代码、网络地址和硬件组件等。
最早出现的基于签名的恶意软件检测方法,就是从APK文件中提取签名,然后通过签名进行匹配检测已知恶意软件,但是无法对变种的、未知的恶意软件进行检测。而后大量研究学者提出改进,2013年,秦中元等[4]提出利用MD5校验的检测技术以及对于未检测过的APK文件,可根据权限来进行检测和分析。到目前为止,基于权限和API的静态检测技术[5]仍然高效可行。
卜义云[6]提出在传统的静态检测方法中,由于研究者大都带有个人主观性进行设定,这样的不确定性很大程度影响了最终检测结果的准确性。所以基于静态检测的原理,引入机器学习的分类算法对个人主观因素以及对未知恶意软件的检测有着很好的改进。
许艳萍等[7]提出对Android应用软件提取权限为特征,采用IG特征选择算法[8]优化特征选择,利用改进朴素贝叶斯算法构建分类器进行检测,大大提高了检测的效率。
谢丽霞等[9]提出一种基于Bagging-SVM(支持向量机)算法的检测模型。该模型首先提取应用软件的权限信息、组件信息作为特征,采用平衡数据集训练基于Bagging算法的SVM集成分类器,解决了由于数据不平衡导致的检测效率低的问题。
陈苏婷等[10]提出一种针对关联权限的基于随机森林的检测方法。利用机器学习和数据挖掘的方式分析样本中提取出的关联权限是否具有二义性,并用随机森林分类器检测恶意软件。该方法突破了传统方法对特定权限进行检测的局限性。
2.2 动态检测
动态检测即应用程序在运行时对应用程序的动态行为和系统响应进行分析。研究最多的动态特征主要为:系统调用和网络流量。
在早期3G时代,异常流量现象就普遍存在,李俊[11]提出了基于统计的异常流量进行检测和判定恶意软件,而目前基本覆盖的4G以及即将到来的5G时代,面临着大量的恶意流量的威胁。因此,许多研究者把网络流量作为研究对象。王闪闪[12]提出捕获Android中网络数据包的流量信息,然后使用该信息训练SVM分类器,通过SVM分类器进行对恶意软件的检测。
除了网络流量以外,动态行为的监测也常常作为动态特征被广大研究者研究。张吉[13]提出一个Android自动化测试搭配使用终端监控技术的动态检测模型。但传统的方法具有不全面和不实际的缺点。张超钦等[14]提出一种基于马尔可夫链及支持向量机的检测方法。该方法把应用软件对功能的调用序列当成离散时间Markov链,通过统计相邻系统调用对的出现频率来计算状态转移概率矩阵。把转移概率矩阵转化为特征向量,作为SVM的输入进行训练,从而进行检测,大大提高了准确度。
2.3 混合特征检测
混合特征即静态特征和动态特征的结合。静态特征检测最为方便,特征提取较为容易,但存在难以解决加壳、代码混淆等问题。动态特征检测相比前者更加全面,但是动态特征提取难度相对较大,且需要root设备。由于基于单一特征的检测方法各有利弊,选用混合特征进行检测相对两者较为全面,但增加了检测难度。
冯擘[15]利用静态分析和动态分析提取到相应的特征,基于静态特征和动态特征得到混合特征,再利用改进的AdaBoost-RBFSVM算法对混合特征进行分类,然后进行检测。
3 结语
本文介绍了Android恶意软件的发展和分类,以及基于Android应用软件的静态特征、动态特征和混合特征,分别分析了相对应的检测方法。
Android恶意软件检测技术已经取得很大的进步,但是目前仍存在大量恶意软件以及将来还可能会出现的未知恶意软件。恶意软件技术在不断地升级变种,研究者还需持续关注新型技术以及针对新型恶意软件检测方法进行开发。
随着人工智能时代的到来,越来越多的机器学习算法被运用到Android恶意软件检测技术领域中,未来人们与恶意软件的斗争可能会成为机器之间的斗争、算法之间的斗争。
[参考文献]
[1] 360烽火实验室.2018年Android恶意软件专题报告[EB/OL].(2019-02-18)[2019-03-01].http://blogs.360.cn/post/review_android_malware_of_2018.html.
[2]JIANG X X,ZHOU Y J.Dissecting Android malware: characterization and evolution [C].San Francisco:Proceeding of IEEE Symposium on Security and Privacy,2012:95-109.
[3]卿斯漢.Android安全研究进展[J].软件学报,2016(1):45-71.
[4]秦中元,徐毓青,梁彪,等.一种Android平台恶意软件静态检测[J].东南大学学报(自然科学版),2013(6):1162-1167.
[5]陈红闵,胡江村.安卓恶意软件的静态检测方法[J].计算机系统应用,2018(7):26-33.
[6]卜义云.基于机器学习的Android恶意软件静态检测系统的设计与实现[D].成都:电子科技大学,2016.
[7]许艳萍,伍淳华,侯美佳,等.基于改进朴素贝叶斯的Android恶意应用检测技术[J].北京邮电大学学报,2016(2):43-47.
[8]FEIZOLLAH A,ANUAR N B,SALLEH R,et al.A review on feature selection in mobile malware detection[J].Digital Investigation,2015(13):22-37.
[9]谢丽霞,李爽.基于Bagging-SVM的Android恶意软件检测模型[J].计算机应用,2018(3):818-823,878.
[10]陈苏婷,王军华,张艳艳.基于随机森林的Android恶意软件检测方法[J].计算机工程与设计,2017(9):2374-2378.
[11]李俊.Android平台下基于流量监测的安全软件设计与实现[D].成都:西南交通大学,2014.
[12]王闪闪.基于网络流量的Android恶意应用识别方法研究[D].济南:济南大学,2018.
[13]张吉.Android平台下恶意软件动态检测技术研究[D].天津:天津大学,2012.
[14]张超钦,胡光武,王振龙,等.一种基于支持向量机的安卓恶意软件新型检测方法[J].计算机应用与软件,2018(10):292-298.
[15]冯擘.Android平台恶意软件检测系统的设计与实现[D].北京:北京交通大学,2018.