一种客户端应用程序管理方法.pdf

上传人:小** 文档编号:149200 上传时间:2018-01-29 格式:PDF 页数:12 大小:865.86KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510173393.0

申请日:

2015.04.13

公开号:

CN104751050A

公开日:

2015.07.01

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 21/53申请日:20150413|||公开

IPC分类号:

G06F21/53(2013.01)I

主分类号:

G06F21/53

申请人:

成都睿峰科技有限公司

发明人:

马泳宇

地址:

610041四川省成都市高新区天府大道北段1480号拉德方斯大厦东楼10层

优先权:

专利代理机构:

北京天奇智新知识产权代理有限公司11340

代理人:

杨春

PDF下载: PDF下载
内容摘要

本发明提供了一种客户端应用程序管理方法,运行于虚拟机监控器中,该方法包括:采用组件独立架构从虚拟机外部对应用程序进行检测,包括检测应用程序的进程、内核模块以及动态链接库,对每个组件单独进行检测,确定被检测对象在内存中的位置,完成从虚拟地址到机器地址的转换,并根据获取的内存内容来计算哈希值,采用间歇性检测机制对特定的内存进行访问,通过接口的方式获得虚拟机内部的信息而对虚拟机监控器进行修改。本发明提出了一种应用程序的处理方法,通过虚拟机在移动终端中保证应用程序的完整性和终端系统安全。

权利要求书

1.  一种客户端应用程序管理方法,所述方法运行于虚拟机监控器中,用于检测移动终端应用程序安全性,其特征在于,包括:
采用组件独立架构从虚拟机外部对应用程序进行检测,其中包括检测应用程序的进程、内核模块以及动态链接库,对每个组件单独进行检测,在进行安全检测之前,确定被检测对象在内存中的位置,完成从虚拟地址到机器地址的转换,并根据获取的内存内容来计算哈希值,
所述虚拟机监控器直接运行在物理硬件层之上,所述虚拟机监控器拥有对其它虚拟机的创建、管理和销毁的权限,直接负责对底层物理内存的管理,保证虚拟机之间的隔离性并对外提供了访问虚拟机的相关接口;
采用间歇性检测机制对特定的内存进行访问,通过接口的方式获得虚拟机内部的信息而对虚拟机监控器进行修改。

2.
  根据权利要求1所述的方法,其特征在于,所述虚拟机监控器对CPU、内存、网络、块设备完成虚拟化操作,在虚拟化层中,包括负责管理虚拟机的主机和多个虚拟机,该方法还包括:
接收用户输入的指定要检测的虚拟机名称、被检测对象、虚拟机的操作系统类型参数,调用地址转换器访问特定的虚拟机内存,将内存数据传递给安全检测程序,通过地址转换器获得虚拟机中CPU的状态值、虚拟机地址的长度,同时访问虚拟机的地址映射接口,在取得信息之后根据具体的虚拟机CPU架构,进行地址转换工作,由此可以获得虚拟机的物理地址;
根据得到的虚拟机内存内容,计算程序、模块以及动态链接库的哈希值,并将这些值保存在一个检测列表中,检测过程利用定时检测或实时检测,得到的检测值与原来保存在检测列表中的值进行比较,从而发现进程是否发生改变。

3.
  根据权利要求2所述的方法,其特征在于,所述虚拟机监控器的内存管理 使用3种地址空间,包括机器地址、物理地址和虚拟地址,其中机器地址只有监控器可以访问,物理地址由虚拟机操作系统进行管理,虚拟地址是应用程序所能访问的地址,虚拟机所能看到的是物理地址,并不能看到底层的机器地址,虚拟机监控器负责把虚拟地址转换为物理地址,同时维护由物理地址到机器地址转换的表,然后将虚拟机的物理页复制到被授权用户可访问的空间,再进行定位,所述程序在内存中的位置为程序在虚拟机物理内存页的偏移位置。

4.
  根据权利要求3所述的方法,其特征在于,所述物理地址到机器地址转换过程进一步包括,首先读取内核符号表,将内核符号对应的虚拟地址转换为物理地址,获取虚拟机寄存器中存储的页式层次结构的物理基地址,通过逐级转换找到物理地址,得到物理页框号,在主机管理域中,由虚拟机监控器的底层访问控制接口负责对机器地址上的内容进行访问,根据物理页框号将机器地址上的内容映射到主机能够访问的内存空间,从而得到虚拟机内存的内容,然后对相应的内容进行安全检测。

5.
  根据权利要求4所述的方法,其特征在于,所述检测应用程序的进程、内核模块以及动态链接库,进一步包括:
只要程序有被加载到内存当中,则对其进行安全检测,将检测得到的哈希值保存到检测列表中,如果同一个程序在不同的时刻出现不同的检测值,则判断该程序遭到修改;
对于应用程序的进程,操作系统采用链式结构将系统中正在运行的进程和已加载的模块连接起来,因此通过这种结构获取到被检测对象所在的物理内存区域,再结合地址转换机制得到被检测对象的硬件内存的内容;
每个进程由进程控制块管理相关信息,所有进程通过双向链表连接起来,通过遍历该链表得到系统中运行的进程,进程控制块根据运行进程的名字字段 到该进程控制块起始地址的偏移获得进程的名称;进程控制块中有指向内存管理结构的指针,如果本次运行时进程的代码段与上次运行时不同,说明进程对应的程序发生了变化;
对于应用程序的模块,所述模块被读入内存后,由内核进行模块的初始化操作,每个模块都有一个双向链表,链接到前一个模块和后一个模块,还包括一个名字字段,表示模块的名字,通过遍历双向链表可得到系统所加载的模块,再根据名字字段到该模块起始地址的偏移,便访问到某个特定的模块内容,模块在内存中有代码区域和数据区域,而数据区域有只读数据和可读写数据,通过计算不可变的区域即代码区域和只读数据区域得到哈希值来判断程序是否被修改;
对于应用程序的动态链接库,在调用动态链接库的函数时,操作系统搜索动态链接库在磁盘上的存放位置,将其加载到虚拟内存区域,每个虚拟内存区域可分为可读、可写、可执行、可共享区域,将动态链接库代码段的存放位置标记为可执行区域,通过计算其哈希值来检测动态链接库。

说明书

一种客户端应用程序管理方法
技术领域
本发明涉及一种客户端应用程序管理方法。
背景技术
当越来越多的智能移动终端以网络客户端的形式接入到互联网时,安全问题都会出现在智能移动终端中,尤其是应用程序安全。虽然为了保护应用程序和数据,操作系统在设计上结合系统层安全机制和由组件间通信确定的安全框架,但仍然存在针对应用程序文件的危险行为和系统漏洞。当前对移动终端安全采用的普遍做法是利用智能移动终端安全程序来检测应用程序的恶意行为。但这类安全程序只是作为应用程序被安装在客户端上,并且会受到处理器和存储设备的限制,无法保证客户端的系统安全,也无法防止安全产品程序本身被卸载和删改。
因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。
发明内容
为解决上述现有技术所存在的问题,本发明提出了一种客户端应用程序管理方法,包括:
采用组件独立架构从虚拟机外部对应用程序进行检测,其中包括检测应用程序的进程、内核模块以及动态链接库,对每个组件单独进行检测,在进行安全检测之前,确定被检测对象在内存中的位置,完成从虚拟地址到机器地址的转换,并根据获取的内存内容来计算哈希值,
所述虚拟机监控器直接运行在物理硬件层之上,所述虚拟机监控器拥有对其它虚拟机的创建、管理和销毁的权限,直接负责对底层物理内存的管理,保 证虚拟机之间的隔离性并对外提供了访问虚拟机的相关接口;
采用间歇性检测机制对特定的内存进行访问,通过接口的方式获得虚拟机内部的信息而对虚拟机监控器进行修改。
优选地,所述虚拟机监控器对CPU、内存、网络、块设备完成虚拟化操作,在虚拟化层中,包括负责管理虚拟机的主机和多个虚拟机,该方法还包括:
接收用户输入的指定要检测的虚拟机名称、被检测对象、虚拟机的操作系统类型参数,调用地址转换器访问特定的虚拟机内存,将内存数据传递给安全检测程序,通过地址转换器获得虚拟机中CPU的状态值、虚拟机地址的长度,同时访问虚拟机的地址映射接口,在取得信息之后根据具体的虚拟机CPU架构,进行地址转换工作,由此可以获得虚拟机的物理地址;
根据得到的虚拟机内存内容,计算程序、模块以及动态链接库的哈希值,并将这些值保存在一个检测列表中,检测过程利用定时检测或实时检测,得到的检测值与原来保存在检测列表中的值进行比较,从而发现进程是否发生改变。
优选地,所述虚拟机监控器的内存管理使用3种地址空间,包括机器地址、物理地址和虚拟地址,其中机器地址只有监控器可以访问,物理地址由虚拟机操作系统进行管理,虚拟地址是应用程序所能访问的地址,虚拟机所能看到的是物理地址,并不能看到底层的机器地址,虚拟机监控器负责把虚拟地址转换为物理地址,同时维护由物理地址到机器地址转换的表,然后将虚拟机的物理页复制到被授权用户可访问的空间,再进行定位,所述程序在内存中的位置为程序在虚拟机物理内存页的偏移位置。
优选地,所述物理地址到机器地址转换过程进一步包括,首先读取内核符号表,将内核符号对应的虚拟地址转换为物理地址,获取虚拟机寄存器中存储的页式层次结构的物理基地址,通过逐级转换找到物理地址,得到物理页框号, 在主机管理域中,由虚拟机监控器的底层访问控制接口负责对机器地址上的内容进行访问,根据物理页框号将机器地址上的内容映射到主机能够访问的内存空间,从而得到虚拟机内存的内容,然后对相应的内容进行安全检测。
优选地,所述检测应用程序的进程、内核模块以及动态链接库,进一步包括:
只要程序有被加载到内存当中,则对其进行安全检测,将检测得到的哈希值保存到检测列表中,如果同一个程序在不同的时刻出现不同的检测值,则判断该程序遭到修改;
对于应用程序的进程,操作系统采用链式结构将系统中正在运行的进程和已加载的模块连接起来,因此通过这种结构获取到被检测对象所在的物理内存区域,再结合地址转换机制得到被检测对象的硬件内存的内容;
每个进程由进程控制块管理相关信息,所有进程通过双向链表连接起来,通过遍历该链表得到系统中运行的进程,进程控制块根据运行进程的名字字段到该进程控制块起始地址的偏移获得进程的名称;进程控制块中有指向内存管理结构的指针,如果本次运行时进程的代码段与上次运行时不同,说明进程对应的程序发生了变化;
对于应用程序的模块,所述模块被读入内存后,由内核进行模块的初始化操作,每个模块都有一个双向链表,链接到前一个模块和后一个模块,还包括一个名字字段,表示模块的名字,通过遍历双向链表可得到系统所加载的模块,再根据名字字段到该模块起始地址的偏移,便访问到某个特定的模块内容,模块在内存中有代码区域和数据区域,而数据区域有只读数据和可读写数据,通过计算不可变的区域即代码区域和只读数据区域得到哈希值来判断程序是否被修改;
对于应用程序的动态链接库,在调用动态链接库的函数时,操作系统搜索动态链接库在磁盘上的存放位置,将其加载到虚拟内存区域,每个虚拟内存区域可分为可读、可写、可执行、可共享区域,将动态链接库代码段的存放位置标记为可执行区域,通过计算其哈希值来检测动态链接库。
本发明相比现有技术,具有以下优点:
本发明提出了一种应用程序的处理方法,通过虚拟机在移动终端中保证应用程序的完整性和终端系统安全。
附图说明
图1是根据本发明实施例的客户端应用程序管理方法的流程图。
具体实施方式
下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
本发明的一方面提供了一种客户端应用程序管理方法。图1是根据本发明实施例的客户端应用程序管理方法流程图。
本发明的安全控制系统将TPM模型运用到了移动终端中,确保了从OS开始加载到状态反馈启动结束全过程未被删改。安全控制系统中包括安全模块,是为了增强操作系统安全而设计的轻量级通用访问控制框架,它通过在内核系统调用逻辑中插入一系列hook函数,回调第三方安全模块实现,而这些第三方的安全模块决定了是否允许访问或进行其他操作。利用了安全模块框架得到每 个可执行文件、库文件和内核文件在加载进系统之前的检测值,通过这些检测值来保持系统安全状态。由于移动操作系统采用了经过剪裁的带有安全模块的内核,所以安全控制系统在内核中移植了安全检测架构,并扩展了对应用程序进行安全检测的功能。
本发明的安全控制系统将安全引导模块存储在移动终端的OTP中。从OTP的安全引导模块的引导程序开始,安全启动操作系统,首先引导程序检测内核,根据存储于内存中的检测值进行验证,验证通过后,内核正常启动。内核态的安全检测模块检测操作系统初始化代码,初始安全性验证模块验证输入的初始化代码检测值,并输出验证结果,将验证结果返回至安全检测模块,该模块根据验证结果确定系统初始化决策,即继续执行检测还是禁止系统启动。重复执行这个检测和验证的过程,直到守护进程、虚拟机初始化进程和状态反馈的检测值全部通过验证,系统启动完毕。
启动之后对操作系统内核模块、初始化配置文件、守护进程、虚拟机初始化进程的检测就已经确定并不能改变了。而应用程序在未启动之前是不能被检测的,需要在应用程序运行之前,映射到虚拟机时进行检测。当状态反馈服务检测到客户端进入安全区域时,安全检测值上传模块将检测值生成XML文件,并加密上传到监控中心子系统。监控中心收集模块收集并解析收到的信息,查询安全信息数据库进行验证,将验证结果返回给移动终端。若验证成功,客户端操作继续;若验证失败,返回不可信程序名,客户端提醒用户并强制关闭该程序。同时,反馈服务始终监测新应用程序的启动,一旦新的应用程序启动,重新上传,验证新的检测值,这个过程会持续到客户端离开安全区域后。
为满足上述要求,本发明将安全控制系统划分为两个子系统:部署在服务器端的监控中心子系统和运行在移动终端的客户端运行状态检测与反馈子系 统。
1)状态检测实现了操作系统的安全引导、安全检测和初始安全性验证功能。这里的安全引导能保证移动终端启动时装载的内核文件可信。安全检测负责检测移动终端中装载的内核模块、可执行代码、守护进程、虚拟机初始化进程、应用层状态反馈和系统安全启动后运行的应用程序。初始安全性验证模块,负责保证移动终端在启动过程中所有的检测结果都是可信的。
2)状态反馈位于应用层,其中的客户端位置监控模块会始终监测客户端位置信息,每当需要上传应用程序检测值时都会调用检测值上传模块。
监控中心子系统提供了对移动终端应用程序安全检测值进行收集和验证的功能,可以及时的防止安全敏感信息的窃取或修改。监控中心子系统包括3个部分:①安全信息收集模块,用于收集移动终端发送来的安全检测值。②安全性验证模块,将收集到的应用程序安全检测值同数据库中安全信息列表进行比对,并向客户端返回比对结果。③安全策略管理模块,维护一个安全检测值信息列表,列出操作系统安全的应用程序的检测值。白名单要及时更新相同可信应用程序的不同版本的安全检测值。对于某些应用程序,可以根据具体情况,判断是否是可信应用程序,而选择添加到列表中,或是从列表中删除。
应用程序安全控制系统在构建了系统安全启动TPM的基础上,还包括了以下子系统模块:1)客户端位置信息监控;2)应用程序的检测和反馈;3)客户端运行状态的远程验证和管理;4)安全检测数据的管理;5)应用程序赋权。下面是对这些系统模块的具体实现的介绍。
客户端检测与反馈子系统:使用散列算法得到每个执行文件、库文件和内核模块的散列值,并用它代替可执行文件内容,存入到位于内核中的检测值列表中。检测的实施分成3部分:①在系统中插入检测点;②实际检测;③验证 检测值。这个方法从BIOS下一步开始检测,之后继续检测下一部分代码直到状态反馈检测结束,并验证通过OS启动成功。对于新开启的应用程序,将每个应用程序安装包中的配置文件映射至新分配的虚拟机内存空间,所以安全检测模块通过hook函数调用内核态的安全检测模块,对内存中的配置文件进行检测,生成检测值。
状态反馈在客户端位置监控模块中设置好敏感区域范围的位置信息,服务启动后自动开启位置位置监听器,实时获取位置位置判断是否进入敏感区域,判断成功后,调用状态反馈的检测值上传模块。检测值上传模块向监控中心发送用户名,同时移动终端存储用户输入的服务器预分配口令于内存中,监控中心将随机数返回到客户端。接下来,检测值上传模块对随机数及用户预分配口令进行哈希运算,生成虚拟机应用安全信息的加密密钥,客户端通过检测值上传模块,主动上传加密后的包含虚拟机应用安全信息的XML至监控中心,进行验证。
监控中心子系统的安全信息收集模块、安全信息验证模块和安全策略模块使用同一数据库。对于安全信息数据的收集和验证模块,本发明通过实现动态监听可执行程序完成,动态监听可执行程序运行后,可以开启Socket连接监听,解析接收到的XML文件,并进行格式转换,最后将数据库中安全性元数据与之对比的结果返回。监控中心子系统的安全策略管理模块采用了白名单策略。
应用程序赋权子系统为用户提供了对存在安全隐患的权限控制进行即时赋权的能力,在应用程序使用可疑权限前请求用户确认。此外,用户在安装时可将部分权限直接赋予应用,也可在使用过程中通过设置界面动态调整各个应用的权限。该系统对系统和现有恶意应用程序样本进行详细分析,推导出恶意应用所必备的权限控制特征集合。基于这样一个特征集合可有效减少所需的用户 交互赋权。只有当某次对权限的使用请求至少符合特征集合中的一项特征时,该次权限控制请求才需要用户交互赋权。
应用程序赋权子系统进一步由三个模块组成:(1)应用程序安装模块,用于提供安装时部分赋权的入口;(2)权限控制拦截模块,用于拦截应用程序对所有权限的使用;(3)决策模块,用于决定系统如何处理这些权限控制请求:允许、拒绝和要求用户交互赋权。
应用程序安装模块为用户提供在安装应用时将部分权限直接赋予应用的入口。除非用户非常确定应用程序需要该权限,否则没有权限会默认赋予应用程序。通过修改安装程序向用户提供安装时部分赋权的入口。用户所做的赋权响应将会被安装程序发送至系统框架层中的安装包管理器,并由安装包管理器负责完成剩余的安装工作。
权限控制拦截模块拦截应用程序对所有权限的使用请求。本发明在权限控制前会将权限控制请求重定向到一个权限控制监控器。为了能够完全覆盖所有可能的权限控制方式,本发明在不同种类的权限被使用时采取不同的拦截方式。只需在权限检查点处将权限请求重定向到权限控制监控器,即能完全覆盖所有对权限的使用请求。对内核权限控制请求的拦截和重定向必须在内核层实现。本发明的方法使用系统调用拦截器负责对所有与内核权限相关的系统调用进行拦截并重定向到权限控制监控器,从而拦截所有对内核权限的使用请求。
决策模块决定了方法将如何处理每一个被拦截的权限控制请求。在本发明的方法中,每个应用程序所申请的任一权限都有三个可能的状态:(1)已赋权(对该权限的使用将被直接允许),(2)已阻止(对该权限的使用将被直接拒绝),(3)待定(对该权限的使用将请求用户的确认)。权限管理器负责处理所有的状态转换并持久化存储权限状态信息以保证设备重启后信息不会丢失。为了减少不必要的 用户参与,当应用程序对权限的使用不会带来安全隐患时,决策模块将该权限直接设置为已赋权状态。而一次权限的使用是否会带来安全隐患则由一个决策器进行判断,该决策器将权限控制请求与恶意程序权限控制特征进行比对,符合特征的权限控制请求将被认为可能会带来安全隐患。
在系统运行过程中,当一个应用程序试图使用某权限对应用程序文件进行卸载或删除时,该权限控制请求会被拦截并重定向到权限控制监控器,权限控制监控器询问决策模块决定如何处理这次请求。权限管理器根据权限控制监控器提供的权限信息和应用信息查询相应的权限状态,并将状态发送至决策器。如果相应的权限状态是已赋权或已阻止,则决策器将直接通知权限控制监控器同意或拒绝本次请求。如果相应的权限状态是待定,则决策器需要查询恶意应用程序权限控制特征集合,以确定本次请求是否符合某项特征。如果不符合任何一项特征,则通知权限控制监控器允许,并更新权限状态信息。否则将通知权限控制监控器对本次访问请求用户确认。权限控制监控器向用户弹出交互窗口以提供本次权限控制请求的详细信息以及可能存在的安全隐患,并给予用户四种即时赋权选项:赋权一次、永久赋权、阻止一次和永久阻止。如果用户选择赋权一次或永久赋权,权限控制监控器则允许应用使用该权限;如果用户选择了永久赋权或永久阻止,权限控制监控器还将通知权限管理器更新权限状态信息。
系统调用拦截器将所有第三方应用程序对相关系统调用的访问进行拦截并重定向至权限控制监控器。由于对内核的修改会对包括系统进程在内的所有进程产生影响,所以本发明的方法只修改系统调用包装函数,并强制第三方应用程序使用当前版本的函数库,而其他系统进程将使用原版函数库,从而避免对内核的修改。当第三方应用程序通过各种方式访问系统调用包装函数时,访问 会被重定向至权限控制监控器。权限控制监控器将与权限管理器和决策器决定如何处理本次请求,并将决策结果告知系统调用包装函数。
由于系统调用拦截器位于内核之外,第三方应用程序依然可以通过软中断的方式绕过拦截器使用内核权限。通过修改运行时环境,在第三方应用程序加载本地代码库时对类库进行扫描,以确保其中不包含软中断指令,从而保证了拦截器的可靠性。
由于已经确保了第三方应用程序无法绕过系统调用拦截器而直接访问内核资源,因此可以将应用程序对应的ID加入相应的用户组。而具体的访问控制将由系统调用拦截器重定向至决策器进行管理。
根据本发明的进一步实施例,上述安全模块在虚拟化环境中,通过控制系统运行时的安全性来判断程序是否遭到删改,检测的对象包括进程、内核模块以及动态链接库。将控制系统和被检测对象分离,保证检测值的准确性。虚拟机监控器直接运行在物理硬件层之上,拥有对其它虚拟机的创建、管理和销毁的权限。直接负责对底层物理内存的管理,保证虚拟机之间的隔离性并对外提供了访问虚拟机的相关接口。从虚拟机外部进行检测,利用虚拟化技术的强隔离性可以降低控制系统受攻击的可能性。本发明采用组件独立的检测方式。检测值并非由TPM上的程序进行检测,可以随时对每个组件单独进行检测。在进行安全检测之前,确定被检测对象在内存中的位置。实现从虚拟地址到机器地址的转换。根据获取的内存内容来计算哈希值。
本发明的方法通过从虚拟机外部获取虚拟机的内存进行检测,对于虚拟机内部来说是透明的,保证了控制系统的安全性。采用间歇性检测机制对特定的内存进行访问,避免频繁内存访问引起的明显性能代价。避免对虚拟机监控器进行修改,通过接口的方式获得虚拟机内部的信息,以保持好的程序易维护性, 防止控制系统过度依赖于虚拟机监控器。
控制系统位于虚拟化层的主机中,完成检测工作,包括控制系统、地址转换器和安全检测器。虚拟机监控器层对CPU、内存、网络、块设备完成虚拟化操作。在虚拟化层中,由一个负责管理虚拟机的主机和多个虚拟机组成。控制系统负责控制安全检测的整个过程,接收用户输入的一些参数,包括指定要检测的虚拟机名称、被检测对象、虚拟机的操作系统类型等,调用地址转换器访问特定的虚拟机内存,将内存数据传递给安全检测程序。地址转换器需要得到虚拟机中CPU的状态值、虚拟机地址的长度,同时还要能够访问虚拟机的地址映射接口。在取得信息之后根据具体的虚拟机CPU架构,进行地址转换工作,由此可以获得虚拟机的物理地址。根据得到的虚拟机内存内容,由安全检测程序来计算程序、模块以及动态链接库的哈希值,并将这些值保存在一个检测列表中。控制系统根据需要可以定时检测也可以实时检测,新得到的检测值与原来保存在检测列表中的值进行比较,从而可以发现进程是否发生改变。
虚拟机监控器的内存管理使用3种地址空间,分别是机器地址、物理地址和虚拟地址。机器地址,或者也称为硬件地址,只有监控器可以访问,物理地址由虚拟机操作系统进行管理,虚拟地址是应用程序所能访问的地址。采用这种地址结构,不连续的机器地址就可以转换为看起来连续的物理地址。虚拟机所能看到的是物理地址,并不能看到底层的机器地址。虚拟机监控器负责把虚拟地址转换为物理地址,同时维护由物理地址到机器地址转换的表。安全检测需要定位出程序在内存中的位置,确切地说是程序在虚拟机物理内存页的偏移位置,所以要先将虚拟机的物理页复制到被授权用户可访问的空间,再进行定位,而这个过程需要完成从虚拟地址到物理地址的转换。
首先读取内核符号表,将内核符号对应的虚拟地址转换为物理地址。获取 虚拟机寄存器中存储的页式层次结构的物理基地址,通过逐级转换找到物理地址,完成虚拟地址到物理地址的转换,得到物理页框号。在主机管理域中,由虚拟机监控器的底层访问控制接口负责对机器地址上的内容进行访问。根据物理页框号将机器地址上的内容映射到主机能够访问的内存空间,从而得到虚拟机内存的内容。在得到所需要的内容后,由控制系统负责对相应的内容进行安全检测。
检测得到的哈希值被保存到检测列表中,同一个程序在不同的时刻出现不同的检测值,那么该程序就被检测出遭到修改。只要程序有被加载到内存当中,即可对其进行安全检测。本发明根据运行时加载到内存中的程序类型,主要考虑了能够从虚拟机外部检测到的被检测对象,包括进程、内核模块、动态链接库。其他不在本发明中列出的可检测对象也可以采用同样的方法进行检测。
操作系统为方便管理进程和内核模块,会采用链式结构将系统中正在运行的进程和已加载的模块连接起来。因此通过这种结构可以获取到被检测对象所在的物理内存区域,再结合前述的地址转换机制,便可以得到被检测对象的硬件内存的内容。下面分别对进程、模块和动态链接库具体说明如何根据其内存的存储区域进行安全检测。
每个进程由进程控制块管理相关信息,所有进程通过双向链表连接起来。通过遍历该链表即可得到系统中运行的进程,进程控制块含有运行进程的名字,根据名字字段到该进程控制块起始地址的偏移,可获得进程的名称。进程控制块中有指向内存管理结构的指针,内存管理结构是操作系统管理进程虚拟地址空间分配的结构体。进程的虚拟地址空间包括代码段、数据段、堆、栈、参数、环境变量等。进程在运行时代码段是不会发生变化的,如果本次运行时进程的代码段与上次运行时不同,说明进程对应的程序发生了变化。因此,进程的安 全检测通过计算进程代码段的哈希值来检验。
模块在系统启动时进行加载,有些模块是在系统启动之后通过用户空间程序进行加载的,不管是哪种方式,其内存空间的分配方式是相同的。模块是一种对象文件,不能直接运行。模块被读入内存后,由内核进行模块的初始化操作。模块在内存中有代码区域和数据区域,而数据区域有只读数据和可读写数据。通过计算不可变的区域,即代码区域和只读数据区域得到哈希值,能够较好地表示出模块的唯一性。每个模块都有一个双向链表,链接到前一个模块和后一个模块,还包括一个名字字段,表示模块的名字。通过遍历双向链表可得到系统所加载的模块,再根据名字字段到该模块起始地址的偏移,便访问到某个特定的模块内容。
动态链接库是程序运行时才被装载入内存的,调用动态链接库的函数时,操作系统会搜索动态链接库在磁盘上的存放位置,将其加载到虚拟内存区域。每个虚拟内存区域可分为4类:可读、可写、可执行、可共享。动态链接库代码段的存放位置会被标记为可执行区域,通过计算这部分的哈希值来检测动态链接库。
综上所述,本发明提出了一种应用程序的处理方法,通过虚拟机在移动终端中保证应用程序的完整性和终端系统安全。
显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和程序结合。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本 发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

一种客户端应用程序管理方法.pdf_第1页
第1页 / 共12页
一种客户端应用程序管理方法.pdf_第2页
第2页 / 共12页
一种客户端应用程序管理方法.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《一种客户端应用程序管理方法.pdf》由会员分享,可在线阅读,更多相关《一种客户端应用程序管理方法.pdf(12页珍藏版)》请在专利查询网上搜索。

本发明提供了一种客户端应用程序管理方法,运行于虚拟机监控器中,该方法包括:采用组件独立架构从虚拟机外部对应用程序进行检测,包括检测应用程序的进程、内核模块以及动态链接库,对每个组件单独进行检测,确定被检测对象在内存中的位置,完成从虚拟地址到机器地址的转换,并根据获取的内存内容来计算哈希值,采用间歇性检测机制对特定的内存进行访问,通过接口的方式获得虚拟机内部的信息而对虚拟机监控器进行修改。本发明提出。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1