Android应用异常检测方法研究
刘晓明
摘要:目前面向Android系统的攻击越来越多,因此,分析与检测Android恶意应用已经成为了一个非常重要的研究课题。本-文主要从恶意应用类型,国内外主流检测技术等方面分析了Android恶意应用的检测方法研究现状,并基于当前的检测技术,提出仅将良性样本作为训练集来实现对未知Android应用进行异常检测的方法,取得了良好的实验结果。最后,本文分析了Android应用异常检测方法的发展趋势及未来主要研究方向。
关键词:Android系统;Android应用;检测技术;异常检测
随着移动互联网的快速发展,移动智能终端用户的数量呈现爆炸式的增长。据市场调研公司IDC最新报告显示,在2015年年底,全球智能手机出货量将会超过14亿台,其中运行Android系统的设备将会占到11.5亿台,全球市场占比达到79.4%。同时由9Android系统的开放性,它也成为众多恶意应用开发者的活跃地盘。据猎豹移动安全实验室日前发布的《2014 2015中国互联网安全研究报告》显示,2014年全球感染病毒的Android手机计2.8亿部,平均每天80万部Android手机中毒,而中国以近1.2亿部手机中毒高居榜首,已成为全球受病毒之害最严重的国家。因此,如何对发布到互联网及应用商店的应用程序的安全性进行有效的检测和评测,无论是对应用市场的监管方还是对终端用户来说都具有非常重要的意义。
本文通过对国内外研究现状进行分析,对目前主流的恶意应用类型及检测方法进行深入分析与总结,以期能为相关工作提供参考。同时结合自己的研究成果,提出了一种仅基于良性样本作为训练集来实现对未知Android应用进行异常检测的方法。最后提出了Android应用异常检测的发展趋势及本文未来的主要研究方向。
1 Android平台下恶意应用的类型
随着智能手机的广泛应用,发布手机应用程序的官方市场和第三方市场上都出现了含有恶意代码的应用程序,因此,分析与检测Android恶意应用已经成为了一个非常重要的研究课题。但无论何种检测方法都需要对Android恶意应用类型有深入的了解。Zhou等人根据恶意应用的样本来提取每个恶意家族的足迹。通过对现存市场中49个恶意家族共计1260个恶意应用进行静态分析,发现目前Android平台下的恶意应用主要包括3大类,分别是安装攻击、功能触发以及恶意负载。
1.1 安装攻击
Android平台下的安装攻击式恶意应用,其主要就是将自己伪装成时下人们常用的各类应用软件,吸引用户对其进行下载,这样就能够达到快速传播的目的,当用户错误下载了这类恶意应用,其就会通过重打包、更新包以及偷渡式下载方式对用户的移动通讯端口进行入侵。其中重打包技术是目前恶意应用开发者普遍使用的攻击技术,占研究数据的86%。攻击者从应用市场下载主流应用程序,对其系统进行重新编码以此隐藏其恶意行为,然后利用应用平台的开放性,将具有恶意行为的应用重新发布到应用市场,进而通过用户的下载安装实现其盗取用户隐私、扣取费用等恶意目的;而更新包的方式主要是在用户安装过程中提示需要下载更新包,而更新包中就隐藏着恶意编码,进而对用户端进行入侵;偷渡式下载主要是在安装软件中有部分恶意网站的链接,引导用户对恶意应用进行下载。
1.2 功能触发
部分恶意应用通过注册相关的系统事件使其具有监听功能,当系统自发或由用户完成某一操作后,恶意应用便可监听到这一事件,进而执行其恶意代码。如当Android手机开机后,系统就会发送BOOT_COMPLETED广播,监听这个广播就能监听开机。此广播也因此成为恶意应用开发者最常利用的监听事件,占所研究数据的83.3%。
2 Android平台下恶意应用的检测技术
由于第三方市场的开放性,任何人都可以向应用市场提交应用。用户通过所有不可靠途径得到的应用程序很有可能被植入了恶意代码,这些恶意应用可对用户实施恶意扣费、窃取隐私、系统破坏等恶意行为,严重干扰到用户的正常使用。因此,如何对发布到互联网及应用商店的应用程序的安全性进行有效的检测和评测,无论是对应用市场的监管方还是对终端用户来说都具有非常重要的意义。
2.1 基于签名的检测技术
传统的基于签名的检测技术主要依托于手机软件的签名。重点介绍了基于特征码的恶意应用检测方法。国外著名的Android恶意应用检测工具Androguard也是基于签名的检测方法。然而最新的研究显示,通过简单的程序陷阱便可使这种基于低级语义签名的检测技术失去其有效性。在此基础上,Feng等人提出了Apposcopy检测技术,该技术首先从控制流和数据流两方面对某一恶意家族进行签名,所谓控制流即用来显示应用程序中函数的控制结构,通过控制流分析可得到应用程序可执行的路径。数据流可显示出敏感信息的流向。
当检测某一未知应用程序时,Apposcopy通过静态分析技术获得该应用的组件调用图ICCG和数据流图,通过与GoldDream家族签名进行匹配得知此应用为GoldDream家族的恶意应用。使用该类检测方法虽然对具有强制安装特点的恶意应用的传播起到了一定程度的限制作用,但该方法不能检测未知恶意家族的应用。在当前零日攻击越来越多、越来越普遍的情况下,研究可检测未知恶意应用的方法变得非常重要。
2.2 基于行为的检测技术
基于行为的检测技术可分为基于源代码分析的静态检测方法和基于行为模拟的动态检测方法。(1)静态方法主要研究使用反汇编反编译技术或者在smali中间代码上运用控制流和数据流分析技术来进行恶意应用检测,优点是代码覆盖率高。(2)动态方法是在系统运行过程中收集应用程序的一些行为信息,优点是绕过了静态方法遇到的代码混淆和加密等方面的问题。
作者首先从谷歌应用市场收集到良性应用22500个,通过LDA,提取出每个应用的主题,如用map、traffic、route和position来描述航海应用,通过k-means算法进行良性应用的类别划分,最终得到32种类别。对于每一种类别,CHABADA通过静态分析技术提取出该种类别所使用的敏感API,组成特征向量集,而对于该种类别的恶意应用往往会调用一些相对异常的敏感API,如London Restaurants的恶意应用会调用TelephonyManager.getDeviceId(),TelephonyManageLgetLinelNumber等。
3 实验成果
通过分析国内外研究现状与主流检测技术,本文采用了一种只基于良性样本作为训练集来实现对未知Android应用进行异常检测的方法。该异常检测方法首先收集大量良性应用数据集,然后通过静态分析技术从权限、组件、代码等方面提取能够反映Android应用行为的6000多个特征,最后利用最近邻(K-NN)机器学习算法建立良性应用行为模型,如果待检测的应用行为与建立的良性行为模型之间的偏差超过一定阈值,则判断该应用存在异常恶意行为。大量实验结果表明K-NN算法在检测准确率和执行效率上都能取得很好的效果。
ROC曲线图是一种衡量检测结果的直观图,x轴为FPR即误报率,Y轴为TPR即检测率,通过ROC曲线图可直观反映出检测率随误报率的变化情况。本文通过绘制ROC曲线图进行算法实验结果的直观展示。从图4可以看出,就检测效果而言,K-NN算法在误报率为6%时检测率达到97%。
4 结语
本文通过分析国内外研究现状,对恶意应用类型及主流检测方法进行了深入分析与总结。文中提到的各种检测方法均能达到一定的检测效果,但随着恶意应用的迅速发展,在零日攻击越来越多、越来越普遍的情况下,研究可检测未知恶意应用的方法变得非常重要。因此,在接下来的研究中应不断进行算法的改进,使得对已知和未知恶意应用的检测都能取得良好的实验结果。同时本文基于当前的检测技术,提出了仅将良性样本作为训练集来实现对未知Android应用进行异常检测的方法,取得了良好的实验结果,K-NN算法在误报率6%的情况下能达到97%的检测率。下一步工作中,将进一步分析不同类型良性应用的行为特征,通过改进算法进行不同类型良性应用的多分类研究。