- 1 -
中国科技论文在线
安卓恶意应用检测中的特征研究与应用#
马君丽,王伟**
基金项目:教育部高等学校博士学科点专项科研基金(20120009120010)资助
作者简介:马君丽(1991-),女,硕士,主要研究方向:安卓安全
通信联系人:王伟(1976-),男,副教授,主要研究方向:安卓系统安全、工业控制系统安全、网络攻击行
为、入侵检测等
(北京交通大学 计算机与信息技术学院,北京 100044)
摘要:近年来, 安卓(Android)平台以其良好的用户体验和开放性等特点得到迅速发展,5
但与此同时,该平台也成为了恶意攻击者的主要目标。安卓平台的应用类别趋于多样,恶意
应用行为趋于复杂,已成为应用市场管理和恶意应用检测面临的主要挑战。针对不断恶化的
安卓安全形势,本文从恶意应用检测的角度,首次从三个方面分析总结了恶意应用检测可能
用到特征类型以及近期相关研究中使用的部分数据集,这些工作可为恶意应用检测的后续研
究工作提供有效的支持。本文使用 116,028个安卓样本,共 7个类型的静态特征结合两种机10
器学习算法进行了大规模的安卓恶意应用检测的应用并取得了较为理想的结果,最高分类正
确率达 %,误报率 %。
关键词:移动安全;安卓;恶意应用检测;特征
中图分类号:TP309
15
The research and application of features in the Android
malware detection
MA Junli, Wang Wei
(School of Computer and Information Technology, Beijing Jiaotong University, Beijing 100044)
Abstract: In recent years, Android platform has a rapid development because of its superior customer 20
experience and openness. Meanwhile the platform has become the primary target of malicious attackers.
It has become the major challenge of Android market management and malicious application detection
that the category of application from Android platform tend to be diverse and the behavior of malicious
application tend to be complex. For the continued deterioration of the Android security situation, this
paper analysis the available features in malicious application detection and some related datasets. The 25
work can provide effective support for subsequent follow-up study about the features in malicious
applications detection. So the research of automatic classification of Android applications is of great
significance. We use two machine learning algorithms to detect malicious applications with 116,028
Android applications and 7 kinds of static features. After a great deal of experiments, our detection
accuracy rate reached % with FPR %. 30
Key words: Mobile Security, Android, Malware Detection, Features
0 引言
随着移动互联网的迅猛发展,移动终端已成为国民信息基础设备,但移动终端面临的安
全问题也日益凸显。Android 作为市场占有率最高的移动智能设备操作系统,成为了攻击者35
的主要目标。2014 年 F-secure 的报告数据显示,99%的新威胁专门针对 Android 平台[1]。
Google Play 作为 Android 官方应用市场,是 Google 为 Android 设备开发的在线应用商
店,由于 Android 系统的流行,大量第三方应用市场提供类 Google Play 的服务。应用市场
是 Android 平台应用分发的主要方式,开发者将应用上传到应用市场供用户下载使用,而应
用类别多样化,应用行为复杂化成为恶意应用检测面临的一个重要挑战。恶意应用的恶意行40
为各异,如窃取用户数据,发送扣费信息等。提取何种特征可能直接影响恶意应用检测效果,
- 2 -
中国科技论文在线
所以本文主要对 Android 恶意应用检测中可用的特征进行分析归纳。La Polla 等人[2]调查了
不同类型的恶意应用和不同的恶意检测方法,但未集中讨论检测时所用特征。Suarez-Tangil[3]
总体上讨论了智能设备上的恶意应用,但只分析了较少的特征。Peng 等人[4]系统介绍了多种
操作系统相关的恶意应用。本文着重 Android 系统,首次对近年来相关恶意应用检测的研究45
中使用的 Android 特征进行调研,在恶意应用检测实验中提取特征的类型和数量会对实验结
果起决定性影响,所以本文工作对未来 Android 恶意应用检测研究具有一定的参考价值。
本文组织结构如下:第 1 部分介绍相关研究背景及 Android 应用的结构分析;第 2 部分
系统地分析了在恶意应用检测中使用特征类型以及数据集;第 3 部分为实验部分,本文在大
规模 Android 样本上使用支持向量机和随机森林算法进行了恶意应用检测的对比实验,并取50
得较好的实验结果;第 4 部分对本文工作进行了总结。
1 研究背景
Android 恶意应用的泛滥
在如今的手机市场上,主要的智能手机操作系统有:Android、iOS、Windows Phone 和
BlackBerry OS 等。Android 系统由于其开放性的特点,吸引了大批用户、手机厂商、应用开55
发商和销售商,如今,Android 系统已经在全球智能手机市场中占据主导地位。IDC(互联
网数据中心)2015 年第二季度最新报告数据[5],Android 在全球智能手机系统市场份额不断
走高,在 2015 年第二季度全球智能手机市场达 百万台出货量,其中 Android 占据了
%的市场份额。图 1 为 Android 较其他手机操作系统市场份额对比图[5]。
60
图 1 全球智能手机操作系统市场份额(IDC,2015 Q2)
Fig .1 Worldwide Smartphone OS Market Share(Share in Unit Shipments)(IDC,2015 Q2)
针对 Android 系统的攻击数量稳定上升,恶意应用的增长不仅降低了设备的性能,还对
用户隐私和数据安全带来严重的问题。2015 年 G-data 最新数据显示,在 2015 年前六个月,
新的 Android 恶意应用增长首次打破了新纪录:新 Android 恶意应用实例的数量达到了 10065
万之多。因此,虽然目前研究者们对 Android 安全的研究较为深入,但由于恶意攻击者的攻
击方式和技术等都层出不穷,随着 Android 的流行 Android 应用类别和数量都不断激增,应
用类别多样化,应用行为复杂化,这都给 Android 安全的研究提出了很大的挑战。
Android 应用的结构
对 Android 应用的研究都基于对其应用本身的深入剖析,因此本节对 Android 应用的结70
构进行简单分析。Android 应用通常使用 Java 语言开发,使用 Android SDK 工具编译源代码,
每一个安装到手机平台上的应用都被打包成以 APK 结尾的包文件,APK 是 Android
- 3 -
中国科技论文在线
Application Package 的缩写,即 Android 安装包,其中包含应用的二进制代码、资源、配置
文件等。Android 应用程序由四个基本组件组成:Activity(活动)、Service(服务)、Content
Provider(内容提供商)和 Broadcast Receiver(广播接收器)。Activity 是 Android 应用中负75
责与用户交互的组件,为应用提供可视化用户界面。Service 通常运行在后台,一般不与用
户交互,通常用于为其他组件提供后台服务。Content Provider 是应用程序之间唯一的共享
数据的途径,主要功能是存储数据并向其他应用程序提供访问数据的接口。Broadcast
Receiver 不执行任何任务,仅仅是接受并响应广播通知的一类组件。APK 文件实际是一个压
缩文件,经解压后结构如下: 80
(1):程序全局配置文件,是每一个应用必须的文件,可以定义
应用程序及其组件的结构和元数据。比如,文件里包括基本组件的声明和关于应用名称、版
本、权限、引用库文件等描述信息。由此可见,在 XML 文件中可以获取大量 Android 应用
的特征为研究分析所用。
(2):Dalvik 字节码文件,是 java 源码编译生成 Java 字节码文件。 DEX85
是 Dalvik VM executes 的全称,即 Android Dalvik 执行程序。
(3):编译后的二进制资源文件,其实是 APK 文件的资源索引。
(4)META-INF\:实质是清单目录,META-INF 目录下存放的是可保证 APK 包的完
整性和系统安全的签名信息。
(5)res\:存放资源文件的目录。res 下有若干个子目录,主要为 drawable、layout 和90
xml。存放的基本是一些图片资源和界面的布局文件。
2 恶意应用特征概览
随着移动互联网的逐渐发展,移动设备已成为用户进行网络活动的重要设备,也逐渐成
为人们生活中重要一部分,而恶意应用泛滥的现状是目前手机平台迫切需要解决的问题,提
取的恶意应用的特征的好坏对于恶意应用检测的效果具有决定性的影响。目前已有大量恶意95
应用检测的研究,其中一种传统的方法是基于签名的检测,其思想是为每种已知恶意代码产
生唯一的签名特征标记来创建恶意代码库,将未知代码的签名特征与恶意代码库进行对比匹
配,若有吻合则判定为恶意代码,反之则判定为正常代码。Zheng 等人[6]自动地收集、提取
并分析应用文件的签名去检测已知的恶意应用。但是,这种方法的缺点是必须拥有一类恶意
应用的签名库后才能检测该类应用,从而无法检测未知的恶意应用。 100
为了克服基于签名的检测方法的局限性,研究者转而将机器学习方法应用到了恶意应用
检测的实验中。机器学习研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技
能,重新组织已有的知识结构使之不断改善自身的性能。在基于机器学习的检测方法中,提
取特征是第一步,也是最重要的一步,提取的特征的好坏会直接影响检测效果。我们可以从
Android 应用中获取各种特征信息,比如权限、证书信息、在设备运行过程中应用的行为信105
息和在联网时的行为信息等。
恶意应用特征的三种类型
恶意应用检测是指通过静态或动态地分析安卓应用的特征以检测应用的恶意行为,以避
免安卓恶意应用可能导致用户隐私的泄露、电池耗尽和发送垃圾短信造成的高额话费开支等
危害。目前恶意代码检测主要包含静态和动态两种方法。静态分析技术主要指在不运行代码110
的情况下,采用各种技术手段对程序文件进行扫描从而生成程序的反汇编代码,然后阅读反
- 4 -
中国科技论文在线
汇编代码来掌握程序功能的一种技术,静态分析代码覆盖率高,但无法检测采用混淆技术的
代码以及运行时才触发的恶意行为;动态分析方法主要指在系统环境中运行样本,分析应用
运行过程及行为信息,可以分为在真机和模拟器两种环境下运行,动态分析方法可以绕过代
码混淆问题,但代码覆盖率低,许多应用采用防止自身在模拟器上运行的技术,这更大地增115
加了分析的难度。目前还有利用应用程序元数据作为应用特征的研究,比如使用应用程序的
类别信息、版本等应用的描述信息作为恶意应用检测研究的辅助。
图 2 Android 恶意应用特征分类
The categories of features in Android malware detection 120
由此目前获取 Android 应用的特征主要有三种类型:静态特征,动态特征,应用元数据
特征。组成 Android 应用 APK 文件各部分都有可能成为 Android 恶意应用检测的特征,图 2
为恶意应用特征分类图。本文从恶意应用检测的角度分析了 2012 年到 2015 年相关领域的部
分研究工作,经过分析整理,本文将 Android 恶意应用特征分为三种类型(表 1)。
表 1 特征类型以及描述 125
The categories and descriptions of features
特征类型 特征描述
静态特征 通过静态分析技术从 APK 文件内容中提取的各种特征。
动态特征 在系统运行过程中收集应用程序的行为信息,如系统调用
应用元数据特征 与应用本身无关,是应用相关的信息,比如应用的类别信
息、描述信息或者版本号等。
静态特征
静态特征是指通过静态分析技术提取的安卓应用特征。静态分析是指在不运行代码的情
况下,采用词法分析、语法分析等各种技术手段对程序文件进行扫描从而生成程序的反汇编
代码,然后阅读反汇编代码来掌握程序功能的一种技术。比如从 中分130
析提取应用基本的特征,接下来详细讨论静态特征:
y Permission(权限)
Android 是一个以 Linux 为基础的自由及开放源代码的操作系统,因此包含 Linux 安全
架构的重要的部分。为了保护用户数据安全,android 采用了基于权限的安全模型来限制应
用对用户设备中敏感数据的访问。在一个应用程序安装以前,Android 会向用户提供一个应135
- 5 -
中国科技论文在线
用申请的权限的列表,警示用户安装应用后存在的潜在的安全风险。权限主要用来对应用的
操作增加限制,防止恶意应用进行非法操作给用户造成敏感数据的泄露和设备被非法控制,
防止恶意收费等。权限可以一定程度上反映应用程序的安全威胁,比如应用申请了联网和接
受短信的权限,如果得到用户授权,该程序可能会在运行期间访问用户的短信数据并通过互
联网传播出去,这对用户的隐私信息造成了很大的威胁。 140
许多研究者将权限作为检测恶意应用的一个重要属性。Sarma [7]等人将应用申请和的权
限和应用的类别信息结合起来分析同种类别的应用可能得恶意行为。Peng 等人[8]使用概率生
成模型和定量安全风险评估对权限风险进行排序。大量的研究工作提取权限并结合机器学习
进行恶意应用检测,机器学习主要包括有监督学习和无监督学习,Wang 等人[9]提取应用权
限,对权限进行排序的同时利用有监督学习的方法进行实验并得到了 %的检测率。145
Samra 等人[10]利用无监督学习的聚类算法应用到实验中并得到 的召回率。但是,目前
恶意应用的行为愈发多样性,仅通过分析应用申请的权限信息去检测恶意应用是不充分的。
y Intent Filter(意图过滤器)
Intent(意图)是应用组件之间传递的信息对象,一个组件通过发送 Intent 对象请求其
他组件执行某些操作。一个组件的类型和功能决定了其能够响应的 Intent,在150
文件中,组件通过<intent-filter>标签声明自己能够处理的行为(Action)。
Zhang 等人[11]发布了一个 A3 系统,文中使用 Intent Filter,并构造了 Java Code 执行的流向
的调用图,文中使用 A*算法生成最短路径并以此来分析恶意应用的行为。Arp 等人[12]提出
的静态分析方法收集了包括 Intent Filter 特征在内的 Android 文件的静态特征,文中使用支
持向量机(SVM)算法来进行检测实验,DREBIN 检测率达到了 94%。 155
y Java Code(Java 代码)
应用开发人员使用Java语言编写Android应用,再经过编译转换为Android虚拟机Dalvik
可以运行的专有的文件格式 DEX。Google 在 2013 年底推出了 版本操作系统 ART
(Android Runtime),ART 不同于 Dalvik,ART 在应用安装时就预编译字节码为机器语言,
虽然 ART 会带来一些新的特征,但目前 Android 系统中默认为 Dalvik 运行时。Zheng 等研160
究人员[6, 13]使用 API 调用来检测恶意应用。每一个 Android 应用需要调用 API 与设备进行交
互,比如调用系统中电话管理器的 API 来取得手机 ID 和用户 ID。
除了上述提到的静态特征外,一些研究者分析了其他的静态特征,如 Strings、Hardware
Component、Network Address 等。分析 APK 文件中的可用的 Strings 是恶意应用检测中使用
的较为传统的技术。Sanz 等人[14]提取了 APK 文件中可用的 Strings,文中对 666 个 Android165
应用样本进行检测并得到 %的正确率。开发者为了功能的需求,通常需要在
文件中申请访问硬件,比如摄像头、麦克风和 GPS 等。同时申请 3G 和
GPS 可能是应用有暴露用户的位置信息的恶意行为,因此应用中申请哪些硬件从某种程度
上可以反映某些恶意行为。Arp 等人[12] 提出的 DREBIN 就使用了硬件组件作为静态特征。
此外,攻击者通常在应用中嵌入 C&C 服务器(远程命令和控制服务器,目标机器可以接收170
来自服务器的命令,从而达到服务器控制目标机器的目的。)地址从而控制恶意应用向该地
址发送用户数据,Zhang[11]和 Arp[12]提取 Network Address 作为特征。
动态特征
我们将应用程序在系统运行过程中与系统的交互或连接网络后的行为特征叫做动态特
征。在近期的相关研究中主要包括两类动态特征:系统调用(System calls)和网络流量175
- 6 -
中国科技论文在线
(Network traffic)。应用需要通过系统调用从系统中请求资源和服务,如需要联网来进行
更新、接收数据,或恶意地将用户的隐私数据通过网络泄露给恶意者,所以监控移动设备的
网络流量情况是发现恶意行为的有效的方式。此外,分析应用运行时设备各部件的使用情况,
用户在运行过程中交互操作也可助于分析恶意应用在设备中运行时的异常行为。
y System Call(系统调用) 180
在 Linux 内核中约有 250 系统调用,在 Android 系统上均可用。分析系统调用能发现应
用行为的异常情况,由于应用不能直接与 Android 操作系统交互,所以会使用系统调用执行
特定的任务。应用在用户模式下每调用一个系统调用操作时,应用程序通过系统调用转换为
内核模式并在内核空间执行需要的任务。Ham 等人[13]汇总了恶意应用中激活的实时系统调
用事件,并提取了正常应用和恶意应用系统调用事件之间不同的特性,并用来区别恶意与正185
常应用。
y Network Traffic(网络流量)
无论是正常应用还是恶意应用,大多数应用程序都需要申请连接网络。Zhou 等人[15]发
现在收集的恶意应用中,93%的恶意应用样本均需要连接网络与恶意攻击者通信。此外,[7]
在 2012 年的研究中分析了 Android 文件的权限,文中分析了 150,000 个应用并发现:%190
的正常应用需要访问网络,而 %的恶意应用申请访问网络。Shabtai 等人[16]提出新系统:
仅基于动态分析网络流量来检测应用的异常。显然,大多数应用需要申请网络访问,尤其是
恶意应用。因此为了更有效地检测 Android 恶意应用,分析网络流量是很有必要的。当然,
利用网络流量也给研究者带来很大的挑战,他们可能需要处理成千上万的网络记录,分析收
集的网络流量更需要对网络架构有很深厚的理解。 195
y System Component(系统部件)
移动设备与个人电脑有类似的系统部件,比如 CPU 和内存。一些研究者使用系统部件
来进行恶意应用检测的研究。在 MADAM[17]中,文中分析了 CPU 的使用率、空闲内存和设
备的运行内存等系统内核级别特征,也包括设备的蓝牙和 WIFI 状态等用户级特征。2013 年
Amos 等人[18]使用系统部件相关特征结合机器学习算法进行恶意应用检测。 200
y User Behavior(用户行为)
用户可能是恶意应用的潜在受害者,分析系统运行时用户与应用之间的交互行为也是检
测恶意行为的一种方法。Gianazza 等人[19]获取用户与设备交互的行为信息,比如按键、缩放、
浏览页面。在捕获恶意应用的用户交互行为后,系统通过匹配相似的用户交互行为来检测恶
意应用。Machiry 等人[20]提出一个基于用户交互分析的系统,系统对 50 个 Android 应用样205
本进行分析并搜集用户在应用运行时的交互信息。
应用元数据
应用的元数据指用户在应用下载前和应用安装前用户可看到的信息[21],比如应用描述、
申请权限数、应用评分和开发者相关信息等。由于应用元数据与应用程序本身无关,所以不
能被划分为静态或则动态特征。 210
一些研究者利用 Android 应用的元数据来进行恶意应用检测。2015 年 Berardi 等人[22]
从 Google Play 中提取了多个应用样本的应用描述、开发者定义类别、应用名、平均用户评
分、用户评分数以及文件大小等数据使用有监督学习的方式对应用分类。当然,应用元数据
特征也可以从一定程度上反映应用是否有恶意行为,比如,应用市场上某些用户在对应用进
行评分的同时会显示地描述应用的恶意收费等行为,这些都对应用的恶意行为的判定有一定215
- 7 -
中国科技论文在线
的辅助价值。WHYPER[23]使用先进的知识发现过程用静态方法分析了从 Google Play 中搜集
的应用元数据:最近一次修改时间、类别、价格、描述、权限、评分、下载量和开发者 ID
等,认为应用元数据的分析可作为静态分析或动态分析的补充,文中也在实验中使用机器学
习算法。文中认为以下数据也可以作为元数据:应用开发者信息、联系邮件、联系网址、宣
传视频、截图、促销信息、最近更新、包名、安装大小、版本、应用类型、评分数等。 220
恶意应用检测数据集概览
本节讨论了实验中数据的重要性并重点整理了恶意应用检测相关工作的数据集使用情
况。研究者在实验中均需要数据集去评估提出的系统或者方法。Android 恶意应用相对是一
个新的研究领域。第一个 Android 恶意应用在 2010 年被发现,所以研究者起初并没有标准
的样本数据集来开展研究工作。在 2012 年。Zhou 等人[15] 对 Android 恶意软件的特征进行225
了详细分析,并公布了从 2010 年 8 月到 2011 年 10 月期间收集的 49 个恶意家族共 1260 个
恶意应用样本,数据一经公布,基于该数据集上的研究不断。但是由于各种逃避恶意应用检
测的技术不断出现,应用新样本数据集的更新是很有必要的。
对恶意应用进行更加综合的分析后才可以形成更加有效的检测系统,建立并完善研究样
本集为恶意应用检测分析奠定良好的样本基础,因此本文的对数据集的整理工作可以提供有230
价值的参考。表 2 是截止 2015 年恶意应用研究工作的部分数据集使用详情。
表 2 恶意应用检测数据集
The datasets of Android malware detection
序号 引用文章 特征类型 年份 实验数据集(个) 实验结果
1 Peng 等人 [8] 静态 2012 325,036 AUC>
2 Sarma 等人[7] 静态 2012 158,062 71%检测率,
%误报率
3 Hyo-Sik 等人 [24] 动态 2012 14,794 ,
Recall:
4 Zhou 等人[25] 复合 2012 204,040 检测出 211 个恶意应用
5 Samra 等人 [10] 静态 2013 18,174 Recall:,
F-measure:
6 Sanz 等人 [14] 静态 2013 666 --
7 Maggi 等人[26] 动态 2013 18,758 --
8 Guido 等人[27] 元数据 2013 -- 正确率 71%,
精度 %
9 Teufl 等人[21] 元数据 2013 -- --
10 Pandita 等人[23] 元数据 2013 16,001 平均正确率 %,
平均召回率 %
11 Yang 等人[28] 静态 2014 67,797 正确率 92%
12 Shabtai 等人 [16] 动态 2014 500,000 多组实验对比,FPR<10%
13 Ham 等人 [13] 动态 2014 1260 Result Graph
14 Shalaginov 等人[29] 复合 2014 604 正确率 76%
15 Dai 等人[30] 静态 2015 400 86%(accuracy)
16 Elish 等人[31] 静态 2015 4177 %FN,%FP
17 Yerima 等人[32] 静态 2015 -- -99%(accuracy)
18 Chuang 等人[33] 静态 2015 9373 %(accuracy)
19 Patel 等人[34] 复合 2015 -- %(accuracy)
20 Berardi 等人[22] 元数据 2015 5993 (micro-averaged)
- 8 -
中国科技论文在线
注:表中“复合”指静态特征和动态特征的综合使用。
3 应用实验 235
实验数据集及特征
整个实验流程主要由 5 个步骤组成:数据采集、预处理、特征提取、恶意检测。其中数
据采集和特征提取的数据来源1:数据集选取了 107,807 个应用样本(安智市场)和 8,701
个恶意应用样本(详情表 4);为了保证实验模型的鲁棒性,本文选择了基于 Android 平台
级别的七个类型的静态特征(详情如表 5),其中每类特征又包含多个特征。然后将特征进240
行向量化,并表示为后续实验中算法可以输入的 LIBSVM 格式,即每行为一个 Android 应
用样本,第一列为为类别标记,其余列是以空格分分隔的特征描述数据。
表 4 实验数据总体概览
The overview of experimental data
训练数据 测试数据 总计
正常应用 85,849 21,478 107,327
恶意应用 6,973 1,728 8,701
总计 92,822 23,206 116,028
表 5 恶意应用检测实验特征集说明 245
The description of features in experiment about malware detection
特征集索引 特征名 特征描述
1 Requested Permissions 申请权限(系统定义的)
2 Filtered Intents 过滤匹配 intent(系统定义的)
3 Restricted API calls 受限制 API
4 Code-related Features 与代码相关的特征
5 Hardware Features 硬件特征
6 Used Permissions 使用的权限
7 Suspicious API calls 可疑 API 调用
实验方法与结果
关键算法与原理
分类(Classification)是这样的过程,它找出描述和区分数据类或概念的模型或函数,
以便能使应模型预测标号未知的对象的类标号,分类的实质是预测离散的、无序的类别标号。250
安卓的恶意应用检测属于两分类问题,因此本文主要是应用了机器学习分类算法来实现。
数据分类是一个两阶段过程,包括学习阶段和分类阶段。学习阶段使用训练数据构建分
类模型,分类阶段使用模型预测给定数据的类标号。分类详细流程如图 3。本文实验部分使
用了支持向量机和随机森林两种分类算法来构造恶意应用检测分类器,接下来对其分类原理
进行详细介绍。 255
1 数据来源:选取作者所在的北京交通大学移动安全课题组所收集和提取的部分样本和特征数据集
(
- 9 -
中国科技论文在线
训练数
据集
指定分类
模型 分类器 类预测训练 分类
测试
样本
待分
样本
学习阶段 分类阶段
图 3 分类器分类流程
The classification workflow of classifier
支持向量机(Support Vector Machine):常简称为 SVM,是 Cortes 和 Vapnik 于 1995
年首先提出的,SVM 是一种有监督的机器学习模型,用于分类和回归分析。给定一个训练260
样本的集合,每一个样本被标记为两个类别中的一个,SVM 的训练算法会构建一个模型将
新的样本分为两类中的某一个类别,并使这个模型为一个非概率的二元线性分类器。
给定一个训练数据集 D:
{ } 1D= ( , { 1,1} npi i i i ix y x R y =, ) | ∈ ∈ − (1)
其中 的值是-1 或者 1,表示 是否为恶意的样本。每一个 是一个 n 维的实向量,想
要找到一个可以将正常样本从恶意样本中划分出来的最大间隔超平面。任意一个超平面满足265
下式:
0iw x b⋅ − = (2)
并满足约束条件:
1
2
: 1
: 1
i
i
H w x b
H w x b
⋅ − ≥⎧⎨ ⋅ − ≤ −⎩
(3)
其中w是权重向量,即 1 2={ , ,..., }nw w w w ;n 是属性数;b 是标量,通常称作 3(bias);
式中的 ix 分别表示两个不同的类别样本。落在 1H 上或者 1H 上方的元组都属于类+1,而落
在 2H 上或者 2H 下方的元组均属于类-1。其中上下两不等式中的 分别表示两个不同的类别270
样本。SVM 还引入了非负松弛变量 ,它代表数据 的误分度,值越大表示对应点离群越远:
( b) 1i i iy w x⋅ − ≥ − ε ,1 i n≤ ≤ (4)
这样以上的优化问题就变成了:
2, , 1
1argmin { C }
2
n
w b ii
wε =|| || + ε∑ (5)
并服从对任意的 (1,2,3,..., n)i = :
( b) 1i i iy w x⋅ − ≥ − ε , 0iε ≥ (6)
随机森林(Random Forrest):常简称为 RF 算法,是一种组合方法,指的是一个包含
多个决策树的分类器,并且其输出的类别是由每一棵树输出的类别的众数而定。组合分类器275
中每一个分类器是一棵决策树,因此分类器的组合形象地组合为“森林”。每一个决策树在
每一个结点都使用随机选择的属性决定划分,即每一棵树都依赖于独立抽样。分类时每棵树
都投票并且返回投票数最多的类,由于其投票机制,随机森林较一般分类算法表现更好。该
分类器最早由 Leo Breiman 和 Adele Cutler 在 2001 年提出。简单说来,RF 就是由多棵分类
回归树(Classification and Regression Tree,CART)构成的,通过以下算法来构造每一棵树: 280
(1)假设 N 代表训练样本数,M 表示特征数;
- 10 -
中国科技论文在线
(2)输入特征数目 m,用于确定决策树上一个节点的决策结果;其中 m 应远小于 M;
(3)从 N 个训练样本中有放回的取样 N 次,形成一个训练集(即 bootstrap 取样),
并用未抽到的样本作为测试样本,评估其误差;
(4)对于每一个节点,随机选择 m 个特征,决策树上每个节点的决定都是基于这些特285
征确定。根据这 m 个特征,计算其最佳的分裂方式;
(5)每一棵树都会完整的成长而不会被剪枝。
机器学习分类算法在各领域的应用中,SVM 和 RF 算法均得到了广泛的应用。恶意应
用检测的研究是一个不平衡数据集分类问题,SVM 算法中惩罚因子的使用可以一定程度上
解决不平衡数据问题,而 RF 的投票机制也使其较其他算法更优秀。因此本文中选取这两个290
分类算法进行恶意应用检测的实验。
实验结果及分析
本节根据上一小节中的分类和算法原理进行了分类器的实现与实验结果分析。研究者们
使用不同的评估指标来评估提出系统或者方法的有效性,目前大家普遍使用正确率、检测率
和误报率作为分类器评价指标,但评价一个分类器的好坏,单凭这三个维度的评价指标是很295
片面的。恶意检测属于典型的二分问题。
混淆矩阵是分析分类器识别不同类别不同类元组情况的一种有用的工具。如表 3,我们
将恶意应用定义为正元组,正常应用定义为负元组。TP(True Positive)指分类器将恶意应
用正确识别为恶意应用的元组;TN(True Negative)指分类器将正常应用正确识别为正常应
用的元组;FP(False Positive)指分类器将正常应用错误识别为恶意应用的元组;FN(False 300
Negative)指分类器将恶意应用错误识别为正常应用的元组。
表 3 恶意应用检测混淆矩阵
The confusion matrix of malware detection
预测为→ 正常 恶意 总计
正常 TN FP N
恶意 FN TP P
由表 5 混淆矩阵为基础,研究者们使用的评估指标如下:
(1)正确率(accuracy):accuracy=(TP+TN)/(P+N),最常见的评价指标,计算305
被正确分类的样本占所有测试样本的比例。
(2)真阳性率(TPR:True Positive Rate)= TP/P,即检测率,衡量分类器对恶意应用
的识别能力;
(3)假阳性率(FPR:False Positive Rate)= FP/N,即误报率,计算正常样本中被分类
器误报为恶意的应用的比例,正常样本中被正确分类的比例即为:1-FPR。 310
(4)精度(precision):precision = TP/(TP+FP),是精确性的度量,表示被检测为恶意
的样本中实际为恶意的比例。
(5)召回率(recall):recall = TP/(TP+FN) = TP/P,是恶意应用中被正确分类的比例。
(6)F1-score=(2*precision*recall)/(precision+recall),是精度和召回率的调和平均。
本文计算了五个维度的指标来评估分类器,表 6 为实验评估结果。两种分类器的实验结315
果如表 6,恶意应用检测的正确率最高可达 %,误报率 %。随机森林算法的各项评
估指标均表现良好,使用静态特征结合机器学习分类算法进行恶意应用检测的应用达到了很
好的效果。
- 11 -
中国科技论文在线
表 6 恶意应用检测实验结果
The experimental result of malware detection 320
分类器 正确率 检测率 /真
阳性
误报率 /假
阳性率
精度 召回率 F1-score
SVM
RF
虽然随机森林算法整体表现良好,但是由图 4 可以看出,SVM 和 RF 各有不足:
(1)恶意应用检测中检测率实质是衡量分类器识别恶意应用的能力,由图 4(a)可知,
SVM 虽然正确率低于 RF,但是其检测率高于 RF,原因是恶意应用检测为不平衡数据集,
恶意应用样本远少于正常样本,而 SVM 对不平衡数据集有惩罚因子来平衡,从而使其对恶
意样本的识别能力更高; 325
(2)由图 4(b)可知,SVM 的精确度表现较差,虽然 SVM 的召回率高于 RF,F1-score
是精度和召回率的综合评估值,RF 为 ,SVM 为 ,由于 RF 的投票机制使其综
合表现更为理想。
(a)SVM与RF实验正确率与检测率对比 (b)SVM与RF实验精确度与召回率对比
1
SVM RF
正确率 检测率
1
SVM RF
精度 召回率
图 4 SVM 与 RF 的两组实验结果对比 330
Two groups of experimental contrast about SVM and RF
4 总结
恶意应用发展很迅猛,Android 作为市场占有率最高的移动智能设备操作系统,成为了
攻击者的主要目标。Android 恶意应用的检测技术不断发展,传统的基于签名方法不能适应
发展的恶意应用检测的需求,因此,基于有效特征进行恶意应用检测技术的研究至关重要。335
针对不断恶化的 Android 安全形势,本文从恶意应用检测的角度,首次从静态特征、动态特
征和应用元数据三个方面总结了恶意应用检测中的特征使用以及近期相关研究中使用的部
分数据集,建立并完善研究样本集为恶意应用检测分析奠定良好的样本基础,因此本文工作
可为后续恶意应用检测的后续研究工作有一定的参考作用。文中进行了恶意应用检测的应
用,将Android应用的 7个类型的静态特征结合两种机器学习算法进行大规模样本对比实验,340
实验结果较为理想,SVM和RF算法各有优劣,最终恶意应用检测中最高正确率可达 %。
[参考文献] (References)
[1] F-Secure. MOBILE THREAT REPORT Q1 2014[OL]. 2014; Available from:
[2] La Polla, M., F. Martinelli, and D. Sgandurra, A Survey on Security for Mobile Devices[C]. Ieee 345
Communications Surveys And Tutorials, 2013. 15(1): p. 446-471.
[3] Suarez-Tangil, G., et al., Evolution, detection and analysis of malware for smart devices[C]. Communications
Surveys & Tutorials, IEEE, 2014. 16(2): p. 961-987.
[4] Peng, S., S. Yu, and A. Yang, Smartphone malware and its propagation modeling: A survey[C].
Communications Surveys & Tutorials, IEEE, 2014. 16(2): p. 925-941. 350
- 12 -
中国科技论文在线
[5] IDC. Smartphone OS Market Share, 2015 Q2[OL]. 2015; Available from:
[6] Zheng, M., M. Sun, and J. Lui. Droid analytics: A signature based analytic system to collect, extract, analyze
and associate android malware[C]. in Trust, Security and Privacy in Computing and Communications (TrustCom),
2013 12th IEEE International Conference on. 2013. IEEE. 355
[7] Sarma, ., et al. Android permissions: a perspective combining risks and benefits[C]. in Proceedings of the
17th ACM symposium on Access Control Models and Technologies. 2012. ACM.
[8] Peng, H., et al. Using probabilistic generative models for ranking risks of android apps[C].Proceedings of the
2012 ACM conference on Computer and communications security. 2012.
[9] Wang, W., et al., Exploring Permission-Induced Risk in Android Applications for Malicious Application 360
Detection[C]. Information Forensics and Security, IEEE Transactions on, 2014. 9(11): p. 1869-1882.
[10] Samra, A., K. Yim, and O. Ghanem. Analysis of clustering technique in android malware
detection[C].Innovative Mobile and Internet Services in Ubiquitous Computing (IMIS), 2013 Seventh
International Conference on. 2013. IEEE.
[11] Luoshi, Z., et al. A3: Automatic Analysis of Android Malware[C].1st International Workshop on Cloud 365
Computing and Information Security. 2013. Atlantis Press.
[12] Arp, D., et al. Drebin: Effective and explainable detection of android malware in your
pocket[C].Proceedings of the Annual Symposium on Network and Distributed System Security (NDSS). 2014.
[13] Ham, . and H.-W. Lee, Detection of malicious android mobile applications based on aggregated system
call events[C]. International Journal of Computer and Communication Engineering, 2014. 3(2): p. 149-154. 370
[14] Sanz, B., et al. Anomaly detection using string analysis for android malware detection[C].in International
Joint Conference SOCO'13-CISIS'13-ICEUTE'13. 2014. Springer.
[15] Zhou, Y. and X. Jiang. Dissecting android malware: Characterization and evolution[C].Security and Privacy
(SP), 2012 IEEE Symposium on. 2012. IEEE.
[16] Shabtai, A., et al., Mobile malware detection through analysis of deviations in application network 375
behavior[C]. Computers & Security, 2014. 43: p. 1-18.
[17] Dini, G., et al. MADAM: A Multi-level Anomaly Detector for Android Malware[C]. in MMM-ACNS. 2012.
Springer.
[18] Amos, B., H. Turner, and J. White. Applying machine learning classifiers to dynamic android malware
detection at scale[C].Wireless Communications and Mobile Computing Conference (IWCMC), 2013 9th 380
International. 2013. IEEE.
[19] Gianazza, A., et al., Puppetdroid: A user-centric ui exerciser for automatic dynamic analysis of similar
android applications[C]. arXiv preprint arXiv:, 2014.
[20] Machiry, A., R. Tahiliani, and M. Naik. Dynodroid: An input generation system for android
apps[C].Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering. 2013. ACM. 385
[21] Teufl, P., et al., Malware detection by applying knowledge discovery processes to application metadata on the
Android Market (Google Play)[C]. Security and Communication Networks, 2013.
[22] Berardi, G., et al. Multi-store metadata-based supervised mobile app classification[C].Proceedings of the 30th
Annual ACM Symposium on Applied Computing. 2015. ACM.
[23] Pandita, R., et al. WHYPER: Towards Automating Risk Assessment of Mobile Applications[C].USENIX 390
Security. 2013.
[24] Ham, H.-S. and M.-J. Choi. Analysis of android malware detection performance using machine learning
classifiers[C].ICT Convergence (ICTC), 2013 International Conference on. 2013. IEEE.
[25] Zhou, Y., et al. Hey, You, Get Off of My Market: Detecting Malicious Apps in Official and Alternative
Android Markets[C].NDSS. 2012. 395
[26] Maggi, F., A. Valdi, and S. Zanero. AndroTotal: a flexible, scalable toolbox and service for testing mobile
malware detectors[C].Proceedings of the Third ACM workshop on Security and privacy in smartphones & mobile
devices. 2013. ACM.
[27] Guido, M., et al., Automated identification of installed malicious Android applications[C].Digital
Investigation, 2013. 10: p. S96-S104. 400
[28] Yang, C., et al., Droidminer: Automated mining and characterization of fine-grained malicious behaviors in
android applications[C].Computer Security-ESORICS 2014. 2014, Springer. p. 163-182.
[29] Shalaginov, A. and K. Franke, Automatic rule-mining for malware detection employing Neuro-Fuzzy
Approach[C].Norsk informasjonssikkerhetskonferanse (NISK), 2014. 2013.
[30] Dai, G., et al. SVM-based malware detection for Android applications[C].Proceedings of the 8th ACM 405
Conference on Security & Privacy in Wireless and Mobile Networks. 2015. ACM.
[31] Elish, ., et al., Profiling user-trigger dependence for Android malware detection[C].Computers & Security,
2015. 49: p. 255-273.
[32] Yerima, ., S. Sezer, and I. Muttik, High accuracy android malware detection using ensemble
learning[C].IET Information Security, 2015. 410
[33] Chuang, H.-Y. and S.-D. Wang. Machine Learning Based Hybrid Behavior Models for Android Malware
Analysis[C].Software Quality, Reliability and Security (QRS), 2015 IEEE International Conference on. 2015.
IEEE.
[34] Patel, K. and B. Buddadev, Detection and Mitigation of Android Malware Through Hybrid
Approach[C],Security in Computing and Communications. 2015, Springer. p. 455-463. 415