CN104751050A - 一种客户端应用程序管理方法 - Google Patents
一种客户端应用程序管理方法 Download PDFInfo
- Publication number
- CN104751050A CN104751050A CN201510173393.0A CN201510173393A CN104751050A CN 104751050 A CN104751050 A CN 104751050A CN 201510173393 A CN201510173393 A CN 201510173393A CN 104751050 A CN104751050 A CN 104751050A
- Authority
- CN
- China
- Prior art keywords
- address
- virtual machine
- module
- memory
- machine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种客户端应用程序管理方法,运行于虚拟机监控器中,该方法包括:采用组件独立架构从虚拟机外部对应用程序进行检测,包括检测应用程序的进程、内核模块以及动态链接库,对每个组件单独进行检测,确定被检测对象在内存中的位置,完成从虚拟地址到机器地址的转换,并根据获取的内存内容来计算哈希值,采用间歇性检测机制对特定的内存进行访问,通过接口的方式获得虚拟机内部的信息而对虚拟机监控器进行修改。本发明提出了一种应用程序的处理方法,通过虚拟机在移动终端中保证应用程序的完整性和终端系统安全。
Description
技术领域
本发明涉及一种客户端应用程序管理方法。
背景技术
当越来越多的智能移动终端以网络客户端的形式接入到互联网时,安全问题都会出现在智能移动终端中,尤其是应用程序安全。虽然为了保护应用程序和数据,操作系统在设计上结合系统层安全机制和由组件间通信确定的安全框架,但仍然存在针对应用程序文件的危险行为和系统漏洞。当前对移动终端安全采用的普遍做法是利用智能移动终端安全程序来检测应用程序的恶意行为。但这类安全程序只是作为应用程序被安装在客户端上,并且会受到处理器和存储设备的限制,无法保证客户端的系统安全,也无法防止安全产品程序本身被卸载和删改。
因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。
发明内容
为解决上述现有技术所存在的问题,本发明提出了一种客户端应用程序管理方法,包括:
采用组件独立架构从虚拟机外部对应用程序进行检测,其中包括检测应用程序的进程、内核模块以及动态链接库,对每个组件单独进行检测,在进行安全检测之前,确定被检测对象在内存中的位置,完成从虚拟地址到机器地址的转换,并根据获取的内存内容来计算哈希值,
所述虚拟机监控器直接运行在物理硬件层之上,所述虚拟机监控器拥有对其它虚拟机的创建、管理和销毁的权限,直接负责对底层物理内存的管理,保证虚拟机之间的隔离性并对外提供了访问虚拟机的相关接口;
采用间歇性检测机制对特定的内存进行访问,通过接口的方式获得虚拟机内部的信息而对虚拟机监控器进行修改。
优选地,所述虚拟机监控器对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类:可读、可写、可执行、可共享。动态链接库代码段的存放位置会被标记为可执行区域,通过计算这部分的哈希值来检测动态链接库。
综上所述,本发明提出了一种应用程序的处理方法,通过虚拟机在移动终端中保证应用程序的完整性和终端系统安全。
显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和程序结合。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
Claims (5)
1.一种客户端应用程序管理方法,所述方法运行于虚拟机监控器中,用于检测移动终端应用程序安全性,其特征在于,包括:
采用组件独立架构从虚拟机外部对应用程序进行检测,其中包括检测应用程序的进程、内核模块以及动态链接库,对每个组件单独进行检测,在进行安全检测之前,确定被检测对象在内存中的位置,完成从虚拟地址到机器地址的转换,并根据获取的内存内容来计算哈希值,
所述虚拟机监控器直接运行在物理硬件层之上,所述虚拟机监控器拥有对其它虚拟机的创建、管理和销毁的权限,直接负责对底层物理内存的管理,保证虚拟机之间的隔离性并对外提供了访问虚拟机的相关接口;
采用间歇性检测机制对特定的内存进行访问,通过接口的方式获得虚拟机内部的信息而对虚拟机监控器进行修改。
2.根据权利要求1所述的方法,其特征在于,所述虚拟机监控器对CPU、内存、网络、块设备完成虚拟化操作,在虚拟化层中,包括负责管理虚拟机的主机和多个虚拟机,该方法还包括:
接收用户输入的指定要检测的虚拟机名称、被检测对象、虚拟机的操作系统类型参数,调用地址转换器访问特定的虚拟机内存,将内存数据传递给安全检测程序,通过地址转换器获得虚拟机中CPU的状态值、虚拟机地址的长度,同时访问虚拟机的地址映射接口,在取得信息之后根据具体的虚拟机CPU架构,进行地址转换工作,由此可以获得虚拟机的物理地址;
根据得到的虚拟机内存内容,计算程序、模块以及动态链接库的哈希值,并将这些值保存在一个检测列表中,检测过程利用定时检测或实时检测,得到的检测值与原来保存在检测列表中的值进行比较,从而发现进程是否发生改变。
3.根据权利要求2所述的方法,其特征在于,所述虚拟机监控器的内存管理使用3种地址空间,包括机器地址、物理地址和虚拟地址,其中机器地址只有监控器可以访问,物理地址由虚拟机操作系统进行管理,虚拟地址是应用程序所能访问的地址,虚拟机所能看到的是物理地址,并不能看到底层的机器地址,虚拟机监控器负责把虚拟地址转换为物理地址,同时维护由物理地址到机器地址转换的表,然后将虚拟机的物理页复制到被授权用户可访问的空间,再进行定位,所述程序在内存中的位置为程序在虚拟机物理内存页的偏移位置。
4.根据权利要求3所述的方法,其特征在于,所述物理地址到机器地址转换过程进一步包括,首先读取内核符号表,将内核符号对应的虚拟地址转换为物理地址,获取虚拟机寄存器中存储的页式层次结构的物理基地址,通过逐级转换找到物理地址,得到物理页框号,在主机管理域中,由虚拟机监控器的底层访问控制接口负责对机器地址上的内容进行访问,根据物理页框号将机器地址上的内容映射到主机能够访问的内存空间,从而得到虚拟机内存的内容,然后对相应的内容进行安全检测。
5.根据权利要求4所述的方法,其特征在于,所述检测应用程序的进程、内核模块以及动态链接库,进一步包括:
只要程序有被加载到内存当中,则对其进行安全检测,将检测得到的哈希值保存到检测列表中,如果同一个程序在不同的时刻出现不同的检测值,则判断该程序遭到修改;
对于应用程序的进程,操作系统采用链式结构将系统中正在运行的进程和已加载的模块连接起来,因此通过这种结构获取到被检测对象所在的物理内存区域,再结合地址转换机制得到被检测对象的硬件内存的内容;
每个进程由进程控制块管理相关信息,所有进程通过双向链表连接起来,通过遍历该链表得到系统中运行的进程,进程控制块根据运行进程的名字字段到该进程控制块起始地址的偏移获得进程的名称;进程控制块中有指向内存管理结构的指针,如果本次运行时进程的代码段与上次运行时不同,说明进程对应的程序发生了变化;
对于应用程序的模块,所述模块被读入内存后,由内核进行模块的初始化操作,每个模块都有一个双向链表,链接到前一个模块和后一个模块,还包括一个名字字段,表示模块的名字,通过遍历双向链表可得到系统所加载的模块,再根据名字字段到该模块起始地址的偏移,便访问到某个特定的模块内容,模块在内存中有代码区域和数据区域,而数据区域有只读数据和可读写数据,通过计算不可变的区域即代码区域和只读数据区域得到哈希值来判断程序是否被修改;
对于应用程序的动态链接库,在调用动态链接库的函数时,操作系统搜索动态链接库在磁盘上的存放位置,将其加载到虚拟内存区域,每个虚拟内存区域可分为可读、可写、可执行、可共享区域,将动态链接库代码段的存放位置标记为可执行区域,通过计算其哈希值来检测动态链接库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510173393.0A CN104751050A (zh) | 2015-04-13 | 2015-04-13 | 一种客户端应用程序管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510173393.0A CN104751050A (zh) | 2015-04-13 | 2015-04-13 | 一种客户端应用程序管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104751050A true CN104751050A (zh) | 2015-07-01 |
Family
ID=53590722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510173393.0A Pending CN104751050A (zh) | 2015-04-13 | 2015-04-13 | 一种客户端应用程序管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104751050A (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105205391A (zh) * | 2015-10-15 | 2015-12-30 | 中南大学 | 一种基于完整性验证的净室实时监控方法 |
CN105302579A (zh) * | 2015-11-27 | 2016-02-03 | 北京奇虎科技有限公司 | 一种系统内存的占用方法和装置 |
CN105320884A (zh) * | 2015-11-02 | 2016-02-10 | 南京安贤信息科技有限公司 | 虚拟机的安全防护方法及系统 |
CN105701399A (zh) * | 2015-12-30 | 2016-06-22 | 广东欧珀移动通信有限公司 | 一种应用程序的安全检测方法和装置 |
CN106295267A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种访问电子设备的物理内存中私密数据的方法和装置 |
CN106951350A (zh) * | 2017-03-30 | 2017-07-14 | 努比亚技术有限公司 | 一种移动终端磁盘的检查方法及装置 |
WO2017193763A1 (zh) * | 2016-05-10 | 2017-11-16 | 中兴通讯股份有限公司 | 一种检测方法、装置及系统 |
CN108319850A (zh) * | 2017-01-16 | 2018-07-24 | 华为技术有限公司 | 沙箱检测的方法、沙箱系统和沙箱设备 |
CN108717438A (zh) * | 2018-05-16 | 2018-10-30 | 北京奇艺世纪科技有限公司 | 一种链式数据状态采集系统及方法 |
CN108958650A (zh) * | 2017-05-22 | 2018-12-07 | 旺宏电子股份有限公司 | 电子系统及其操作方法 |
CN110383277A (zh) * | 2017-03-07 | 2019-10-25 | 华为技术有限公司 | 虚拟机监视器测量代理 |
CN110442074A (zh) * | 2018-05-03 | 2019-11-12 | Ls产电株式会社 | 可编程逻辑控制器程序的处理装置 |
WO2020057394A1 (zh) * | 2018-09-19 | 2020-03-26 | 华为技术有限公司 | 监控样本进程的内存访问行为的方法和装置 |
CN111737680A (zh) * | 2019-11-20 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 应用程序授权方法、装置和计算机设备 |
CN112463544A (zh) * | 2020-12-17 | 2021-03-09 | 深圳软牛科技有限公司 | 程序的运行监控方法、装置、设备及存储介质 |
CN112613037A (zh) * | 2020-12-29 | 2021-04-06 | 北京永新视博数字电视技术有限公司 | 一种代码校验方法及装置 |
CN113138835A (zh) * | 2021-04-08 | 2021-07-20 | 中国科学院信息工程研究所 | 基于ipt与虚拟机自省的api调用监控方法及系统 |
WO2023174145A1 (zh) * | 2022-03-16 | 2023-09-21 | 阿里云计算有限公司 | 数据处理方法、装置、设备和存储介质 |
CN117453986A (zh) * | 2023-12-19 | 2024-01-26 | 荣耀终端有限公司 | 一种搜索方法、后台服务器及搜索系统 |
CN117931381A (zh) * | 2024-03-25 | 2024-04-26 | 成都菁蓉联创科技有限公司 | 一种基于ivshmem技术的端对端通讯方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080235754A1 (en) * | 2007-03-19 | 2008-09-25 | Wiseman Willard M | Methods and apparatus for enforcing launch policies in processing systems |
US20090204964A1 (en) * | 2007-10-12 | 2009-08-13 | Foley Peter F | Distributed trusted virtualization platform |
CN101593259A (zh) * | 2009-06-29 | 2009-12-02 | 北京航空航天大学 | 软件完整性验证方法及系统 |
CN103793651A (zh) * | 2014-02-22 | 2014-05-14 | 西安电子科技大学 | 基于Xen虚拟化的内核完整性检测方法 |
CN104102531A (zh) * | 2014-08-06 | 2014-10-15 | 汉柏科技有限公司 | 基于虚拟机的多网融合系统和方法 |
-
2015
- 2015-04-13 CN CN201510173393.0A patent/CN104751050A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080235754A1 (en) * | 2007-03-19 | 2008-09-25 | Wiseman Willard M | Methods and apparatus for enforcing launch policies in processing systems |
US20090204964A1 (en) * | 2007-10-12 | 2009-08-13 | Foley Peter F | Distributed trusted virtualization platform |
CN101593259A (zh) * | 2009-06-29 | 2009-12-02 | 北京航空航天大学 | 软件完整性验证方法及系统 |
CN103793651A (zh) * | 2014-02-22 | 2014-05-14 | 西安电子科技大学 | 基于Xen虚拟化的内核完整性检测方法 |
CN104102531A (zh) * | 2014-08-06 | 2014-10-15 | 汉柏科技有限公司 | 基于虚拟机的多网融合系统和方法 |
Non-Patent Citations (3)
Title |
---|
徐冰泉等: ""GrantDroid:一种支持Android权限即时授予的方法"", 《计算机应用与软件》 * |
曲海鹏等: ""基于上下文的Android移动终端可信运行控制系统的设计与实现"", 《北京交通大学学报》 * |
林杰等: ""IVirt:基于虚拟机自省的运行环境完整性度量机制"", 《计算机学报》 * |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106295267B (zh) * | 2015-06-09 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 一种访问电子设备的物理内存中私密数据的方法和装置 |
CN106295267A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种访问电子设备的物理内存中私密数据的方法和装置 |
US10719456B2 (en) | 2015-06-09 | 2020-07-21 | Alibaba Group Holding Limited | Method and apparatus for accessing private data in physical memory of electronic device |
CN105205391B (zh) * | 2015-10-15 | 2018-08-07 | 中南大学 | 一种基于完整性验证的净室实时监控方法 |
CN105205391A (zh) * | 2015-10-15 | 2015-12-30 | 中南大学 | 一种基于完整性验证的净室实时监控方法 |
CN105320884A (zh) * | 2015-11-02 | 2016-02-10 | 南京安贤信息科技有限公司 | 虚拟机的安全防护方法及系统 |
CN105302579B (zh) * | 2015-11-27 | 2019-05-21 | 北京奇虎科技有限公司 | 一种系统内存的占用方法和装置 |
CN105302579A (zh) * | 2015-11-27 | 2016-02-03 | 北京奇虎科技有限公司 | 一种系统内存的占用方法和装置 |
CN105701399B (zh) * | 2015-12-30 | 2018-11-27 | 广东欧珀移动通信有限公司 | 一种应用程序的安全检测方法和装置 |
CN105701399A (zh) * | 2015-12-30 | 2016-06-22 | 广东欧珀移动通信有限公司 | 一种应用程序的安全检测方法和装置 |
WO2017193763A1 (zh) * | 2016-05-10 | 2017-11-16 | 中兴通讯股份有限公司 | 一种检测方法、装置及系统 |
CN108319850A (zh) * | 2017-01-16 | 2018-07-24 | 华为技术有限公司 | 沙箱检测的方法、沙箱系统和沙箱设备 |
CN108319850B (zh) * | 2017-01-16 | 2020-12-15 | 华为技术有限公司 | 沙箱检测的方法、沙箱系统和沙箱设备 |
CN110383277B (zh) * | 2017-03-07 | 2021-09-14 | 华为技术有限公司 | 虚拟机监视器测量代理 |
US11126706B2 (en) | 2017-03-07 | 2021-09-21 | Huawei Technologies Co., Ltd. | Hypervisor measurement agent |
CN110383277A (zh) * | 2017-03-07 | 2019-10-25 | 华为技术有限公司 | 虚拟机监视器测量代理 |
CN106951350B (zh) * | 2017-03-30 | 2021-08-03 | 努比亚技术有限公司 | 一种移动终端磁盘的检查方法及装置 |
CN106951350A (zh) * | 2017-03-30 | 2017-07-14 | 努比亚技术有限公司 | 一种移动终端磁盘的检查方法及装置 |
CN108958650B (zh) * | 2017-05-22 | 2021-06-15 | 旺宏电子股份有限公司 | 电子系统及其操作方法 |
CN108958650A (zh) * | 2017-05-22 | 2018-12-07 | 旺宏电子股份有限公司 | 电子系统及其操作方法 |
CN110442074A (zh) * | 2018-05-03 | 2019-11-12 | Ls产电株式会社 | 可编程逻辑控制器程序的处理装置 |
CN110442074B (zh) * | 2018-05-03 | 2022-07-22 | Ls产电株式会社 | 可编程逻辑控制器程序的处理装置 |
CN108717438B (zh) * | 2018-05-16 | 2020-10-23 | 北京奇艺世纪科技有限公司 | 一种链式数据状态采集系统及方法 |
CN108717438A (zh) * | 2018-05-16 | 2018-10-30 | 北京奇艺世纪科技有限公司 | 一种链式数据状态采集系统及方法 |
WO2020057394A1 (zh) * | 2018-09-19 | 2020-03-26 | 华为技术有限公司 | 监控样本进程的内存访问行为的方法和装置 |
CN110928737A (zh) * | 2018-09-19 | 2020-03-27 | 华为技术有限公司 | 监控样本进程的内存访问行为的方法和装置 |
US11467977B2 (en) | 2018-09-19 | 2022-10-11 | Huawei Technologies Co., Ltd. | Method and apparatus for monitoring memory access behavior of sample process |
CN110928737B (zh) * | 2018-09-19 | 2021-05-18 | 华为技术有限公司 | 监控样本进程的内存访问行为的方法和装置 |
CN111737680A (zh) * | 2019-11-20 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 应用程序授权方法、装置和计算机设备 |
CN112463544A (zh) * | 2020-12-17 | 2021-03-09 | 深圳软牛科技有限公司 | 程序的运行监控方法、装置、设备及存储介质 |
CN112613037A (zh) * | 2020-12-29 | 2021-04-06 | 北京永新视博数字电视技术有限公司 | 一种代码校验方法及装置 |
CN113138835A (zh) * | 2021-04-08 | 2021-07-20 | 中国科学院信息工程研究所 | 基于ipt与虚拟机自省的api调用监控方法及系统 |
CN113138835B (zh) * | 2021-04-08 | 2024-01-16 | 中国科学院信息工程研究所 | 基于ipt与虚拟机自省的api调用监控方法及系统 |
WO2023174145A1 (zh) * | 2022-03-16 | 2023-09-21 | 阿里云计算有限公司 | 数据处理方法、装置、设备和存储介质 |
CN117453986A (zh) * | 2023-12-19 | 2024-01-26 | 荣耀终端有限公司 | 一种搜索方法、后台服务器及搜索系统 |
CN117453986B (zh) * | 2023-12-19 | 2024-05-24 | 荣耀终端有限公司 | 一种搜索方法、后台服务器及搜索系统 |
CN117931381A (zh) * | 2024-03-25 | 2024-04-26 | 成都菁蓉联创科技有限公司 | 一种基于ivshmem技术的端对端通讯方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104751050A (zh) | 一种客户端应用程序管理方法 | |
CN104732147A (zh) | 一种应用程序处理方法 | |
US11762986B2 (en) | System for securing software containers with embedded agent | |
US10735472B2 (en) | Container authorization policies for network trust | |
US11334562B2 (en) | Blockchain based data management system and method thereof | |
CN104732140A (zh) | 一种程序数据处理方法 | |
JP6484255B2 (ja) | 信頼実行環境を含むホストのアテステーション | |
US10073966B2 (en) | Operating system-independent integrity verification | |
US7725558B2 (en) | Distributive access controller | |
CN103858113B (zh) | 用于保护虚拟客户的内存的方法、装置和系统 | |
US7926086B1 (en) | Access control mechanism for shareable interface communication access control | |
US8056119B2 (en) | Method and system for controlling inter-zone communication | |
CN101350044B (zh) | 一种虚拟环境信任构建方法 | |
CN102667712B (zh) | 用于同时定义和实行访问控制和完整性策略的系统、方法和装置 | |
KR101565590B1 (ko) | 역할기반 접근통제 및 인가된 파일 리스트를 통한 파일접근 통제 통합 시스템 | |
CN110661831B (zh) | 一种基于可信第三方的大数据试验场安全初始化方法 | |
CN103959247A (zh) | 虚拟化计算机程序中的安全 | |
WO2015074512A1 (zh) | 一种访问物理资源的方法和装置 | |
CN101520831A (zh) | 安全终端系统及终端安全方法 | |
CN109074450A (zh) | 威胁防御技术 | |
CN105184164A (zh) | 一种数据处理方法 | |
CN106911814A (zh) | 大规模数据分布式存储方法 | |
CN107147649A (zh) | 基于云存储的数据优化调度方法 | |
CN112182560B (zh) | 针对Intel SGX内部高效的隔离方法、系统及介质 | |
Larsen et al. | Cloudvaults: Integrating trust extensions into system integrity verification for cloud-based environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150701 |
|
RJ01 | Rejection of invention patent application after publication |