APP下载

基于沙盒的Android恶意软件检测技术研究

2016-10-14林鑫

电子设计工程 2016年12期
关键词:沙盒云端静态

林鑫

(南京理工大学江苏南京210094)

基于沙盒的Android恶意软件检测技术研究

林鑫

(南京理工大学江苏南京210094)

随着互联网技术和计算机技术的高速发展,人们获取资源和服务变得更加方便快捷了,但与之伴随而来的安全问题也日益突出。特别是在使用广泛的移动终端上,窃取信息、恶意吸费等恶意软件层出不穷。由于受到资源和计算能力的限制,移动终端无法安装功能强大、性能要求高的病毒查杀软件。本文从实际出发,针对移动终端对安全的需求和现有查杀软件存在的弊端进行了深入的分析,提出了一种基于沙盒的结合移动端和云端的恶意软件检测技术。该技术采用了基于动态分析的沙盒技术,从一定程度上弥补了传统的静态分析方法所存在的不足,沙盒所特有的隔离环境,同时保证在系统执行检测任务时免遭恶意程序的破坏。另外,考虑到移动终端的局限性和检测过程的可靠性,在移动终端经过预处理后,使用高效的比对算法进行二进制比对,同时通过网络将APK中的class字节码文件上传到云端,通过在云端的虚拟机中运行执行代码进行进一步检测,从而提高检测的可靠性和效率。

沙盒;Android;恶意软件;云计算

2007年至今的短短七年时间里,Android一跃成为市场占有率最高的移动智能终端操作系统。生态封闭的iOS和Windows Phone保证了开发平台和产品一致性,应用程序经过严格审查,价值链控制严密.而Android系统秉持开放性原则,吸引了大批用户、手机厂商、应用开发商和销售商,但是开放的应用市场和相对宽松的应用审查机制导致Android恶意软件泛滥、安全威胁与日俱增[1]。

现有Android恶意软件反逆向、抗检测技术不断发展成熟,恶意软件变种迅速,家族种类繁多,已经形成了以吸费扣费、恶意推广、隐私贩卖为目的的灰色利益产业链[2]。安全公司每天面临大量待测可疑样本,分析检测工作量巨大,特征提取效率低下,导致了基于静态扫描引擎的安全软件检出率不高。应用市场间竞争激烈,同质化严重,基本处于无序发展状态.这样的“内忧外患”恶化了Andoird安全形势。

受电池、带宽、CPU、内存资源限制,传统适用于PC的恶意软件分析检测手段不能直接运用在移动智能终端上。如何针对Android移动平台恶意软件进行快速有效的分析检测成为当务之急[3]。

本文由4个部分组成,第1节研究现有Android恶意软件攻击技术的相关内容,包括Android恶意软件检测技术及其优缺点;第2节提出一种较为完整的解决方案,一种动态检测和静态检测结合移动终端和云端联动的检测模型;第3节针对现有研究中的不足之处,提出了几点未来的发展方向。

1 Android恶意软件检测技术研究

1.1恶意软件攻击技术

综合分析已知恶意软件,它们的危害大体上可分为两方面,一方面是针对用户个人,另一方面是针对通信网络等硬件,主要行为表现为:恶意扣费或消耗套餐,窃取用户隐私资料,提示联网下载软件,大量传播恶意软件等。

恶意程序的攻击方式有很多,但都会表现出一定的特征,一般完成一次攻击,要经历入侵、获取权限、潜伏、实施破坏行为等过程。在恶意程序实施攻击行为的过程中主要使用到进程注入技术、远程控制技术、端口反向连接与端口复用技术、自生产和升级技术、自启动技术等[4]。

1.2恶意软件检测技术

1.2.1静态检测方法

静态分析方法,是指不运行可疑恶意程序,仅仅通过某些分析工具或者反编译工具获得待测程序的语义和特征,然后进行程序样本库的匹配,从而识别目标程序是否具有恶意性质[5]。显而易见,使用静态分析方法进行分析的优点是不必运行目标程序,所以分析速度快,系统也因此可以免遭不可预测的恶意破坏。而该方法的缺点是,在执行对某些经过加壳或者加密的可疑程序的分析时,往往得不到任何的分析信息,因此静态分析方法有一定的局限性。根据识别恶意程序的依据不同,可以把静态分析方法分为基于代码特征分析法和基于代码语义分析法两类。

1)基于代码特征的分析方法

基于代码特征分析法是一种根据目标程序代码所出现的统计特性进行恶意识别的一种静态分析方法。在使用静态分析方法时往往可以通过分析工具得到可疑恶意程序的某些统计特性,通常情况下,这些统计特性在恶意代码中表现的特别明显,恶意程序为了实现其恶意目的,在其代码中难免会出现多次对某些系统API函数的调用,例如操作系统注册表的函数,而正常情况下,无恶意的软件是很少会多次操作注册表信息的,因此一旦在基于代码特征的分析的过程中发现目标程序具有这种统计特性时,就可以初步将目标程序判定为疑似恶意程序。

2)基于代码语义的分析方法

与上述方法不同,基于代码语义的分析方法并不是依赖于目标程序的代码统计特性进行恶意判定,该方法首先是利用某些工具对恶意代码进行反编译,然后通过对语义的理解和分析,重构目标程序的功能模块图以及执行流程图。

1.2.2动态检测方法

当恶意程序运用了加壳、多态技术以及变形技术时,采用静态分析法进行分析就有可能失效。使用动态分析方法进行恶意程序检测往往可以得到更加全面的分析结果,其好处是可以提高分析的准确率,并且可以使一些经过加壳或者加密的恶意程序无处遁形。根据动态分析过程中所关注的内容不同,可以将动态分析法分为两类:状态对比法和动态追踪法。

1)状态对比法

如果希望快速了解恶意程序所使用的攻击方式以及破坏意图,可采用状态分析法进行快速分析,其原理如下,记录系统运行目标程序前后的环境以及系统状态变化,通过对比变化,与行为特征库进行匹配,即可初步确定目标恶意程序所属类型和所使用的攻击方式。

2)动态追踪法

如果希望在动态分析的过程中获取目标程序产生的所有信息,则需要使用动态跟踪法。与状态对比法相比,该方法关注的重点是目标程序执行时所表现出的全部行为特征,通过综合分析这些特征属性,来确定目标程序是否具有恶意性。

1.3沙箱技术研究

1.3.1沙盒技术概述

沙盒技术是国际反病毒业界近年来提出的反病毒新概念。它在计算机系统内部构造了一个独立的虚拟空间,当发现程序的可疑行为时让程序继续运行,确认是病毒时才终止[6]。沙盒技术能让程序的可疑行为在电脑虚拟的沙盒里充分表演,并记下它的每一个动作,在病毒充分暴露了其病毒属性后,沙盒就会执行回滚机制,将病毒的痕迹和动作抹去,恢复系统到正常状态。

1.3.2沙盒分析方法

根据上述概念,使用传统的沙盒分析方法时,首先创造一个虚拟的程序运行环境,然后将目标程序放入其中执行,由于该虚拟环境拥有像真实操作系统一样的环境,因此目标程序能够正常执行并且会表现出它本身所具有的恶意性,当系统确定待测程序属于恶意程序时,就会终止目标程序的运行,以避免它对真实操作系统造成破坏。沙盒分析结束后,分析系统会生成目标程序的分析日志,用户可以通过该分析日志来确定目标程序是否具有恶意性。

2 基于沙盒的Android恶意软件检测方案设计

经过综合考虑,本文专门提出了一种静态扫描和动态执行结合,移动终端和云端联动的检测模式。在移动终端上只做静态检测,在云平台上做进一步的动态检测,甚至可以将静态检测中耗时的操作迁移至云平台上,进一步节省手机电量,降低手机资源的消耗。系统的网络拓扑结构如图1所示。

图1 系统网络拓扑结构图

2.1云端沙箱联动机制

在移动终端主要进行解压缩,简单的二进制对比,简单的API调用序列对比和上传动作;云端主要运行了重新修改编译后的虚拟机来动态执行手机端上传的样本代码,重新编译好的框架层或者DVM虚拟机会动态执行该样本,可以获得样本加载系统模块,动作行为等具体信息,进一步来增强检测效果。

系统首先将对目标代码进行静态检测,移动终端的软件将会负责APK解压,先进行启发式扫描,然后检查Manifest. xml文件,最后分析DEX文件中的全部敏感属性,假设以上结果检测不出结果,或者3项中的结果只有一项有可疑结果,我们就上传APK至云端,动用动态检测来进一步分析,假设云端动态执行后的结果出目标代码是恶意代码,则目标软件能够肯定属于恶意软件[7],假设之前的静态检测已经能够明确的指出代码是恶意代码,则可以省去动态检测这一步骤,直接对用户提示潜在威胁,云端沙箱联动机制的具体检测流程如图2所示。

图2 云端沙箱联动机制检测流程图

目的是出于考虑到手机平台的特殊性,网络上传动作需要较多的电量和带宽支持,假设使用GPRS网络上传,单个APP的大小通常在几M到30M左右,会使用户手机产生较大的流量费用,假设使用WiFi,则用户相对容易接受(考虑设计一个监听广播收集用户Android系统的网络状态,只在系统存在WiFi链接时,才进行APK上传动作,提高用户体验)。

2.2移动终端预处理

在移动终端端上,利用APP完成相对简单的预处理过程,比如解压APK,上传特定的文件至服务器,简单的静态检测,对用户进行提醒等等。

在移动终端,主体功能在于对目标代码进行静态检测,同时具备查看日志和提醒用户等功能,程序总体是由一个运行在后台的Service和一个运行在前端的Activity组成,Service会拦截系统启动Boost广播,从而实现自启动,Service在整个用户手机运行期间,均会在后台运行,同时Service会监听系统安装程序的广播,对新安装的程序进行默认扫描,假如静态检测无法识别,而目标代码可疑程度较高则会通过上传模块,上传至云端,进行动态检测;在Activity中,能够实现系统的基本配置管理,查看运行日志和查看历史提醒等功能。查看日志主要为方便用户,查看提醒采用Toast组件对用户进行提醒,Toast组件的持续时间较短,用户可能忽略,因此必须设置查看历史提醒功能。在Service中,首先对APK进行解压,然后对APK结构执行启发式扫描,之后执行初步二进制对比class.dex文件的全部敏感字段,最后检查Manifest.xml文件,关键在于分析广播器、监听器以及系统权限信息,如果无法得出结果,则考虑上传APK至服务器。在Activity中,主要有基本配置管理,查看运行日志,查看历史提醒等功能模块。移动终端APP功能结构划分如图3所示。

图3 移动终端APP功能结构图

2.3云端检测处理

在后台服务器集群构建的云端负责接收上传APK,使用重新编译好的模拟器来观察动态执行的结果,反汇编APK,对比APK源码结构,建立并管理签名数据库和恶意代码数据库,反馈结果至移动终端。后台服务器主要运行在Linux操作系统上,由于某些静态检测非常耗费资源,云端同样会执行部分静态检测。

假设之前的静态检测并不足以判断一个APK是否为恶意软件,必须上传此目标APK至云端。在云端结合专业的病毒库,进一步进行比对分析,目标对象为XML文件,签名文件以及反编译DEX文件,假设检测仍然没有结果[8],但目标代码的确存在可疑之处,借助重新编译后的虚拟机动态执行目标代码,从执行过程调用的系统框架层函数中,捕获所需参数信息,以及目标代码是否加载某些系统模块进行检测。云端子系统功能结构划分如图4所示。

图4 云端子系统功能结构图

3 结束语

本文对Android恶意软件检测技术进行了系统的调研,分析了Android恶意软件检测技术的各方面相关内容,在此基础上提出了一种全新的基于沙盒的Android恶意软件检测方案。本文提出的方案解决了现有方案存在的不足,为Android应用程序提供了一个真实的运行环境,使应用程序暴露出其真实的行为。

本方案也存在几点不足之处。首先,对Android沙盒的控制依赖于虚拟化软件,虚拟化软件的稳定性决定了Android沙盒的稳定性;其次,Android沙盒系统的版本依赖于Android开源项目,新版本的Android系统如果加入了新的系统API,将无法检测出这些新的API调用;最后,本文的Android恶意软件检测方案在移动终端无法访问网络时存在功能局限性,只能进行简单的移动终端预处理。

针对上面提出的三点不足之处,下一步的研究重点是改进Android沙盒,降低甚至消除Android沙盒对虚拟化软件和Android开源项目的过分依赖,在移动终端搭建相对智能化的可自动进化升级的Android恶意软件预检测机制,在考虑移动终端局限性的同时,尽可能提高恶意软件检出效率。

[1]Steven MP,Contrary to what you've heard,Android is almost impenetrable to malware[EB/OL].(2013-10-03)[2015-06-23].http://qz.com/131436/contrary-to-what-you' veeard-android-is-almost-impenetrable-to-malware.

[2]冯博,戴航.Android恶意软件检测方法研究[J].计算机技术与发展,2014,24(2):149-152.

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

[4]何国贤.基于沙盒技术的多平台恶意程序分析工具研究与实现[D].成都:电子科技大学,2013.

[5]Kasama,Takahiro.Malware Detection Method by Catching Their Random Behavior in Multiple Executions[C]//2012 IEEE/IPSJ 12th International Symposium on Applications and the Internet,Izmir,2012:262-266.

[6]Jana,Suman.Building Secure,Efficient Sandboxes with System Transactions[C]//2011 IEEE Symposium on Security and Privacy,Berkeley,CA,2011:329-344.

[7]刘一田,孔震,李萌.Web应用中故障检测机制的研究与改进[J].陕西电力,2012(11):66-69.

[8]周云端,何志勇,赵瑞国.基于遗传算法的加速度控制PID参数自整定研究[J].火箭推进,2012(4):68-71.

Malware detection technology research of Android platform based on sandbox

LIN Xin
(Nanjing University of Science and Technology,Nanjing 210094,China)

With the rapid development of Internet technology and computer technology,people's access to resources and services become more convenient,but the security issue with the attendant increasingly prominent.Especially in the use of a wide range of mobile devices,steal information,malicious suction fee malware endless.Due to limited resources and computing power,the mobile terminal cannot install a powerful,high performance requirements virus killing software.This article from the reality,for mobile terminal security requirements and existing software Disadvantages killing depth analysis,the malware detection technology based on a combination of sandbox mobile terminal and the cloud.The technology uses sandbox technology based dynamic analysis,to some extent,compensate for the shortcomings of traditional static analysis methods exist,sandbox unique isolated environment,while ensuring that malicious programs from the system to perform inspection tasks in damage.In addition,taking into account the limitations and reliability of the detection process of the mobile terminal,the mobile terminal after pretreatment,the use of efficient than binary comparison algorithm,and through a network of APK class bytecode files uploaded to the cloud by the virtual machine to execute code to run in the cloud for further testing to improve the reliability and efficiency of detection.

sandbox;android;malware detection;cloud computing

TN929.5

A

1674-6236(2016)12-0048-03

2015-07-15稿件编号:201507110

林鑫(1983—),男,福建闽侯人,硕士,助理研究员。研究方向:计算机应用技术。

猜你喜欢

沙盒云端静态
不好惹的沙盒树
四海心连·云端汇聚
最新进展!中老铁路开始静态验收
静态随机存储器在轨自检算法
云端之城
韩国版金融科技“监管沙盒”法案及其启示
Windows 10“沙盒” 不仅更安全
云端创意
热点追踪 角逐创新沙盒绝赛Phantom异军突起夺冠
在云端