APP下载

基于云安全架构的Android恶意软件静态检测方案

2018-05-25许小媛,黄黎,李从明

制造业自动化 2018年5期
关键词:该软件静态应用程序

0 引言

进入移动互联时代以来,随着日益丰富的应用生态,Android系统的市场占有率也随之增长。与IOS不同,Android应用软件下载更加方便快捷,不同的软件市场都可以下载,例如,腾讯手机管家,360手机卫士,Google官方市场等。不过,如此多的软件来源虽然为Android用户提供了方便,但因为其不同的软件安全标准也给用户带来了一定的安全隐患[1]。Android软件不需要安全机构的认证也可上线使用,软件开发者仅靠签名与其开发软件建立信任关系,而且Android软件被反编译进行修改的成功率比较大,这也无疑增加了Android恶意软件的生存空间。此外黑客们攻击Android操作系统所获取的收益远大于攻击其他操作系统,这也是恶意软件疯狂增长的一大诱因[2]。层出不穷的恶意软件和脆弱的操作系统对用户的隐私信息和设备的正常使用造成了极大的威胁[3]。恶意软件不仅会盗取隐私数据,还会滥用系统资源,扰乱设备的正常使用。而且如果带有恶意软件的智能手机接进了一个机构的网络中,那么该机构其他设备的系统和数据都会受到很大的威胁[4]。根据CISCO的一份报告[5]显示,大约99%的手机恶意软件都是运行在Android平台中。因此,在当前设计出一种高效的Android恶意软件检测方案是很有必要的。

对于Android恶意软件检测方案的研究越来越被重视。文献[6]中实现了使用启发式过滤器来检测新的Android恶意软件,同时通过Android软件所获取的权限来审核其是否为恶意软件。文献[7]提出通过对Android软件所获取的敏感权限进行语义检索以及分析其所获取权限之间的联系来判断其是否为恶意软件。文献[8]通过总结Android恶意软件所获取的权限提出了一种以所需权限为依据的检测方法。文献[9]中设计了一种静态检测工具,此检测工具通过对应用程序AndroidManifest.xml文件中数据流传输是否符合安全规则的分析来判断其是否为恶意软件。文献[10]中提出的方法基于应用程序中的权限计算了程序的威胁系数,并发现朴素贝叶斯算法能够在基于威胁系数的应用程序分类方法中得到最优结果。文献[11]提出了DroidSIFT系统,该系统首先对API调用的关联关系进行建模,然后比较所得到的关联关系图,最后使用朴素贝叶斯算法进行分类判断。上述方案对Android恶意软件起到了一定的检测作用,但是这些方案都存在着检测准确性差或者检测效率低等方面的问题。

针对上述问题,在本文中作者通过分析Android恶意软件的实现原理,基于云安全架构提出一种静态检测方案,该方案借鉴云安全架构来构建检测系统并设计异常检测算法,使得Android恶意软件的静态检测工作更加高效、准确。

文章第一部分对目前安全恶意软件检测方案的研究进行了比较分析,第二部分对云安全技术、分类学习算法等相关技术进行了介绍与对比,第三部分在分析了Android恶意软件的实质后进行了基于云安全架构的整体方案设计,第四部分对客户端系统进行了设计,其主要功能模块是APK文件信息收集和评估结果显示,第五部分对云端服务器系统进行了设计,其主要功能模块为签名比对、APK文件反编译、源码的静态分析和结果的评估,所运用的技术主要是Android反编译技术和机器学习分类算法,第六部分对方案进行了实验评估,最后总结了方案的优势。

1 相关技术

云安全技术是先进的云计算技术的整合,作为云计算技术中的重要分支在安全领域中的应用卓有成效[12]。在云安全技术中,客户端的请求将根据服务器端相应的安全策略进行处理,处理结果直接反馈给客户端。此外,服务器端的安全策略会根据客户端定期获取恶意软件的最新信息而进行更新。

Android恶意软件检测方案主要分为动态检测和静态检测两种[13]。动态检测部署在手机上实时运行进行检测,会消耗一定的内存和电量,而且动态检测的作用主要是对恶意行为发生后进行检测和拦截,无法完全地消除恶意行为带来的安全隐患。在本文中所设计的Android恶意软件检测方案采用了静态检测的思路,静态检测主要作用于Android程序安装之前,通过对程序进行源码级的分析来检测该程序是为恶意软件,从而优质快速的减少程序的恶意行为,保证了用户信息的相对安全。

分类学习算法是一种对大数据进行处理的技术,目前被广泛运用与计算机相关的各个领域中[14]。分类学习算法主要包括分类器训练和分类器实施两部分。在分类器训练阶段中,首先需要准备一个包含大量已知类别APK文件的训练集,接着通过对每个APK文件进行分析来获取该文件的向量模型,然后利用这些文件的向量模型和对应的类别标记生成所需要的分类器。在分类器实施阶段中,选择一个非训练集中的APK文件来进行测试,首先获取该APK文件的向量模型,然后使用分类器对此向量模型进行分类,便可以得到该APK文件的分类结果。

2 整体设计方案

Android恶意软件的实质就是利用一些涉及到用户敏感信息的API进行特殊的排列组合来完成恶意行为[15]。例如,abortBroadcast()的功能是用来中断广播,它与用来发送短信息的sendTextMessage()相结合,会实现屏蔽短信息并转发的功能。在Android应用程序的开发中,如果应用程序中要调用一个API来实现一些功能,则需要在AndroidManifest.xml配置文件中声明与该API所对应的系统权限。而Android系统采用的是静态管理的权限控制机制,无法有效地对安装后的应用程序进行权限管理,这无疑增加了恶意软件的生存能力。所以,分析Android应用程序的AndroidManifest.xml配置文件,通过其中的敏感权限定位敏感API,然后分析敏感API的排列组合是否具有恶意行为,可以判断出该应用程序是否为恶意软件。

随着科学技术的日益成熟,手机平台的安全软件也得到了快速发展,纯粹的Android恶意程序也随之减少,但是那些通过编译普通应用程序将恶意代码嵌入被破解编译的普通应用程序中从而通过安全软件检测以实现恶意功能的恶意程序则与日俱增,所以说,被修改过的Android程序通常情况下更有可能是恶意程序,而判断一个Android应用程序是否被修改的依据就是判断其签名文件是否被修改。Android程序的三个签名文件,MANIFEST.MF、CERT.SF和CERT.RSA,保存着该程序中各个文件的加密信息。每一个应用程序安装包中的签名文件都是唯一的,被修改后的应用程序安装包中的签名文件无法再与原应用程序中的签名文件保持一致。所以,通过对签名文件信息的匹配,可以判断出该应用程序是否被修改过。

图1 检测方案结构

在本文中所设计的检测方案借鉴于云安全架构,分为客户端和服务器端两部分。客户端部署在装有Android系统的移动终端上,服务器系统部署在云端的服务器上。客户端的主要功能是搜集用户所要安装的APK文件的相关信息,将APK文件上传到云端服务器上,接收云端服务器的反馈信息并显示给用户,向服务器发送客户端上的黑白名单,接收服务器返回的黑白名单并更新。服务器系统的主要功能是接收客户端所上传的APK文件,对APK文件进行反编译和静态分析,对该文件的签名信息进行比对,收集检测结果并反馈给客户端,收集客户端发送的黑白名单并将黑白名单进行整合处理后共享给各个客户端。负责客户端与云端信息传输的网络通信模块在客户端和服务器系统中都有嵌入,该模块通过现有web技术来实现,本文将不再详细解说。

图2 检测步骤

检测方案的主要工作步骤如下:

1)客户端确定所要进行检测的APK文件,收集该文件的名称、版本和下载来源信息,然后将APK文件和所获取的相关信息发送给服务器端。

2)服务器系统接收到客户端发送来的信息后,将该APK文件进行解压缩和反编译,然后根据官方市场中相同的APK文件对该文件的签名信息进行比对。

3)服务器系统根据反编译所得到的配置文件分析该软件所用到的敏感权限,并通过其对敏感API进行定位,然后提取出敏感API的排列组合信息。

4)服务器系统将所得到的敏感API的排列组合信息,使用所设计的异常检测算法将其与从官方市场中获取的相同APP进行对比处理,判断其是否具有异常情况。

5)服务器系统将签名比对的结果和排列组合信息的处理结果进行整合评估,判断该软件是否为恶意软件,将其加入到黑白名单并反馈到客户端,由客户端显示给用户。

3 客户端系统的设计

Android操作系统的移动终端设备是客户端系统的主要部署环境,主要功能模块是APK文件信息收集和评估结果显示。

3.1 APK文件信息收集

APK文件信息收集主要作用是收集APK文件的名称、版本和下载来源等相关信息,这些信息收集完毕后会和APK文件一同发送到云端的服务器系统中。

3.2 黑白名单机制

黑白名单机制的主要作用是在Android手机上完成恶意软件的安装拦截功能,并且与服务器端进行信息交互,手机本地的黑白名单与云端服务器进行实时同步,同时接受云端服务器将黑白名单信息进行实时共享以及更新。

3.3 评估结果显示

云端服务器系统生成评估结果并将评估结果反馈给客户端,接到反馈的客户端会将评估结果传输到移动终端,从而以视图的形式展示该软件的检测信息给用户。

4 云端服务器系统的设计

本文检测方案的最重要组成部分就是云端服务器系统,其主要功能模块为签名比对、APK文件反编译、源码的静态分析和结果的评估,所运用的技术主要是Android反编译技术和机器学习分类算法。在对APK文件进行检测之前,服务器系统会根据该文件的名称、版本号和下载来源信息来确定该软件是否在黑白名单中,若已经检测过则直接向客户端反馈信息,若没有进行过检测则对其进行检测工作。其检测流程如图3所示[17]。

图3 服务器检测流程

4.1 签名比对

APK文件经过解压缩后就会得到保存有签名信息的文件夹,该文件夹下存放着CERT.RSA、CERT.SF和MANIFEST.MF三个签名文件,对这些签名文件中的信息进行提取后就可进行签名信息的比对工作。签名比对的工作步骤如下:

1)将所要进行检测的APK文件进行解压缩得到其签名文件,并对签名文件中的签名信息进行提取。

2)根据客户端所上传的APK文件的相关信息,在Android官方市场中找到并下载相对应的软件,并对其进行解压缩和签名信息的提取。

3)对两次获得的签名信息进行匹配,若签名信息相同则说明该软件未被修改,若签名信息不同则说明该软件被修改的可能性极大。签名检测使用的算法和API信息比对检测都使用所设计的异常检测算法,算法伪代码如表1所示。

4)将匹配结果发送到服务器的评估模块中用来进行最后的结果评估。

4.2 APK文件反编译

APK文件的反编译就是应用Android的反编译技术,所需要的工具为APKTool、dex2jar和jd-gui这三种工具。APK文件反编译后,该软件中拥有权限信息的AndroidManifest.xml文件和能够阅读该软件Java源代码的jar文件将会被反编译者得到。APK文件反编译的工作步骤如下:

1)将目标软件的APK文件复制到APKTool工具的根目录下,使用反编译指令apktool.bat d test.apk test得到该程序的AndroidManifest.xml配置文件。

2)将目标软件的APK文件解压缩,得到其classes.dex文件。将该文件复制到dex2jar工具的根目录下,使用反编译指令dex2jar.bat classes.dex得到对应的classes_dex2jar.jar文件。然后使用jd-gui工具打开classes_dex2jar.jar文件,查看该程序的Java源代码。

4.3 源码的静态分析

根据APK文件反编译的结果来对该软件进行源码级别的静态分析。AndroidManifest.xml中文件可以得到该软件中所调用的权限信息,能够用来定位敏感API。深度研发的jar文件功能十分强大,可以直接用于部署和封装库,也可以直接使用到组件以及插件程序中,并且能够被大型编译器和Java虚拟机直接操作,能够从中提取出所有的Java字节信息和内容。在该功能模块中还会用到机器学习分类算法来对所提取到的敏感API信息进行分类处理。源码静态分析的工作步骤如下:

1)通过AndroidManifest.xml文件中敏感权限的信息对源码中的敏感API进行定位。

2)找到敏感API的位置后,使用基于学习分类的异常检测算法首先提取敏感API的排列组合信息并生成向量模型,然后通过预生成的分类器对所生成的向量模型进行分类处理得到分类结果。异常检测算法的伪代码如表1所示。

表1 本地学习算法

表2 异常检测算法

3)将所得到的分类结果发送到服务器的评估模块中来进行最后的结果评估。

4.4 结果评估

结果评估是根据签名比对和源码的静态分析两个模块所发送的结果来评估该软件的安全性。评估规则如下:

1)若签名信息一致,不存在恶意行为,则该软件安全;

2)若签名信息一致,存在恶意行为,则该软件为恶意软件;

3)若签名信息不一致,不存在恶意行为,则该软件存在安全风险;

4)若签名信息不一致,存在恶意行为,则该软件为经过篡改的恶意软件。

最后的评估结果由服务器端发送到客户端并显示给客户。

5 实验评估

针对本文中所设计的静态检测方案,我们收集了1143个恶意软件样本和2937个正常应用程序样本来对该方案进行评估,验证其检测准确度和检测效率。另外我们也选择了一些常见的安全软件使用同样的恶意样本来进行比较。

规则1)为评估实验中计算检测准确度的公式,TP为正确判断出的恶意样本数,TN为正确判断出正常样本的数量,FP为没有判断成功的恶意样本数量,FN为没有判断成功的正常样本数量。各个检测系统的检测准确度结果如表3所示。

表3 系统检测准确度

从表1中可以看出,针对我们收集的检测样本所进行的准确度评估实验中,我们所设计的恶意程序静态检测方案的检测准确度要优于百度、金山和360的安全软件。不过除了检测准确度之外,我们还应该考虑单个检测流程所产生的时间损耗,各个检测系统的检测时间如表4所示。

表4 系统检测时间损耗

从表4中可以看出,我们所设计的检测系统在检测流程上花费的时间最多,我们经过分析后发现该问题产生的原因主要是APK从客户端传输到云端的网络时间损耗以及部署在云端服务器的性能劣势。关于如何提高检测效率,减少检测花费的时间是我们今后研究工作的一个主要方向。

6 结束语

本文设计了一种基于云安全架构的Android恶意软件静态检测方案,该方案具有以下优势:

1)本方案的设计立足于云端服务器,使用功能完备的服务器处理大量复杂的操作过程,从而极大地减轻移动设备终端的使用率,并且提高了检测效率。

2)本方案中设计了基于分类学习的异常检测算法,用来对所提取的向量模型进行分类检测处理,可以很大地提高静态检测工作的准确率。

本方案同样具备不足之处,首先缺乏足够数量的恶意软件样本来进行分类器训练,这会影响分类器的准确性;而且本方案所花费的检测时间虽然相对较少,但是距离理想的标准还有一定的差距,更加系统化地实现该检测方案,精简检测步骤,减少检测花费的时间也将是进一步研究工作的主体。

参考文献:

[1]2015年中国手机安全状况报告.360互联网安全中心[EB/OL].2016-03-20.http://zt.360.cn/1101061855.php?dtid=1101061451&did=1101205565.

[2]Mylonas A,Theoharidou M,Gritzalis D.Assessing privacy risks in Android: a user-centric approach[J].Lecture Notes in Computer Science,2014,8418:21-37.

[3]杨欢.协议漏洞挖掘及Android平台恶意应用检测技术研究[D].西安电子科技大学,2014.

[4]杨欢,张玉清,胡予濮,等.基于多类特征的Android应用恶意行为检测系统[J].计算机学报,2014,37(1):15-27.

[5]CISCO. CISCO 2015 annual security report [EB/OL].2015.

[6]Zhou Y, Wang Z, Zhou W, et al. Hey, you, get off my market:Detecting malicious apps in official and alternative Android markets[A].In Proceedings of the 19th Annual Network&Distributed System Security Symposium[C].2012:1-13.

[7]Gianazza A, Maggi F, Fattori A, et al. Puppetdroid: a user-centric ui exerciser for automatic dynamic analysis of similar android applications[J].Eprint Arxiv,2014:1-12.

[8]Feizollah A,Anuar N, Salleh R, et al. Comparative study of k-means and mini batch k-means clustering algorithms in android malware detection using network traffic analysis[A].International Symposium on Biometrics and Security Technologies[C].2014:198-202.

[9]Sanz B, Santos I, Ugarte-Pedrero X, et al. Anomaly detection using string analysis for android malware detection[A].International Joint Conference SOCO’13-CISIS’13-ICEUTE’13[C].2014:469-478.

【】【】

[10]Yerima SY, Sezer S,McWilliams G.Analysis of bayesian classification based approaches for android malware detection[J].Iet Information Security,2014,8(1):25-36.

[11]Zhang M,Duan Y,Yin H,et al.Semantics-aware Android malware classification using weighted contextual API dependency graphs[A].ACM Sigsac Conference on Computer & Communications Security[C].2014:1105-1116.

[12]Cai M, Hou Q-S, Jing F,et al.Research of cloud security communication firewall based on Android platform[A].ICCSEE-13[C].2013.

[13]彭国军,李晶雯,孙润康,等.Android恶意软件检测研究与进展[J]. 武汉大学学报(理学版),2015,61(1):21-33.

[14]Feizollah A, Anuar N, Salleh R,et al. A review on feature selection in mobile malware detection[J].Digital Investigation,2015,13:22-37.

[15]侯勤胜,曹天杰.安卓恶意软件的分析与检测[J].河南科技大学学报(自然科学版),2015,36(5):52-56.

[16]Karim O-E,Xiaokui S,Danfeng Y,et al.Profiling user-trigger dependence for Android malware detection[J].Computer &Security,2015(49):255-273.

[17]候勤胜,曹天杰,陈秀清.基于网络行为的Android恶意软件检测方案[J].安徽大学学报(自然科学版),2016,40(5):32-36.

猜你喜欢

该软件静态应用程序
最新进展!中老铁路开始静态验收
静态随机存储器在轨自检算法
简单灵活 控制Windows 10更新更方便
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
油罐车静态侧倾稳定角的多体仿真计算
Allen & Heath推出GLD Editor控制软件
三星电子将开设应用程序下载商店
捉拿李鬼
微软软件商店开始接受应用程序