基于虚拟机的“In-VM”恶意代码检测系统的制作方法

文档序号:6353613阅读:151来源:国知局
专利名称:基于虚拟机的“In-VM”恶意代码检测系统的制作方法
技术领域
本发明涉及基于虚拟机的恶意代码检测系统,尤指基于“In-VM”架构利用主动防 御的思想来检测恶意代码的系统。
背景技术
针对越来越严重的网络安全问题,安全工具的发展也非常迅速,杀毒软件技术由 早期的基于特征码的检测发展到基于异常行为、以及现阶段的云安全技术,防护能力得到 了极大的提高。主机型安全工具(如杀毒软件、防火墙等)可以获得详细的系统活动信息, 有利于判断系统中是否存在异常行为、恶意代码,但是安全工具本身也存在于不安全的系 统之中,所以容易受到恶意代码攻击或者欺骗;而网络型安全工具(如网络防火墙)可以免 受恶意代码的攻击,但是它难以获得主机的活动信息,不利于检测主机内的恶意代码。基于虚拟机的恶意代码检测技术正是为了解决主机型安全工具的缺陷发展起来 的,它既可以获得完整主机活动视图,又可以隔离恶意代码的攻击,近年来成为网络安全学 者研究的重点,如入侵检测、攻击行为分析、恶意代码检测、蜜罐和可信计算等。在恶意代码 检测的应用中,根据不同的检测方法可以分为以下几种(1)基于语义重构检测异常的恶意代码。这种方法的难点在于如何利用硬件信息 重构出系统视图以及如何保证重构的系统视图是真实可信的。例如在重构内存信息的过 程,大多数是基于特定版本的操作系统的调试符号信息通过直接读取客户操作系统内存重 构出相应的操作系统关键数据结构,如果攻击者了解重构过程应用的方法,就可以通过修 改内存数据来欺骗防护方。该方法的另一个缺陷是仅支持检测,而不能阻止恶意代码的运 行。所以为了更好的查杀恶意代码,需要发展基于虚拟机的更高级的检测方法。(2)基于内核完整性的检测方法。该方法的先决条件是要建立一个安全的内核状 态集,然后在系统运行过程中动态的对比内核状态和这个安全的状态集,如果不相符,则有 恶意代码入侵。这个方法的局限性在于如何建立安全的状态集以及其更新,因为当系统安 装新的软件时就必须更新这个状态集合,使得用户体验性不好。(3)基于HOOK系统函数的检测方法。前面介绍的各种检测方法主要是基于被动监 视的思路,通过外部扫描或查询来检测恶意代码的行为,不能在行为发生之前有效的阻断入侵。该方法在客户操作系统中添加Η00Κ,然后利用VMM (Virtual Machine Monitor)中 的内存保护模块来保证添加的恶意代码不被恶意代码攻击,在保证隔离性的同时增加了安 全性,使得基于虚拟机的检测方法支持了主动防御的思想,极大的提高了检测能力。该方法 的难点在于在客户操作系统中加入HOOK后如何保证虚拟机的隔离性以及如何把现有的主 动防御的方法移植到虚拟机的应用中。第三种方法代表着现阶段恶意代码检测技术发展的方向,在基于虚拟机的安全应 用中,是目前研究前景较大的检测恶意代码的方法。但是现阶段该方法仍存在以下问题一 是可扩展性比较差,不利于添加其他功能;二是没有提供用户接口,不能把检测结果提交给用户,用户也不方便定制功能。

发明内容
本发明要解决的技术问题在于针对基于HOOK的“In-VM”检测方法不支持用户 定制功能以及提交检测结果的情况,提供一种层次性的“ In-VM”框架检测系统,在这个层次 性的架构中,使其向上能够提供主机系统的真实信息、返回检测结果,向下允许用户定制功 能、传递命令。根据本发明的一个方面,提供一种基于虚拟机的“In-VM”恶意代码检测系统,包括 下列单元环境初始化单元安装并启动Type I虚拟机BitVisor,客户系统Windows,编译 BitVisor,在多操作系统启动程序Grub启动项中添加Bitvisor的启动项;用户态检测单元传递用户层代码段首地址及大小、存放检测结果的内存区域首 地址及大小到内核层,接收用户定制功能的命令,提交检测结果给用户;系统内核态检测单元接收用户层传递下来的数据和命令,设置HOOK处理模块, 将内核层代码段的首地址及大小、HOOK处理模块的首地址及大小传递到虚拟机监视层,将 检测结果返回到内核层,通过设置用户层的内存页面不可写,来保证用户层的完整性,以不 被恶意代码攻击;虚拟机监视器检测单元接收内核层传递下来的数据和命令,将检测结果传递到 内核层,解析客户端操作系统内存,得到系统服务描述符表SSDT导出函数名称与其地址, 通过设置层页面不可写,保证内核层的完整性,以不被恶意代码攻击;接收检测结果单元初始化过程完成,等待用户定制命令以及接收检测结果。更具体的,其中的用户态检测单元进一步包括用户层判断模块,判断当前步骤初始化过程是否完成,没有完成则等待,如果完成 则监听系统消息,是否有用户输入或者检测结果返回;如果有用户命令输入,则接收用户命 令传递到内核层,如果有检测结果返回,则接收检测结果,在交互界面上显示;完成用户命 令或检测结果的接收之后,继续监听系统消息并进行后续处理。更具体的,其中的系统内核检单进一步包括内核层判断模块,判断当前步骤初始化过程是否完成,没有完成则等待,如果完成 则等待接收消息,如果有用户命令传入,则接收用户命令传递到虚拟机监视器层,如果有检 测结果返回,则接收检测结果,并把检测结果传递给内核层;完成用户命令或检测结果的传 递之后,继续等待接收消息并进行后续处理。更具体的,其中的虚拟机监视器检测单元进一步包括虚拟机监视器层判断模块,接收内核层传递的内核层代码段首地址以及大小、 HOOK处理模块的首地址及大小,设置内核层代码段、HOOK处理模块代码段内存页面不可 写,根据PE文件格式解析客户系统内核Ntoskrnl.exe,把系统服务描述符表SSDT导出函数 名称与其地址联系起来,启动用户命令处理模块,等待用户定制需HOOK的函数,设置系统 初始化完成标志,并返回。


图1示出了传统的恶意代码检测逻辑框图;图2示出了基于本发明的层次性的“In-VM”框架检测逻辑框图;图3示出了基于虚拟机“In-VM”恶意代码检测系统的工作流程图;图4示出了本发明检测系统中多操作系统启动程序Grub的添加项;
具体实施例方式为了解决上述技术问题,本发明的技术方案为改变传统基于虚拟机的检测架构, 建立一个“In-VM”分层架构,在虚拟机监视器层(Virtual Monitor Machine,VMM)、客户系 统内核层以及客户系统用户层都加入检测模块,自下而上的层次结构中,下层工作在更高 的优先级具有更高的权限,为了保证虚拟机的隔离性以及新加模块的安全性,下层利用内 存管理机制保护上层不被攻击、更改。如图1-2所示图1是传统的恶意代码检测架构,图2是本发明的“In-VM”层次性架构。本发明 的技术方案中将恶意代码检测系统分为四层计算机硬件层、虚拟机监视器层、客户系统内 核层、客户系统用户层。V1-V4构成了本发明层次性的恶意代码检测框架。参照图3,示出了本发明基于层次性框架进行检测的总体流程图。步骤1)、安装Type I型虚拟机;步骤2)、启动Type I型虚拟机Bitvisor和客户系统Windows ;步骤3)、启动用户态模块V4 ;步骤4)、启动初始化程序以及人机交互界面;步骤5)、传递V4代码段首地址及大小、存放检测结果的内存区域首地址及大小到 V3模块;步骤6)、启动内核模块V3 ;步骤7)、接收V4模块传递的V4代码段首地址及大小、存放检测结果的内存区域首 地址及大小;步骤8)、根据上面的数据,设置V4模块代码段、存放检测结果的内存区域内存页 面不可写;步骤9)、启动HOOK处理模块;步骤10)、传递模块V3代码段的首地址及大小、HOOK处理模块的首地址及大小到 下层模块V2;步骤11)、启动VMM层模块V2 ;步骤12)、接收V3模块传递的内核模块的代码段首地址以及大小、HOOK处理模块 的首地址及大小;步骤13)、设置V3模块代码段、HOOK处理模块代码段内存页面不可写;;步骤14)、解析客户系统内核Ntoskrnl. exe,把SSDT导出函数名称与其地址联系 起来;步骤15)、启动用户命令处理模块,允许用户定制需HOOK的函数;步骤16)、设置系统初始化完成标志,并返回;步骤17)、V3层检测到初始化完成标志,启动消息处理模块,并返回;
5
步骤18)、V4层检测到初始化完成标志,启动消息处理模块,监听是否有用户命令 输入和检测结果返回,并返回;步骤19)、初始化过程结束,等待用户定制功能或者显示检测结果。下面详细介绍各个步骤执行过程中的具体情况。安装Type I型虚拟机。选择Type I虚拟机BitVisor,客户系统Windows。编译 BitVisor,然后在多操作系统启动程序Grub启动项中添加Bitvisor的启动项,如图4所
示开机启动系统,首先选择BitVisor项启动,BitVisor启动之后选择Windows作为 客户系统启动,自此Type I型虚拟机BitVisor启动,作为VMM,上层运行Windows作为客户 系统。启动用户态检测模块V4,也就是最上层的恶意代码检测程序。该程序完成的工作 包括1)传递V4代码段首地址及大小、存放检测结果的内存区域首地址及大小到下层 检测模块;2)接收用户定制功能的命令;3)提交检测结果给用户。具体步骤如下2. 1启动人机交互界面程序;2.2把V4代码段首地址及大小、存放检测结果的内存区域首地址及大小传递给V3 模块;2. 3判断初始化过程是否完成,没有完成则等待,如果完成则执行2. 4 ;2. 4监听系统消息,是否有用户输入或者检测结果返回。如果有用户命令输入,执 行2. 5,如果有检测结果返回,执行2. 6 ;2. 5接收用户命令传递到V3模块,完成后执行2. 4 ;2. 6接收检测结果,在交互界面上显示,完成后执行2. 4 ;启动系统内核态检测模块V3。该模块完成以下功能1)接收上层模块V4传递下 来的数据和命令;2)把该内核模块代码段的首地址以及大小、Η00Κ处理模块的首地址及大 小传递到下层检测模块V2 ;3)把检测结果返回到上层模块V4 ;4)通过设置V4的内存页面 不可写,来保证V4的完整性,使它不被恶意代码攻击。具体步骤如下3. 1接收V4模块传递的V4代码段首地址及大小、存放检测结果的内存区域首地址 及大小;3. 2根据前面接收的数据,设置V4模块代码段、存放检测结果的内存区域内存页 面不可写;3. 3设置Η00Κ处理模块;3. 3把该内核模块的代码段首地址以及大小、Η00Κ处理模块的首地址及大小传递 给V2模块;3. 4判断初始化过程是否完成,没有则等待,如果完成则执行3. 5 ;3. 5等待接收消息,如果有用户命令传入,则执行3. 6,如果有检测结果返回,则执 行 3. 7 ;3. 6接收用户命令传递到V2模块,完成后执行3. 5 ;3. 7把检测结果传递给V3模块,完成后执行3. 5 ;
启动模块V2。该模块完成以下功能1)接收上层模块传递下来的数据和命令;2) 把检测结果传递到上层模块V3 ;3)解析客户操作系统内存,得到系统服务描述符表SSDT导 出函数名称与其地址;4)通过设置V3模块页面不可写,保证模块V3的完整性,使之不被恶 意代码攻击。具体步骤如下;4. 1接收V3模块传递的内核模块的代码段首地址以及大小、HOOK处理模块的首地 址及大小;4. 2设置V3模块代码段、HOOK处理模块代码段内存页面不可写;4. 3根据PE文件格式解析客户系统内核Ntoskrnl. exe,把系统服务描述符表SSDT 导出函数名称与其地址联系起来。4. 4启动用户命令处理模块,等待用户定制需HOOK的函数;4. 5设置系统初始化完成标志,并返回;初始化过程完成,等待用户定制命令以及接收检测结果。与现有技术相比,采用本发明可达到以下技术效果1.分层的结构保证能够获取客户系统完整的信息,同时利用下层保护上层的安全 机制使得在硬件安全的情况下,整个框架的安全性都能够得到保障;2.用户能够方便的定制安全功能,控制程序对系统关键数据的改变,同时能够把 检测结果提交给用户,使得移植现有的恶意代码检测技术到虚拟机中成为可能。3. “In-VM"的检测框架使得检测过程不必每次都下陷到VMM中处理,在客户虚拟 机中处理检测过程,节约了时间开销。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技 术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于虚拟机的“In-VM”恶意代码检测系统,包括下列单元环境初始化单元安装并启动Type I虚拟机BitVisor,客户系统Windows,编译 BitVisor,在多操作系统启动程序Grub启动项中添加Bitvisor的启动项;用户态检测单元传递用户层代码段首地址及大小、存放检测结果的内存区域首地址 及大小到内核层,接收用户定制功能的命令,提交检测结果给用户;系统内核态检测单元接收用户层传递下来的数据和命令,设置HOOK处理模块,将内 核层代码段的首地址及大小、HOOK处理模块的首地址及大小传递到虚拟机监视层,将检测 结果返回到内核层,通过设置用户层的内存页面不可写,来保证用户层的完整性,以不被恶 意代码攻击;虚拟机监视器检测单元接收内核层传递下来的数据和命令,将检测结果传递到内核 层,解析客户端操作系统内存,得到系统服务描述符表SSDT导出函数名称与其地址,通过 设置层页面不可写,保证内核层的完整性,以不被恶意代码攻击;接收检测结果单元初始化过程完成,等待用户定制命令以及接收检测结果。
2.根据权利要求1的系统,其中的用户态检测单元进一步包括用户层判断模块,判断当前步骤初始化过程是否完成,没有完成则等待,如果完成则监 听系统消息,是否有用户输入或者检测结果返回;如果有用户命令输入,则接收用户命令传 递到内核层,如果有检测结果返回,则接收检测结果,在交互界面上显示;完成用户命令或 检测结果的接收之后,继续监听系统消息并进行后续处理。
3.根据权利要求1的系统,其中的系统内核检单进一步包括内核层判断模块,判断当前步骤初始化过程是否完成,没有完成则等待,如果完成则等 待接收消息,如果有用户命令传入,则接收用户命令传递到虚拟机监视器层,如果有检测结 果返回,则接收检测结果,并把检测结果传递给内核层;完成用户命令或检测结果的传递之 后,继续等待接收消息并进行后续处理。
4.根据权利要求1的系统,其中的虚拟机监视器检测单元进一步包括虚拟机监视器层判断模块,接收内核层传递的内核层代码段首地址以及大小、HOOK处 理模块的首地址及大小,设置内核层代码段、HOOK处理模块代码段内存页面不可写,根据 PE文件格式解析客户系统内核Ntoskrnl. exe,把系统服务描述符表SSDT导出函数名称与 其地址联系起来,启动用户命令处理模块,等待用户定制需HOOK的函数,设置系统初始化 完成标志,并返回。
全文摘要
一种基于虚拟机的“In-VM”恶意代码检测系统,包括环境初始化单元安装并启动TypeI虚拟机BitVisor,客户系统Windows,编译BitVisor,在多操作系统启动程序Grub启动项中添加Bitvisor的启动项;用户态检测单元传递用户层代码段首地址及大小、存放检测结果的内存区域首地址及大小到内核层,接收用户定制功能的命令,提交检测结果给用户;系统内核态检测单元接收用户层传递的数据和命令,设置HOOK处理模块,将内核层代码段的首地址及大小、HOOK处理模块的首地址及大小传递到虚拟机监视层,将检测结果返回到内核层;虚拟机监视器检测单元接收内核层传递的数据和命令,将检测结果传递到内核层,解析客户端操作系统内存,得到系统服务描述符表SSDT导出函数名称与其地址;接收检测结果单元初始化过程完成,等待用户定制命令以及接收检测结果。检测系统向上能够提供主机系统的真实信息、返回检测结果,向下允许用户定制功能、传递命令。
文档编号G06F21/00GK102122330SQ20111002554
公开日2011年7月13日 申请日期2011年1月24日 优先权日2011年1月24日
发明者刘明, 刘波, 宁剑, 王天佐, 肖枫涛, 胡华平, 陈林, 马晓龙, 黄遵国 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1