安卓恶意软件的分析与检测

2015-06-07 05:54侯勤胜曹天杰
关键词:配置文件号码应用程序

侯勤胜,曹天杰

(中国矿业大学计算机科学与技术学院,江苏徐州 221116)

安卓恶意软件的分析与检测

侯勤胜,曹天杰

(中国矿业大学计算机科学与技术学院,江苏徐州 221116)

为了充分说明安卓(Android)恶意软件的工作原理,分析并降低其威胁性,本文利用Android的安全机制缺陷和Service、Broadcast两个组件实现了一个隐私窃取软件。阐述了使用Android逆向工程技术完成恶意代码植入的方法。基于云安全技术和信息比对算法,设计出一个恶意软件静态检测方案,能够有效地在源码级完成恶意软件的检测工作。

安卓;安全机制缺陷;恶意软件;逆向工程;静态检测

0 引言

在全球智能手机的发展过程中,安卓(Android)手机做出了最突出的贡献[1]。但基于Android系统的恶意软件也随之迅猛发展,360互联网安全中心发布《2013年中国手机安全状况报告》中指出,在2013年360互联网安全中心共截获了大约67万个新增的Android恶意程序样本,较上年增长了4倍多,平均每天截获大约1 800个[2]。由此可见,Android恶意软件给人们带来的威胁越来越大。

近年来,针对Android恶意软件的研究已经成为信息安全领域的热点。文献[3]提出了基于权限对比的检测方案,但该方案只考虑对权限的分析,误报率和漏报率比较高。文献[4]提出了基于软件行为特征的恶意软件检测方案,但该方案的效率比较低。文献[5]对恶意软件的混淆技术进行了研究,文献[6]实现了一个基于支持向量机的恶意软件检测方案,但它们都忽略了恶意代码植入正常应用程序的情况,存在较高的漏报率。这些文献都没有对恶意软件的实现原理进行分析,缺乏对恶意软件研究的主动性。

本文利用Android系统的安全机制缺陷和Service、Broadcast两个组件,首先实现了一个具有较高隐蔽性的Android隐私窃取软件,复现了恶意软件的实现原理和技术,并且详细描述了恶意软件开发者利用Android逆向工程进行恶意代码植入的方法。最后设计了一个恶意软件静态检测方案,通过对签名信息和应用程序编程接口(API)调用信息的对比,可以完成对具有较高隐蔽性和篡改正常应用程序的恶意软件的检测工作。

1 Android恶意软件分析与实现

1.1 Android安全机制缺陷分析

1.1.1 权限控制机制缺陷

Android系统的权限机制规定Android应用程序只能够访问和调用其AndroidManifest.xm l文件中所声明的权限及相关的API[7]。但这种机制是静态的,系统无法在程序后动态地管理该程序所调用的权限[8]。恶意软件开发者利用Android的这种静态权限管理机制来调用一些敏感权限实现恶意操作,并可以用一些隐藏技术使安全软件无法限制权限调用行为。

1.1.2 签名机制缺陷

Android系统的签名机制可以在Android应用程序安装时,对Android安装包(APK)中的数字签名和签名文件中的数字签名一致性进行检测[9]。但若是将签名文件删除,并使用重新签名技术,则Android系统的签名机制就无法正常发挥其作用[10]。签名机制的缺陷主要会被应用到恶意代码注入的操作中。

1.2 隐私窃取软件主要功能实现

本文实现了基于短信指令的隐私窃取软件实例,该软件可以获取手机上的短信、通讯录、通话记录等隐私信息,还可以通过该手机向第三方号码发送短信以及对特定短信监听。隐私窃取软件工作流程见图1。由于Android权限管理机制不具备动态管理能力,而且该软件借助于Service和Broadcast Receiver两个组件实现了软件的后台运行,所以Android系统和手机安全软件都无法限制其对敏感权限的调用以及恶意行为的实现。

1.2.1 后台运行与安全软件免杀功能的实现

图1 隐私窃取软件工作流程

在Androidmanifest.xm l配置文件中,首先需要将Activity组件去掉,保证程序不会向用户提供操作界面。然后定义Broadcast Receiver用来接收短信广播,可以通过Broadcast Receiver接收到相应广播来触发Service进入运行状态。再定义该恶意软件所要使用的两个服务,短信服务和电话服务,分别用来实现针对短信和电话的恶意操作。在AndroidManifest.xm l配置文件中同样会声明该程序所用到的系统权限,主要是针对短信和电话进行操作的敏感权限,例如“READ_CONTACTS”(允许程序访问联系人通讯录信息)、“READ_ SMS”(允许程序读取短信内容)等。

实现安全软件免杀是利用了Android中的Intent对象来实现的。在Broadcast Receiver的定义中使用了隐性Intent启动的方式,这会使安全软件无法确定系统中哪些Service会响应这个广播,从而让恶意行为绕过安全软件的拦截。

1.2.2 短信屏蔽与指令提取的实现

首先,需要在源码中定义指令字段,通过比较短信起始与指令字段长度一致的字段是否与指令字段匹配,来确定该短信是否为指令短信。如果为指令短信,则使用abortBroadcast()函数来终止该短信广播,在目标手机中屏蔽掉这条信息。然后,存储指令短信的来源号码并分析短信内容,将数字形式的操作指令提取并存储。

1.2.3 获取通话记录功能的实现

首先,通过ContentResolver实现应用程序之间的数据共享。然后,定义了SQLite数据库中Cursor类的变量,存储通话记录当中的信息。接着调用getColumn Index()函数得到通话记录中的号码、联系人姓名、来电方式、通话时长和通话时间。最后,将以上信息存储在ArrayList类里定义的变量中。获取通讯录信息和短信的原理与其相似,本文中不再描述。

1.2.4 短信发送功能的实现

短信发送功能依靠sendTextMessage()函数实现。

1.2.5 通过目标手机向其他号码发送信息功能的实现

对于向其他号码发送短信的功能是固定格式的,即“指令:指令码:发送号码:短信内容”。在获取发送号码和短信内容后,将会调用程序中定义的发送短信功能来发送短信。

1.2.6 特定短信监听功能的实现

首先,需要在程序中定义特定号码、特定时间和特定字段。接收到相匹配的短信后会使用abortBroadcast()函数来屏蔽短信显示,然后通过短信发送功能来完成短信转发。

首先该软件需要安装到Android手机上,在软件安装完成后会以Service形式在系统后台运行。当手机接收到短信后,该软件会首先对短信进行判断。若短信中含有指令字段,则将此短信屏蔽并提取出指令码,然后根据指令码完成相应的恶意操作。若短信中不含有指令字段,则判断该短信中是否具有特定号码、字段和时间,如果具有则将此短信屏蔽后转发,如果没有则正常显示该短信。

1.3 隐私窃取软件测试

本文将在Android虚拟机上对该软件进行测试,测试系统为当前的主流系统Android4.0,主要描述其获取通话记录功能和向第三方号码发送短信功能。

该恶意软件能够通过360手机卫士的安装检测,但是该软件可以被检测出所调用的权限。尽管使用360手机卫士将其调用的所有权限都设置为禁止,但是经过操作表明360手机卫士依旧无法限制该软件的恶意行为。

指令手机向目标手机发送指令qingqiu:3,将会得到目标手机的通话记录信息。通话记录信息的格式为姓名、类型、日期、通话时间和号码。

使用号码为5556的虚拟机向安装了监听软件的号码为5554的目标手机发送指令qingqiu:4:5558:hello world,这样号码为5558的虚拟机便可以接收到5554发来的内容为hello world的短信息。

2 恶意代码植入方法分析

恶意软件开发者通过利用Android逆向工程技术,将其所编写的恶意代码嵌入到正常的Android应用程序当中,这类改造而成的恶意软件具有很大的迷惑性,给Android系统用户造成了严重的安全威胁。Android逆向工程技术中常用到的反编译工具有APKTool、dex2 jar、jd-gui和JadClipse等。

2.1 代码植入流程

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

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

(3)根据对目标应用程序所要更改的功能,对AndroidManifest.xm l配置文件进行修改,并依据该程序的Java源代码对相应的smali代码进行修改。

(4)使用编译指令apktool.bat b test将修改后的应用程序相关文件打包为新的APK文件。(5)使用签名工具对新生成的APK文件进行重新签名,使其能够正常安装。

2.2 代码植入的实现

恶意软件开发者通常会使用Android逆向技术获得应用程序的配置文件和smali源代码,然后在smali文件中写入具有恶意功能的smali代码,并且在配置文件中写入相对应的服务和权限,接着将修改后的文件重新打包生成新的APK文件。最后利用Android系统的签名机制缺陷,使用重新签名技术完成新APK文件的签名。本文将分别描述所实现的针对“矿大飞闻”APP的代码植入实例。

首先运用反编译工具获得“矿大飞闻”的Java源代码、xm l配置文件和smali代码文件。然后对该APP的主配置文件进行修改。

(1)添加权限

3 恶意软件静态检测方案

当前的手机安全软件大多是以动态检测的方式运行,只能根据软件运行时的行为来判断其是否为恶意软件,对于文中所实现的能够对行为进行隐藏的恶意软件无能为力。而高效的静态检测方案可以通过分析软件代码,从源头上发现恶意软件,能做到提前预防并降低恶意软件的漏报率。

本文提出的检测方案采用了C/S架构。客户端部署在装有Android系统的移动终端上,服务器系统部署在云端的服务器上。客户端的主要功能是搜集用户所要安装的APK文件的相关信息,将APK文件上传到云端服务器上,接收云端服务器的反馈信息并显示给用户。服务器系统的主要功能是接收客户端所上传的APK文件,对APK文件进行反编译和静态分析,对该文件的签名信息进行比对,收集检测结果并反馈给客户端。

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

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

(2)服务器系统接收到客户端发送的信息后,将该APK文件进行解压缩和反编译,并根据官方市场中相同的APK文件对该文件的签名信息进行比对。该步骤可以有效地检测出被篡改的应用程序。

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

(4)服务器系统将提取的敏感API排列组合信息与所收集到的恶意行为API排列组合信息进行比对,判断其是否具有恶意功能。

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

用来进行签名信息和API信息比对的算法步骤如下:

输入:需要进行比对的字符串str1、str 2;

输出:两组字符串的相似度sim。

将计算出来的sim值与设定的阈值做比较,对签名信息和API信息进行判断,进而判断软件是否为恶意软件。该方案借助于Android反编译技术和所设计的信息比对方法,而且将主要检测任务置于云端的服务器上,能够高效地实现对篡改软件的检测和恶意软件源码级的静态检测。

4 结束语

Android恶意软件,实质上是通过调用一些敏感权限以及对一些敏感API按照特殊顺序排列组合来实现其恶意功能的,而且恶意软件若以Service形式运行或者嵌入到正常应用程序中将更难被发现。所以,在源码级别上实现对Android恶意软件准确和高效的静态检测迫在眉睫。此外,用户在依靠安全软件保护手机的同时,还需要养成良好的使用习惯。

[1] 199IT互联网数据资讯中心.2013-2014年中国手机市场研究年度报告[EB/OL].2014-03-22.http://www. 199it.com/archives/203469.htm l.

[2] 360互联网安全中心.2013年中国手机安全状况报告[EB/OL].2014-02-11.http://awhzfien7r.l5.yunpan.cn/lk/QpERXj6bcPGgA.

[3] Xiong P,Wang X F,Niu W J,et al.Android Malware Detection with Contrasting Permission Patterns[J].China Communications,2014(8):1-14

[4] Yu W,Zhang H L,Ge L Q,et al.On Behavior-based Detection of Malware on Android Platform[C]//Communication and Information System Security Symposium,Globecom.2013:814-819.

[5] Rastogi V,Chen Y,Jiang X.Catch Me If You Can:Evaluation Android Anti-Malware Against Transformation Attacks[J]. IEEE Transactions on Information Forensics and Security,2013,9(1):99-10.

[6] Zhao M,Ge F,Zhang T,et al.Antimaldroid:An Efficient Svm-based Malware Detection Framework for Android[J]. Communications in Computer and Information Science,2011,243(3):158-166.

[7] Teufl P,Kraxberger S,Orthacker C,et al.Android Market Analysis with Activation Patterns[J].Lecture Notes of the Institute of Computer Sciences,Social Informatics and Telecommunications Engineering,2012,94(4):1-12.

[8] Kleidermacher D.Bringing Security to Android-Based Devices[J].Strategies and Methodologies,2010(5):56-58.

[9] Burns J.Developing Secure Mobile Application for Android[J].ISEC:Partners,2008(10):1-28.

[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(1):161-190.

TP309.5

A

1672-6871(2015)05-0052-05

国家自然科学基金项目(61303263)

侯勤胜(1992-),男,山东菏泽人,硕士生;曹天杰(1967-),男,江苏徐州人,教授,博士,博士生导师,主要研究方向为密码学与信息安全.

2015-02-05

猜你喜欢
配置文件号码应用程序
说号码 知颜色
一个号码,一个故事
互不干涉混用Chromium Edge
猜出新号码
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
基于Zookeeper的配置管理中心设计与实现
忘记ESXi主机root密码怎么办
为View桌面准备父虚拟机
这个号码很吉祥