一种基于行为的Android重打包应用检测方案

2016-09-08 10:32桓自强胡琳琳郭志川
计算机应用与软件 2016年8期
关键词:调用云端阈值

桓自强 倪 宏 胡琳琳 郭志川

1(中国科学院声学研究所国家网络新媒体工程技术研究中心 北京 100190)2(中国科学院大学 北京 100049)



一种基于行为的Android重打包应用检测方案

桓自强1,2倪宏1胡琳琳1郭志川1

1(中国科学院声学研究所国家网络新媒体工程技术研究中心北京 100190)2(中国科学院大学北京 100049)

重打包类型的恶意应用是通过将恶意代码注入正常应用来生成的,在Android平台已发现的恶意应用中占了很大的比例。针对此类恶意应用,提出一种基于行为的恶意应用检测方案。方案采用云端协作的软件架构,在云端对正常应用进行基于系统短序列的行为模式分析,从而形成正常行为模式库;在终端,从云端下载系统已安装应用的正常行为模式库,监测已安装应用的系统调用序列,并计算其异常率。实验结果表明,该方法是有效的,可以准确地识别出重打包的恶意应用。

重打包应用Android安全系统调用短序列云端协作

0 引 言

Android作为Google公司开发的移动操作系统,以其开放性和易用性的特点,拥有大量的用户和应用开发者。根据IDC的统计数据,截止2014年第二季度,Android市场占有率已达84.7%,同比增长33.3%[1]。 Android继承了其Linux内核提供的访问控制,同时提供了签名机制、权限机制和沙箱机制等框架层安全机制。但也存在恶意使用应用被授予的权限、内核和动态库的漏洞、私有信息泄露、恶意消耗资源等威胁[2]。Google公司提供了官方的应用商城,但国内存在大量的第三方的应用商城,而其中大量的应用存在用户隐私泄露问题[3]。众多的Android恶意软件中,重打包类型的应用占有非常高的比例,因为将恶意代码注入热门应用,容易实现恶意代码的广泛传播[4]。Android平台的重打包应用,是指将恶意代码的class文件注入正常应用中,并重新打包生成新的apk文件,其中的恶意代码一般通过监听系统事件而自行启动。随着移动互联网的进一步普及,手机作为移动互联网的入口,在诸如移动社交、移动购物、移动支付等涉及个人隐私和账户安全的领域扮演着重要角色,安全问题不容忽视。

1 相关研究

Zhou等人在1260个恶意应用样本中,发现86%的样本都是重打包应用[4]。进一步地,Zhou等人对第三方应用市场与官方市场的相同应用进行代码指令和作者信息的提取,通过模糊哈希算法进行相似性检测,从而发现第三方市场重打包应用[5]。但是信息的抽取和模糊哈希都比较耗时,适合离线处理,并不适用于移动设备的实时处理。Enck等人以Android权限组合为基础定义安全语义规则,提出了Kirin安全服务供应用安装时检测[6];Tang等人提出基于安全距离的权限认证方案ASESD,认为Android应用的安全性体现在权限之间的关系及权限组合上[7];杨欢等通过得到极大频繁权限项集来挖掘相关规则[8]。Android权限机制是粗粒度的能力控制,同时现在主流的应用功能做的非常复杂,通常会申请非常多的权限。所以,注入恶意代码的重打包应用,有可能并没有增加新的权限需求。Burguera等人提出Crowdroid方案,通过监测应用在底层Linux系统调用次数,并用K-means来对正常应用和重打包应用进行分类[9]。但对于一个新应用来说,最初并没有重打包版本来供分类训练。Shabtai等人利用多种机器学习算法来对系统的性能、用户操作等组成的特征进行分类,但是以整个系统作为研究对象,并不符合随时有应用安装或卸载的移动设备[10]。Wu等人提出Droidmat方案,通过提取权限和API调用等信息进行恶意应用的静态分析[11],但是特征的抽取及实现非常复杂。同时,Android应用可以使用Java语言开发,也能包含C/C++语言生成的动态库,从而导致API调用信息不够全面。雷灵光等利用时序逻辑描述语言TLCK定义关键资源的安全行为模式,同时在Dalvik虚拟机中添加监视代码,实现恶意应用的检测[12]。这种方法将恶意行为归结为序列行为的思路是非常好的,但无法在Dalvik中对使用JNI技术调用本地代码的行为进行监控。

Android平台目前应用最广泛的是智能手机,而手机资源(包括处理能力和电量等)的有限性,决定了手机平台的安全方案需要考虑云端协作的方式,如Crowdroid方案[9]。但是Crowdroid方案执行检测时需要实时有网络连接,而大多数人的手机并不总是都处于联网状态。所以,对于重打包应用的检测,需要一种符合用户习惯的云端协作方案。

2 云端协作的方案设计

基于对现有研究不足的分析,本文提出了一种云端协作的方案,将复杂的运算放在云端进行,在终端利用云端的模式库来进行安全检测。在对正常应用和重打包恶意应用的区分上面,采用了系统调用短序列的方案。云端的应用的正常行为的模式库只对正常应用有依赖,避免了Crowdroid方案中新应用无重打包版本的弊端。系统调用短序列的有效性在文献[13]中对传统Unix系统的入侵检测中有过成功应用,同样文献[12]的时序逻辑描述方案在本质上也是对“短序列”可以作为应用行为代表的一个佐证。

如图1所示,Android系统基于Linux内核,其上是C++组件库和Java框架层,Android运行时环境主要包含Dalvik虚拟机和其核心库,系统对上提供Java开发方式和NDK开发(利用C/C++语言)方式。所以,在Android平台,无论采用Java开发还是NDK开发,涉及到系统功能如连接网络、读写文件、进程控制、内存管理和用户管理等,底层最终都会进行Linux系统编程接口的调用。基于对系统调用序列的分析,尤其是短序列反映应用行为的分析,提出了如图2所示的云端协作的安全架构。

图1 Android系统架构图

图2 云端协作的安全架构

安全架构分为云端和终端两部分,在云端的主要步骤是:

(1) 从Google官方应用市场,或应用官方网站下载正常的应用,分发给众多测试用户在不同设备使用,系统调用序列收集器进行记录并上传用户使用过程产生的系统调用记录;

(2) 对收集到的正常应用的海量使用序列进行基于短序列行为的分析,生成这个应用的正常行为模式库。

在终端的主要步骤是:

(1) 终端运行安全服务,以Android服务的形式存在;服务在第一次启动时获取系统已安装的应用,并从云端更新“正常行为模式库”;当有新应用安装或旧应用卸载时,安全服务也会下载或删除其对应的正常行为模式库。

(2) 系统调用序列收集器,首先通过ActivityManager类的getRunningAppProcesses方法获取Android系统正在运行的进程信息,包括进程号PID、进程名NAME和应用包名pkg等;然后对未标记为安全的应用的进程进行序列采样;Linux系统的程序strace可以跟踪进程的系统调用,比如要跟踪进程PID是1000的进程的系统调用,可以使用strace-p 1000,在Android系统执行可以使用Runtime.getRuntime().exec(“strace-p 1000”)。

(3) 行为分析器,对收集到的应用一段时间内的系统调用序列,进行短序列提取(见3.1节),然后基于正常行为模式库计算异常率(见3.2节)。

(4) 根据行为分析器得到的异常率,由管理进程仲裁是否超过阈值,如果被认定为恶意重打包应用,则通过恶意应用提示器对用户进行有效的提示;经多次检测均为正常的应用被管理进程标记为安全。

相比于现有的Android安全检测方案[14],本方案中云端协作的技术特点是:利用了云端丰富的存储计算能力,在云端训练正常行为模式库;同时也考虑到手机并不是时刻联网的现状,在用户联网时将手机上安装应用对应的行为模式库下载到手机。

3 基于系统调用行为的算法设计

3.1正常行为模式库

对于正常的应用,在云端收集多个用户的长时间操作生成的系统调用序列Γ={c1,c2,…,cn}。其中ci(1≤i≤n )表示一个Linux系统调用,短序列长度为k,则序列Γ生成行为模式库的方法是:1)分别以ci(1≤i≤n-k+1)开始,截取k个系统调用,构成短序列集合;2)对1)中生成的短序列集合进行去除重复的操作。下面以包含7个系统调用的序列为例进行行为模式库的生成:

(1) clock_gettime(2) ioctl(3) clock_gettime(4) ioctl

(5) clock_gettime(6) getpid(7) getuid32

选定短序列的长度为k=3,则生成的行为模式库如图3所示。

图3 短序列行为模式库示例

7个系统调用,以序列长度为3,去除重复序列后可以生成4个短序列。在实际的应用中,至少需要生成数以千万条系统调用序列来提取短序列。Linux内核(版本大于2.6)的系统调用有超过250个,如果短序列的长度为k,则短序列的可能个数为250k,系统调用函数的平均长度为len。那么一个短序列的平均长度为k×len,存储的空间复杂度最大是O(250k×len×k)。所以可以采用哈希映射和字典树组合的数据结构来对存储和时间空间进行优化。

(1) 哈希映射

图4 哈希映射后的知识库示例

一个Linux系统调用函数一般由几个字符组成,如clock_gettime占13个字节,ioctl占5个字节。同时对于Linux系统调用函数来说,在内核的unistd.h头文件中,对应着一个整数数值的系统调用号,以ARM架构对应的unistd.h为例,clock_gettime对应263,ioctl对应54。为了节省存储空间,我们可以使用hash map的结构,键为字符串string类型,值为short类型,这样在调用序列中可以直接用2个字节的short数值来表示系统调用函数。那么图3的短序列就转换为图4所示。

(2) 字典树

字典树又称为前缀树,是一种快速检索的多叉树结构,标准的字典树节点存储的是字符。我们这里存储的是short类型的整数值,用字典树表示图4的短序列知识库如图5所示。

图5 知识库的字典树结构

因为系统调用数是有限的(最新的Linux 3.18.1内核有300多个),所以在实际数据的海量序列中,同一个节点将多次被重用,空间复杂度会大幅度降低。而对于查询复杂度 ,因为k为序列长度是一个常数,所以查询复杂度为O(1)。

3.2异常行为检测

正常应用的行为模式库N={n1,n2,…,nt}包含t个短序列nj(1≤j≤t),nj={c1,c2,…,ck}是维度为k的向量。行为模式库N的生成及存储方式见3.1节介绍。终端以行为模式库为基础,在一定时间内收集到的短序列模式为M={m1,m2,…,ms},mi={d1,d2,…,dk}也是维度为k的向量。对于k维度向量mi和nj相似性度量,传统的相似性度量采用余弦相似度,但是此处的向量各维度属性的数值代表的是系统调用号,而不是数量,所以采用余弦相似性不合适。汉明距离可以用来表示两个序列不同字符的个数,所以基于汉明距离,给出两个短序列相似性的度量定义。

定义1对于两个k维度的短序列:mi={d1,d2,…,dk},nj={c1,c2,…,ck},其相似度由式(1)表示:

(1)

定义2对于短序列mi={d1,d2,…,dk},短序列集合N={n1,n2,…,nt},其相似度如式(2):

(2)

即短序列相对于短序列集合的相似度,是其与集合中每个元素相似度的最大值。为了给出短序列异常度的定义,我们定义符号函数如下:

(3)

定义3集合N={n1,n2,…,nt}为给定某一应用的正常的行为模式库,短序列mi={d1,d2,…,dk}相对于行为模式库的异常度是TSgn(sim(mi,N),C)。

根据定义3可知,当短序列mi的相似度小于阈值C时,被认为是异常的,异常度为1;反之,被认为是正常的,异常度为0,阈值C可以用来调节检测的严格程度。进一步地,基于单个短序列的异常度,给出序列集合的异常率的定义:

定义4给定某个应用的正常行为模式库N={n1,n2,…,nt},当一段时间内,终端设备收集到应用的短序列集合为M={m1,m2,…,ms},则集合M相对N的异常率为:

(4)

如式(4)所示,短序列集合M相对于正常行为行为模式库的异常概率,由集合M中异常的序列所占的比例所决定。参数C为单个序列异常度的阈值,可以用来设置检测的严格程度,极度严格的情况下(C=1),此时任何与知识库相似度不为1的序列都被认为是异常的。阈值C的选取则取决于正常应用的行为模式库N的训练是否充分。

4 实验与分析

为了说明本文所提方案的通用性,实验分为两部分:首先对自己编写的重打包版本的应用进行检测,然后对已有的真实重打包应用进行检测。

4.1对自己编写的应用的检测

以计算器应用为例,计算器应用包含四则运算和三角函数运算等功能。计算器应用的重打包版本,则注入读取通讯录并发送到远程服务器的恶意代码。

(1) 生成应用的正常行为模式库

如3.1节所述,选取五个用户分别安装正常的计算器应用,正常使用15天,共生成约1000万条系统调用序列。由系统调用序列生成短序列组成的正常行为模式库的过程,关键因素是短序列长度k的选取。太小的k不足以体现用户行为序列特征,而太大的k值又使得短序列行为模式库占用太多的存储空间。文献[13]的实验说明短序列长度不小于6时都可以生成有效的行为模式库。此处选取k=6,7,8,9,10,11,12进行实验,图6为不同值时生成的行为模式库所含的短序列条数。

图6 不同序列长度对应的模式库大小

从图中可以看出,随着序列长度k的增加,生成的行为模式库的大小增长非常明显。考虑到存储空间与计算速度的问题,选取k=6时生成的行为模式库为例,进行重打包应用检测。

(2) 重打包应用检测

选取5个用户,安装重打包版本的计算器应用,每个用户分别收集40 000条左右的系统调用序列,以4.1节生成的模式库为基础,根据3.2节的异常行为检测方法,计算异常率。作为对比,5个用户卸载重打包版本的应用,然后安装正常版本的计算器应用,按照同样的方式计算异常率。式(4)中参数C作为异常度的阈值,其取值影响到检测的严格程度。在极度严格情况下(C=1),用户分别安装正常版本应用和重打包版本应用时检测到的异常率,如表1所示。

表1 阈值C=1时异常率对比

由表1可以看出,在阈值C=1时,5个用户安装正常应用,检测到的异常率的最大值为0.000230,而5个用户安装重打包版本的应用,检测到的异常率的最小值即为0.005232。重打包版本的异常率的最小值依然比正常版本的异常率高了一个数量级,所以正常应用和重打包应用可以正常地区分。同时,正常行为模式库的生成,是众多测试用户长时间使用正常应用生成的,当训练时间短、数据不足够多时,可以调整异常度阈值C。当C=0.8时,5个用户分别安装正常应用和重打包版本的应用,所检测到的应用的异常率对比如表2所示。

表2 阈值C=0.8时异常率对比

在调整阈值C为0.8后,式(4)在计算异常概率时,会降低检测的严格程度。正如表2所示,正常应用的异常率都变为了0,重打包版本的应用的异常率虽然也随之降低,但5个用户异常率的最小值依然为0.000356。正常应用和重打包版本可以依据异常率的分布区间不同,而非常容易地进行区分。综合表1和表2,可以看出本文提出的方案可以有效地对重打包应用进行检测,而阈值C的选择与正常行为模式库的训练是否充分有关,合适的C值使得重打包应用更容易区分。

4.2对已有的真实重打包应用的检测

对已经存在的真实的重打包应用进行检测,以“动态脚印壁纸”应用为例,在官方网站下载该应用的正常版本,同时在“Contagio mobile”网站[15]下载真实的重打包版本。该重打包版本对原始应用注入了PJApps病毒,会自动与后台联网并泄露用户隐私和恶意消耗用户资费等。根据4.1节对自己编写的重打包版本应用的检测方法,对“动态脚印壁纸”的正常版本和重打包版本进行检测,在阈值C=0.8时所检测到的异常率对比如表3所示。

表3 阈值C=0.8时异常率对比

由表3可以看出,根据异常率的不同,该应用的正常版本和重打包版本也很容易进行区分,说明了本文的方案对真实的重打包版本应用也是有效的。

4.3性能分析

考虑本文提出的方案对手机终端性能的影响,正常行为模式库的生成是在云端的服务器上面进行的,对手机等终端设备的性能是没有影响的。而在手机端进行的重打包应用检测,则需要对其进行性能分析。通过对真实用户使用安全服务程序时的监测和统计,性能指标如表4所示。

表4 安全服务程序资源消耗

从表4可以看出,安全服务程序的资源消耗的峰值都比较小,这是因为应用的正常行为模式库不大,同时引入了哈希映射和字典树(见3.1节),大大地优化了内存消耗和计算量。所以,安全服务方案在保障安全的同时,并不会明显影响手机性能。

5 结 语

本文通过对应用运行时产生的系统调用序列进行分析,提出了基于系统调用短序列的重打包应用检测方案。方案采用了云端协作的架构,在云端进行正常行为模式库的生成,终端基于模式库进行异常行为的检测。为了准确地鉴别应用是否为重打包版本,给出了系统调用短序列的相似性定义,以及系统调用序列集合的异常率定义。针对终端有限资源的现状,提出了哈希映射与字典树的方案,优化了内存使用和计算速度。以自己编写的重打包应用和已有的真实重打包应用为例,在真实设备上进行了实验,证明了本文所提方案的有效性。

[1] IDC.Press Release[EB/OL].2014-08-14.http://www.idc.com/getdoc.jsp?containerId=prUS25037214.

[2] Shabtai A,Fledel Y,Kanonov U,et al.Google android:A comprehensive security assessment[J].IEEE security and Privacy,2010,8(2):35-44.

[3] 杨珉,王晓阳,张涛,等.国内Android应用商城中程序隐私泄露分析[J].清华大学学报:自然科学版,2013,52(10):1420-1426.

[4] Zhou Y,Jiang X.Dissecting android malware:Characterization and evolution[C]//Security and Privacy (SP),2012 IEEE Symposium on.Piscataway,NJ:IEEE,2012:95-109.

[5] Zhou W,Zhou Y,Jiang X,et al.Detecting repackaged smartphone applications in third-party android marketplaces[C]//Proceedings of the second ACM conference on Data and Application Security and Privacy.New York,NY:ACM,2012:317-326.

[6] Enck W,Ongtang M,McDaniel P.On lightweight mobile phone application certification[C]//Proceedings of the 16th ACM conference on Computer and communications security.New York,NY:ACM,2009:235-245.

[7] Tang W,Jin G,He J,et al.Extending Android security enforcement with a security distance model[C]//Internet Technology and Applications (iTAP),2011 International Conference on.Piscataway,NJ:IEEE,2011:1-4.

[8] 杨欢,张玉清,胡予濮,等.基于权限频繁模式挖掘算法的Android恶意应用检测方法[J].通讯学报,2013,34(S1):106-115.

[9] Burguera I,Zurutuza U,Nadjm-Tehrani S.Crowdroid:behavior-based malware detection system for android[C]//Proceedings of the 1st ACM workshop on Security and privacy in smartphones and mobile devices.New York,NY:ACM,2011:15-26.

[10] Shabtai A,Kanonov U,Elovici Y,et al.“Andromaly”:a behavioral malware detection framework for android devices[J].Journal of Intelligent Information Systems,2012,38(1):161-190.

[11] Wu D J,Mao C H,Wei T E,et al.Droidmat:Android malware detection through manifest and API calls tracing[C]//Information Security (Asia JCIS),2012 Seventh Asia Joint Conference on.Piscataway,NJ:IEEE,2012:62-69.

[12] 雷灵光,荆继武,王跃武,等.一种基于行为的Android系统资源访问控制方案[J].计算机研究与发展,2014,51(5):1028-1038.

[13] Hofmeyr S A,Forrest S,Somayaji A.Intrusion detection using sequences of system calls[J].Journal of computer security,1998,6(3):151-180.

[14] 蒋绍林,王金双,张涛,等.Android安全研究综述[J].计算机应用与软件,2012,29(10):205-210.

[15] Contagio mobile[EB/OL].2015-03-20.http://contagiominidump.blo gspot.com/.

A BEHAVIOUR-BASED DETECTION SCHEME FOR ANDROID REPACKAGED APPLICATION

Huan Ziqiang1,2Ni Hong1Hu Linlin1Guo Zhichuan1

1(NationalNetworkNewMediaEngineeringResearchCenter,InstituteofAcoustics,ChineseAcademyofSciences,Beijing100190,China)2(UniversityofChineseAcademyofSciences,Beijing100049,China)

Malicious applications of repackaged types are generated by injecting the malicious code into normal applications, which accounts for a large percentage of malicious applications in Android platforms. To solve this problem, we propose a behaviour-based detection scheme for Android repackaged application. The scheme uses the software architecture with cloud collaboration, analyses in the cloud the behaviour patterns on normal applications based on short sequences of system calls so that forms a normal behaviour pattern database. In terminal device, it downloads from the cloud the normal behaviour pattern databases with the applications installed, monitors the system call sequences with the applications installed, and calculates their abnormal rate. Experimental result shows that the proposed method is effective, and it can accurately identify the malicious repackaged applications.

Repackaged applicationsAndroid securitySystem callShort sequenceCloud collaboration

2015-02-09。国家科技支撑计划课题(2012BAH73F 01);中国科学院先导专项课题(XDA06040501)。桓自强,博士生,主研领域:智能终端系统,终端安全技术。倪宏,研究员。胡琳琳,副研究员。郭志川,副研究员。

TP309

A

10.3969/j.issn.1000-386x.2016.08.066

猜你喜欢
调用云端阈值
云端之城
核电项目物项调用管理的应用研究
小波阈值去噪在深小孔钻削声发射信号处理中的应用
基于自适应阈值和连通域的隧道裂缝提取
LabWindows/CVI下基于ActiveX技术的Excel调用
比值遥感蚀变信息提取及阈值确定(插图)
行走在云端
云端创意
基于系统调用的恶意软件检测技术研究
室内表面平均氡析出率阈值探讨