基于Android的主机入侵防御系统的设计与实现
1.引言
我们现在生活在一个移动数字时代和智能手机正变得不可或缺,因为他们被用作个人通信和计算机设备。不幸的是,智能手机也成为黑客的最大目标。安卓是一个开源的移动设备操作系统。它的市场份额已经在2013年[35]第二季所有智能手机出货量达到了80%左右。由于其庞大的市场份额,成为黑客攻击的主要目标。最近的一份报告表明,这些威胁有97%是针对Android设备的。此外McAfee表明,17000个新Android恶意软件在2013年第二季度被发现。所有这些表明,Android设备正面临着一个恶意软件威胁的爆炸性增长。
这项工作的一部分是他在奇虎360实习期间完成。
权限,使所有或这项工作的个人或教室使用的部分数字或硬拷贝,不收费用被授予提供的副本没有制作或分发利润或商业利益,而且副本承担本通知的第一页上,充分引证。这项工作由别人比ACM国有成分版权必须兑现。信贷抽象是允许的。要复制否则,或再版,张贴在服务器或重新分配清单,需要事先特定的权限和/或费用。请求权限从Permissions@acm.org。
ACSAC'14,12月8日至12日2014年,新奥尔良,洛杉矶,美国
版权是由拥有者/作者(S)举行。授权给ACM出版权利。
ACM978-1-4503-3005-3/ 14/12 ...$15.00
http://dx.doi.org/10.1145/2664243.2664245
权限机制是Android中的主要安全保护。当一个Android用户安装了一个移动应用程序(APP的简称),系统会提醒有关该应用程序所需的权限用户。但该机制不提供足够的安全水平。正如下图所示,也有大量的Android权限的滥用。由于工作机制和Android系统的开源特性,很容易编写的恶意软件变体,其可以绕过杀毒软件的检测.最近,研究人员表明,现有的一些反病毒软件不能有效地检测出这是由简单的转换产生的恶意软件变种。大多数现有的反病毒引擎的使用进行检测静态分析和恶意软件特征。为了弥补静态分析,几个系统的限制的目标是通过使用动态分析,检测运行时的行为。然而,这些系统主要是为事后分析和具有高似然性,所调查的恶意软件可能已经感染了许多装置。此外,对于这些动态分析系统,如何自动触发恶意行为仍是一个正在研究的问题。因此,安全社区一直倡导使用基于主机的入侵防御系统(HIPS),这是一个移动设备上的安装的软件来监控可疑的活动,并阻止,并通过在实时事件分析报告的恶意行为。 HIPS可以在移动设备上安装提供针对具有恶意运行的应用程序的行为保护。 HIPS在运行时还可以动态拦截应用程序,当恶意软件调用一些危险的应用程序接口(API)来通知用户。事实上,使用HIPS的日益普及,并已在产品中实现类似金山手机毒霸,LBE ,360手机安全等。
在一般情况下,在Android中三种方法去实现HIPS,它们是:((1)系统打补丁,(2)应用程序重新打包和(3)API连接。系统补丁是修改Android操作系统与新的权限管理功能。申请重新包装是拆卸移动应用,新的政策执行添加到它,然后重新打包移动应用程序作为一种新的应用程序。 API挂钩是拦截在运行时移动应用程序的API调用,以便检查恶意行为。每一种方法都有其自身的局限性和可能带来的新的安全漏洞。在第3节中,我们提出了详细的实施问题,以及这三个流行的HIPS实现的弱点。
鉴于静态或动态分析的局限性,以及对现有产品HIPS弱点的局限性,我们提出了一个增强的HIPS所谓的守护神,它不仅执行安全策略实施,但使用运行时信息也可以动态检测现有的恶意软件。为了保证易于部署,守护神并不需要对Android固件或移动应用程序进行任何修改。守护神在系统级别上执行运行时策略实施检查恶意行为。此外,守护神提供了一个基于主机的运行时检测可以阻止恶意行为的执行。我们做出以下贡献:
•据我们所知,这是一个系统地分析了HIPS三个流行的框架,并公开这些现有HIPS架构的各种安全漏洞的第一项工作。我们还说明了如何利用流行的HIPS产品的漏洞,从而绕过恶意软件检测。
•我们设计和实现一个安全的体系结构守护神,它可以防止手机恶意软件的入侵,并可以在运行时检测到的恶意软件。守护神解决我们当前HIPS产品揭示并有效防止入侵的安全问题。
•我们设计并实现了基于运行时的入侵信息来检测恶意软件存在的两个阶段检测算法。该算法能够确定并防止在运行时(在线)的恶意软件,而传统的基于签名的静态方法只能达到这个脱机方式。
本文的其余部分安排如下:第二部分介绍了Android上的必要的背景。在第3章,我们目前的优势和三种流行的HIPS实现弱点。在第4章中,我们提出我们的守护神系统,并描述以防止入侵以及提出动态恶意软件检测的两相算法的方法。在第5章,我们提出我们的实验结果来说明守护神的有效性和性能。第6章介绍了相关工作,最后结论在第7章给出。
2.背景
在本节中,我们介绍了Android系统的体系结构,其粘合剂进程间通信机制,以及在Dalvik虚拟机和原生开发套件在Android中。这样的背景下有必要了解如何能够创建Android设备的HIPS。
2.1 Android的架构
安卓是一个开源的移动设备操作系统由谷歌开发的。系统包括五个功能层: (1)内核,(2)库,(3)运行时支持,(4)应用程序框架和(5)应用程序。图1展示了Android的架构。Android使用Linux内核为核心的各种硬件的驱动程序通信。库层包含本地库libc或OpenGL等,以支持更高的应用程序层。Dalvik虚拟机的运行时层包含(数字式电压表)各种运行时库。数字式电压表是一种特殊的Java虚拟机执行Android应用程序。应用程序框架层包含基本服务提供活动管理、短信管理等等。最后,所有Android的应用程序都在这些层上运行。
Android应用大多是用Java编写的使用Android SDK,以及DVM负责解释和执行这些应用程序。每个应用程序在其自己的DVM内运行。而Android系统分配一个唯一的ID为每个DVM实现过程(或应用程序)隔离。这个沙盒机制提供了应用程序之间基本的安全保护。Android还提供了一个特殊的进程间通信机制称为粘结剂。每个应用程序都必须经过活页夹(这是在内核层),以便与其他应用程序或服务进行通信。
除了使用DVM沙箱,权限是由Android提供的另一种安全机制。只有当一个应用程序已经明确宣布在其AndroidManifest.xml文件的权限,那么应用程序可以使用相应的API。此外,在安装程序的时候,系统会显示一个对话框,提醒有关应用程序的申报权限的用户。然而,大多数用户通常接受这些许可在安装警报没有太多关注。一旦安装完成后,系统将不警告用户在以后调用。很多Android恶意软件利用大部分用户的疏忽,简单地接受了警报的权限,所以恶意软件往往可以得到增强的权限(例如,发送付费短信消息在后台订阅收费服务)。
2.2绑定机制
粘合剂是Android的一种专门的进程间通信(IPC)机制。由于应用程序在自己的DVM沙箱运行时,它们需要通过粘合剂进行沟通,以便利用他人的服务。图2示出了粘合剂机构的基本流程。例如,如果一个应用程序想要发送短信时,应先(1)联系服务管理器,它包含所有注册的服务信息。服务管理器将提供处理器与ISMS服务,这是负责发送短信沟通。一旦应用程序有处理程序,它可以(2)访问ISMS服务发送SMS消息,然后(3)ISMS服务将处理该请求,并通过短信驱动程序发送消息。请注意,所有的通信都通过了必要的信息(即包裹)发送的交易要经过粘合剂。事务是两个过程之间的通信过程。在Android,粘合剂事务用于发送服务请求(它是由交易代码表示)到相应的处理。有两个阶段来完成交易。首先,粘合剂将提供一个数据包到包含接收器的信息(即事务描述符)目标的过程。其次,在完成请求之后,所接收的过程将结果保存在回复包裹。在发送SMS消息的上述例子中,有两个交易和它们在三个步骤完成。对于ISMS服务处理程序的第一个交易请求。用于发送SMS消息的第二个事务请求。在第二个交易中,数据包中包含用于发送短信的ISMS服务描述符(com.android.internal.telephony.ISms)和信息(例如,目的地址和文本内容)。在第三步骤中,ISMS服务发送请求,并将结果保存在一个答复包裹中。
注意,此过程是类似于客户端 - 服务器通信模型。应用是在客户端和它们自己的沙箱中执行,而各种服务是在服务器端,它们是由服务管理器管理的。系统服务是与Android系统的一组服务(例如,客户经理服务,电池服务和网络管理服务)。此外,应用程序可以通过注册到服务管理其服务出口给公众。这种特殊的装订机构,不仅提供了一个灵活的进程间通信框架,而且还隔离应用程序和服务,以保护系统。
2.3数字式电压表和本地开发工具包
Dalvik虚拟机(DVM)是Android系统的一个特殊组成部分。该应用程序是用Java编写的,并编译成Android SDK中一个字节码文件(即类文件)。这些字节码将安装之前被转换成Dalvik的可执行文件(即DEX文件)。实例化一个应用程序时,将DVM解释和运行在不同的虚拟机的应用程序。为了与其他C / C ++本地库集成,Android提供了原生开发套件(NDK)为开发者实现使用本地代码的应用程序的某些部分,如C / C ++。此外,Java本地接口(JNI)提供了Java代码和C/ C ++代码之间的桥梁,使开发人员可以轻松调用本地代码。因此,对于该系统,DVM可以使用本机库(例如,OpenGL的,libbinder,libc中),以支持其执行。