掌桥专利:专业的专利平台
掌桥专利
首页

一种基于自省技术的虚拟机安全监控方法及系统

文献发布时间:2023-06-19 11:52:33


一种基于自省技术的虚拟机安全监控方法及系统

技术领域

本发明涉及虚拟化安全监控领域,具体涉及一种基于自省技术的虚拟机安全监控方法及系统。

背景技术

虚拟化技术能够将底层物理计算资源整合为一个运行环境,对底层的计算资源进行逻辑抽象与统一,虚拟化技术是云计算实现基础性关键技术,其安全性直接决定整个云平台中用户数据的安全。目前,网络攻击形式多样,攻击持续时间及攻击数量不断增加,设备及应用面临巨大安全威胁,相比于传统环境,云计算带来巨大的经济效益,使各国的黑客都从中看到了利益,纷纷转向对虚拟化环境的攻击,导致虚拟化环境的安全问题十分严峻。

通过虚拟化技术,各种类型的虚拟机和软件可以由用户自由地创建和删除,这给用户带来了极大的便利,但同时也隐藏着虚拟化平台自身的安全问题如:如何保障虚拟机安全以及控制虚拟机网络流量等。这类问题随着网络的迅速发展和计算机系统的日益更新与开放,变的越来越复杂,若恶意攻击出现在虚拟化环境中并恶意隐藏敏感进程、敏感文件或其他恶意系统调用程序等,将直接造成云服务的不可靠,云中数据更是无安全可言,所以,虚拟化安全是云平台安全的基石。在所有攻击类型中,恶意软件是云平台最大的威胁,传统环境下基于主机的安全软件通常和恶意软件处于同一特权级别,安全软件很容易成为恶意软件的攻击目标,一旦恶意软件找到安全软件的漏洞,则会利用该漏洞使其陷入瘫痪,从而直接获得系统的最高权限,以便进一步从事非法活动。在云环境下,同一台物理服务器上的若干虚拟机不是物理隔离的,一旦某一台虚拟机被攻破,则会对整个云环境产生很大的威胁,恶意软件的盛行以及过时的安全工具让云环境的安全形势变得十分复杂。目前,云环境比以往更需要创新的安全工具。

面对如此严峻的安全问题,相关学者针对性的提出了建议如隔离和分段虚拟网络,引入安全软件保护虚拟化环境,并采用加密技术和访问控制管理通信。在虚拟化安全保障方面,虚拟机自省技术(Virtual Machine Introspection,简称:VMl)是个很好的选择,它可以监控虚拟机内部事件,使用户更透明地看到虚拟机运行情况,及时了解虚拟机动态信息,帮助用户分析决策。所谓虚拟机自省(VMl)就是在虚拟机外部通过分析其内部的系统状态(软硬件),来了解虚拟机的内部状态。由于虚拟机管理器兼具基于主机的入侵检测框架的高“能见度”和基于网络入侵检测框架良好的隔离性,所以虚拟机自省借助于虚拟机管理器(VMM)实现对虚拟机的监控。要实现虚拟机自省,解决“语义鸿沟”问题是一大关键,所谓“语义鸿沟”是指从虚拟机外部观测到的信息和虚拟机内部真实情况之间的差异。虚拟机管理器通常是一台独立并且受信任的虚拟机,由于该虚拟机独立于被监控的客户机,所以有着很好的隔离作用。虚拟机管理器通过读取虚拟机内的内存页面、寄存器、中断等低级语义事件,将其还原成用户能够识别的高级语义对象,如虚拟机进程、内核模块、系统调用等。

虚拟机自省(VMI)有带内、带外两种主要的模式,其中带内模式需要在虚拟机内部署监控模块以详细了解虚拟机内状态信息,该模式由于监控模块部署在虚拟机内部,较容易受到恶意攻击,并不是一种安全有效的安全模式。带外模式无需在虚拟机内部署安全代理,但是其高度依赖虚拟机操作系统的外部语义,由于该技术是通过虚拟机寄存器、中断、内存页面等攻击者不可绕过的底层硬件状态实现针对虚拟机的状态监控,所以安全性高,是目前最可靠的VMI技术。

发明内容

本发明实现了高效的自省机制,能够细粒度地监控虚拟机物理地址访问行为,最小化自省机制对虚拟机运行效率的影响,同时采用了动态行为截获分析方法,可以根据用户需要动态调整所监控的API函数,也从侧面保证了虚拟机运行效率。针对系统需要,设计了两种应用方法,一个是虚拟机的异常弹窗截获,另一个是行为插件库的建立,两者都为恶意行为检测和分析提供了良好的基础。

本发明采用的技术方案如下:

一种基于自省技术的虚拟机安全监控方法,包括以下步骤:

建立虚拟机行为的插件库,该插件库中功能相似的API函数聚合在一起作为插件;

根据监控指令从插件库中选择所要监控的插件,通过读取插件库中的API函数名称以及API函数的相对偏移地址,计算出API函数的虚拟地址;

读取插件库中API函数的虚拟地址,保存该虚拟地址存储的机器码,然后将该虚拟地址存储的机器码修改为中断指令的机器码;

虚拟机访问修改后的该虚拟地址并触发中断后,暂停虚拟机运行,对虚拟机进行语义解析以获得API函数的调用信息;

在语义解析完成后,将API函数的虚拟地址中存储的原机器码写回该虚拟地址中,设置虚拟机为单步执行后恢复虚拟机执行。

进一步地,所述插件库将WindowsAPI函数按文件、进程、网络、注册表、shell、驱动进行主机行为分类,每个行为类为一个插件,每个行为类中涵盖该类中常用的API函数名称和用来计算虚拟地址的库函数相对偏移地址。

进一步地,所述根据监控指令从插件库中选择所要监控的插件,通过读取插件库中的API函数名称以及API函数的相对偏移地址,计算出API函数的虚拟地址,包括:

接收到目标虚拟机配置和监控配置消息,解析后下发给插件库进行匹配;

通过插件库匹配插件,依次读取目标插件库中的API函数名称和此函数的相对偏移地址;

将dll库的基址与API函数的相对偏移地址相加,计算生成此函数的虚拟地址;

将此虚拟地址和函数名称的对应关系存储在映射表A。

进一步地,所述读取插件库中API函数的虚拟地址,保存该虚拟地址存储的机器码,然后将该虚拟地址存储的机器码修改为中断指令的机器码,包括:

读取指定目录文件中的函数,与当前程序中已监控的函数进行匹配,判断该函数是需要动态添加还是需要动态减少的;

如果是需要动态减少的函数,则修改该函数的虚拟地址内容为原先保存的机器码;

如果是需要动态添加的函数,则依次读取插件库存储的虚拟地址,读取该虚拟地址的存储内容,建立虚拟地址与存储内容的映射关系;然后将该虚拟地址原本存储的机器码改写为中断指令的机器码,等待虚拟机访问该虚拟地址触发中断陷入。

进一步地,所述对虚拟机进行语义解析以获得API函数的调用信息,包括:

根据CPU寄存器RCX、RDX的值调用libvmi库函数读取内存值;

使用内存值,配合符号偏移表,还原出调用API函数的进程名称、进程id、函数参数。

进一步地,虚拟机单步执行指令后陷入到虚拟机管理器层,此时取消虚拟机的单步执行,将虚拟地址内容恢复为中断指令,等待下次触发。

进一步地,通过所述插件库实现虚拟机异常弹窗截获,通过拦截弹窗API并分析弹窗内容,知晓虚拟机是否出现过杀毒软件告警提示。

一种采用上述方法的基于自省技术的虚拟机安全监控系统,其包括:

插件库模块,用于建立虚拟机行为的插件库,该插件库中功能相似的API函数聚合在一起作为插件;根据监控指令从插件库中选择所要监控的插件,通过读取插件库中的API函数名称以及API函数的相对偏移地址,计算出API函数的虚拟地址;

中断设置模块,用于读取插件库中API函数的虚拟地址,保存该虚拟地址存储的机器码,然后将该虚拟地址存储的机器码修改为中断指令的机器码;

语义解析模块,用于在虚拟机访问修改后的该虚拟地址并触发中断后,对虚拟机进行语义解析以获得API函数的调用信息;

中断恢复模块,用于在语义解析完成后,将API函数的虚拟地址中存储的原机器码写回该虚拟地址中,设置虚拟机为单步执行后恢复虚拟机执行。

本发明公开了一种基于自省技术的虚拟机安全监控系统,该系统动态接收用户对主机行为的检测需求,调用相应行为插件库,对虚拟机进行高性能、高精准、高覆盖的行为监控,与已公开的方法相比,具有如下优点:

1)细粒度的高效自省机制,对虚拟机API调用监控细化到指令级别,只有调用该API时候才会触发自省陷入,从而最小化自省机制对虚拟机运行效率的影响;

2)主机行为动态截获,根据虚拟机运行不同阶段和用户需要,动态添加所需要监控的API函数,动态删除已监控的API函数,保证监控数据的高效性;

3)通过监控Windows虚拟机弹窗行为,并分析弹窗内容,能够在带外发现虚拟机潜在的异常行为,知晓此虚拟机是否出现过杀毒软件告警提示,为入侵检测进行辅助分析;

4)建立了虚拟机行为插件库,将Windows提供的API按文件、进程、网络、注册表等操作进行分类,能够全方面覆盖某一类主机行为,为用户提供精准的监控信息。

附图说明

图1.一种基于自省技术的虚拟机安全监控系统架构图。

图2.插件库匹配流程图。

图3.中断陷入流程图。

图4.中断恢复流程图。

图5.语义解析流程图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步详细说明。

本发明主要包括以下内容:

(1)细粒度的高效自省机制。本发明能够对虚拟机API的物理地址设置中断陷入,使虚拟机在调用该API时陷入VMM层,达到指令级别的VMM层陷入,从而最小化自省机制对虚拟机原有运行效率的影响。

(2)主机行为动态截获分析。本发明可以根据需要动态调整所监控虚拟机的API,根据虚拟机运行不同阶段和用户需要,动态添加所需要监控的API函数,动态删除已监控的API函数,保证监控数据的高效性。

(3)虚拟机异常弹窗截获。本发明可以监控Windows弹窗,一般情况下,一些恶意入侵行为都会触发杀毒软件告警弹窗,系统通过拦截弹窗API并分析弹窗内容,能够知晓此虚拟机是否出现过杀毒软件告警提示,为入侵检测辅证分析。

(4)行为插件库的建立。本发明建立了虚拟机行为插件库,将Windows提供的API按文件、进程、网络、注册表等操作进行分类,当虚拟机需要某些主机行为监控时,直接调用插件库中关于该类的插件,完成对虚拟机主机行为监控。

本发明公开的一种基于自省技术的虚拟机安全监控系统如图1所示,主要由插件库模块、中断设置模块、中断恢复模块、语义解析模块组成。插件库模块与语义解析模块是上层应用程序,中断设置及中断恢复模块通过ioctl通道与VMM交互。插件库模块将WindowsAPI函数按文件、进程、网络、注册表、shell、驱动进行主机行为分类,功能相似的一类API函数聚合在一起成为一个插件,即每个行为类为一个插件,每个行为类中涵盖了该类别中常用的API函数名称和用来计算虚拟地址的库函数相对偏移地址。本发明中的虚拟机异常弹窗截获为插件库中一个恶意弹窗的插件,主要做法是通过监控windowsAPI函数DrawTextExW,当被监控的windows虚拟机发生弹窗行为时,会陷入到语义解析模块中,语义解析模块通过解析此函数的第二个参数(弹窗标题文本)内容来分析是否是杀毒软件弹窗。中断设置模块主要负责将计算得出的API地址进行中断设置;中断恢复模块主要负责在虚拟机中断陷入时进行虚拟机中断恢复操作和单步执行操作;语义解析模块通过统一分析中断陷入虚拟机的CPU寄存器值和内存状态,解析出当前调用API的进程及参数等信息。

上述系统运行的具体步骤如下:

(1)系统开启后会根据下达的监控指令从插件库模块中选择所要监控的插件,通过读取插件库模块中的API函数名称以及该函数的相对偏移地址,计算出该函数的虚拟地址,建立映射表(表A)即虚拟地址和API函数名称的对应关系并保存。

(2)中断设置模块读取插件库模块中(表A)保存的虚拟地址,首先读取该虚拟地址内存中的机器码并保存在映射表(表B)中,然后改写该虚拟地址的机器码为中断指令的机器码(0xCC),等待虚拟机访问该地址触发中断。

(3)当所修改的地址触发访问操作后,暂停虚拟机运行,语义解析模块会根据虚拟机内的内存页面、寄存器、符号偏移等还原本次调用的进程信息、函数信息等。

(4)中断恢复模块等待语义解析模块完成解析后,将之前中断设置模块保存在表B中的该地址的值写入中断地址,设置虚拟机为单步执行后恢复虚拟机执行。

图2给出了本发明一个实施例的插件库匹配流程图,插件库模块的具体实施步骤如下:

(1)接收到目标虚拟机配置和监控配置消息,解析后下发给插件库匹配;

(2)匹配标记的插件,依次读取目标插件库中的API函数名称和此函数的相对偏移地址;

(3)将dll库的基址与上述函数相对偏移地址相加,计算生成此函数的虚拟地址;

(4)将此虚拟地址和函数名称的对应关系存储在表A后结束。

图3给出了本发明一个实施例的中断设置流程图,中断设置模块的具体实施步骤如下:

(1)读取指定目录文件中的函数,与当前程序中已监控的函数进行匹配,判断该函数是需要动态添加还是减少的;

(2)如果是需要动态减少的函数,则修改该函数的虚拟地址内容为原先保存的机器码;

(3)如果是需要动态添加的函数,则依次读取插件库存储的虚拟地址,读取该虚拟地址的存储内容,建立虚拟地址与存储内容的映射关系(表B);然后将该虚拟地址原本存储的机器码改写为中断指令的机器码(0xcc),等待虚拟机访问该虚拟地址触发中断陷入。

图4给出了本发明一个实施例的中断恢复流程图,中断恢复模块的具体实施步骤如下:

(1)触发中断会陷入到VMM层,获得触发此中断的虚拟地址,暂停虚拟机执行;

(2)保存当前虚拟机CPU寄存器值,调用语义解析模块进行语义解析处理;

(3)语义解析模块处理完成后,根据之前建立的虚拟地址与存储内容的映射关系(表B)匹配虚拟地址,得到该虚拟地址内存中原本存储的机器码(未设置中断前存储的内容),将该值写回虚拟地址中,同时设置虚拟机运行模式为单步运行;

(4)虚拟机单步执行指令后依旧陷入VMM层,此时取消虚拟机的单步执行,将虚拟地址内容恢复为中断指令,等待下次触发。

图5给出了本发明一个实施例的语义解析流程图,语义解析模块的具体实施步骤如下:

(1)根据CPU寄存器RCX、RDX的值调用libvmi库函数读取内存值;

(2)使用内存值,配合符号偏移表,还原出调用此函数的进程名称,进程id,函数参数;其中符号偏移是指每个参数(结构体)在内存中所占空间大小或相对于结构体基址的偏移量,可以通过下载微软官网公布的符号文件建立符号偏移表;

(3)完成调用信息还原后,返回中断恢复模块继续执行。

以下为此方案运行得到的一条数据,其为json格式,其中type字段表示此api类型user为用户层函数,TimeStamp字段表示此api调用时间戳,ProcessName字段表示进程名称,TID字段表示线程ID,PID表示进程ID,PPID表示父进程ID,Module表示所属模块,Method表示此api的名称,Args表示每一个参数名称及数值。

基于同一发明构思,本发明的另一实施例提供一种采用上述方法的基于自省技术的虚拟机安全监控系统,其包括:

插件库模块,用于建立虚拟机行为的插件库,该插件库中功能相似的API函数聚合在一起作为插件;根据监控指令从插件库中选择所要监控的插件,通过读取插件库中的API函数名称以及API函数的相对偏移地址,计算出API函数的虚拟地址;

中断设置模块,用于读取插件库中API函数的虚拟地址,保存该虚拟地址存储的机器码,然后将该虚拟地址存储的机器码修改为中断指令的机器码;

语义解析模块,用于在虚拟机访问修改后的该虚拟地址并触发中断后,对虚拟机进行语义解析以获得API函数的调用信息;

中断恢复模块,用于在语义解析完成后,将API函数的虚拟地址中存储的原机器码写回该虚拟地址中,设置虚拟机为单步执行后恢复虚拟机执行。

基于同一发明构思,本发明的另一实施例提供一种电子装置(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。

基于同一发明构思,本发明的另一实施例提供一种计算机可读存储介质(如ROM/RAM、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。

以上公开的本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例所公开的内容,本发明的保护范围以权利要求书界定的范围为准。

相关技术
  • 一种基于自省技术的虚拟机安全监控方法及系统
  • 基于虚拟机自省技术的云平台安全监控系统及方法
技术分类

06120113084352