基于类别SVM的Android系统恶意软件检测研究

2016-05-30 12:24管飞诗徐夫田
科技风 2016年21期

管飞诗 徐夫田

摘 要:Android系统以开放开源为特色赢得了众多的客户的青睐。用户数量突飞猛进。但Android系统的开放性也带来了众多的麻烦。Android系统恶意软件呈现线性般的增长。本文对Android系统恶意软件检测提出了基于类别的svm的检测研究。将Android系统应用程序(app)的类别关联在一起,根据特定类别中特定特征表现与大部分良性app特征是否异常来预测该app为恶意app,恶意app在特定类别中的特征表现异常、罕见或者特征较多等特点进步断定为该app为恶意app。本文对250个app样本首先关联分类,然后对权限特征进行训练分类器,采用SVM机械学习算法建立分类模型。最后对训练数据进行实验,对实验结果进行信息检索学评估,得出基于类别的svm的检测方案比普通的svm检测方案高的结论。

关键词:Android SVM 恶意软件;Android安全

Android系统基于linux内核,该系统与2007年11月5日有谷歌公司正式发布。字发布以来受到广大用户和厂商的青睐,因其开放性、自由性等特征使其得到快速的发展。经过几年的发展,Android系统已经从单纯的智能手机领域进入了教育、医疗、军事、汽车、家居等行业。

开放性、自由性等特点也给负面带来了很多的影响。从第一例Android系统恶意软件出现,到现在大面积的恶意app的出现,对Android系统的各行各业带来众多影响。恶意app吸费扣费、恶意推广、隐私贩卖为目的的利益产业链。目前恶意app变种迅速、家族种类繁多,安全公司每天面临着大量待测可疑的样本,分析检测工作量巨大。特征提取效率低下、导致静态检测的杀毒软件效率低下。目前Android系统的“内忧外患”恶化了Android安全形势。

面对目前Android系统的安全形势,本文做了一下工作:

一是,采集app数据集,并按关联类别分类;

二是,对所采集的数据进行反编译,提取权限特征进行训练分类器,采用SVM机器学习算法建立分类模型。

三是,对分类模型进行信息检索学评估。并提出基于类别SVM的Android系统恶意软件检测方法。

1 Android系统介绍

1.1 Android系统架构

Android的系统构架和其他的操作系统一样,采用了分层的构架,层次非常清晰。

Android分为4层,从高到低依次为应用程序层(Application)、应用程序框架层(Application Framework)、系統运行库层(Libraries 和 Android Runtime)和linux内核层(Linux Kernel)。

应用程序层:包括图1中的各项功能。所有的应用程序都是使用Java语言编写。通过调用应用程序框架层所提供的API来完成。应用程序框架层:该层为开发人员提供了可以完全访问核心程序所使用的API框架。系统运行库层:包括程序库和Android运行时库。前者主要为c/c++库。后者又分为核心库和Dalvik虚拟机两部分,核心库提供Java语言核心库的大多数功能,Dalvik虚拟机执行.dex文件。内核层:Android依赖于linux2.6版内核提供的核心服务。

1.2 Android安全特点

Android的安全一保护用户的数据和移动设备硬件、系统和软件为目标。Android系统安全的主要基础主要是下面几点:依赖linux内核,应用沙箱机制,应用签名机制和应用程序定义和用户授予权限机制等。Linux内核通常被认可用于較高的安全敏感环境中。

由于开放环境,linux安全方面一直被安全专家、修补bug的开发者、寻找容易被利用点的攻击者们巩固提升。同时提供了从内核中去除不必要的和不安全部分的能力。沙箱机制特点是用唯一的UID隔离应用程序的进程和数据与其他的应用程序。在内核中,当应用程序安装时,Android系统分配每个应用程序不同的用户ID。换句话说,每个应用程序在整个生命周期中拥有一个唯一的UID。同一个应用程序可能在其他设备上有一个不同的UID,重要的是两个不同的应用程序不能分配相同的UID。因为每个应用程序都有自己的UID,所以它们不能在同一进程中运行,而是需要在其UID下单独运行。这样能隔离正在运行的进程,以使应用程序彼此安全。

此外,任何应用程序的数据存储在其UID下,其他应用程序无法访问。应用程序的签名机制,要求任何应用程序的.apk文件必须由开发人员的证书签署,以识别应用程序的作者。这样可以实现如果他们由相同的证书签名,那么应用程序可以共享一个UID。它还允许系统授予或拒绝签名级权限;如果系统使用声明权限与其他应用程序的相同证书签名,系统将向该申请权限的应用程序授予签名级权限。

最后,Android采用的权限模型保护手机的资源和功能,使其只能通过授予相应权限的应用访问。默认情况下,应用程序没有处理手机硬件,软件,功能和数据的权限。应用程序的开发人员需要声明应用程序功能所需的权限。在安装时,用户需要授予请求的权限,否则系统会终止安装。

1.3 Android恶意软件

1.4 Android恶意软件检测技术

目前有很多的恶意软件检测技术用于商业和研究方面的恶意代码检测软件。大部分的商业恶意软件扫描工具依赖于静态或者动态的技术去检测恶意代码。静态分析扫面源代码或者二进制代码去对比已知的恶意特征码。当恶意软件制作者使用代码混淆制作恶意软件时,使用静态分析恶意代码往往变得力不从心。相对静态检测技术,动态检测技术在恶意代码受控环境下分析并追踪恶意软件。动态检测技术也被叫做基于行为的检测技术。以前的大多数Android设备上的恶意软件检测技术都采用某种动态的检测技术。

来自Zhou和Jiang的研究概述商业的扫面工具在Android设备检测恶意软件性能并不是很好,他们测试了四种商业扫描工具(AVG,Lookout,Norton,Trend Micro),将这四种工具用具检测来自49个恶意软件家族的1260个恶意应用程序。最好的移动恶意软件扫描工具只识别出了收集的恶意应用程序的79.6%,最差的还不到20.2%。在上述的工作中,Google自己的恶意软件检测服务只检测出1260恶意应用的15.32%

2 基于类别SVM检测技术

2.1 检测技术框架

整个方案的步骤大致为:收集Apps样本,反编译app样本,提取特征集,用特征选择算法选择最佳的特征子集,建立分类模型。如图1所示。

2.2 数据收集

该研究中我们对所有类别app建立样本。首先对120个恶意app和50个良性app进行特征模型训练,然后对社交app收集数据,良性app为50个,恶意app为30个。并命名“所有组”、“社交组”。

2.3 反编译数据

App中有个文件叫做“apk”,在特定的特征组app反编译时,该文件被反编译成相应的源码文件。这个过程被一个叫做santoku的反编译工具自动完成,因为特定为移动安全制定的linux系统机制,.apk文件将转化为源码中的AndroidMainfest.xml文件形式和.java文件。我们采用apktool工具进行反编译。

2.4 特征提取

在该部分我们选取app中的权限为特征进行过滤提取。并提取其中排名前10的权限。权限是非常重要和常用的特征用于在Android系统中检测恶意代码。我们这里也会相应的考虑其他的静态权限。在该领域许多研究通过建立权限模型,将相应的权限授予app验证其能否使app可以有恶意行为。

在我们的研究中,将app请求的权限与我们上文提到的类别app训练成的分类模型中一组共同的权限相关联。显然地,特定类别的功能需要一组权限,然而如果app出现需求的异常或者超级权限相对于良性app,则表明该app有恶意意图。

2.5 分类模型

支持向量机(SVM)也称作支持向量网络(SVN),是一种有监督的机器学习模型,它可以对数据进行分类分析、检测和模式识别以及回归分析。SVM是一种非概率的线性分类器,它将数据分配到一个或者多个类别中。它也可以使用Kernel Trick有效的用在非线性分类问题中。Kernel Trick是一类支持向量机算法,它可以简易和经济的方式的将输入特征映射到较高维的输出空间中。

SVM将训练数据视为一个空间的点,该空间的点基于它们的类别以群组形式聚集,这些群组被称作超平面的清晰的间隙相隔离。在训练阶段,SVM从训练数据中建立起模式模型,这些数据在分类阶段是用在一个空间。

在分类阶段,新的输入点被映射到训练空间中,并按照它们落在间隙的哪一侧来分类。如图4所示,直线分离了两个类别,新的数据如果在直线以上则映射到类的空间中,否则映射其他类空间。

3 实验与结论

在该部分我们主要对上节的方案进行实验,比对实验结果进行讨论,最后得出结论。我的研究目标是通过提高从训练分类器的特征选择质量进而提高分类模型的性能。每个类别有各自的功能,良性app在特定类别中有共同的一组特征,而恶意app的特征异常、罕见、或者比特定类别中的app更多的特征。為檢测到恶意代码,我们将app的特征与特定功能类别中app特征相关联。为达到这种目标,我们准备2组数据(“所有app”、“社交app”)包含良性和恶意二进制向量。在训练阶段,我们用支持向量机(SVM)建立2个分类模型,使用权限特征训练分类器。实验重复15次,每一轮实验中三组数据集顺序随机打乱,70%的数据用于训练,其余数据用于测试。

测试环境采用pc机,OS采用win7,数据挖掘工具采用weka。实验结果采用求平均数的方法。最后得出结论,基于SVM的“所有app”精确度为0.901,基于类别SVM的“社交app”组精确度为0.958。基于SVM的“所有app”组的召回率为0.930,基于类别SVM的“社交app”组的召回率为0.971。综合评价,基于类别的Android系统恶意软件检测技术精确度高于普通的SVM检测技术。

参考文献:

[1] 罗瑜.支持向量机在机器学习中的应用研究.西南交通大学博士学位论文,2007,7.

[2] 彭国军,李晶雯,等.Android恶意软件检测研究与进展.武汉大学学报(理学版),2015年2月,第61卷 第1期.

[3] 龚炳江,唐宇敬.Android平台下软件安全漏洞挖掘方法研究.计算机应用于软件,2014年1月,第31卷 第1期.

[4] Huda Ali Alatwi Android malware Detection Using Category-Based Machine Learing Classifiers Rochester Institute of Technology RIT Scholar Works,June 2016.

[5] 李骏骁.基于监督型机器学习分类方法的Android恶意软件检测技术研究.南京大学研究生毕业论文,2014,5.

作者简介:

管飞诗(1986-),山东德州夏津人,硕士研究生,研究方向:网络模型及网络环境下应用技术研究。

徐夫田(1965-),山东临沂人,博士,研究员,硕士生研究生导师,研究方向:电子政务、数据库。