虚拟化平台上对虚拟机文件的安全检测方法及装置
技术领域
本发明涉及安全检测技术领域,尤其涉及一种虚拟化平台上对虚拟机文件的安全检测方法及装置。
背景技术
在虚拟化平台中,宿主机中会建立多个虚拟机。对于这些虚拟机的安全防护,目前是采用在每个虚拟机上均布置一套病毒查杀程序,当虚拟机对带有病毒程序的文件进行访问时,病毒程序和病毒查杀程序同时被运行。由于病毒程序可能会实现一些对抗病毒查杀的免杀技术,故存在病毒程序反过来暴力终止病毒查杀程序运行,导致虚拟机无法实现自身的安全防护。
发明内容
针对现有技术存在的问题,本发明实施例提供一种虚拟化平台上对虚拟机文件的安全检测方法及装置。
第一方面,本发明实施例提供一种虚拟化平台上对虚拟机文件的安全检测方法,包括:
获取虚拟机发送的对应于目标文件的回调信息,根据所述回调信息确定满足获取目标文件的条件时,从所述虚拟机的读内存中获取目标文件;
对所述目标文件进行安全检测,向所述虚拟机输出检测结果。
进一步地,所述获取虚拟机发送出的对应于目标文件的回调信息,根据所述回调信息确定满足获取目标文件的条件时,从所述虚拟机的读内存中获取目标文件,包括:
在获取虚拟机发送的对应于目标文件的第一回调信息后,向所述虚拟机发送配置指令,根据所述配置指令在所述虚拟机上设置对应于目标文件的读取回调事件;所述第一回调信息为所述虚拟机在处理目标文件过程中检测到触发操作回调事件时生成的信息,所述操作回调事件为在虚拟机中对目标文件触发选定操作时反馈通知的事件,所述读取回调事件为在虚拟机中对目标文件触发读取操作时反馈通知的事件;
在获取虚拟机发送的对应于目标文件的第二回调信息后,从所述虚拟机的读内存中获取目标文件;所述第二回调信息为所述虚拟机在处理目标文件过程中检测到触发所述读取回调事件时生成的信息。
进一步地,所述根据所述配置指令在所述虚拟机上设置对应于目标文件的读取回调事件,包括:
根据所述配置指令控制所述虚拟机内存中的函数调用栈,在所述函数调用栈上设置返回地址和寄存器中的值完成设置读取回调事件。
进一步地,还包括所述操作回调事件的设置步骤,该步骤包括:
确定所述虚拟机所用系统的当前版本内核的符号地址;
根据所述符号地址设置操作回调事件。
进一步地,所述确定所述虚拟机所用系统的当前版本内核的符号地址,包括:
启动病毒查杀程序,读取所述虚拟机所用系统的当前版本内核的符号文件,对所述符号文件进行解析,获得符号地址。
进一步地,所述根据所述符号地址设置操作回调事件,包括:
启动病毒查杀程序暂停虚拟机对目标文件的处理过程;
根据所述符号地址确定操作类型,根据所述操作类型设置操作回调事件,并恢复虚拟机对目标文件的处理过程。
第二方面,本发明实施例提供一种虚拟化平台上对虚拟机文件的安全检测装置,包括:
获取模块,用于获取虚拟机发送的对应于目标文件的回调信息,根据所述回调信息确定满足获取目标文件的条件时,从所述虚拟机的读内存中获取目标文件;
检测模块,用于对所述目标文件进行安全检测,向所述虚拟机输出检测结果。
进一步地,所述获取模块具体用于:
在获取虚拟机发送出的对应于目标文件的第一回调信息后,向所述虚拟机发送配置指令,根据所述配置指令在所述虚拟机上设置对应于目标文件的读取回调事件;所述第一回调信息为所述虚拟机在处理目标文件过程中检测到触发操作回调事件时生成的信息,所述操作回调事件为在虚拟机中对目标文件触发选定操作时反馈通知的事件,所述读取回调事件为在虚拟机中对目标文件触发读取操作时反馈通知的事件;
在获取虚拟机发送出的对应于目标文件的第二回调信息后,从所述虚拟机的读内存中获取目标文件;所述第二回调信息为所述虚拟机在处理目标文件过程中检测到触发所述读取回调事件时生成的信息。
进一步地,所述获取模块在根据所述配置指令在所述虚拟机上设置对应于目标文件的读取回调事件的过程中,具体用于:
根据所述配置指令控制所述虚拟机内存中的函数调用栈,在所述函数调用栈上设置返回地址和寄存器中的值完成设置读取回调事件。
进一步地,所述设置模块用于:
确定所述虚拟机所用系统的当前版本内核的符号地址;
根据所述符号地址设置操作回调事件。
进一步地,所述设置模块在确定所述虚拟机所用系统的当前版本内核的符号地址的过程中,具体用于:
启动病毒查杀程序,读取所述虚拟机所用系统的当前版本内核的符号文件,对所述符号文件进行解析,获得符号地址。
进一步地,所述设置模块在根据所述符号地址设置操作回调事件的过程中,具体用于:
启动病毒查杀程序暂停虚拟机对目标文件的处理过程;
根据所述符号地址确定操作类型,根据所述操作类型设置操作回调事件,并恢复虚拟机对目标文件的处理过程。
第三方面,本发明实施例一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述虚拟化平台上对虚拟机文件的安全检测方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述虚拟化平台上对虚拟机文件的安全检测方法的步骤。
第五方面,本发明实施例提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,所述指令在被执行时用于实现如上述虚拟化平台上对虚拟机文件的安全检测方法的步骤。
本发明实施例提供的一种虚拟化平台上对虚拟机文件的安全检测方法及装置,适用于宿主机上配置病毒查杀程序,宿主机下建立的各虚拟机不再配置病毒查杀程序的安全场景,通过获取虚拟机发送的对应于目标文件的回调信息,在根据回调信息确定满足获取目标文件的条件时,从虚拟机的读内存中获取目标文件,从而实现将虚拟机中的文件在宿主机上完成安全检测,以支撑虚拟机的安全防护。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中在虚拟机内部同时运行病毒程序和病毒查杀程序的结构框架示意图;
图2为本发明仅在宿主机内部布置病毒查杀程序的结构框架示意图;
图3为本发明虚拟化平台上对虚拟机文件的安全检测方法实施例流程图;
图4为本发明虚拟化平台上对虚拟机文件的安全检测方法另一实施例流程图;
图5为本发明实施例的读取回调事件的设置示意图;
图6为本发明实施例安全检测方法在宿主机上的功能模块分布示意图;
图7为本发明实施例安全检测方法的查杀流程示意图;
图8为本发明虚拟化平台上对虚拟机文件的安全检测装置实施例结构图;
图9为本发明电子设备实施例结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在虚拟化平台中,宿主机中会建立多个虚拟机。对于这些虚拟机的安全防护,如图1所示,目前是采用在每个虚拟机上均布置一套病毒查杀程序,当虚拟机对带有病毒程序的文件进行访问时,病毒程序和病毒查杀程序同时被运行。由于病毒程序可能会实现一些对抗病毒查杀的免杀技术,故存在病毒程序反过来暴力终止病毒查杀程序运行,导致虚拟机无法实现自身的安全防护。
为此,为了保护所有虚拟机中不会发生病毒程序和病毒查杀程序同时被运行时病毒程序反过来暴力终止病毒查杀程序运行,如图2所示,设计在宿主机端只配置病毒查杀程序,不在虚拟机上配置病毒查杀程序。宿主机可从虚拟机中获取文件在自身环境内采用病毒查杀程序进行查杀,从而对虚拟机进行安全防护。
针对上述本发明所提供的安全检测结构框图,图3示出了本发明一实施例提供的一种虚拟化平台上对虚拟机文件的安全检测方法的流程示意图,参见图3,该方法包括:
S11、获取虚拟机发送的对应于目标文件的回调信息,根据所述回调信息确定满足获取目标文件的条件时,从所述虚拟机的读内存中获取目标文件;
S12、对所述目标文件进行安全检测,向所述虚拟机输出检测结果。
针对步骤S11,需要说明的是,在本发明实施例中,该方法所适用于的场景是宿主机上配置病毒查杀程序,宿主机下建立的各虚拟机不再配置病毒查杀程序。即:只有宿主机具有对文件的安全检测功能。由此,虚拟机中不具备对文件的安全检测功能,此时,文件中病毒程序和病毒查杀程序便不会在虚拟机中同时运行,不会出现病毒程序反过来暴力终止病毒查杀程序运行的情况,虚拟机中的安全防护靠宿主机安全检测支撑。
在本发明实施例中,虚拟机在处理文件时,需要启动自身内部且能够对文件进行不同操作类型的程序函数,即操作程序函数。例如ZwClose关闭函数、NtOpenFile打开函数和NtCreateProcess创建进程函数。在此不一一举出。虚拟机执行到某个操作类型的程序函数时,由于该程序函数被设置了回调,此时,虚拟机会将“执行到该程序函数”这个事件向宿主机发送通知信息。
由于宿主机对虚拟机的安全问题负责,由此,宿主机需要该在何种情况下去虚拟机中获取要进行安全检测的文件(即目标文件)。为此,宿主机需要获取虚拟机中发送的对应于目标文件的回调信息。该回调信息可以告知宿主机获取目标文件的时机,即满足获取目标文件的条件。
条件满足后,宿主机从所述虚拟机的读内存中获取目标文件,对目标文件进行安全检测,向虚拟机输出检测结果。此时,虚拟机会根据检测结果做出对目标文件相应的操作。
本发明实施例提供的一种虚拟化平台上对虚拟机文件的安全检测方法,适用于宿主机上配置病毒查杀程序,宿主机下建立的各虚拟机不再配置病毒查杀程序的安全场景,通过获取虚拟机发送的对应于目标文件的回调信息,在根据回调信息确定满足获取目标文件的条件时,从虚拟机的读内存中获取目标文件,从而实现将虚拟机中的文件在宿主机上完成安全检测,以支撑虚拟机的安全防护。
图4示出了本发明一实施例提供的一种虚拟化平台上对虚拟机文件的安全检测方法的流程示意图,参见图4,该方法包括:
S21、在获取虚拟机发送的对应于目标文件的第一回调信息后,向所述虚拟机发送配置指令,根据所述配置指令在所述虚拟机上设置对应于目标文件的读取回调事件;
S22、在获取虚拟机发送的对应于目标文件的第二回调信息后,从所述虚拟机的读内存中获取目标文件;
S23、对所述目标文件进行安全检测,向所述虚拟机输出检测结果。
针对步骤S21和步骤S22,需要说明的是,在本发明实施例中,虚拟机在处理文件时,需要启动自身内部且能够对文件进行不同操作类型的程序函数,即操作程序函数。例如ZwClose关闭函数、NtOpenFile打开函数和NtCreateProcess创建进程函数。在此不一一举出。虚拟机执行到某个操作类型的程序函数时,由于该程序函数被设置了回调,此时,虚拟机会将“执行到该程序函数”这个事件向宿主机发送通知信息。由此可知,设置回调的操作程序函数视为操作回调事件,执行设置回调的操作程序函数视为触发操作回调事件。也就是说,该操作回调事件为在虚拟机中对目标文件触发选定操作时反馈通知的事件。
在本发明实施例中,第一回调信息为虚拟机在处理目标文件过程中检测到触发操作回调事件时生成的信息。该操作回调事件为在虚拟机中对目标文件触发选定操作时需要反馈通知的事件。例如选定操作为打开操作,若对目标文件进行打开时要反馈“文件被打开”的通知信号。故“文件被打开后反馈通知”为操作回调事件。
在本发明实施例中,由于上述对目标文件进行了选定操作的处理,相当于选定了该文件可能存在安全隐患。因此,当虚拟机对该文件进行读取操作之前,暂停虚拟机的工作,并告知宿主机虚拟机将要对该文件进行读取,此时宿主机需要对该文件进行获取并安全检测,已排除该文件的安全隐患,保证虚拟机的运行环境。宿主机在获取虚拟机发送的对应于目标文件的第二回调信息后,从虚拟机的读内存中获取目标文件。第二回调信息为所述虚拟机在处理目标文件过程中检测到触发所述读取回调事件时生成的信息,读取回调事件为在虚拟机中对目标文件触发读取操作时反馈通知的事件。例如对上述进行选定操作的目标文件进行读取时要反馈“文件被读取”的通知信号。故“文件被读取后反馈通知”为读取回调事件。
针对步骤S23,该步骤与上述实施例步骤S12在原理上相同,在此不再赘述。
本发明实施例提供的一种虚拟化平台上对虚拟机文件的安全检测方法,适用于宿主机上配置病毒查杀程序,宿主机下建立的各虚拟机不再配置病毒查杀程序的安全场景,通过获取虚拟机发送的对应于目标文件的回调信息,在根据回调信息确定满足获取目标文件的条件时,从虚拟机的读内存中获取目标文件,从而实现将虚拟机中的文件在宿主机上完成安全检测,以支撑虚拟机的安全防护。
在上述实施例方法的进一步实施例中,主要是对设置对应于目标文件的读取回调事件的过程进行解释说明,具体为:
根据所述配置指令控制所述虚拟机内存中的函数调用栈,在所述函数调用栈上设置返回地址和寄存器中的值完成设置读取回调事件。
当虚拟机在对目标文件进行处理时,一旦触发操作回调事件,虚拟机中的监控程序会中断虚拟机对目标文件的处理过程,向宿主机发送通知信息。如图5所示,宿主机在接收到通知信息后,会启动病毒查杀程序,根据配置指令控制虚拟机内存中的函数调用栈,在该函数调用栈上相应位置上添加返回值及寄存器的值,从而完成设置读取回调事件。该返回值记录有宿主机的IP地址,从而能够使通知信息返回给宿主机。该寄存器rbp和寄存器rsp为指针,设置在读取函数(ReadFile函数)的两端,完成针对读取函数的回调事件。
在上述实施例方法的进一步实施例中,主要是对设置对应于目标文件的操作回调事件的过程进行解释说明,具体为:
确定所述虚拟机所用系统的当前版本内核的符号地址;
根据所述符号地址设置操作回调事件。
所述确定所述虚拟机所用系统的当前版本内核的符号地址,包括:
启动病毒查杀程序,读取所述虚拟机所用系统的当前版本内核的符号文件,对所述符号文件进行解析,获得符号地址。
所述根据所述符号地址设置操作回调事件,包括:
启动病毒查杀程序暂停虚拟机对目标文件的处理过程;
根据所述符号地址确定操作类型,根据所述操作类型设置操作回调事件,并恢复虚拟机对目标文件的处理过程。
每个虚拟机都有自身的操作系统。例如Windows系统和Linux系统。获取该虚拟机所安装的操作系统的当前版本内核的符号地址,这些符号包括函数名、变量名和数据结构。因此,从这些符号地址中便可确定所需的操作对应的程序函数,即选定某一个操作程序函数,相当于确定操作类型,接着根据操作类型设置操作回调事件,并恢复虚拟机对目标文件的处理过程。如程序函数为ZwClose关闭函数,则对根据对应的符号地址对数据结构进行修改,设置操作回调事件。
下面以具体实例对上述实施例的虚拟化平台上对虚拟机文件的安全检测方法进行完整的描述。如图6所示为该方法在宿主机上的功能模块分布示意图。参见图6,该宿主机基于Xen虚拟化平台上对虚拟机(Windows环境或Linux环境)进行安全检测。宿主机上采用libvmi操作环境,libvmi是一个专注于读写虚拟机内存的自省库,它能够监视虚拟机底层的运行细节并将其还原。宿主机对虚拟机的回调事件的处理主要集中在虚拟机地址转译、内存/寄存器读写和虚拟机事件回调等方面上,该符号系统可对虚拟机中的符号文件进行分析,该病毒引擎可对目标文件的文件信息和文件内容进行检测。为了更好的对宿主机上的功能模块理解,下面以Xen虚拟化下宿主机上基于libvmi实现的病毒查杀流程图进行解释说明:
图7为虚拟化平台上对虚拟机文件的安全检测的查杀流程示意图。参见图7,可以得知:
1、宿主机上病毒查杀程序启动,读取某个Windows版本内核的符号文件,解析符号地址;
2、病毒查杀程序冻结虚拟机执行;
3、设置回调事件(这里对ZwCloseFile函数设置回调);
4、回复虚拟机运行;
5、Windows虚拟机内部,应用程序调用ZwOpenFile打开文件,之后调用ZwReadFile/ZwWriteFile读写文件,最后调用ZwCloseFile关闭文件句柄;
6、由于步骤3中设置的回调,虚拟机会被hypervisor中断执行,并且hypervisor会调用病毒查杀程序注册的回调函数通知病毒查杀程序;
7、病毒查杀程序得到通知,操纵虚拟机虚拟内存中的函数调用栈,向其中注入文件读函数;
8、同步骤2/3/4,冻结虚拟机执行,设置回调事件(这里对NtReadFile函数结束设置回调),恢复虚拟机运行;
9、Windows虚拟机继续运行,调用NtReadFile执行读文件内容到虚拟机内存中,返回前由于步骤中8设置的回调,虚拟机会被hypervisor中断执行,病毒查杀程序得到hypervisor通知,并且读取虚拟机内存中的文件内容,并保存至临时文件中,此过程循环直到获取全部文件内容为止;
10、从临时文件中读取文件内容;
11、将文件内容传递给病毒引擎,获取病毒引擎分析结果;
12、输出病毒检测结果,恢复虚拟机运行。
图8示出了本发明一实施例提供的一种虚拟化平台上对虚拟机文件的安全检测装置的结构示意图,参见图8,该装置包括获取模块31和检测模块32,其中:
获取模块31,用于获取虚拟机发送的对应于目标文件的回调信息,根据所述回调信息确定满足获取目标文件的条件时,从所述虚拟机的读内存中获取目标文件;
检测模块32,用于对所述目标文件进行安全检测,向所述虚拟机输出检测结果。
在上述实施例装置的进一步实施例中,所述获取模块具体用于:
在获取虚拟机发送出的对应于目标文件的第一回调信息后,向所述虚拟机发送配置指令,根据所述配置指令在所述虚拟机上设置对应于目标文件的读取回调事件;所述第一回调信息为所述虚拟机在处理目标文件过程中检测到触发操作回调事件时生成的信息,所述操作回调事件为在虚拟机中对目标文件触发选定操作时反馈通知的事件,所述读取回调事件为在虚拟机中对目标文件触发读取操作时反馈通知的事件;
在获取虚拟机发送出的对应于目标文件的第二回调信息后,从所述虚拟机的读内存中获取目标文件;所述第二回调信息为所述虚拟机在处理目标文件过程中检测到触发所述读取回调事件时生成的信息。
在上述实施例装置的进一步实施例中,所述获取模块在根据所述配置指令在所述虚拟机上设置对应于目标文件的读取回调事件的过程中,具体用于:
根据所述配置指令控制所述虚拟机内存中的函数调用栈,在所述函数调用栈上设置返回地址和寄存器中的值完成设置读取回调事件。
在上述实施例装置的进一步实施例中,所述设置模块用于:
确定所述虚拟机所用系统的当前版本内核的符号地址;
根据所述符号地址设置操作回调事件。
在上述实施例装置的进一步实施例中,所述设置模块在确定所述虚拟机所用系统的当前版本内核的符号地址的过程中,具体用于:
启动病毒查杀程序,读取所述虚拟机所用系统的当前版本内核的符号文件,对所述符号文件进行解析,获得符号地址。
在上述实施例装置的进一步实施例中,所述设置模块在根据所述符号地址设置操作回调事件的过程中,具体用于:
启动病毒查杀程序暂停虚拟机对目标文件的处理过程;
根据所述符号地址确定操作类型,根据所述操作类型设置操作回调事件,并恢复虚拟机对目标文件的处理过程。
由于本发明实施例所述装置与上述实施例所述方法的原理相同,对于更加详细的解释内容在此不再赘述。
需要说明的是,本发明实施例中可以通过硬件处理器(hardware processor)来实现相关功能模块。
本发明实施例提供的一种虚拟化平台上对虚拟机文件的安全检测装置,适用于宿主机上配置病毒查杀程序,宿主机下建立的各虚拟机不再配置病毒查杀程序的安全场景,通过获取虚拟机发送的对应于目标文件的回调信息,在根据回调信息确定满足获取目标文件的条件时,从虚拟机的读内存中获取目标文件,从而实现将虚拟机中的文件在宿主机上完成安全检测,以支撑虚拟机的安全防护。
图9示例了一种电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)41、通信接口(Communications Interface)42、存储器(memory)43和通信总线44,其中,处理器41,通信接口42,存储器43通过通信总线44完成相互间的通信。处理器41可以调用存储器43中的逻辑指令,以执行如下方法:获取虚拟机发送的对应于目标文件的回调信息,根据所述回调信息确定满足获取目标文件的条件时,从所述虚拟机的读内存中获取目标文件;对所述目标文件进行安全检测,向所述虚拟机输出检测结果。
此外,上述的存储器43中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:获取虚拟机发送的对应于目标文件的回调信息,根据所述回调信息确定满足获取目标文件的条件时,从所述虚拟机的读内存中获取目标文件;对所述目标文件进行安全检测,向所述虚拟机输出检测结果。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,所述指令在被执行时实现以执行上述各实施例提供的方法,例如包括:获取虚拟机发送的对应于目标文件的回调信息,根据所述回调信息确定满足获取目标文件的条件时,从所述虚拟机的读内存中获取目标文件;对所述目标文件进行安全检测,向所述虚拟机输出检测结果。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。