CN111191224B - 虚拟机检测的对抗方法、装置及计算机可读存储介质 - Google Patents
虚拟机检测的对抗方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111191224B CN111191224B CN201910610930.1A CN201910610930A CN111191224B CN 111191224 B CN111191224 B CN 111191224B CN 201910610930 A CN201910610930 A CN 201910610930A CN 111191224 B CN111191224 B CN 111191224B
- Authority
- CN
- China
- Prior art keywords
- request
- rpc
- interface
- operation request
- parameter
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种虚拟机检测的对抗方法、装置及计算机可读存储介质,属于互联网技术领域。所述方法包括:接收指示调用目标函数的远程过程调用RPC操作请求;对目标函数执行挂钩操作,以获取RPC操作请求携带的操作参数;当操作参数指示的RPC操作请求的类型为查询请求,操作参数指示的RPC操作请求所调用的接口为通过Windows管理规范WMI接口发起查询请求时所需调用的接口,且操作参数指示的RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象时,禁止执行RPC操作请求所请求的操作。本申请解决对恶意样本的检测准确性较低的问题。本申请用于对抗样本对虚拟机***的检测。
Description
技术领域
本申请涉及互联网技术领域,特别涉及一种虚拟机检测的对抗方法、装置及计算机可读存储介质。
背景技术
随着互联网技术的发展,各种恶意样本也层出不穷,为保证操作***的稳定运行,对恶意样本进行检测具有重要意义。其中,样本指可在操作***中执行的文件或脚本等,恶意样本指影响操作***正常运行的样本。
相关技术中,通常在虚拟机***中对样本进行检测,通过在该虚拟机***中执行样本,并根据该样本执行过程后产生的行为,判断该样本是否为恶意样本。但是,恶意样本的开发者通常会在恶意样本中添加虚拟机***检测代码,用于检测该恶意样本的运行环境,并在检测到其运行环境为虚拟机***时,会执行假的行为动作或直接退出,以隐藏该恶意样本的真实行为,避免虚拟机***对该恶意样本的成功识别。因此,该检测方法的检测准确性较低。
发明内容
本申请提供了一种虚拟机检测的对抗方法、装置及计算机可读存储介质,可以解决对恶意样本的检测准确性较低的问题。所述技术方案如下:
一方面,提供了一种虚拟机检测的对抗方法,所述方法包括:
接收指示调用目标函数的远程过程调用RPC操作请求;
对所述目标函数执行挂钩操作,以获取所述RPC操作请求携带的操作参数;
确定所述操作参数指示的所述RPC操作请求的类型、所述RPC操作请求所调用的接口以及所述RPC操作请求所请求的连接目标对象;
当所述操作参数指示的所述RPC操作请求的类型为查询请求,所述操作参数指示的所述RPC操作请求所调用的接口为通过Windows管理规范WMI接口发起查询请求时所需调用的接口,且所述操作参数指示的所述RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象时,确定所述RPC操作请求为通过WMI接口发起的查询请求;
禁止执行所述RPC操作请求所请求的操作。
另一方面,提供了一种虚拟机检测的对抗装置,所述虚拟机检测的对抗装置包括:
接收模块,用于接收指示调用目标函数的远程过程调用RPC操作请求;
执行模块,用于对所述目标函数执行挂钩操作,以获取所述RPC操作请求携带的操作参数;
第一确定模块,用于确定所述操作参数指示的所述RPC操作请求的类型、所述RPC操作请求所调用的接口以及所述RPC操作请求所请求的连接目标对象;
第二确定模块,用于当所述操作参数指示的所述RPC操作请求的类型为查询请求,所述操作参数指示的所述RPC操作请求所调用的接口为通过Windows管理规范WMI接口发起查询请求时所需调用的接口,且所述操作参数指示的所述RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象时,确定所述RPC操作请求为通过WMI接口发起的查询请求;
处理模块,用于禁止执行所述RPC操作请求所请求的操作。
可选地,所述操作参数包括:请求类型参数、接口参数和请求目标参数,所述第一确定模块包括:
第一确定子模块,用于确定所述请求类型参数指示的RPC操作请求的类型;
第二确定子模块,用于确定所述接口参数指示的RPC操作请求所调用的接口;
第三确定子模块,用于确定所述请求目标参数指示的RPC操作请求所请求的连接目标对象;
所述第二确定模块还用于:当所述请求类型参数指示的RPC操作请求的类型为查询请求,所述接口参数指示的RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口,且所述请求目标参数指示的RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象时,确定所述RPC操作请求为通过WMI接口发起的查询请求。
可选地,所述请求类型参数包括:请求标识号,所述第一确定子模块还用于:
当所述请求标识号的参数值等于目标值时,确定所述RPC操作请求的类型为查询请求。
可选地,所述接口参数包括:至少一个全局唯一标识符,所述第二确定子模块还用于:
当所述至少一个全局唯一标识符包括至少一个目标标识符时,确定所述RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口。
可选地,所述请求目标参数包括:端口句柄参数,所述第三确定子模块还用于:
基于所述端口句柄参数获取所述请求目标参数所指示的端口句柄对象;
基于所述端口句柄对象,获取所述端口句柄对象所连接的连接目标对象;
当所述连接目标对象的标识符携带有目标字符串时,确定所述请求目标参数指示的RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象。
可选地,所述RPC操作请求用于请求获取操作***中运行的进程的信息、所述操作***中存储的文件的信息、所述操作***中存储的注册表的信息和所述操作***的硬件信息中的一个或多个。
可选地,所述处理模块还用于:
发送用于指示所述RPC操作请求失败的指示信息。
再一方面,提供了一种虚拟机检测的对抗装置,所述虚拟机检测的对抗装置包括:处理器和存储器,处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述的虚拟机检测的对抗方法。
又一方面,提供了一种计算机可读存储介质,存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述的虚拟机检测的对抗方法。
本申请提供的技术方案带来的有益效果至少包括:
本申请中根据接收到的RPC操作请求确定该RPC操作请求为通过WMI接口发起的查询请求时,禁止执行该RPC操作请求所请求的操作,使得恶意样本在通过WMI接口发起RPC操作请求,以检测运行***是否为虚拟机***时,虚拟机可以通过禁止执行该RPC操作请求所请求的操作,以使恶意样本无法检测到运行环境是否为虚拟机***,进而使得可以在虚拟机***中对恶意样本进行检测,有效地提高了对样本进行检测的准确性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的虚拟机检测的对抗方法所涉及的一种终端的结构示意图;
图2是本申请实施例提供的一种虚拟机检测的对抗方法的流程图;
图3是本申请实施例提供的另一种虚拟机检测的对抗方法的流程图;
图4是本申请实施例提供的一种虚拟机检测的对抗装置的结构示意图;
图5是本申请实施例提供的一种第一确定模块的结构示意图;
图6是本申请实施例提供的一种终端的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的虚拟机检测的对抗方法所涉及的一种终端的结构示意图,该终端500支持虚拟化,使终端上运行有操作***(物理机***)和至少一个虚拟机,该至少一个虚拟机中每个虚拟机对应一虚拟机***。
如图1所示,终端500包括有:处理器501和存储器502,且处理器501和存储器502通过总线517连接。
处理器501可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器501可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器501也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器501可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器501还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器502可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器502还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器502中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器501所执行以实现本申请中方法实施例提供的虚拟机检测的对抗方法。
终端中可以运行有Windows、Linux或Android等操作***。操作***中可以运行有各种各样的样本,样本包括可执行的文件或脚本等,如DOCX、PPT、XSL或EML等格式的文件均可以称为样本。样本在操作***中运行时会产生各种行为,如创建文件、删除文件、加密文件、结束进程、访问网络、下载其他样本、修改注册表、窃取文件或窃取***信息等等。
随着互联网技术的发展,各种恶意样本层出不穷,恶意样本在终端的物理机***中运行时可能会使终端的设置发生更改,导致终端中的文件被删除或操作***无法正常运行等情况。
为了防止恶意样本对终端造成的影响,可以预先对样本进行识别以过滤恶意样本,使得恶意样本无法在物理机环境中运行。目前通常采用以下方式识别恶意样本(也称为沙箱检测技术):通过虚拟机(英文:VMware或VirtualBox)技术,在物理机***中建造一个仿真的虚拟机***,使可疑的样本在该虚拟机***中运行,进而根据该样本运行时的行为确定该样本是否为恶意样本。需要说明的是,在虚拟机***中样本能够像在物理机***中一样正常运行,且在样本运行结束后,可以将该虚拟机***直接还原,而不会影响终端的物理机***。
然而,随着该识别恶意样本的方式的应用越来越广泛,恶意样本的开发者也提出了应对策略。恶意样本的开发者通过在恶意样本中添加虚拟机***检测代码,采用虚拟机检测技术检测该恶意样本的运行***,当恶意样本检测到其运行***为虚拟机***时,会执行假的行为动作或直接退出,从而避免恶意样本的真实行为被虚拟机***捕获。示例地,由于虚拟机***中会存在特定的进程、文件和注册表,该虚拟机检测方式可以包括:通过应用程序编程接口(Application Programming Interface,API)查询操作***中的进程的信息、文件的信息或注册表的信息等,当查询到该特定的进程、文件和注册表中的任一个时,确定当前运行***是虚拟机***。
为提高样本检测的准确性,在恶意样本的开发者采用虚拟机检测技术的情况下,研究针对该虚拟机检测技术的对抗手段(也即是反虚拟机检测技术)成为了人们的研究热点。示例地,反虚拟机检测的方式可以包括:通过挂钩(英文:Hook)技术对通过API查询的相关函数进行挂钩操作,当恶意样本发出的查询请求需调用与API查询相关的函数时,预先通过钩子函数处理该查询请求,向恶意样本返回与真实信息不同的信息,从而避免恶意样本检测出所处的***为虚拟机***,以隐藏虚拟机***的真实身份。
但是,该对抗手段较容易被绕过,因此,目前又出现了另一种虚拟机检测方式,该种虚拟机检测方式通过Windows管理规范(Windows Management Instrumentation,WMI)接口遍历进程列表、文件列表和硬件信息列表等信息,然后根据查询到的信息判断自身当前运行的环境是物理机***还是虚拟机***。然而,由于通过WMI接口发起的查询请求所需查询的信息的来源与上述的虚拟机***中存在的进程的信息、文件的信息以及注册表的信息的来源不同,所以,即使采用上述的对抗手段将进程信息块从进程信息列表中移除,样本仍然能够查询到当前***上的所有进程信息。因此,上述对抗手段并不能对抗通过针对WMI接口的虚拟机检测方式,因此,虚拟机***的隐蔽性较低,虚拟机***对恶意样本进行检测的准确性较低。
其中,WMI由一系列对驱动模型(WindowsDriver Model)的扩展组成,它通过仪器组件提供信息和通知,提供一个操作***的接口。WMI是微软对分布式管理工作组(Distributed Management Task Force,DMTF)的基于Web的企业管理类(Web-BasedEnterprise Management,WBEM)和通用信息模型(Common Information Model,CIM)标准的实现。WMI允许脚本语言(例如VBScript或Windows PowerShell)来本地或远程管理Microsoft Windows个人计算机和服务器。WMI可以预装在Windows 2000及更新版的微软操作***中,也可以手动下载以适用于Windows NT、Windows 95和Windows 98等操作***。
图2是本申请实施例提供的一种虚拟机检测的对抗方法的流程图。该方法可以应用于虚拟机,如图2所示,该方法可以包括:
步骤101、接收指示调用目标函数的远程过程调用RPC操作请求。
步骤102、对目标函数执行挂钩操作,以获取RPC操作请求携带的操作参数。
步骤103、确定操作参数指示的RPC操作请求的类型、RPC操作请求所调用的接口以及RPC操作请求所请求的连接目标对象。
步骤104、当操作参数指示的RPC操作请求的类型为查询请求,操作参数指示的RPC操作请求所调用的接口为通过Windows管理规范WMI接口发起查询请求时所需调用的接口,且所述操作参数指示的RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象时,确定RPC操作请求为通过WMI接口发起的查询请求。
步骤105、禁止执行RPC操作请求所请求的操作。
综上所述,本申请实施例提供的虚拟机检测的对抗方法中,根据接收到的RPC操作请求确定该RPC操作请求为通过WMI接口发起的查询请求时,禁止执行该RPC操作请求所请求的操作,使得恶意样本在通过WMI接口发起RPC操作请求,以检测运行***是否为虚拟机***时,虚拟机可以通过禁止执行该RPC操作请求所请求的操作,以使恶意样本无法检测到运行环境是否为虚拟机***,进而使得可以在虚拟机***中对恶意样本进行检测,有效地提高了对样本进行检测的准确性。
图3是本申请实施例提供的另一种虚拟机检测的对抗方法的流程图。该方法可以应用于虚拟机,如图3所示,该方法可以包括:
步骤201、接收指示调用目标函数的RPC操作请求。
可选地,样本在通过WMI接口检测所处***是否为虚拟机***时,会通过远程过程调用(Remote Procedure Call,RPC)机制发起RPC操作请求,该RPC操作请求可以用于请求获取操作***中运行的进程的信息、操作***中存储的文件的信息、操作***中存储的注册表的信息和操作***的硬件信息中的一个或多个,继而样本可以根据该RPC操作请求的返回值判断样本的运行***是否为虚拟机***。
其中,RPC为一个计算机通信协议,该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而无需为此交互过程进行额外地编程。
步骤202、对目标函数执行挂钩操作。
虚拟机在接收到RPC操作请求时,可以对目标函数执行挂钩操作,以对样本的虚拟机检测过程进行对抗,也即是进行反虚拟机检测,防止样本检测到所处***为虚拟机***。
可选地,样本在发起RPC操作请求后均会指示虚拟机调用目标函数对该RPC操作请求进行处理,示例地,该目标函数为NtRequestWaitReplyPort函数。当虚拟机调用***中的该目标函数时,可以在操作***的内核层中对目标函数执行挂钩操作,以使在通过目标函数得到RPC操作请求的返回结果之前,虚拟机可以采用自定义函数对样本的请求进行处理。也即是,虚拟机可以调用自定义函数对样本的虚拟机检测过程进行对抗。示例地,该挂钩操作可以通过***服务描述符表SSDT挂钩技术或者挂钩KiFastCallEntry函数的技术实现。
其中,该自定义函数可以包括三个参数,该三个参数可以分别为句柄参数(如参数名称为PortHandle)、请求信息参数(如参数名称为Request)和输出参数(如参数名称为IncomingReply)。
在步骤202中对目标函数执行挂钩操作之后,虚拟机可以获取RPC操作请求携带的操作参数,并根据该操作参数对自定义函数中的各个参数进行赋值,进而通过自定义函数确定操作参数指示的信息,并根据该信息确定RPC操作请求是否为通过WMI接口发起的查询请求,进而进行反虚拟机检测。
可选地,该RPC操作请求携带的操作参数可以包括:请求类型参数、接口参数和请求目标参数等,该请求类型参数用于指示RPC操作请求的类型,该接口参数用于指示RPC操作请求所调用的接口,该请求目标参数用于指示RPC操作请求所请求的连接目标对象。可以将RPC操作请求携带的请求类型参数的参数值和接口参数的参数值赋给自定义函数中的请求信息参数,将RPC操作请求携带的请求目标参数的值赋给自定义函数中的句柄参数。
需要说明的是,请求类型参数、接口参数和请求目标参数的获取过程可以并行执行也可以串行执行,相应的,对请求类型参数、接口参数和请求目标参数的检测过程可以并行执行也可以串行执行。下面以请求类型参数、接口参数和请求目标参数的获取过程和检测过程均并行执行为例,对操作参数的获取过程和检测过程进行解释说明。
步骤203、获取RPC操作请求携带的请求类型参数。
在一种可实现方式中,请求类型参数可以包括:请求标识号(英文:OpNumber),具有不同参数值的请求标识号可以指示不同的RPC操作请求的类型。
可选地,可以通过寻址查询的方式获取RPC操作请求中携带的请求标识号的参数值。例如,可以将RPC操作请求的起始内存地址加第一偏移地址,得到该请求标识号的内存地址,然后在该请求标识号的内存地址所指示的内存中获取该请求标识号的参数值。
可选地,第一偏移地址可以根据操作***的类型确定。示例地,当操作***为Windows操作***时,该第一偏移地址为0x2c。其中,根据该第一偏移地址,通过寻址查询的方式获取该请求标识号的伪代码可以为:
ULONG OpNumber=*(PUCHAR)((ULONG_PTR)Request+0x2c)。
该代码表示:请求标识号的内存地址为RPC操作请求中的Request数据段的起始内存地址加偏移地址0x2c所得的地址,其中,Request数据段中存储有RPC操作请求的数据。
步骤204、获取RPC操作请求携带的请求目标参数。
可选地,请求目标参数包括:端口句柄(Port Handle)参数。可以基于端口句柄参数获取请求目标参数所指示的端口句柄对象(Port Object),接着基于端口句柄对象,获取端口句柄对象所连接的连接目标对象(Connect Object),进而获取该连接目标对象的标识符。可选地,连接目标对象的标识符可以为连接目标对象的对象名称,该对象名称可以以字符串的形式展现。
示例地,可以通过调用ObReferenceObjectByHandle函数,获取端口句柄参数所指示的端口句柄对象,然后通过寻址查询的方式获取该连接目标对象。例如,可以将端口句柄对象的起始内存地址加第二偏移地址,得到端口句柄对象所连接的连接目标对象的内存地址,然后在该连接目标对象的内存地址所指示的内存中获取连接目标对象。接着可以通过调用ObQueryNameString函数获取连接目标对象的对象名称。
可选地,第二偏移地址可以根据操作***的类型确定。示例地,当操作***为Windows操作***时,该第二偏移地址可以为2。其中,根据该第二偏移地址,通过寻址查询的方式获取该连接目标对象的伪代码可以为:
ConnectionPortObject=**(PVOID**)((PULONG)PortObject+2)。
该代码表示:连接目标对象的内存地址为RPC操作请求中的PortObject数据段的起始内存地址加偏移地址2所得的地址,其中,PortObject数据段中存储有端口句柄对象的数据。
步骤205、获取RPC操作请求携带的接口参数。
可选地,接口参数可以包括:至少一个全局唯一标识符(Globally UniqueIdentifier,GUID)。示例地,虚拟机可以在RPC操作请求的内存地址中进行搜索全局唯一标识符,以获取该内存地址中存储的所有全局唯一标识符。
步骤206、确定请求类型参数指示的RPC操作请求的类型。
可选地,虚拟机可以获取请求类型参数与请求类型的对应关系,在该对应关系中查询步骤203中获取的请求类型参数对应的请求类型,以确定该请求类型参数指示的RPC操作请求的类型。接着确定该RPC操作请求的类型是否为查询请求。
可选地,虚拟机可以预先获取用于指示RPC操作请求为查询请求的目标参数,并通过判断RPC操作请求所携带的请求类型参数与目标参数是否相同,以确定请求类型参数指示的RPC操作请求的类型是否为查询请求。在该请求类型参数与该目标参数相同时,确定请求类型参数指示的RPC操作请求的类型为查询请求。
可选地,请求类型参数与目标参数均可以有对应的参数值,可以通过判断请求类型参数的参数值与目标参数的参数值是否相同,来判断请求类型参数与目标参数是否相同。其中,该目标参数可以为自定义参数,该目标参数用于指示RPC操作请求的类型为查询请求。例如,该目标参数可以是在程序编写过程中定义的用于指示RPC操作请求的类型为查询请求的参数。
当请求标识号的参数值等于目标参数的目标值时,可以确定RPC操作请求的类型为查询请求,也即是,参数值为目标值的请求标识号指示RPC操作请求为用于请求虚拟机执行查询操作的请求。
其中,目标参数的值可以通过RPC请求标识号规则中的IWbem服务接口方法(IWbemServices Interface Methods in RPC Opnum Order)确定,IWbem服务接口方法中的不同方法与目标参数的不同参数值一一相对应。可选地,目标参数的目标值可以与IWbem服务接口方法中的查询方法(ExecQuery方法)相对应。例如,该目标值可以为20。
需要说明的是,步骤206在步骤203之后执行,且对于步骤206、步骤204和步骤205的执行顺序,本申请实施例不做限定。
步骤207、确定请求目标参数指示的RPC操作请求所请求的连接目标对象。
可选地,虚拟机可以获取请求目标参数与连接目标对象的类型的对应关系,在该对应关系中查询步骤204中获取的请求目标参数对应的连接目标对象的类型,以确定该请求目标参数指示的RPC操作请求所请求的连接目标对象。接着确定该RPC操作请求所请求的连接目标对象是否为通过带有指向的端口所请求的对象。
可选地,虚拟机可以获取目标字符串,该目标字符串用于指示RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象,并通过判断步骤204中获取的连接目标对象的标识符是否携带有目标字符串,以确定请求目标参数指示的RPC操作请求所请求的连接目标对象是否为通过带有指向的端口所请求的对象。当连接目标对象的标识符携带有目标字符串时,可以确定请求目标参数指示的RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象。该目标字符串为连接目标对象的一种标识,该目标字符串用于指示其标识的对象为通过带有指向的端口所请求的对象。可选地,目标字符串可以为连接目标对象的对象名称中的全部或部分字符串。
在一种可实现方式中,可以检测该连接目标对象是否为一个对象连接与嵌入(Object Linking and Embedding,OLE)对象,当该连接目标对象为一个OLE对象时,可以确定该连接目标对象为通过带有指向的端口所请求的对象。
可选地,目标字符串可以包括“\\RPC Control\\OLE”,该目标字符串可以指示其标识的对象为OLE对象。由于OLE对象按照存储路径“RPC Control→OLE”存储,连接目标对象的对象名称以该目标字符串开头可以表示该连接目标对象按照存储路径“RPC Control→OLE”存储,进而可以确定该连接目标对象为一个OLE对象。
需要说明的是,步骤207需要在步骤204之后执行,且对于步骤207与步骤203和步骤205的执行顺序,本申请实施例不做限定。
步骤208、确定接口参数指示的RPC操作请求所调用的接口。
可选地,虚拟机可以获取接口参数与接口的对应关系,在该对应关系中查询步骤205中获取的接口参数对应的接口,以确定接口参数指示的RPC操作请求所调用的接口。接着确定RPC操作请求所调用的接口是否为通过WMI接口发起查询请求时所需调用的接口。
可选地,虚拟机可以获取目标标识符,该目标标识符用于指示RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口,并通过判断RPC操作请求所携带的接口参数是否包括该目标标识符,以确定接口参数指示的RPC操作请求所调用的接口是否为通过WMI接口发起查询请求时所需调用的接口。在该接口参数包括该目标标识符时,确定接口参数指示的RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口。RPC操作请求所调用的接口可以为至少一个,当其调用的接口为至少一个时,该虚拟机可以获取至少一个目标标识符,每个目标标识符用于指示一个接口。
可选地,目标标识符可以为全局唯一标识符。当RPC操作请求携带的接口参数中的至少一个全局唯一标识符包括该至少一个目标标识符时,确定RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口。
示例地,虚拟机可以将步骤205中获取的每个全局唯一标识符与该每个目标标识符均进行比对,以确定获取的所有全局唯一标识符中是否存在与该至少一个目标标识符相同的至少一个全局唯一标识符。当存在与该至少一个目标标识符相同的至少一个全局唯一标识符时,确定RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口,否则确定RPC操作请求所调用的接口不是通过WMI接口发起查询请求时所需调用的接口。
示例地,通过WMI接口发起查询请求时所需调用的接口包括IWbemClassObject接口和WbemLocator接口,其中IWbemClassObject接口的全局唯一标识符为可以第一标识符,WbemLocator接口的全局唯一标识符可以为第二标识符,进而至少一个目标标识符包括该第一标识符和该第二标识符。当接口参数包括第一标识符时,可以确定RPC操作请求调用的接口包括IWbemClassObject接口;当接口参数包括第二标识符时,可以确定RPC操作请求调用的接口包括WbemLocator接口。
其中,第一标识符为:
{0xdc12a681,0x737f,0x11cf,0x88,0x4d,0x00,0xaa,0x00,0x4b,0x2e,0x24};
第二标识符为:
{0x4590f812,0x1d3a,0x11d0,0x89,0x1f,0x00,0xaa,0x00,0x4b,0x2e,0x24}。
需要说明的是,步骤208需要在步骤205之后执行,且对于步骤208与步骤203和步骤204的执行顺序,本申请实施例不做限定。
可选地,也可以不执行步骤205,而直接获取至少一个目标标识符,进而搜索RPC操作请求的内存地址所指示的内存中是否存在该至少一个目标标识符。当存在该至少一个目标标识符时,确定RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口,否则确定RPC操作请求所调用的接口不是通过WMI接口发起查询请求时所需调用的接口。
需要说明的是,若请求类型参数、接口参数和请求目标参数该三个参数的检测过程(也即是步骤206、步骤207和步骤208)串行执行,则可以在一个参数的检测结果满足对应的条件时,再执行下一个参数的检测过程;并在某一个参数的检测结果不满足目标条件时,停止确定RPC操作请求不是通过WMI接口发起的查询请求。
步骤209、当操作参数满足目标条件时,确定RPC操作请求是通过WMI接口发起的查询请求。
可选地,由于样本检测其所处***是否为虚拟机***时需要通过查询信息,获取对象的信息,且该对象的信息需要通过带有指向的端口获取,以及调用固定的接口实现,因此,该目标条件可以包括:请求类型参数指示的RPC操作请求的类型为查询请求,接口参数指示的RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口,且请求目标参数指示的RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象。
当请求类型参数、接口参数和请求目标参数均满足该目标条件时,确定RPC操作请求是通过WMI接口发起的查询请求。当请求类型参数、接口参数和请求目标参数中有任一参数不满足该目标条件时,确定RPC操作请求不是通过WMI接口发起的查询请求。可选地,当RPC操作请求携带的操作参数还包括其他参数时,该目标条件可以根据该其他参数所指示的内容进行适应调整。
步骤210、禁止执行RPC操作请求所请求的操作。
当确定RPC操作请求为通过WMI接口发起的查询请求时,虚拟机可以确定样本在使用该RPC操作请求进行虚拟机检测,进而可以确定该样本为恶意样本,此时可以通过禁止执行RPC操作请求所请求的操作,对该样本的虚拟机检测进行对抗。
可选地,禁止执行RPC操作请求所请求的操作,也即是对RPC操作请求进行拦截。并且,虚拟机可以通过多种方式禁止执行RPC操作请求所请求的操作。示例地,虚拟机可以向样本返回用于指示RPC操作请求失败的指示信息,如返回指示RPC操作请求失败的字符串“STATUS_LPC_REPLY_LOST”,或者,向样本返回与RPC操作请求所请求的真实信息不同的其他信息。
需要说明的是,本申请上述实施例以对通过RPC方式,在内核驱动中对通过WMI接口发起的查询请求进行拦截为例。由于在内核层中的拦截行为较为隐蔽,应用层样本无法感知到内核层的拦截操作,进而样本难以感知到虚拟机的对抗行为,因此,进一步提高了虚拟机***的隐蔽性。可选地,虚拟机也可以通过挂钩***自带的ole32.dll COM模块的IWbemServices_ExecQuery操作,在应用层中对通过WMI接口发起的查询请求进行拦截。
需要说明的是,虚拟机可以同时采用本申请实施例提供的虚拟机检测的对抗方法,以及传统的针对API接口的虚拟机检测的对抗方法,避免恶意样本检测出所处的***为物理机***还是虚拟机***,以隐藏虚拟机***,提升虚拟机对恶意样本的检测能力。
步骤211、当操作参数不满足目标条件时,确定RPC操作请求不是通过WMI接口发起的查询请求。
当请求类型参数指示的RPC操作请求的类型不为查询请求,或者接口参数指示的RPC操作请求所调用的接口不为通过WMI接口发起查询请求时所需调用的接口,或者请求目标参数指示的RPC操作请求所请求的连接目标对象不为通过带有指向的端口所请求的对象时,确定RPC操作请求不是通过WMI接口发起的查询请求。
步骤212、执行RPC操作请求所请求的操作。
当确定RPC操作请求不为通过WMI接口发起的查询请求时,虚拟机可以确定该样本并非恶意样本,此时可以正常执行RPC操作请求所请求的操作。可选地,虚拟机正常返回该RPC操作请求所请求获取的进程信息、文件信息、注册表信息和硬件信息中的一个或多个。
综上所述,本申请实施例提供的虚拟机检测的对抗方法中,根据接收到的RPC操作请求确定该RPC操作请求为通过WMI接口发起的查询请求时,禁止执行该RPC操作请求所请求的操作,使得恶意样本在通过WMI接口发起RPC操作请求,以检测运行***是否为虚拟机***时,虚拟机可以通过禁止执行该RPC操作请求所请求的操作,以使恶意样本无法检测到运行***是否为虚拟机***,进而使得可以在虚拟机***中对恶意样本进行检测,有效地提高了对样本进行检测的准确性。
下面以一实例对本申请实施例提供的虚拟机检测的对抗方法进行解释说明。
恶意样本可以针对WMI接口进行虚拟机检测。如通过WMI接口查询操作***中运行的进程的信息、操作***中存储的文件的信息、操作***中存储的注册表的信息和操作***的硬件信息中的一个或多个,检测其所处***是否为虚拟机***。
示例地,恶意样本对虚拟机***的检测过程可以包括:先获取一个查询对象,该查询对象可以为进程的信息、文件的信息或注册表的信息,然后调用该查询对象对应的查询方法查询当前***中该查询对象的信息,当查询到的信息中包括虚拟机***中存在的信息时确定所处的***为虚拟机***。例如,恶意样本调用ExecQuery方法,查询当前***中进程的信息是否包括vboxservice.exe或vmtcoolsd.exe进程的信息,以确定所处的***是否为虚拟机***。
下面结合不同检测场景中的恶意样本对运行***的检测结果,对本申请实施例提供的虚拟机检测的对抗方法的可用性进行解释说明。
在第一种检测场景中,在物理机***中运行针对WMI接口进行虚拟机检测的恶意样本,此时输出的运行结果为:
C:\Users\Administritor\Desktop>wmi_antivm.vbs
run by CScript.exe
C:\Users\Administritor\Desktop>。
由该运行结果可知,运行结果中不存在与vboxservice.exe或vmtoolsd.exe进程相关的结果输出,因此恶意样本确定当前所处***为物理机***,该恶意样本对运行***的检测结果与实际情况相符。
在第二种检测场景中,在虚拟机***中运行上述检测代码,以针对WMI接口进行虚拟机检测,且虚拟机执行传统的针对API接口的虚拟机检测的对抗方法,则输出的运行结果为:
run by CScript.exe
antivm by process:VBoxService.exe
c:\task>_
由该运行结果可知,该恶意样本检测到了所处***中有vboxservice.exe进程存在,因此恶意样本确定当前所处***为虚拟机***。该恶意样本对虚拟机***的检测结果与实际情况相符,表明传统的针对API接口的虚拟机检测的对抗方法无法对抗恶意样本通过WMI接口进行的虚拟机检测方法。
在第三种检测场景中,在虚拟机***中运行针对API接口进行虚拟机检测的恶意样本,且虚拟机执行针对API接口的虚拟机检测的对抗方法,此时输出的运行结果为:
[*]Checking virtual box process vboxservice.exe:
[GOOD]
由该运行结果可知,该恶意样本未检测到所处***中有vboxservice.exe进程存在,因此恶意样本确定当前所处***为物理机***。该恶意样本对虚拟机***的检测结果与实际情况不符,表明传统的针对API接口的虚拟机检测的对抗方法能够对抗恶意样本通过API接口进行的虚拟机检测方法。
在第四种检测场景中,在虚拟机***中运行针对WMI接口进行虚拟机检测的恶意样本,且虚拟机同时执行针对WMI接口的虚拟机检测的对抗方法,以及传统的针对API接口的虚拟机检测的对抗方法,则输出的运行结果为:
由该运行结果可知,该恶意样本未检测到所处***中有vboxservice.exe或vboxtray.exe进程存在,因此恶意样本确定当前所处***为物理机***。该恶意样本对虚拟机***的检测结果与实际情况不符,表明本申请实施例提供的针对WMI接口的虚拟机检测的对抗方法能够对抗恶意样本通过WMI接口进行的虚拟机检测方法。也即是虚拟机采用本申请实施例提供的虚拟机检测的对抗方法能够避免恶意样本检测出所处***为虚拟机***,进而提高了虚拟机***的隐蔽性,增强了虚拟机***对样本的检测准确性。
图4是本申请实施例提供的一种虚拟机检测的对抗装置的结构示意图。该装置可以用于虚拟机***,该虚拟机检测的对抗装置30可以包括:
接收模块301,用于接收指示调用目标函数的远程过程调用RPC操作请求。
执行模块302,用于对目标函数执行挂钩操作,以获取RPC操作请求携带的操作参数。
第一确定模块303,用于确定操作参数指示的RPC操作请求的类型、RPC操作请求所调用的接口以及RPC操作请求所请求的连接目标对象。
第二确定模块304,用于当操作参数指示的RPC操作请求的类型为查询请求,操作参数指示的RPC操作请求所调用的接口为通过Windows管理规范WMI接口发起查询请求时所需调用的接口,且操作参数指示的RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象时,确定RPC操作请求为通过WMI接口发起的查询请求。
处理模块305,用于禁止执行RPC操作请求所请求的操作。
综上所述,本申请实施例提供的虚拟机检测的对抗装置中,根据接收到的RPC操作请求确定该RPC操作请求为通过WMI接口发起的查询请求时,禁止执行该RPC操作请求所请求的操作,使得恶意样本在通过WMI接口发起RPC操作请求,以检测运行***是否为虚拟机***时,虚拟机可以通过禁止执行该RPC操作请求所请求的操作,以使恶意样本无法检测到运行环境是否为虚拟机***,进而使得可以在虚拟机***中对恶意样本进行检测,有效地提高了对样本进行检测的准确性。
可选地,操作参数包括:请求类型参数、接口参数和请求目标参数。图4是本申请实施例提供的一种检测模块的结构示意图。如图4所示,该第一确定模块303可以包括:
第一确定子模块3031,用于确定请求类型参数指示的RPC操作请求的类型。
第二确定子模块3032,用于确定接口参数指示的RPC操作请求所调用的接口。
第三确定子模块3033,用于确定请求目标参数指示的RPC操作请求所请求的连接目标对象。
第二确定模块304还用于:当请求类型参数指示的RPC操作请求的类型为查询请求,接口参数指示的RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口,且请求目标参数指示的RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象时,确定RPC操作请求为通过WMI接口发起的查询请求。
可选地,请求类型参数包括:请求标识号,第一确定子模块3031还可以用于:当请求标识号的参数值等于目标值时,确定RPC操作请求的类型为查询请求。
可选地,接口参数包括:至少一个全局唯一标识符,第二确定子模块3032还可以用于:当至少一个全局唯一标识符包括至少一个目标标识符时,确定RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口。
可选地,请求目标参数包括:端口句柄参数,第三确定子模块3033还可以用于:
基于端口句柄参数获取请求目标参数所指示的端口句柄对象;基于端口句柄对象,获取端口句柄对象所连接的连接目标对象;当连接目标对象的标识符携带有目标字符串时,确定请求目标参数指示的RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象。
可选地,RPC操作请求用于请求获取操作***中运行的进程的信息、操作***中存储的文件的信息、操作***中存储的注册表的信息和操作***的硬件信息中的一个或多个。
可选地,处理模块305还可以用于:
发送用于指示RPC操作请求失败的指示信息。
综上所述,本申请实施例提供的虚拟机检测的对抗装置中,根据接收到的RPC操作请求确定该RPC操作请求为通过WMI接口发起的查询请求时,禁止执行该RPC操作请求所请求的操作,使得恶意样本在通过WMI接口发起RPC操作请求,以检测运行***是否为虚拟机***时,虚拟机可以通过禁止执行该RPC操作请求所请求的操作,以使恶意样本无法检测到运行环境是否为虚拟机***,进而使得可以在虚拟机***中对恶意样本进行检测,有效地提高了对样本进行检测的准确性。
以下对图1所示的终端进行补充说明。可选地,图1所示的终端500可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group AudioLayer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts GroupAudio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端500还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
可选地,图6是本申请实施例提供的一种终端的结构示意图。请参考图6,终端500还可选包括有:***设备接口503和至少一个***设备。处理器501、存储器502和***设备接口503之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口503相连。具体地,***设备包括:射频电路504、显示屏505、摄像头506、音频电路507、定位组件508和电源509中的至少一种。
***设备接口503可被用于将I/O(Input/Output,输入/输出)相关的至少一个***设备连接到处理器501和存储器502。在一些实施例中,处理器501、存储器502和***设备接口503被集成在同一芯片或电路板上;在一些其他实施例中,处理器501、存储器502和***设备接口503中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路504用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路504通过电磁信号与通信网络以及其他通信设备进行通信。射频电路504将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路504包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路504可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路504还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏505用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏505是触摸显示屏时,显示屏505还具有采集在显示屏505的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器501进行处理。此时,显示屏505还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏505可以为一个,设置终端500的前面板;在另一些实施例中,显示屏505可以为至少两个,分别设置在终端500的不同表面或呈折叠设计;在再一些实施例中,显示屏505可以是柔性显示屏,设置在终端500的弯曲表面上或折叠面上。甚至,显示屏505还可以设置成非矩形的不规则图形,也即异形屏。显示屏505可以为LCD(LiquidCrystal Display,液晶显示阵列)显示屏或OLED(Organic Light-Emitting Diode,有机发光二极管)显示屏。
摄像头组件506用于采集图像或视频。可选地,摄像头组件506包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件506还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路507可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器501进行处理,或者输入至射频电路504以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端500的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器501或射频电路504的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路507还可以包括耳机插孔。
定位组件508用于定位终端500的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件508可以是基于美国的GPS(GlobalPositioning System,全球定位***)、中国的北斗***或俄罗斯的伽利略***的定位组件。
电源509用于为终端500中的各个组件进行供电。电源509可以是交流电、直流电、一次性电池或可充电电池。当电源509包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端500还包括有一个或多个传感器510。该一个或多个传感器510包括但不限于:加速度传感器511、陀螺仪传感器512、压力传感器513、指纹传感器514、光学传感器515以及接近传感器516。
加速度传感器511可以检测以终端500建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器511可以用于检测重力加速度在三个坐标轴上的分量。处理器501可以根据加速度传感器511采集的重力加速度信号,控制触摸显示屏505以横向视图或纵向视图进行用户界面的显示。加速度传感器511还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器512可以检测终端500的机体方向及转动角度,陀螺仪传感器512可以与加速度传感器511协同采集用户对终端500的3D动作。处理器501根据陀螺仪传感器512采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器513可以设置在终端500的侧边框和/或触摸显示屏505的下层。当压力传感器513设置在终端500的侧边框时,可以检测用户对终端500的握持信号,由处理器501根据压力传感器513采集的握持信号进行左右手识别或快捷操作。当压力传感器513设置在触摸显示屏505的下层时,由处理器501根据用户对触摸显示屏505的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器514用于采集用户的指纹,由处理器501根据指纹传感器514采集到的指纹识别用户的身份,或者,由指纹传感器514根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器501授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器514可以被设置终端500的正面、背面或侧面。当终端500上设置有物理按键或厂商Logo时,指纹传感器514可以与物理按键或厂商Logo集成在一起。
光学传感器515用于采集环境光强度。在一个实施例中,处理器501可以根据光学传感器515采集的环境光强度,控制触摸显示屏505的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏505的显示亮度;当环境光强度较低时,调低触摸显示屏505的显示亮度。在另一个实施例中,处理器501还可以根据光学传感器515采集的环境光强度,动态调整摄像头组件506的拍摄参数。
接近传感器516,也称距离传感器,通常设置在终端500的前面板。接近传感器516用于采集用户与终端500的正面之间的距离。在一个实施例中,当接近传感器516检测到用户与终端500的正面之间的距离逐渐变小时,由处理器501控制触摸显示屏505从亮屏状态切换为息屏状态;当接近传感器516检测到用户与终端500的正面之间的距离逐渐变大时,由处理器501控制触摸显示屏505从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图5中示出的结构并不构成对终端500的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由处理器执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
需要说明的是:上述实施例提供的虚拟机检测的对抗装置在拦截RPC操作请求时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将虚拟机检测的对抗装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
需要说明的是,本申请实施例提供的方法实施例能够与相应的装置实施例相互参考,本申请实施例对此不做限定。本申请实施例提供的方法实施例步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
应当理解的是,本申请实施例中所述的“至少一个”均指一个或多个,“多个”均指两个或两个以上。以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种虚拟机检测的对抗方法,其特征在于,所述方法包括:
接收指示调用目标函数的远程过程调用RPC操作请求;
对所述目标函数执行挂钩操作,以获取所述RPC操作请求携带的操作参数;
确定所述操作参数指示的所述RPC操作请求的类型、所述RPC操作请求所调用的接口以及所述RPC操作请求所请求的连接目标对象;
当所述操作参数指示的所述RPC操作请求的类型为查询请求,所述操作参数指示的所述RPC操作请求所调用的接口为通过Windows管理规范WMI接口发起查询请求时所需调用的接口,且所述操作参数指示的所述RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象时,确定所述RPC操作请求为通过WMI接口发起的查询请求;
禁止执行所述RPC操作请求所请求的操作。
2.根据权利要求1所述的方法,其特征在于,所述操作参数包括:请求类型参数、接口参数和请求目标参数,所述确定所述操作参数指示的所述RPC操作请求的类型、所述RPC操作请求所调用的接口以及所述RPC操作请求所请求的连接目标对象,包括:
确定所述请求类型参数指示的RPC操作请求的类型;
确定所述接口参数指示的RPC操作请求所调用的接口;
确定所述请求目标参数指示的RPC操作请求所请求的连接目标对象;
所述当所述操作参数指示的所述RPC操作请求的类型为查询请求,所述操作参数指示的所述RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口,且所述操作参数指示的所述RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象时,确定所述RPC操作请求为通过WMI接口发起的查询请求,包括:
当所述请求类型参数指示的RPC操作请求的类型为查询请求,所述接口参数指示的RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口,且所述请求目标参数指示的RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象时,确定所述RPC操作请求为通过WMI接口发起的查询请求。
3.根据权利要求2所述的方法,其特征在于,所述请求类型参数包括:请求标识号,所述确定所述请求类型参数指示的RPC操作请求的类型,包括:
当所述请求标识号的参数值等于目标值时,确定所述RPC操作请求的类型为查询请求。
4.根据权利要求2所述的方法,其特征在于,所述接口参数包括:至少一个全局唯一标识符,所述确定所述接口参数指示的RPC操作请求所调用的接口,包括:
当所述至少一个全局唯一标识符包括至少一个目标标识符时,确定所述RPC操作请求所调用的接口为通过WMI接口发起查询请求时所需调用的接口。
5.根据权利要求2所述的方法,其特征在于,所述请求目标参数包括:端口句柄参数,所述确定所述请求目标参数指示的RPC操作请求所请求的连接目标对象,包括:
基于所述端口句柄参数获取所述请求目标参数所指示的端口句柄对象;
基于所述端口句柄对象,获取所述端口句柄对象所连接的连接目标对象;
当所述连接目标对象的标识符携带有目标字符串时,确定所述请求目标参数指示的RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象。
6.根据权利要求1至5任一所述的方法,其特征在于,所述禁止执行所述RPC操作请求所请求的操作,包括:
发送用于指示所述RPC操作请求失败的指示信息。
7.根据权利要求1至5任一所述的方法,其特征在于,所述RPC操作请求用于请求获取操作***中运行的进程的信息、所述操作***中存储的文件的信息、所述操作***中存储的注册表的信息和所述操作***的硬件信息中的一个或多个。
8.一种虚拟机检测的对抗装置,其特征在于,所述虚拟机检测的对抗装置包括:
接收模块,用于接收指示调用目标函数的远程过程调用RPC操作请求;
执行模块,用于对所述目标函数执行挂钩操作,以获取所述RPC操作请求携带的操作参数;
第一确定模块,用于确定所述操作参数指示的所述RPC操作请求的类型、所述RPC操作请求所调用的接口以及所述RPC操作请求所请求的连接目标对象;
第二确定模块,用于当所述操作参数指示的所述RPC操作请求的类型为查询请求,所述操作参数指示的所述RPC操作请求所调用的接口为通过Windows管理规范WMI接口发起查询请求时所需调用的接口,且所述操作参数指示的所述RPC操作请求所请求的连接目标对象为通过带有指向的端口所请求的对象时,确定所述RPC操作请求为通过WMI接口发起的查询请求;
处理模块,用于禁止执行所述RPC操作请求所请求的操作。
9.一种虚拟机检测的对抗设备,其特征在于,所述虚拟机检测的对抗设备包括:处理器和存储器,所述存储器中存储有程序指令,所述程序指令由所述处理器加载并执行以实现如权利要求1至7任一所述的虚拟机检测的对抗方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有程序指令,所述程序指令由处理器加载并执行以实现如权利要求1至7任一所述的虚拟机检测的对抗方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910610930.1A CN111191224B (zh) | 2019-07-08 | 2019-07-08 | 虚拟机检测的对抗方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910610930.1A CN111191224B (zh) | 2019-07-08 | 2019-07-08 | 虚拟机检测的对抗方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111191224A CN111191224A (zh) | 2020-05-22 |
CN111191224B true CN111191224B (zh) | 2022-04-08 |
Family
ID=70705726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910610930.1A Active CN111191224B (zh) | 2019-07-08 | 2019-07-08 | 虚拟机检测的对抗方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111191224B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113282304B (zh) * | 2021-05-14 | 2022-04-29 | 杭州云深科技有限公司 | 基于app安装列表识别虚拟机的*** |
CN114466074B (zh) * | 2021-12-10 | 2024-04-30 | 奇安信科技集团股份有限公司 | 一种基于wmi的攻击行为检测方法及装置 |
CN114465753B (zh) * | 2021-12-10 | 2024-06-28 | 奇安信科技集团股份有限公司 | 远程操作行为识别方法、装置、电子设备及存储介质 |
CN114363006A (zh) * | 2021-12-10 | 2022-04-15 | 奇安信科技集团股份有限公司 | 基于WinRM服务的防护方法及装置 |
CN114465752B (zh) * | 2021-12-10 | 2024-06-28 | 奇安信科技集团股份有限公司 | 一种远程调用检测方法、装置、电子设备及存储介质 |
CN114499929B (zh) * | 2021-12-13 | 2024-06-28 | 奇安信科技集团股份有限公司 | 计划任务内网远程横向渗透监测方法及装置 |
CN114896592B (zh) * | 2022-03-07 | 2023-05-05 | 安芯网盾(北京)科技有限公司 | 一种wmi恶意代码的通用检测方法、装置、设备及存储介质 |
CN116483483B (zh) * | 2023-06-21 | 2023-09-19 | 中科方德软件有限公司 | 数据查询方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020525A (zh) * | 2012-12-20 | 2013-04-03 | 北京奇虎科技有限公司 | 虚拟机***的反检测方法和装置 |
CN103077351A (zh) * | 2012-12-20 | 2013-05-01 | 北京奇虎科技有限公司 | 虚拟机***的反检测*** |
CN106934281A (zh) * | 2017-03-30 | 2017-07-07 | 兴华永恒(北京)科技有限责任公司 | 一种基于硬件虚拟化技术的虚拟机对抗技术的建立方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223964B2 (en) * | 2013-12-05 | 2015-12-29 | Mcafee, Inc. | Detecting JAVA sandbox escaping attacks based on JAVA bytecode instrumentation and JAVA method hooking |
-
2019
- 2019-07-08 CN CN201910610930.1A patent/CN111191224B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020525A (zh) * | 2012-12-20 | 2013-04-03 | 北京奇虎科技有限公司 | 虚拟机***的反检测方法和装置 |
CN103077351A (zh) * | 2012-12-20 | 2013-05-01 | 北京奇虎科技有限公司 | 虚拟机***的反检测*** |
CN106934281A (zh) * | 2017-03-30 | 2017-07-07 | 兴华永恒(北京)科技有限责任公司 | 一种基于硬件虚拟化技术的虚拟机对抗技术的建立方法 |
Non-Patent Citations (1)
Title |
---|
面向网络对抗的防御虚拟机研究与实现;夏冰等;《计算机应用研究》;20080415(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111191224A (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111191224B (zh) | 虚拟机检测的对抗方法、装置及计算机可读存储介质 | |
CN110308956B (zh) | 一种应用界面显示方法、装置及移动终端 | |
CN111190748B (zh) | 数据共享方法、装置、设备及存储介质 | |
CN111752666B (zh) | 窗口显示方法、装置和终端 | |
CN110362366B (zh) | 一种应用界面显示方法及装置 | |
CN108897659B (zh) | 修改日志级别的方法、装置及存储介质 | |
CN108717365B (zh) | 在应用程序中执行功能的方法和装置 | |
CN110837473A (zh) | 应用程序调试方法、装置、终端及存储介质 | |
CN110851823B (zh) | 数据访问方法、装置、终端及存储介质 | |
CN109828915B (zh) | 一种调试应用程序的方法、装置、设备和存储介质 | |
CN111159604A (zh) | 图片资源加载方法及装置 | |
CN111400002B (zh) | 应用进程与处理器核绑定方法及终端 | |
CN111191227B (zh) | 阻止恶意代码执行的方法和装置 | |
CN113051015A (zh) | 页面渲染方法、装置、电子设备及存储介质 | |
CN108984259B (zh) | 界面显示方法、装置及终端 | |
CN107943484B (zh) | 执行业务功能的方法和装置 | |
CN111580892B (zh) | 一种业务组件调用的方法、装置、终端和存储介质 | |
CN111881423A (zh) | 限制功能使用授权方法、装置、*** | |
CN112181915A (zh) | 执行业务的方法、装置、终端和存储介质 | |
CN110417931B (zh) | 域名解析记录获取方法、装置、计算机设备及存储介质 | |
CN110502708B (zh) | 基于JSBridge进行通信的方法、装置及存储介质 | |
CN111367588B (zh) | 一种获取堆栈使用量的方法及装置 | |
CN113076452A (zh) | 应用分类的方法、装置、设备及计算机可读存储介质 | |
CN112699364A (zh) | 验证信息的处理方法、装置、设备及存储介质 | |
WO2019214694A1 (zh) | 存储数据的方法、读取数据的方法、装置及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |