王力,万园春,邱卫东
基于蜜罐的Android恶意代码动态分析
王力,万园春,邱卫东
针对目前Android平台存在大量的恶意应用程序,设计并实现一种针对Android系统恶意代码的动态检测系统。该系统采用蜜罐的方式对恶意代码进行触发,大大提高了代码覆盖率,并且可以与其他检测方法结合使用,对于恶意代码分析具有很好的启示作用。系统的实现则基于QEMU Android模拟器来进行深度定制开发,并实现相应的管理模块,使多个蜜罐可以同时运行于一台主机,多台主机同时工作,进行大规模部署,提高检测效率。该系统的设计为黑盒的方式,操作简单,配置灵活,可以方便对其升级和维护。目前该系统已经在某大型互联网公司进行部署,运行效果良好。
蜜罐;Android系统;恶意代码检测;动态分析
自从2010年第一个Android平台的木马程序FakePlayer被发现之后,Android恶意代码呈现快速的发展趋势。特别是近年来,随着移动安全领域的发展,一些安全分析工具和方法也逐渐被开发出来,比如反编译、重打包等工具;而这些工具却也被攻击者来轻松地进行自动化、批量化的恶意代码制作。恶意代码给Android用户带来极大的危害,比如截取支付短信、自动发送短信订阅增值服务等恶意行为,就会给用户造成财产损失的威胁或后果。而且,随着Android越来越复杂,碎片化的问题也愈加严重,导致很多已发现的系统漏洞无法得到及时修复,使得许多Android系统的恶意代码能够利用这些漏洞进行提权操作,危害性十分严重,这也导致Android平台的恶意代码问题一直处于高发态势。
针对Android平台严峻的安全形势,安全研究人员也开发了一些恶意代码检测分析的工具和平台,比如谷歌开发的一款名为Bouncer[1]的动态检测系统,可以对Google Play上的应用使用沙盒技术进行分析。但是因为Android系统的开放性,如今 Android智能手机越来越受到欢迎,根据2015年Q2智能机市场份额报告可以看出,Android平台的市场份额达82.8%。现在Android平台上的应用数量以百万计,据国外网站Statista统计,直到2015年11月份Google Play上可供下载的应用数量超过180万[2],此外还有其他各类应用市场,如安智市场、豌豆荚等。面对如此庞大的应用数量,检测效率是一个瓶颈,而且针对本地的特殊情况,国外的一些检测工具并不足以满足国内用户的需求,本文提出一种基于蜜罐的恶意应用动态检测方案,并实现一套管理机制,可以将蜜罐进行大规模部署,从而提高针对一种或多种恶意行为的监测效率。
Android平台的恶意代码研究方向主要分为两种:静态分析和动态分析。也有一些检测工具和平台同时采用动静态结合的分析方法,同时利用两种方法各自的优点,实现更加精准和高效的恶意代码检测。
静态分析是指在不安装应用的条件下,使用软件逆向的手段,对应用进行反编译之后的代码逻辑进行分析,判断该
应用是否有恶意行为。这一领域的工具有很多,最典型的就是Androguard[3],其他很多恶意代码检测系统都基于它开发。这些分析工具,主要是利用 Java代码反编译比较容易的特点,而且反编译的代码之后可阅读性比较强,可以方便地在代码片段中寻找恶意的逻辑。但是Android平台的软件保护技术越来越成熟,恶意代码也利用这些技术对自己进行隐藏和保护,静态分析的方法便显得捉襟见肘。并且静态分析的方法主要针对Java层的代码,对于Native代码的分析基本无能为力。
由于静态分析的局限性,安全研究人员提出动态分析的方法。针对静态分析难以突破代码混淆、加密、反射调用等障碍,研究人员安装并运行应用程序,通过运行期间的行为模式来判断是否具有恶意行为。Android平台的动态分析方法主要分为三种:一是基于系统关键API的调用监控技术,如本文设计的系统;二是基于指令流的动态分析技术,如DroidScope[4]、ParanoidAndroid[5]等;三是基于数据流的动态分析技术,如 TaintDroid[6]、DroidBox[7]等。但动态分析的方法也有自身局限性所带来的问题,包括如何提升代码覆盖率[8]来触发恶意逻辑,以及如何有效避免恶意应用检测到自己运行在一个动态分析的环境中。
当前恶意代码的动态检测面临的主要瓶颈就在于如何触发恶意代码,本文采用蜜罐这种方式来触发恶意代码,提高代码覆盖率,以期能够减少恶意代码的漏报率。
对于单个Android模拟器,动态监测模块的配置框架如图1所示:
图1 动态检测整体框架
如图1所示,整个动态监测模块分为蜜罐管理子模块和行为监控子模块。
2.1 蜜罐的设计
“蜜罐”是一种计算机安全机制,系统管理员通过对一个隔离的系统进行定制或者配置,给攻击者造成迷惑,让攻击者以为自己运行在真实的主机环境,从而触发自己的攻击逻辑,然后系统管理员就可以通过蜜罐的监控模块来对这些攻击行为进行监控和分析。鉴于这样的思路,并考虑到大规模部署的成本,本文选择QEMU android模拟器作为基础,结合API Hook技术和反-反模拟器技术对其进行定制,实现蜜罐环境。针对不同的情景,蜜罐的类型可以有多种,包括针对隐私窃取检测的隐私蜜罐、针对root权限获取的root蜜罐,以及针对漏洞利用相关的漏洞蜜罐等等。本文主要以短信蜜罐为例进行说明。
2.1.1 API Hook[9]框架
API Hook是通过控制应用对系统API的调用来达到监控应用行为的目的,涉及到Java Hook和Inline Hook,整体基于Cydia Substrate[10]框架实现。而且在这一层中我们设置过滤规则,将系统内置的应用过滤掉,将作用范围集中到被检测的样本进程。这样做的原因在于,既能提高系统的效率,同时也可以避免处理系统应用产生的信息所带来的复杂性。
2.1.2 反-反模拟器
目前大多数Android应用都实现了反模拟器技术增加其安全性。模拟器与实体机器有很多不同,反模拟器技术就是通过检测这些不同点来实现,通常有两种方式:基于系统特殊文件的检测和基于系统特殊属性的检测。在Android模拟器中有一些模拟器特有的文件,应用程序可以通过检测当前运行系统中是否存在这些文件来判定自己是否运行在模拟器环境下;而且Android模拟器的一些特定的系统属性也与实体机器有区别,应用程序也可以通过访问系统属性来检测这些特定的属性值来判断自己的运行环境。恶意应用也会利用这些特点,从而针对模拟器环境隐藏自己的恶意逻辑,甚至不能运行。
而反-反模拟器技术就是通过对上面两种检测进行拦截,并返回实体机器环境下的正常值,以此避开应用程序的检测。这一部分基本上也是通过Cydia Substrate框架实现。
2.2 短信蜜罐
目前Android平台上大量的恶意行为主要以短信拦截和偷发为主,而且尤其针对银行和支付软件所发送的信息。我们设置的场景是:应用可能会拦截用户收到的银行或者支付软件所发送的验证信息,盗取用户的资产,或者在用户不知情的情况下向某些服务提供商发送订阅短信,造成恶意扣费。这些都会给用户的财产安全带来很大的危害。
2.2.1 短信情景构造
蜜罐中的短信是由蜜罐的管理模块向蜜罐模拟器发送的,为了检测蜜罐中的应用对不同短信的反应和行为,我们构造了不同类型的短信,包括银行和支付宝等金融相关的机构发送的验证短信,也包括普通的会话短信。为了实现自动化处理,我们将这些短信写入一个XML配置文件中,由管理模块向蜜罐逐一发送。短信的配置文件内容如图2所示:
图2 短信情景构造
可以看到我们构造的短信内容涵盖不同的类型,这样就能够更加精确地判断待检测应用程序拦截短信的行为。由于这些短信基本都是中文字符,用很多常用的短信发送命令都会导致乱码。最终我们通过构建能够正确传输中文的 PDU(protocol description unit)[11]数据,然后使用telnet连接作为蜜罐的 Android模拟器,再通过其自带的短信发送命令“sms pdu {pdu}”[12]来发送短信。
2.2.2 评分细则和输出格式
我们已经设置好了短信蜜罐,也能够对应用程序进行检测。接下来,就该对检测结果进行评估。我们根据恶意行为发生的场景,预先对不同的行为设置不同的分值,分数越高代表对应行为危险程度越高,最后再将所有分数之和作为最终整体的评估标准。评分细则如表1所示:
表1 评分细则
access_calllog_data 访问通话记录3 access_bookmarks_data 访问书签数据 2
最终的动态分析结果以JSON[13]文件格式输出,分为简单报告和详细报告两种。详细报告的格式如图3和图4所示:
图3 JSON详细报告(1)
图4 JSON详细报告(2)
其中score表示得分,0分表示没有检测出恶意行为,大于0分表示有恶意行为。items是一个映射表,key为恶意行为的名称,如上图中的 non_interactive_Root_Ac cess_Operation和non_interactive_Uninstalling_Silenced,分别表示root权限的获取和静默卸载。表中的每个value表示一条恶意行为,将其展开来看,继续分为三个部分,score表示该行为的分值,type表示其所属类型,logs保存了相关API的日志信息。
2.3. 行为检测
各种蜜罐的检测结果都依赖于系统能否准确地对各种恶意行为进行监控,所以我们需要一个行为检测模块来判断应用的恶意行为是否被触发。比如上文提到的短信蜜罐,因为Android系统是以广播的形式来向所有正在运行的应用程序通知短信到达的信息,所以要判断被测试的应用程序是否会拦截短信,就需要判断其是否调用了android.content.Broad castReceiver.abortBroadcast()这个系统API;如果待检测的应用抢先接收了短信广播,并调用该API终止了短信的广播消息,就能够在用户不知情的情况下拦截用户的短信。因此我们对于行为检测模块主要是基于对系统敏感 API的监控来实现。
我们采用了可扩展的方式来对行为检测模块进行设计,以便于升级和维护,主要是将需要监控的系统敏感API分类写入一个XML格式的配置文件中。对于待检测的应用程序,系统会在其启动之前预先读取并分析该配置文件的内容,并对其中所列举的系统API进行监控。
配置文件的内容如下图所示:
图4 行为检测配置
该文件是按照层次化的组织形式来整理的,从高到低所对应的关键字表示的意义依次是:category表示API所属类型,class表示API具体的类名,method表示API对应的方法名,item表示对恶意行为的描述。关于行为检测模块,我们也是通过打分机制来进行最终评估,不同恶意行为对应的打分细则如前文评分细则表所示。
2.4 系统的部署
前面已经详细介绍了单个蜜罐的设计与实现。在本文中动态检测系统被设计成为一个黑盒的形式,系统接收一个待检测的应用,通过一系列内部处理获得一个输出报告,而黑盒主要是通过 Android模拟器对进行定制来实现。结合Android模拟器本身的特点,我们很容易能够进行大量的部署。
同时,为了能够提高系统的检测效率,对于Android模拟器的启动采用快照的方式。快照启动的方式有两个优点:一方面,可以消除前一被检测应用程序在系统中留下的痕迹,从而每次分析待检测的应用程序时能够保证其运行在一个纯净的环境中避免干扰;另一方面,快照可以加快系统启动速度,从而提高检测效率。采用Android模拟器的方式可以在同一台高性能的主机上同时运行多个Android模拟器,以并行的方式对应用程序进行检测,这样方便进行大规模部署。
但是这样也会使管理变得比较复杂,本文采用了如图5所示的架构设计:
图5 部署架构
总体管理模块负责管理各个主机,并从每个主机中定时获取检测结果;模拟器管理模块负责对模拟器进行启动和回收;模拟器通信模块负责保证与每个模拟器之间的稳定链接,保证命令的正确传输。这三种模块都是由Python开发。
本文在实现蜜罐动态检测系统的基础上,随机选择了10个样本进行检测,各个样本的检测时间如图6所示:
图6 动态检测时间表
检测时间包括:启动动态检测系统的时间、安装样本的时间和对样本进行动态分析的时间。不同样本之间的检测时间也不相同,造成这一现象的主要原因有两种:样本的大小和具体申请的权限。样本越大安装时间越久,而样本所申请的权限类型会影响到系统是否会启动相关的蜜罐来对其进行监控。
从表中的数据可以得出,每个样本的平均检测时间为223.9 秒,每台模拟器正常工作一天可以处理386个的样本;若是有多台主机,每台主机上运行多个模拟器,这样的处理效率相当可观。
本文针对Android平台提出了一种基于蜜罐的恶意代码动态检测方法。通过试验可以看出,这种检测方法的效率比较理想,而且操作简单,适合大规模部署;还具有配置灵活的特点,可以很容易进行升级和维护。并且,蜜罐可以与其他检测方法结合使用,进而大大提高检测效率和精度,这是值得后面研究借鉴的一种思路。但是本文的方法主要针对的是Java层的系统API的监控,而目前随着开发人员技能的提升,很多恶意应用逐渐采用 native代码进行开发,为Android平台安全研究带来新的挑战。再者,通过蜜罐的方法虽然很大程度上提高了代码的触发率,但是针对很多情景效果依然不够理想,比如恶意代码的定时运行等,未来在这一方面也要进行更多的研究。
[1] Delosières L, García D. Infrastructure for detecting Android malware[M]//Information Sciences and Systems 2013. Springer International Publishing, 2013: 389-398.
[2] Statista. Number of available applications in the Google Play Store from December 2009 to November 2015 [EB/OL]. [2016-3-2]. http://www.statista.com/statistics 266210/number-of-available-applications-in-the-google-pl ay-store/.
[3] Desnos A. Androguard: Reverse engineering, malware and goodware analysis of android applications... and more (ninja!)[EB/OL]. 2013-03-26]. http://code.google.com/p/ androguard.
[4] Yan L K, Yin H. DroidScope: Seamlessly Reconstructing the OS and Dalvik Semantic Views for Dynamic Android malware analysis[C]//21st USENIX security symposium. Bellevue, USA. 2012: 569-584.
[5] Georgios Portokalidis, Philip Homburg, Kostas Anagnostakis, et al. Paranoid Android: versatile protection for smartphones[C]//Proceedings of the 26th Annual Computer Security Applications Conference. New York, USA. ACM :2010.
[6] Enck W, Gilbert P, Han S, et al. TaintDroid: an information-flow tracking system for realtime privacy monitoring on smartphones[J]. ACM Transactions on Computer Systems (TOCS), 2014, 32(2): 5.
[7] P Lantz, A Desnos, K Yang. DroidBox: An Android application sandbox for dynamic analysis [EB/OL]. (2014)[2016-3-2]. https://code. google. com/p/droidbox.
[8] Chun-Ying Huang, Ching-Hsiang Chiu, Chih-Hung Lin, Han-Wei Tzeng. Code Coverage Measurement for Android Dynamic Analysis Tools[C]//Mobile Services (MS), 2015 IEEE International Conference on. New York, NY, USA: IEEE, 2015.
[9] Wikipedia. Hooking [EB/OL]. (2016-2-18)[2016-3-2]. https://en.wikipedia.org/wiki/Hooking.
[10] Cydia Substrate [EB/OL]. [2016-3-2] http://www.cydias ubstrate.com/.
[11] Advanced Wireless Planet. SMS PDU Mode [EB/OL]. (2009-04-18)[2016-3-2]. http://www.gsm-modem.de/sms-pdu-mode.html.
[12] Matos V. Android Environment Emulator[J]. Cleveland State University, Jul, 2009, 20: 11.
[13] Tamada R. Android JSON Parsing Tutorial[J]. 2012.
Dynamic Analysis of Android Malware Based on Honeypot
Wang Li , Wan Yuanchun, Qiu Weidong
(School of Electronic Information and Electrical Engineering, Shanghai Jiao Tong University, Shanghai 200240, China)
A dynamic detection system is designed for detecting the increasing amounts of Android malwares. The system is innovatively implemented to trigger the malicious code with honeypots, which can efficiently expand the code coverage. Also, this method can work with other malware detection approaches, and it will be an important hint role in this field. QEMU Android emulator is used to develop the system with a deep customization. Meanwhile, a management model has been developed, which can make multi-emulators run on a host at the same time and many hosts liks this work together, so that the detection efficiency can be largely improved. Working just like a black box, the system can be operated easily and configured flexibly, and be allowed to maintain and update more conveniently. So far, this system has been deployed by an internet giant, and showed a good performance.
Honeypot; Android OS; Malware detection; Dynamic analysis
TP393
A
1007-757X(2016)11-0050-04
2016.10.13)
王 力(1993-),男,上海交通大学,电子信息与电气工程学院,硕士研究生,研究方向:信息安全,移动平台应用安全,上海 200240
万园春(1991-),男,上海交通大学,电子信息与电气工程学院,硕士研究生,研究方向:移动平台应用安全,上海 200240
邱卫东(1973-),男,上海交通大学,电子信息与电气工程学院,教授、博士,博士生导师,研究方向:计算机取证、密码分析破解、
密钥防护及电子信息对抗等,上海 200240