Android移动应用检测研究

2019-06-17 09:30李蜀瑜
计算机应用与软件 2019年6期
关键词:静态应用程序框架

刘 玮 李蜀瑜

1(重庆师范大学涉外商贸学院数学与计算机学院 重庆 410520)2(陕西师范大学计算机科学与技术学院 陕西 西安 710062)

0 引 言

随着互联网与智能手机技术的飞速发展,各类手机应用应运而生,深刻地影响着人们的生活。安卓系统由于其开放、自由的特性,得到了开放手机联盟的大力支持,已成为全球智能移动设备中市场占有率最高的操作系统。

Android是基于Linux内核的操作系统,安卓平台的开放性降低了安卓应用开发的难度,任何对安卓开发感兴趣的人员都可通过简单的注册成为安卓市场的一员,并自由发布自己的应用,这导致安卓应用的安全性大大降低。近年来,关于Android应用的安全性问题层出不穷,受到人们的广泛关注。许多学者分别从应用程序静态代码检测、应用程序执行流程及应用机器学习的自动化检测等方法对此问题进行了研究[1]。本文基于这三种方法,提出了一种基于机器学习的Android检测方法框架,可为Android应用的安全性检测提供参考。

1 Android恶意应用静态检测方法研究

静态分析是在不执行Android应用的情况下检测出应用程序中恶意特征的方法。现有的静态分析方法主要集中在对不同类型恶意软件进行分类和检测上。文献[2]提出了一种基于特征树的静态分析方法,该方法通过将Android应用调用API信息构造成特征树,并设计一种比较算法对树的相似度进行分析,以此实现对Android应用的分类并检测恶意应用。文献[3]提出了一种基于贝叶斯分类的恶意软件检测方法,该方法采用逆向工程对Android应用进行静态分析。文献[4]提出一种执行静态污染分析的方法,通过解析移动应用程序并构造控制流图(CFG)分析源自敏感源的路径,应用数据流分析器检查从源程序发送到远程服务器的任何敏感数据,而不通知用户。文献[5]使用反编译程序从Android应用程序的安装程序生成Java源代码,并应用静态代码分析套件评估恢复的源代码,但此方法仅适用于使用相对较少数量的权限和API调用的应用程序。由于开发人员在应用市场上传应用时,需要签署证书,并分配给其序列号,因此可通过搜索序列号来追踪应用的包装和修改。这是最简单的一种Android应用静态检测方法。

综上所述,静态分析是一种简单、快速的恶意应用检测方法。但大多数静态检测技术很难检测代码执行过程中的恶意行为,例如,应用程序在运行后的代码自动修改及由移动僵尸网络或病毒引起的入侵。

2 Android恶意应用动态检测方法研究

动态分析是通过执行应用程序来检测漏洞的。动态分析检测技术的核心是通过监视应用程序的动态行为,对污染源或系统调用进行跟踪和观察。与静态分析相比,动态分析更为复杂。

文献[6]提出了应用程序动态污点跟踪的方法,即应用程序调用Dalvik虚拟机执行四种类别污点粒度的污染传播:变量、方法、消息和文件,但这种方法只关注数据流,很难保证网络访问的安全。

文献[7]提出了一种基于前向执行能力动态跟踪分析系统DroidTrace,但该系统需要将智能终端与计算机连接起来,并使用Linux命令来收集恶意检测数据,操作较复杂。

文献[8]提出了一种增强的物理架构CARDODL,用于执行在线恶意软件检测,这种方法是一种硬件解决方案,但检测服务的部署实施缺乏灵活性。

文献[9]提出了从API调用、本机代码动态执行和系统调用提取敏感行为特征的检测框架,但由于行为数据的监测和收集要消耗大量的计算能力,所以这种方法会增加额外开销。

静态或动态分析方法检测应用的安全性各有优缺点,静态检测方法花费时间较长,且无法检测应用的交互行为和网络通信安全,而动态检测方法通常需消耗较多的计算资源,可能导致应用运行变慢,因此需要平衡系统检测开销与安全检测性能。大多数学者更倾向于使用二者相混合的移动应用恶意软件检测方法。即首先通过静态分析来检测应用,进一步通过执行应用来进行动态分析,混合分析方法可以实现更高的检测敏感度,如文献[10]提出的移动沙箱Mobile-Sandbox法。

尽管应用静态与动态相结合的恶意软件检测方法可以抵抗恶意软件的反检测技术,并且此类方法已经大大改善了Android应用检测的效率和准确性,但依然缺乏恶意应用的自动分析和识别能力。如何根据已有的Android应用特征信息高效可靠地识别恶意应用是目前Android检测急需解决的问题。

3 基于机器学习的恶意软件检测方法

机器学习的概念是让算法自己从数据中学习所需的参数,以便做出最好的预测。目前已有多种机器学习方法用于数据安全性和恶意应用的检测。文献[11]提出了一种新的机器学习框架,该方法首先从应用中提取一些特征,将这些特征在离线模式下进行训练,进而用于恶意应用的检测。Andromaly[12]是一种基于行为学习的恶意软件检测方法。该方法监视应用软件在移动设备上运行时的特征和事件,然后应用分类器来检测恶意应用程序。Drebin[13]通过大量收集Android应用的特征,并且将这些特征存储用于模式识别,然后基于这些模式对合法应用和非法恶意应用进行判定。文献[14]提出了基于权限的恶意软件检测方法,该方法首先收集来自应用程序的各种权限和动作,然后将分类器应用于所有收集的特征。PMDS(Permission based Malware Detection System)[15]是另一种基于机器学习的恶意软件检测方法,通过从Android应用程序中挖掘权限,基于权限特征进行机器学习,分类识别未知的恶意软件,这种方法的识别准确率已经达到94%。

由于Android是一个开源的、可扩展的平台,因此尽可能多地提取Android应用特征,将会极大地丰富检测功能。且基于机器学习的恶意软件检测方法不仅算法稳定、具有可扩展性,还可大大降低检测过程中的资源消耗。

4 基于机器学习的Android应用检测框架

4.1 基于机器学习的检测模型框架

基于机器学习的Android恶意应用检测方法关键在于获取应用特征信息,并建立机器学习模型,根据模型判定应用的安全性。本文提出一种新的基于机器学习的Android应用检测框架,该框架混合了静态检测技术和动态检测技术的优点,可将所有的恶意应用在安装之前检测出来。该框架如图1所示,首先,从Android应用的APK文件以及清单文件(manifest.xml)中提取特征信息(如字符串常量、意图、权限以及进程信息等),将提取的特征信息和恶意应用进行相似性比较,利用机器学习模型将其分类为合法应用或恶意应用,最后对合法或恶意应用进行标记,输出结果。

图1 基于机器学习的Android应用检测模型框架

4.2 特征信息提取

为建立有效的Android恶意软件检测模型,需要收集应用程序具有代表性的特征:如字符串常量、API调用、系统调用、权限、意图、过滤器、广播接收器、内容提供者、进程名等。这些特征信息可通过逆向工程反汇编应用程序的APK文件,解析应用的二进制文件及清单文件(manifest.xml)进行提取。利用这些特征信息创建(合法应用和恶意应用)特征信息数据库。

字符串常量以及清单文件中的关键字提取后,可将这些特征信息和恶意程序或者合法程序进行对比,以此对应用的安全性进行检测。如果Android应用信息被修改并重新包装或者非法用户越权访问那么此应用就是危险的。

为获得准确的比较结果,在特征信息数据库的基础上构建用于检测恶意样本的数据结构-分类器,以权限和意图为例,表1-表2分别给出了Android应用最常用的10种权限特征与意图特征。将提取的关键字信息与合法或恶意应用的特征信息进行对比,通过调整阈值或应用不同的算法计算恶意应用的估分,以此评估恶意软件的危险性。

表1 Android应用常用权限特征

表2 Android应用常用意图特征

本文仅建立了部分用于检测Android应用安全性的权限特征与意图特征,为了提高检测的准确性,需获取尽可能多的权限与意图特征用于模型建立。同时,为了提高恶意软件判别的准确度,还可对特征信息的范围进行扩展,如加入字符串常量、进程名、广播发送者及接受者等信息,通过对特征信息的机器学习,提高检测准确度。

4.3 Android应用安全性检测

通过机器学习将所有提取的特征融合并组成单个特征向量,应用数理统计算法对恶意软件检测模型进行完善。如使用K-means聚类算法按照功能类型对应用程序分组,然后对属于同一功能类型的所有应用程序提取其权限特征,并以权限特征为研究对象,使用KNN算法进行Android恶意软件的分类检测[16];通过支持向量机对恶意软件基因进行学习[17];应用统计学方法训练数据集,结合聚类算法建立模型以进行应用的安全性检测[18]。

此外,还可加入自动采样强化训练,并进行交叉验证及重复性测试等。通过算子设置自动调整阈值,得出适合检测模型的阈值。在此基础上进行样本训练,然后测试所获得的检测模型。一般地,学习的数据特征越多,基于算法评断的精确度越高。

5 结 语

本文研究了基于静态和动态的恶意软件检测方法,提出了一种新的基于机器学习的Android恶意应用检测框架。此方法可以弥补静态分析和动态分析技术的不足,具有较高的精确性。

该框架首先从各种Android应用(合法和恶意应用)提取特征信息(如用户权限、意图、应用程序敏感字符串等),将特征信息作为机器学习的分类器输入,然后利用应用程序清单文件的关键字等特征来检测恶意软件,最后将所有提取的特征融合并组成单个特征向量,以提高检测的准确性。

该机器学习检测框架具有较高的检测精度和运行效率,同时该框架可根据恶意关键字设计不同检测计算模型,具有扩展性。

猜你喜欢
静态应用程序框架
有机框架材料的后合成交换
框架
最新进展!中老铁路开始静态验收
静态随机存储器在轨自检算法
删除Win10中自带的应用程序
猜猜他是谁
谷歌禁止加密货币应用程序
关于原点对称的不规则Gabor框架的构造
油罐车静态侧倾稳定角的多体仿真计算
我国在WYO框架下面对的贸易保护现状及应对