著录项信息
专利名称 | 一种构造“In-VM”恶意代码检测架构的方法 |
申请号 | CN201110025550.5 | 申请日期 | 2011-01-24 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2011-07-13 | 公开/公告号 | CN102122331A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/56 | IPC分类号 | G;0;6;F;2;1;/;5;6;;;G;0;6;F;2;1;/;5;3查看分类表>
|
申请人 | 中国人民解放军国防科学技术大学 | 申请人地址 | 湖南省长沙市开福区砚瓦池正街47号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中国人民解放军国防科学技术大学 | 当前权利人 | 中国人民解放军国防科学技术大学 |
发明人 | 刘波;陈林;王天佐;胡华平;黄遵国;陈新;宁剑;刘明;张静 |
代理机构 | 北京安博达知识产权代理有限公司 | 代理人 | 徐国文 |
摘要
一种构造“In-VM”恶意代码检测架构的方法,包括:安装并启动Type?I虚拟机BitVisor,客户系统Windows,编译BitVisor,在多操作系统启动程序Grub启动项中添加Bitvisor的启动项;传递用户层代码段首地址及大小、存放检测结果的内存区域首地址及大小到内核层,接收用户定制功能的命令,提交检测结果给用户;接收用户层传递下来的数据和命令,设置HOOK处理模块,将内核层代码段的首地址及大小、HOOK处理模块的首地址及大小传递到虚拟机监视层,将检测结果返回到内核层;接收内核层传递下来的数据和命令,将检测结果传递到内核层,解析客户端操作系统内存,得到系统服务描述符表SSDT导出函数名称与其地址。
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”恶意代码检测架构的方法\n技术领域\n[0001] 本发明涉及基于虚拟机的恶意代码检测方法,尤指基于“In-VM”架构利用主动防御的思想来检测恶意代码的方法。\n背景技术\n[0002] 针对越来越严重的网络安全问题,安全工具的发展也非常迅速,杀毒软件技术由早期的基于特征码的检测发展到基于异常行为、以及现阶段的云安全技术,防护能力得到了极大的提高。主机型安全工具(如杀毒软件、防火墙等)可以获得详细的系统活动信息,有利于判断系统中是否存在异常行为、恶意代码,但是安全工具本身也存在于不安全的系统之中,所以容易受到恶意代码攻击或者欺骗;而网络型安全工具(如网络防火墙)可以免受恶意代码的攻击,但是它难以获得主机的活动信息,不利于检测主机内的恶意代码。\n[0003] 基于虚拟机的恶意代码检测技术正是为了解决主机型安全工具的缺陷发展起来的,它既可以获得完整主机活动视图,又可以隔离恶意代码的攻击,近年来成为网络安全学者研究的重点,如入侵检测、攻击行为分析、恶意代码检测、蜜罐和可信计算等。在恶意代码检测的应用中,根据不同的检测方法可以分为以下几种:\n[0004] (1)基于语义重构检测异常的恶意代码。这种方法的难点在于如何利用硬件信息重构出系统视图以及如何保证重构的系统视图是真实可信的。例如在重构内存信息的过程,大多数是基于特定版本的操作系统的调试符号信息通过直接读取客户操作系统内存重构出相应的操作系统关键数据结构,如果攻击者了解重构过程应用的方法,就可以通过修改内存数据来欺骗防护方。该方法的另一个缺陷是仅支持检测,而不能阻止恶意代码的运行。所以为了更好的查杀恶意代码,需要发展基于虚拟机的更高级的检测方法。\n[0005] (2)基于内核完整性的检测方法。该方法的先决条件是要建立一个安全的内核状态集,然后在系统运行过程中动态的对比内核状态和这个安全的状态集,如果不相符,则有恶意代码入侵。这个方法的局限性在于如何建立安全的状态集以及其更新,因为当系统安装新的软件时就必须更新这个状态集合,使得用户体验性不好。\n[0006] (3)基于HOOK系统函数的检测方法。前面介绍的各种检测方法主要是基于被动监视的思路,通过外部扫描或查询来检测恶意代码的行为,不能在行为发生之前有效的阻断入侵。该方法在客户操作系统中添加HOOK,然后利用VMM(Virtual Machine Monitor)中的内存保护模块来保证添加的恶意代码不被恶意代码攻击,在保证隔离性的同时增加了安全性,使得基于虚拟机的检测方法支持了主动防御的思想,极大的提高了检测能力。该方法的难点在于在客户操作系统中加入HOOK后如何保证虚拟机的隔离性以及如何把现有的主动防御的方法移植到虚拟机的应用中。\n[0007] 第三种方法代表着现阶段恶意代码检测技术发展的方向,在基于虚拟机的安全应用中,是目前研究前景较大的检测恶意代码的方法。但是现阶段该方法仍存在以下问题:一是可扩展性比较差,不利于添加其他功能;二是没有提供用户接口,不能把检测结果提交给用户,用户也不方便定制功能。\n发明内容\n[0008] 本发明要解决的技术问题在于:针对基于HOOK的“In-VM”检测方法不支持用户定制功能以及提交检测结果的情况,提出一种层次性的“In-VM”框架检测方法,在这个层次性的架构中,使其向上能够提供主机系统的真实信息、返回检测结果,向下允许用户定制功能、传递命令。\n[0009] 根据本发明的一个方面,提供一种构造“In-VM”恶意代码检测架构的方法,包括下列步骤:\n[0010] 环境初始化步骤:安装并启动Type I虚拟机BitVisor,客户系统Windows,编译BitVisor,在多操作系统启动程序Grub启动项中添加Bitvisor的启动项;\n[0011] 用户态检测步骤:传递用户层代码段首地址及大小、存放检测结果的内存区域首地址及大小到内核层,接收用户定制功能的命令,提交检测结果给用户;\n[0012] 系统内核态检测步骤:接收用户层传递下来的数据和命令,设置HOOK处理模块,将内核层代码段的首地址及大小、HOOK处理模块的首地址及大小传递到虚拟机监视层,将检测结果返回到内核层,通过设置用户层的内存页面不可写,来保证用户层的完整性,以不被恶意代码攻击;\n[0013] 虚拟机监视器检测步骤:接收内核层传递下来的数据和命令,将检测结果传递到内核层,解析客户端操作系统内存,得到系统服务描述符表SSDT导出函数名称与其地址,通过设置层页面不可写,保证内核层的完整性,以不被恶意代码攻击;\n[0014] 接收检测结果步骤:初始化过程完成,等待用户定制命令以及接收检测结果。\n[0015] 更具体的,其中的用户态检测步骤进一步包括:\n[0016] 判断当前步骤初始化过程是否完成,没有完成则等待,如果完成则监听系统消息,是否有用户输入或者检测结果返回,如果有用户命令输入,则接收用户命令传递到内核层,如果有检测结果返回,则接收检测结果,在交互界面上显示;完成用户命令或检测结果的接收之后,继续监听系统消息并进行后续处理。\n[0017] 更具体的,其中的系统内核检测步骤进一步包括:判断当前步骤初始化过程是否完成,没有完成则等待,如果完成则等待接收消息,如果有用户命令传入,则接收用户命令传递到虚拟机监视器层,如果有检测结果返回,则接收检测结果,并把检测结果传递给内核层;完成用户命令或检测结果的传递之后,继续等待接收消息并进行后续处理。\n[0018] 更具体的,其中的虚拟机监视器检测步骤进一步包括:\n[0019] 接收内核层传递的内核层代码段首地址以及大小、HOOK处理模块的首地址及大小,设置内核层代码段、HOOK处理模块代码段内存页面不可写,根据PE文件格式解析客户系统内核Ntoskrnl.exe,把系统服务描述符表SSDT导出函数名称与其地址联系起来,启动用户命令处理模块,等待用户定制需HOOK的函数,设置系统初始化完成标志,并返回。\n附图说明\n[0020] 图1示出了传统的恶意代码检测逻辑框图;\n[0021] 图2示出了基于本发明的层次性的“In-VM”框架检测逻辑框图;\n[0022] 图3示出了构造“In-VM”恶意代码检测架构的方法的流程图;\n[0023] 图4示出了本发明检测系统中多操作系统启动程序Grub的添加项;\n具体实施方式\n[0024] 为了解决上述技术问题,本发明的技术方案为:改变传统基于虚拟机的检测架构,建立一个“In-VM”分层架构,在虚拟机监视器层(Virtual Monitor Machine,VMM)、客户系统内核层以及客户系统用户层都加入检测模块,自下而上的层次结构中,下层工作在更高的优先级具有更高的权限,为了保证虚拟机的隔离性以及新加模块的安全性,下层利用内存管理机制保护上层不被攻击、更改。如图1-2所示:\n[0025] 图1是传统的恶意代码检测架构,图2是本发明的“In-VM”层次性架构。本发明的技术方案中将恶意代码检测系统分为四层:计算机硬件层、虚拟机监视器层、客户系统内核层、客户系统用户层。V1-V4构成了本发明层次性的恶意代码检测框架。\n[0026] 参照图3,示出了本发明基于层次性框架进行检测的总体流程图。\n[0027] 步骤1)、安装Type I型虚拟机;\n[0028] 步骤2)、启动Type I型虚拟机Bitvisor和客户系统Windows;\n[0029] 步骤3)、启动用户态模块V4;\n[0030] 步骤4)、启动初始化程序以及人机交互界面;\n[0031] 步骤5)、传递V4代码段首地址及大小、存放检测结果的内存区域首地址及大小到V3模块;\n[0032] 步骤6)、启动内核模块V3;\n[0033] 步骤7)、接收V4模块传递的V4代码段首地址及大小、存放检测结果的内存区域首地址及大小;\n[0034] 步骤8)、根据上面的数据,设置V4模块代码段、存放检测结果的内存区域内存页面不可写;\n[0035] 步骤9)、启动HOOK处理模块;\n[0036] 步骤10)、传递模块V3代码段的首地址及大小、HOOK处理模块的首地址及大小到下层模块V2;\n[0037] 步骤11)、启动VMM层模块V2;\n[0038] 步骤12)、接收V3模块传递的内核模块的代码段首地址以及大小、HOOK处理模块的首地址及大小;\n[0039] 步骤13)、设置V3模块代码段、HOOK处理模块代码段内存页面不可写;;\n[0040] 步骤14)、解析客户系统内核Ntoskrnl.exe,把SSDT导出函数名称与其地址联系起来;\n[0041] 步骤15)、启动用户命令处理模块,允许用户定制需HOOK的函数;\n[0042] 步骤16)、设置系统初始化完成标志,并返回;\n[0043] 步骤17)、V3层检测到初始化完成标志,启动消息处理模块,并返回;\n[0044] 步骤18)、V4层检测到初始化完成标志,启动消息处理模块,监听是否有用户命令输入和检测结果返回,并返回;\n[0045] 步骤19)、初始化过程结束,等待用户定制功能或者显示检测结果。\n[0046] 下面详细介绍各个步骤执行过程中的具体情况。\n[0047] 安装Type I型虚拟机。选择Type I虚拟机BitVisor,客户系统Windows。编译BitVisor,然后在多操作系统启动程序Grub启动项中添加Bitvisor的启动项,如图4所示。\n[0048] 开机启动系统,首先选择BitVisor项启动,BitVisor启动之后选择Windows作为客户系统启动,自此Type I型虚拟机BitVisor启动,作为VMM,上层运行Windows作为客户系统。\n[0049] 启动用户态检测模块V4,也就是最上层的恶意代码检测程序。该程序完成的工作包括:1)传递V4代码段首地址及大小、存放检测结果的内存区域首地址及大小到下层检测模块;2)接收用户定制功能的命令;3)提交检测结果给用户。具体步骤如下:\n[0050] 2.1启动人机交互界面程序;\n[0051] 2.2把V4代码段首地址及大小、存放检测结果的内存区域首地址及大小传递给V3模块;\n[0052] 2.3判断初始化过程是否完成,没有完成则等待,如果完成则执行2.4;\n[0053] 2.4监听系统消息,是否有用户输入或者检测结果返回。如果有用户命令输入,执行2.5,如果有检测结果返回,执行2.6;\n[0054] 2.5接收用户命令传递到V3模块,完成后执行2.4;\n[0055] 2.6接收检测结果,在交互界面上显示,完成后执行2.4;\n[0056] 启动系统内核态检测模块V3。该模块完成以下功能:1)接收上层模块V4传递下来的数据和命令;2)把该内核模块代码段的首地址以及大小、HOOK处理模块的首地址及大小传递到下层检测模块V2;3)把检测结果返回到上层模块V4;4)通过设置V4的内存页面不可写,来保证V4的完整性,使它不被恶意代码攻击。具体步骤如下:\n[0057] 3.1接收V4模块传递的V4代码段首地址及大小、存放检测结果的内存区域首地址及大小;\n[0058] 3.2根据前面接收的数据,设置V4模块代码段、存放检测结果的内存区域内存页面不可写;\n[0059] 3.3设置HOOK处理模块;\n[0060] 3.3把该内核模块的代码段首地址以及大小、HOOK处理模块的首地址及大小传递给V2模块;\n[0061] 3.4判断初始化过程是否完成,没有则等待,如果完成则执行3.5;\n[0062] 3.5等待接收消息,如果有用户命令传入,则执行3.6,如果有检测结果返回,则执行3.7;\n[0063] 3.6接收用户命令传递到V2模块,完成后执行3.5;\n[0064] 3.7把检测结果传递给V3模块,完成后执行3.5;\n[0065] 启动模块V2。该模块完成以下功能:1)接收上层模块传递下来的数据和命令;2)把检测结果传递到上层模块V3;3)解析客户操作系统内存,得到系统服务描述符表SSDT导出函数名称与其地址;4)通过设置V3模块页面不可写,保证模块V3的完整性,使之不被恶意代码攻击。具体步骤如下;\n[0066] 4.1接收V3模块传递的内核模块的代码段首地址以及大小、HOOK处理模块的首地址及大小;\n[0067] 4.2设置V3模块代码段、HOOK处理模块代码段内存页面不可写;\n[0068] 4.3根据PE文件格式解析客户系统内核Ntoskrnl.exe,把系统服务描述符表SSDT导出函数名称与其地址联系起来。\n[0069] 4.4启动用户命令处理模块,等待用户定制需HOOK的函数;\n[0070] 4.5设置系统初始化完成标志,并返回;\n[0071] 初始化过程完成,等待用户定制命令以及接收检测结果。\n[0072] 与现有技术相比,采用本发明可达到以下技术效果:\n[0073] 1.分层的结构保证能够获取客户系统完整的信息,同时利用下层保护上层的安全机制使得在硬件安全的情况下,整个框架的安全性都能够得到保障;\n[0074] 2.用户能够方便的定制安全功能,控制程序对系统关键数据的改变,同时能够把检测结果提交给用户,使得移植现有的恶意代码检测技术到虚拟机中成为可能。\n[0075] 3.“In-VM”的检测框架使得检测过程不必每次都下陷到VMM中处理,在客户虚拟机中处理检测过程,节约了时间开销。
法律信息
- 2017-03-15
未缴年费专利权终止
IPC(主分类): G06F 21/56
专利号: ZL 201110025550.5
申请日: 2011.01.24
授权公告日: 2014.04.30
- 2014-04-30
- 2012-04-25
实质审查的生效
IPC(主分类): G06F 21/00
专利申请号: 201110025550.5
申请日: 2011.01.24
- 2011-07-13
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-01-21
|
2008-09-08
| | |
2
| |
2010-09-22
|
2010-02-05
| | |
3
| |
2010-04-07
|
2009-09-15
| | |
4
| | 暂无 |
2005-07-11
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |