无需root权限的安全虚拟移动应用程序运行环境系统及方法与应用与流程

文档序号:12734567阅读:401来源:国知局
本发明属于智能移动设备信息安全
技术领域
:,具体涉及一种无需root权限在安卓(Android)下支持移动应用程序(APP)运行的安全虚拟运行环境(VirtualExecutionEnvironment),尤其是一种无需root权限的安全虚拟移动应用程序运行环境系统及方法与应用。
背景技术
::本发明涉及的安全移动虚拟运行环境是指虚拟化一个移动APP的运行,使目标APP认为其自身直接运行在操作系统中,并将其与移动系统其余部分安全隔离的一种抽象、统一、虚拟的运行环境。随着近年来手机病毒和针对移动终端的恶意程序喷井式地爆发,基于虚拟化技术的新型安全实现备受关注。通过对移动终端平台和系统资源的虚拟化,可以监控在虚拟环境中运行的移动APP内部和其与操作系统的各种交互,并将目标APP和移动系统进行安全隔离,最终能够让用户在可控的环境中运行目标APP,控制其与系统的交互,防止恶意行为的产生。当前能够用于移动终端的虚拟化技术通常通过解释和转换目标程序指令来实现虚拟化。该方法对移动终端性能要求高,开销大。另有一类方法通过修改安卓系统系统框架(Framework)或提供一个修改过的Java虚拟机来运行目标APP并对其进行安全监控。该方法需要修改底层移动操作系统和运行在较高的系统权限下,例如root权限。还有一类方法通过直接修改目标程序代码,或者通过修改目标程序的入口来监控目标APP的运行。该类方法需要将目标APP数字签名修改、并重新打包,因此违背了APP的法律授权并可能面临法律风险。此外,越来越多APP开发者通过远程验证(RemoteAttestation)来保证程序的完整性,防止对程序的非法修改。这些限制增加了现有方法的部署成本和运行开销,并大大降低了现有方法的兼容性。技术实现要素:发明目的:为了克服现有技术中存在的不足,本发明提供一种无需root权限的安全虚拟移动应用程序运行环境,提供一种能直接运行在现有安卓系统中、支持移动程序运行的安全虚拟环境系统及其工作方法与应用。该系统和方法运行开销低,不需要获取root权限,无需修改现有安卓系统,无需修改目标程序,具有较高的兼容性。技术方案:为实现上述目的,本发明采用如下技术方案:本发明的系统和方法通过动态截获应用程序和操作系统之间的通信,代理操作系统的和目标程序进行通信,使得应用程序和安卓操作系统双方都意识不到到对方的存在,并将双方进行安全隔离,最终完成应用程序在可控的虚拟运行环境中运行。一种无需root权限的安全虚拟移动应用程序运行环境系统,包括以下模块:容器(Container)进程模块:用于运行目标应用程序;钩子(Hook)方法模块:用于截获在容器进程中运行的目标应用程序和操作系统之间的通信和接口调用;服务代理模块:用于实现操作系统和应用程序之间的接口,以及代理容器中运行的目标应用程序和操作系统进行交互;日志(Log)模块:用于记录目标应用程序的操作系统之间所有通信的时间和内容,以便之后的安全分析;安全控制规则模块:用于控制目标应用程序权限的授予,对系统资源的访问,和操作系统之间的通信;所述容器进程模块、钩子方法模块和服务代理模块依次连接;日志模块通过和钩子模块连接来记录目标程序的运行日志,安全控制模块通过把定义好的安全规则部署在钩子模块和服务代理模块中来控制目标程序对系统资源的访问。进一步的,所述容器进程模块中置放一系列钩子来截获和替代目标应用程序在运行过程中的动作和行为,所述钩子包括:Binder钩子:将目标应用程序获取的系统服务捕获并重新导向到本系统提供的安卓系统服务代理上去;Java方法钩子:截获目标应用程序内部的Java语言程序逻辑,重写易受攻击的(vulnerable)的程序逻辑,以及目标移动APP和安卓系统还有其他进程进行的部分IPC交互;ELF钩子:截获目标应用程序内部的可执行与可链接格式(ExecutableandLinkableFormat)的本体(Native)程序逻辑,以及目标移动APP和安卓系统还有其他进程进行的部分IPC交互。进一步的,所述安全控制规则模块包括:动态权限管理规则:动态调整目标应用程序的权限以实现情境感知的权限管理;程序逻辑重载规则:通过在安全进程加载的钩子,并结合程序逻辑重载规则来动态修复目标应用程序的内部缺陷。上述的无需root权限的安全虚拟移动应用程序运行环境的方法,包括以下步骤:1)用户打开虚拟运行环境控制程序,选择运行目标应用程序;2)容器进程加载目标应用程序;3)容器进程设置钩子,并通过钩子方法动态截获目标程序和操作系统的通信和接口调用;4)代理服务通过截获的通信和接口调用请求,代理目标程序和系统交互;5)安全模块分析目标程序和移动操作系统的交互,并通过代理服务对这些交互进行动态权限控制;6)日志模块记录所有系统访问时间和内容,并进行进一步的安全分析。进一步的,本系统可无需重写目标应用程序,为其设置一个虚拟的运行环境,并在其中安全运行目标应用程序;所述步骤2)-4)中安全运行目标应用程序的具体方法为:1)当容器进程启动后,在其中设置Binder钩子,把容器进程和系统服务的通讯导向本系统创立的系统服务代理中;2)通过本系统提供的界面,用户选择目标应用程序来启动;3)本系统通过PackageManager来构造运行目标应用程序所需的ApplicationInfo和ActivityInfo;4)本系统将构造好的ApplicationInfo发送给容器进程,使其绑定目标应用程序,此过程使目标应用程序的application类启动;5)容器进程在绑定目标应用程序的过程中,设置Java方法钩子和ELF钩子,并将程序逻辑重载规则加载;6)本系统通知ActivityManager启动一个Activity代理;7)本系统截获代理Activity的启动,并通知容器进程启动目标应用程序的目标Activity;8)在安全进程内的目标应用程序使用系统ActivityManager创建的资源来运行目标Activity。进一步的,本系统可观察并控制目标应用程序的内部逻辑以及目标应用程序和外部的通讯。上述的无需root权限的安全虚拟移动应用程序运行环境,在沙盒环境中的应用。上述的无需root权限的安全虚拟移动应用程序运行环境,在加密APP运行环境中的应用。上述的无需root权限的安全虚拟移动应用程序运行环境,在情景感知的权限控制中的应用。有益效果:本发明的无需root权限的安全虚拟移动应用程序运行环境及方法与应用,与现有技术相比,具有以下优势:本发明是一种能直接运行在现有安卓系统中支持移动程序运行的安全虚拟环境及其工作方法,该系统和方法与现有移动终端虚拟化技术的区别在于,该方法为一个独立应用程序,无需运行在root权限下,无需修改现有安卓系统,提供用户可控的安全运行环境。本发明具体有益效果表现为:1、运行程序更安全:本系统和技术将目标程序与移动系统和其他程序隔离运行。用户能够单独动态配置应用程序的访问权限,防止恶意应用程序在用户不知情的情况下偷取用户隐私。本虚拟环境能够保护每个在其运行的应用程序,防止目标程序被其他恶意程序偷取数据。本系统和技术可以绑定某一个应用程序到某个具体的移动运行设备或环境,防止目标应用程序在未授权的终端或不安全的移动环境下运行。2、运行开销更低:由于本系统和技术无需对目标移动应用程序每一条指令进行转换和解释,大大降低了本虚拟环境的运行开销。3、兼容性更高:由于无需运行在root权限下,本系统和技术兼容现有安卓环境,并支持现有安卓开发环境。移动应用开发者无需针对安全虚拟环境二次开发,可降低其开发成本。现有移动应用程序可直接在本虚拟运行环境中运行,并同时提高目标移动应用程序的安全性能。4、移动终端部署更方便:由于本系统和技术无需修改操作系统,方便本发明的终端部署,大大降低了在移动终端上部署的成本。附图说明图1为本系统的体系结构图;图2为在本系统的运行目标移动APP的流程图;图3为在本系统实现沙盒环境的结构图;图4为在本系统中安装运行加密移动APP的示意图;图5为在本系统中实现情景感知的权限控制的示意图;图6为安卓体系结构图;图7为本系统内运行一个工具APP并拦截广告的显示图;图8为本系统内运行一个游戏APP并提供虚拟地理坐标的显示图;图9为一个实时通讯APP同时运行在本系统内和外并相互通信的显示图;图10为一个获取私有信息APP在本系统内和外运行的显示图。具体实施方式下面结合附图和实施例对本发明作更进一步的说明。一、系统场景本发明所要解决的技术问题是提供一种安全运行移动APP的系统和方法与应用。本系统和方法提供较高的系统适用性,无需root权限或者修改底层安卓系统,可提供一个虚拟环境运行移动APP,并有效提高移动APP的安全性。图1为本系统的体系结构图。本系统由以下几部分组成:1、容器进程:本系统需要通过安卓系统产生一个安全进程作为一个容器(container)来运行目标移动APP。由于容器进程由本系统产生,本系统可以对容器进程进行全权的管理和控制。继而本系统需要置放一系列钩子(hook)来截获(intercept)和替代目标移动APP在运行过程中的动作和行为,以实现安全和虚拟化的目的。2、Binder钩子:安卓系统提供Binder机制作为主要的进程通讯机制(IPC)。安卓下的移动APP需要通过Binder机制来和获取安卓系统服务。本系统需要在安全进程内设置Binder钩子来将目标移动APP获取的系统服务捕获并重新导向到本系统提供的安卓系统服务代理上去。3、Java方法钩子:在安卓环境下,移动APP由Java语言实现和编译。本系统需要在安全进程内设置Java方法钩子来截获目标移动APP内部的程序逻辑,重写易受攻击的程序逻辑,以及目标移动APP和安卓系统还有其他进程进行的部分IPC交互。4、ELF钩子:部分安卓环境下的移动APP使用可执行与可链接格式(ExecutableandLinkableFormat,ELF)来执行本体(Native)的代码。本系统需要在安全进程内设置ELF钩子来截获目标移动APP内部的程序逻辑,以及目标移动APP和安卓系统还有其他进程进行的IPC交互。5、系统服务代理:安卓系统提供一系列服务(例如,ServiceManager和ActivityManager)并通过Binder机制和移动APP交互来满足移动APP需要。本系统和方法提供一系列系统服务代理,并将目标移动APP和安卓系统服务的交互捕获到这些系统服务代理来进行处理,如此可满足安全和虚拟化的需求。6、动态权限管理规则:安卓系统提供一系列静态规则来控制移动APP的权限。基于本系统实现APP运行的虚拟化环境,本系统和方法使用动态权限管理规则来动态调整目标APP的权限以实现情境感知(contextaware)的权限管理。7、程序逻辑重载规则:某些移动APP有内部的逻辑缺陷导致的安全隐患。本系统和方法通过在安全进程加载的钩子,并结合程序逻辑重载规则来动态修复目标移动APP的内部缺陷。8、程序运行记录:本系统和方法通过在安全进程加载的钩子,可以捕获并记录目标移动APP和安卓系统的交互以及目标移动APP内部的状态。本系统和方法可以对目标移动APP的程序运行记录进行进一步的安全分析。对于安卓环境而言,本系统和方法是一个独立的移动APP,并不需要获取root权限或修改安卓底层系统,因此具有较高的兼容性。基于以上描述的部分,本系统和方法提供实现并提供一个安全的虚拟移动APP运行环境。二、目标移动APP的启动过程本系统和方法提供并实现了一种安全的运行移动APP的虚拟环境。在安卓环境下的移动APP的界面由Activity实现,图2展示了在本虚拟环境中启动一个目标并运行移动APP的Activity的流程图。其它移动APP的组成部分,它们在本系统下的启动过程与图2所示类似。具体启动流程如下:1)对于安卓环境而言,本系统为一个独立的APP,因此首先需要启动本系统;2)创建系统服务代理,并让代理在后台运行;3)创建容器进程;4)当容器进程启动后,在其中设置Binder钩子,把容器进程和系统服务的通讯导向本系统创立的系统服务代理中;5)通过本系统提供的界面,用户选择目标移动APP来启动;6)本系统通过PackageManager来构造目标移动APP的ApplicationInfo和ActivityInfo;7)本系统将构造好的ApplicationInfo发送给容器进程,使其绑定(bind)目标APP,此过程使目标移动APP的application类启动;8)容器进程在绑定目标移动APP的过程中,设置Java方法钩子和ELF钩子,并将程序逻辑重载规则加载;9)本系统通知ActivityManager启动一个Activity代理;10)本系统截获代理Activity的启动,并通知容器进程启动目标移动APP的目标Activity;11)在安全进程内的目标移动APP使用系统ActivityManager创建的资源来运行目标Activity。自此,目标移动APP可在本系统控制的容器进程内运行,并和用户交互。因为容器进程在本系统的控制下,通过本系统和方法设置的钩子,本系统可观察并控制目标移动APP的内部逻辑以及目标APP和外部的通讯。因此,对目标移动APP而言,本系统创建了一个虚拟的运行环境。对于移动系统而言,其为本系统启动并运行了一个Activity代理,移动系统并不知道一个目标APP在本虚拟环境下运行,从而将移动系统和目标APP进行了安全隔离。三、实施例1.沙盒(Sandbox)环境恶意移动APP通过攻击移动系统来获取非法信息。对于未知的APP,沙盒提供一个和本机移动系统隔离的运行环境。如果未知APP为恶意的,则此APP只能攻击沙盒,无法攻击真实移动系统。图3显示了在本系统和发明中实现沙盒环境的结构图。本系统和方法提供的沙盒环境将未知真实意图的移动APP运行在安全进程内。此移动APP可含有恶意代码。本系统和方法通过设置的钩子将此未知APP和外部的通讯全部截获。本系统可将截获的通讯告知用户,并提示用户此未知APP的此次外界通讯是否为恶意。如此未知APP为恶意,此恶意APP将只能对本系统进行攻击,并不会对本机底层移动系统进行攻击。通过本系统的提示,用户可获知恶意APP信息,并对恶意APP进行卸载消除攻击影响。2.加密APP运行环境某些移动APP需要在安全级别较高的移动环境下运行。如果一个移动环境自身有安全隐患(比如一部被root的智能手机),此移动环境可被劫持并攻击运行在其上的移动APP。例如将安装在其上的移动APP泄露给攻击者进行逆向工程(ReverseEngineering)分析。一个加密的APP运行环境可有效的解决此类攻击,并提供额外的安全性能。通过加密认证,管理员可控制某个移动APP在哪一部移动设备下运行。即便某个移动环境有安全隐患,此移动环境也无法对运行在加密环境下的移动APP做出攻击。本系统需要提供两个模块来协助加密APP的安装和运行。1)PackageManager代理主要处理APP的安装和解密以及提供APP的元信息(MetaInformation),例如ApplicationInfo和ActivityInfo;2)移动APP启动模块需要提供图形界面和用户交流,协助用户选择目标移动APP。本系统还需要一个安全认证以及密钥管理模块,此模块可以重用系统提供的Keystore服务。图4描述了在本系统下安装和运行一个加密APP的示意图。一个加密的APP需要由系统管理员或APP开发商来加密,并提供数字签名和证书。当一个加密APP下载和安装到本系统后,PackageManager代理需要向安全认证/密钥管理模块查询以及确认数字签名和证书。如数字认证无法通过,则此APP无法继续安装。移动APP启动模块工作如图2所示。用户选择目标APP后,PackageManager代理向安全认证/密钥管理模块查询密钥,并解密目标APP。如前所述,PackageManager代理需构造ApplicationInfo和ActivityInfo等元信息,此元信息中包含解密APP的代码信息,并由移动APP启动模块发送给安全进程去启动目标APP。如此,一个加密移动APP可在本系统下安装并运行。3.情景感知(context-aware)的权限控制(permissioncontrol)安卓对于移动APP的权限控制是静态的。在安卓系统下,一个APP的开发者需声明其开发的APP所需使用系统资源的权限。当此一个APP安装以后,安卓用户可以决定授予或者吊销此APP的某个权限。情景感知的权限控制可进一步提高APP的运行环境的安全性。理由如下:1)情景感知的权限控制是动态的,其通过感知情景来动态调整APP的权限;2)情景感知的权限控制可自动化管理,其通过预设的安全规则来自动化地动态调整APP的权限;3)很多恶意APP通过用户授予的权限来攻击用户的移动系统或者盗取用户私有性息,情景感知的权限控制可有效防止此类恶意软件的攻击。图5描述了在本系统和发明中实现情景感知的权限控制的示意图。本系统和发明通过将目标移动APP运行在安全进程内以和本机移动系统隔离。通过一系列钩子,本系统将目标移动APP对系统资源的访问捕获。如图5所示,本系统通过实现系统服务代理来进行对目标移动APP的情景进行感知,并对其作出动态的权限控制。目标移动APP对系统资源的访问请求将由本系统实现的系统服务代理捕获。本系统服务代理将查询动态权限管理规则,并结合当下情景做出判断。如果同意目标APP此次对系统资源的访问,本系统服务代理将访问真实移动环境下的系统服务,得到系统资源或信息,并将这些资源或信息返回给目标进程。如否决目标APP此次访问,本系统服务代理可直接拒绝请求,返回空值或根据权限管理规则设置的虚值(dummyvalue)。四、系统工作原理/技术背景实施例本系统和方法的发明是基于对安卓系统的深入理解和相关开发经验。图6显示了安卓的体系结构图。安卓使用Java编程语言开发移动APP。因此安卓下的移动APP需要安卓运行环境(runtime)支持,将Java代码转换为可执行代码。早期安卓runtime为Dalvik,后改为ART。某些移动APP也需要调用本体库(例如OpenGL等)。这些APP需要使用JNI结合本体语言(比如C语言)将对本体库的调用实现。安卓是基于LinuxKernel实现的,并继承了Linux对于用户的访问控制(accesscontrol)。在安卓和Linux中,root用户拥有系统最高的访问权限。一些恶意APP通过非法获取root权限以对系统做出攻击,因此越来越多的安卓系统限制普通用户和第三方软件开发者获取系统root权限。安卓在LinuxKernel中实现了一些进程通信(IPC)模块,其中包括Binder模块。安卓提供一系列的系统服务给移动APP。这些安卓系统服务主要通过Binder与安卓中的移动APP进行交互。安卓中重要的系统服务包括:1)ServiceManager集中管理其他系统服务的注册以及支持移动APP对系统服务的查询;2)PackageManager管理移动APP的安装,APP的元信息解析以及对APP元信息的查询;3)ActivityManager负责对移动APP的进程管理,并负责对APP的可视资源进行分配和管理。五、实验结果经过测试,本发明提出的无须root权限的虚拟运行环境可以正确运行国内外安卓市场中排名前50名的应用程序,包括微信、QQ、百度地图、陌陌、Youtube、PokemonGo、Facebook、Snapchat等等,并不影响这些应用程序在安卓系统中(虚拟环境外)的同时运行。图7显示了安卓市场上现有一个工具APP直接运行(图7.a)和在本系统上运行(图7.b)的截图。需要强调的是,本系统(名为SafeBox)可以截获并动态授权目标APP和系统的交互来提高目标APP的运行安全。在图7.a左图下部,目标APP加载并显示了一个广告条。在图7.b的例子中,本系统则成功阻止了目标APP加载广告条。图8显示了安卓市场上一个增强现实(AugmentedReality)游戏PokemonGo在本系统中运行的截图。如图8.a所示,本系统支持用户选择任意虚拟地理坐标。图8.b和图8.c显示了在本系统中运行的PokemonGo正确运行在用户所选地理坐标上。图8.d为该游戏运行在本系统内部证明的缩略图。图9显示微信在本系统内部运行的显示图。微信原本仅支持在一部移动设备上运行一个实例。但由于本系统实现的虚拟化运行环境,该APP可在一部移动设备上同时运行两个实例,即一个直接运行、另一个在本系统实现的虚拟化环境内部运行。如图9所示,在本系统内部运行的实例可正确运行并和外部的实例通讯。图10显示了一个获取用户私有信息移动APP在本系统内部和外部运行的截图。如图10.a显示,此移动APP可获取用户私有的设备IMEI号和用户所在地理位置,并显示广告条。如图10.b所示,在本系统提供的虚拟化环境下运行的此APP只能获取虚拟的伪IMEI号和地理信息。如前所述,本系统也同时屏蔽此APP显示的广告条。另需要强调的是,在图10显示的例子中,本系统运行在一部与前面例子中使用的不同的移动设备上。此例显示出本系统优秀的兼容性。以上所述仅是本发明的优选实施方式,应当指出:对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1