CN111444509B - 基于虚拟机实现的cpu漏洞检测方法及系统 - Google Patents

基于虚拟机实现的cpu漏洞检测方法及系统 Download PDF

Info

Publication number
CN111444509B
CN111444509B CN201811614314.5A CN201811614314A CN111444509B CN 111444509 B CN111444509 B CN 111444509B CN 201811614314 A CN201811614314 A CN 201811614314A CN 111444509 B CN111444509 B CN 111444509B
Authority
CN
China
Prior art keywords
instruction
preset
vulnerability
cpu
virtual machine
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
Application number
CN201811614314.5A
Other languages
English (en)
Other versions
CN111444509A (zh
Inventor
潘剑锋
彭岩
秦光远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201811614314.5A priority Critical patent/CN111444509B/zh
Publication of CN111444509A publication Critical patent/CN111444509A/zh
Application granted granted Critical
Publication of CN111444509B publication Critical patent/CN111444509B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于虚拟机实现的CPU漏洞检测方法及系统。其中,该方法包括:在虚拟机系统中将第一预设监控代码注入未知进程,第一预设监控代码获取与未知进程相对应的二进制指令;按照二进制转义规则,确定与二进制指令相对应的汇编指令;通过虚拟机模拟CPU执行汇编指令,并根据虚拟漏洞防御规则,检测模拟CPU执行的汇编指令是否为与CPU漏洞相关的指令;当检测结果为预设结果时,将未知进程的进程信息提供给宿主系统,以便在宿主系统中将第二预设监控代码注入未知进程,根据预设的宿主漏洞防御规则,检测未知进程执行的指令是否为与CPU漏洞相关的指令。该方式能够实现指令级别的监控,进而监控到与CPU漏洞相关的各个指令。

Description

基于虚拟机实现的CPU漏洞检测方法及系统
技术领域
本发明涉及计算机技术领域,具体涉及一种基于虚拟机实现的CPU漏洞检测方法及系统。
背景技术
中央处理器(Central Processing Unit,CPU)漏洞无疑属于一种高危漏洞,一旦恶意程序利用CPU漏洞发起攻击,则会对用户的个人设备造成不可估量的负面影响,甚至会造成设备瘫痪等重大问题。
在现有技术中,只能通过监控操作系统提供的接口来判断是否存在针对CPU漏洞的攻击行为。例如,当恶意程序试图通过调用操作系统提供的接口发起针对CPU漏洞的攻击行为时,通过在操作系统提供的接口处设置挂钩等监控方式即可监控到该恶意行为并进行拦截。
但是,发明人在实现本发明的过程中发现,现有技术中的上述方式至少存在下述缺陷:只能从操作系统提供的接口这一层面实现恶意行为的拦截操作,一旦恶意程序绕过操作系统提供的接口直接进入到操作系统内部,则会导致严重的后果。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于虚拟机实现的CPU漏洞检测方法及系统。
根据本发明的一个方面,提供了一种基于虚拟机实现的CPU漏洞检测方法,包括:
在预设的虚拟机系统中将第一预设监控代码注入未知进程,所述第一预设监控代码获取与所述未知进程相对应的二进制指令;
按照预设的二进制转义规则,确定与所述二进制指令相对应的汇编指令;
通过虚拟机模拟CPU执行所述汇编指令,并根据预设的虚拟漏洞防御规则,检测模拟CPU执行的所述汇编指令是否为与CPU漏洞相关的指令;
当检测结果为预设结果时,将所述未知进程的进程信息提供给预设的宿主系统,以便在所述预设的宿主系统中将第二预设监控代码注入所述未知进程,并根据预设的宿主漏洞防御规则,检测所述未知进程执行的指令是否为与CPU漏洞相关的指令。
根据本发明的另一个方面,提供了一种基于虚拟机实现的CPU漏洞检测系统,包括:
第一监控模块,适于在预设的虚拟机系统中将第一预设监控代码注入未知进程,所述第一预设监控代码获取与所述未知进程相对应的二进制指令;
转义模块,适于按照预设的二进制转义规则,确定与所述二进制指令相对应的汇编指令;
虚拟漏洞防御模块,适于通过虚拟机模拟CPU执行所述汇编指令,并根据预设的虚拟漏洞防御规则,检测模拟CPU执行的所述汇编指令是否为与CPU漏洞相关的指令;
宿主漏洞防御模块,适于当检测结果为预设结果时,将所述未知进程的进程信息提供给预设的宿主系统,以便在所述预设的宿主系统中将第二预设监控代码注入所述未知进程,并根据预设的宿主漏洞防御规则,检测所述未知进程执行的指令是否为与CPU漏洞相关的指令。
根据本发明的又一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行上述基于虚拟机实现的CPU漏洞检测方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述基于虚拟机实现的CPU漏洞检测方法对应的操作。
根据本发明公开的基于虚拟机实现的CPU漏洞检测方法及系统,能够将预设监控代码注入未知进程,由该预设监控代码获取与未知进程相对应的指令,进而根据预设的漏洞防御规则判断该未知进程相对应的指令是否为与CPU漏洞相关的指令;若是,则针对该未知进程进行拦截。由此可见,本发明通过向未知进程注入预设监控代码的方式,能够监控未知进程对应的各个指令,从而实现指令级别的监控,进而能够监控到与CPU漏洞相关的各个指令,实现更为全面的防御效果,即使未知进程绕过操作系统提供的接口直接进入到操作系统内部也能够通过指令进行拦截,提升了系统安全性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明一个实施例的基于虚拟机实现的CPU漏洞检测方法的流程示意图;
图2示出了本发明另一个实施例的基于虚拟机实现的CPU漏洞检测方法的流程示意图;
图3示出了一种用于实施图2所示的实施例中描述的CPU漏洞检测方法的CPU漏洞检测系统的结构示意图;
图4示出了本发明又一实施例提供的一种基于虚拟机实现的CPU漏洞检测系统的系统结构图;
图5示出了根据本发明实施例的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了本发明一个实施例的基于虚拟机实现的CPU漏洞检测方法的流程示意图。如图1所示,该方法包括:
步骤S110:在预设的虚拟机系统中将第一预设监控代码注入未知进程,所述第一预设监控代码获取与所述未知进程相对应的二进制指令。
其中,虚拟机(Virtual Machine,VM)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。相应的,虚拟机系统是指通过虚拟机实现的虚拟的操作系统,也可以称为虚拟机运行环境。本实施例中预设的虚拟机系统可以通过各类虚拟机软件实现,例如,VMware、Virtual Box以及Virtual PC等。该类虚拟机软件都能够在物理操作系统上虚拟出多个计算机。这些虚拟出来的计算机是基于虚拟操作系统(即虚拟机运行环境)实现的。另外,本实施例中的预设的虚拟机系统(虚拟机操作系统)还可以称为虚拟机装置。
注入是指:将一段第三方逻辑代码放置到应用程序内存中并执行。在本实施例中,该第三方逻辑代码即为预设监控代码。该第一预设监控代码用于实现对未知进程中的各个指令进行监控的目的,本发明不限定第一预设监控代码的具体实现方式,只要能够实现上述目的即可。例如,该第一预设监控代码可以是动态链接库(Dynamic Link Library,简称DLL)文件,进而通过DLL注入技术实现。
并且,本实施例中的第一预设监控代码能够获取与未知进程相对应的二进制指令。其中,与未知进程相对应的二进制指令实际上也可以理解为二进制信息,具体是指:由未知进程发起并在内存中执行的二进制形式的指令信息。通过获取与未知进程相对应的二进制指令信息,能够在后续步骤中对获取到的指令信息进行监控。
步骤S120:按照预设的二进制转义规则,确定与二进制指令相对应的汇编指令。
通常情况下,由未知进程发起并在内存中执行的二进制形式的指令信息需要由CPU将其转换为相应的汇编指令才能执行。在本实施例中,为了能够在虚拟机环境中对未知进程进行监管,需要由虚拟机模拟CPU执行与未知进程相对应的二进制指令。相应地,在本步骤中,按照预设的二进制转义规则,确定与二进制指令相对应的汇编指令。由于内存中的二进制指令信息与CPU执行的汇编指令之间具有一定的对应关系,因此,可以基于二者之间的对应关系设置该二进制转义规则。
步骤S130:通过虚拟机模拟CPU执行汇编指令,并根据预设的虚拟漏洞防御规则,检测模拟CPU执行的汇编指令是否为与CPU漏洞相关的指令。
由于上一步骤中已经通过二进制转义的方式确定了与二进制指令相对应的汇编指令,相应地,在本步骤中,能够虚拟机模拟CPU执行汇编指令,并在模拟执行的过程中,根据预设的虚拟漏洞防御规则,检测模拟CPU执行的汇编指令是否为与CPU漏洞相关的指令。
其中,该预设的虚拟漏洞防御规则用于在虚拟机系统中从指令级别判断一个指令是否为与CPU漏洞相关的指令。所谓与CPU漏洞相关的指令是指:通过指令的运行,能够利用CPU漏洞发起攻击的指令,相应地,凡是能够利用CPU漏洞进行恶意行为的指令均属于与CPU漏洞相关的指令。在本实施例中,预设的虚拟漏洞防御规则主要用于从指令的执行频率、指令序列的序列特征等方面来识别一个指令是否为与CPU漏洞相关的指令。例如,可以预先确定与CPU漏洞相关的指令的执行频率以及指令序列特征,从而据此设置预设的漏洞防御规则。本发明对漏洞防御规则的具体内涵不做限定,只要能够从指令级别识别出恶意指令即可。
步骤S140:当检测结果为预设结果时,将未知进程的进程信息提供给预设的宿主系统,以便在预设的宿主系统中将第二预设监控代码注入未知进程,并根据预设的宿主漏洞防御规则,检测未知进程执行的指令是否为与CPU漏洞相关的指令。
其中,该预设结果包括:模拟CPU执行的汇编指令不属于与CPU漏洞相关的指令、模拟CPU执行的汇编指令虽属于与CPU漏洞相关的指令但不适于在虚拟机系统中进行防护等各类结果。总之,步骤S140的作用在于:对虚拟机系统中执行的指令级别的检测过程进行补充,以防止有些类型的指令在虚拟机系统中无法有效检测。
相应地,针对检测结果为预设结果的未知进程,将在预设的宿主系统中注入第二监控代码,以便根据预设的宿主漏洞防御规则,检测未知进程执行的指令是否为与CPU漏洞相关的指令。该宿主漏洞防御规则用于在宿主系统中从指令级别判断一个指令是否为与CPU漏洞相关的指令。由此可见,该第二监控代码能够在宿主系统中监测进程执行的各个指令,并根据宿主漏洞防御规则进行检测及防御。其中,预设的宿主系统是指:用于创建虚拟机系统的物理主机中运行的实际操作系统。相应的,宿主系统与创建虚拟机的主机相对应。宿主系统也可以称为主机系统(主机操作系统)、宿主运行环境或主机装置等。
根据本发明公开的基于虚拟机实现的CPU漏洞检测方法,能够将预设监控代码注入未知进程,由该预设监控代码获取与未知进程相对应的指令,进而根据预设的漏洞防御规则判断该未知进程相对应的指令是否为与CPU漏洞相关的指令;若是,则针对该未知进程进行拦截。由此可见,本发明通过向未知进程注入预设监控代码的方式,能够监控未知进程对应的各个指令,从而实现指令级别的监控,进而能够监控到与CPU漏洞相关的各个指令,实现更为全面的防御效果,即使未知进程绕过操作系统提供的接口直接进入到操作系统内部也能够通过指令进行拦截,提升了系统安全性。并且,该方式能够在虚拟机系统以及宿主系统中实现双层监控,以提升监控力度及准确性。
图2示出了本发明另一个实施例的基于虚拟机实现的CPU漏洞检测方法的流程示意图。在本实施例中,以预设监控代码为动态链接库DLL文件为例进行说明。如图2所示,该方法包括:
步骤S200:确定二进制指令与汇编指令之间的对应关系,根据该对应关系设置二进制转义规则。
具体地,通过CPU执行进程相关的指令时,需要根据内存中存储的不同数据来执行不同的操作。也就是说,通过CPU执行未知进程对应的指令时,需要根据内存中存储的二进制指令(也叫二进制信息或二进制指令信息)来确定具体执行何种类型的指令。发明人在实现本发明的过程中发现:内存中存储的二进制指令与CPU应执行的汇编指令之间具有固定的对应关系,因此,能够基于该对应关系来设置用于将内存中的二进制指令转换为汇编指令的二进制转义规则。
例如,对于内存中存储的如下数据:32c0 48 8B 5C 23 70,将被CPU解释为如下的汇编指令:
xor al,al
mov rbx[rsp+70h]
上述两条汇编指令的含义为:将al清零,并将rsp+70h处的值赋值给rbx。相应地,本实施例预先挖掘二进制指令与汇编指令之间的对应关系,并据此设置用于实现二者之间的转换的二进制转义规则。该二进制转义规则可以实现内存中的二进制指令与汇编指令之间的转换,从而根据二进制指令快速转换出对应的汇编指令。
步骤S210:在预设的虚拟机系统中将第一预设监控代码注入未知进程,该第一预设监控代码获取与未知进程相对应的二进制指令。
具体实施时,需要在预设的虚拟机系统中确定未知进程的内存地址空间,然后,将第一预设监控代码,即第一DLL注入该未知进程的内存地址空间,以使该第一DLL成为该未知进程的一部分。在本实施例中,该第一DLL用于通过虚拟机实现虚拟CPU环境,以供未知进程运行于虚拟CPU环境中,从而便于获取与未知进程相对应的二进制指令,即内存中存储的与未知进程相对应的二进制信息。由此可见,该第一DLL的主要功能在于获取未知进程相对应的二进制指令。
具体实施时,第一预设监控代码通过以下方式获取与未知进程相对应的二进制指令:第一预设监控代码监测内存(主要是指未知进程的内存地址空间所对应的内存区域)中的内存数据的变化量;根据内存中的内存数据的变化量确定与未知进程相对应的二进制指令。由此可见,预设监控代码需要实时监控并记录内存中的当前数据量。例如,假设与未知进程相对应的二进制指令为指令一。在未知进程发起指令一之前,未知进程的内存地址空间所对应的内存区域中的内存数据为A,在未知进程发起指令一之后,未知进程的内存地址空间所对应的内存区域中的内存数据更新为A’。相应地,通过比较A’相对于A的变化量,能够确定内存中与指令一相对应的指令信息,从而根据与指令一相对应的指令信息获取与未知进程相对应的二进制指令。
步骤S220:按照预设的二进制转义规则,确定与二进制指令相对应的汇编指令。
通常情况下,由未知进程发起并在内存中执行的二进制形式的指令信息需要由CPU将其转换为相应的汇编指令才能执行。在本实施例中,为了能够在虚拟机环境中对未知进程进行监管,需要由虚拟机模拟CPU执行与未知进程相对应的二进制指令。相应地,在本步骤中,按照预设的二进制转义规则,确定与二进制指令相对应的汇编指令。由于内存中的二进制指令信息与CPU执行的汇编指令之间具有一定的对应关系,因此,可以基于二者之间的对应关系设置该二进制转义规则。
例如,仍以内存中存储如下数据32c0 48 8B 5C 23 70为例,即:获取到的与未知进程相对应的二进制指令数据为32c0 48 8B 5C 23 70。相应地,通过二进制转义规则,确定与上述二进制指令数据相对应的汇编指令如下:
xor al,al
mov rbx[rsp+70h]
步骤S230:通过虚拟机模拟CPU执行汇编指令。
由于上一步骤中已经通过二进制转义的方式确定了与二进制指令相对应的汇编指令,相应地,在本步骤中,能够通过虚拟机模拟CPU执行汇编指令。具体实施时,借助注入的第一DLL并通过虚拟机代理CPU执行转义得到的汇编指令,并将执行结果反馈给未知进程。
例如,在上例中,第一DLL将代理CPU执行转义得到的汇编指令。由此可见,本实施例中注入的第一DLL能够实现CPU的功能:主动读取内存中的二进制指令,并根据转义结果代理CPU执行转义后的汇编指令。例如,针对xor al,al这一条汇编指令,将由第一DLL代替CPU执行将al清零的操作,但是,对于被转义执行的进程来说是透明的、无感知的,进程本身无法知晓对应的指令究竟由CPU执行还是由DLL代理执行。通过该方式,能够从指令级别进行监控。
步骤S240:根据预设的虚拟漏洞防御规则,检测模拟CPU执行的汇编指令是否为与CPU漏洞相关的指令。
其中,预设的虚拟漏洞防御规则用于在虚拟机系统中从指令级别判断一个指令是否为与CPU漏洞相关的指令。关于漏洞防御规则的具体内涵将在本实施例的末尾详细阐述。
在本步骤中,若检测到模拟CPU执行的汇编指令为与CPU漏洞相关的指令,即可确定该未知进程为恶意进程,意图利用CPU漏洞发起攻击。相应地,需要针对未知进程进行拦截,以便防御攻击。具体地,在针对未知进程进行拦截时,可通过多种方式实现,例如,可以直接杀死未知进程,以避免该进程继续发起攻击;又如,还可以拦截与未知进程相对应的指令,从而仅拦截某一条或多条恶意指令,从而避免误杀进程。
步骤S250:当检测结果为预设结果时,将未知进程的进程信息提供给预设的宿主系统,以便在预设的宿主系统中将第二预设监控代码注入未知进程,并根据预设的宿主漏洞防御规则,检测未知进程执行的指令是否为与CPU漏洞相关的指令。
该预设结果包括:模拟CPU执行的汇编指令不属于与CPU漏洞相关的指令。该结果说明在虚拟机系统中通过虚拟漏洞防御规则未检测到与CPU漏洞相关的指令。但是,由于虚拟机系统中的操作系统及各类资源均为虚拟方式实现的虚拟资源,因此,在虚拟机系统中检测时可能存在一定的局限性,有可能遗漏某些类型的重要指令。为了提升准确性,实现全面检测各类指令的目的,在本实施例中,进一步将未知进程的进程信息提供给预设的宿主系统,以便在预设的宿主系统中将第二预设监控代码(即第二DLL)注入未知进程,并根据预设的宿主漏洞防御规则,检测未知进程执行的指令是否为与CPU漏洞相关的指令。
具体地,在通过第二预设监控代码获取未知进程执行的指令时,能够具体获取到未知进程中包含的各个线程以及各个线程执行的指令。具体实施时,需要确定未知进程的内存地址空间,然后,将第二DLL注入该未知进程的内存地址空间,以使该第二DLL成为该未知进程的一部分。在本实施例中,该第二DLL用于通过虚拟机实现虚拟CPU环境,以供未知进程运行于虚拟CPU环境中。也就是说,该第二DLL注入未知进程后,能够通过虚拟机模拟出虚拟的CPU环境以及其他各种硬件环境,并将该虚拟CPU环境提供给未知进程,以使该未知进程从真实CPU环境中切换到虚拟CPU环境中运行,具体可通过与未知进程进行通信以及消息转发等方式来实现上述切换过程。通过上述方式,即可实现通过第二DLL监管未知进程的目的。具体地,由于第二DLL相当于一个能够支持进程运行的虚拟机,因此,未知进程运行于第二DLL通过虚拟机创建的虚拟CPU环境中,因此,该未知进程通过操作系统发送的各个指令均由该第二DLL接管,相应地,该DLL能够获取到与该未知进程相对应的全部指令。
当在宿主系统中监测到与CPU漏洞相关的指令时,即可确定该未知进程为恶意进程,意图利用CPU漏洞发起攻击。相应地,需要在宿主系统中针对未知进程进行拦截,以便防御攻击。具体地,在针对未知进程进行拦截时,可通过多种方式实现,例如,可以直接杀死未知进程,以避免该进程继续发起攻击;又如,还可以拦截与未知进程相对应的指令,从而仅拦截某一条或多条恶意指令,从而避免误杀进程。
由此可见,在本实施例中,能够实现两层防护:第一层防护为在虚拟机系统中实现的防护,第二层防护为在宿主系统中实现的防护。其中,第一层防护基于虚拟漏洞防御规则实现,且第一层防护中注入的第一DLL用于通过二进制转义操作实现模拟CPU执行汇编指令并进行监测的目的,其本质在于通过二进制转义的方式来获取进程执行的指令。由于第一层防护能够基于虚拟机系统本身实现,无需与宿主系统进行通信,因此,具有零延时、处理速度快等诸多优势,能够在第一时间检测到潜在的恶意进程。第二层防护基于宿主漏洞防御规则实现,且第二层防护中注入的第二DLL用于通过模拟CPU的方式进行监测,以使未知进程运行于虚拟出来的CPU环境中从而监测该未知进程的各个指令。由于宿主系统中的各种硬件资源均为实体资源,因此,与虚拟机系统不同,宿主系统能够监测的指令类型更为全面、准确,所以说,第二层防护具有指令类型全面、防护效果好等诸多优势。
实质上,除了采用本实施例中描述的先执行第一层防护,再执行第二层防护的方式之外,也可以由两层防护同时进行,本发明对具体实现方式不做限定。
另外,虚拟漏洞防御规则与宿主漏洞防御规则均用于检测与CPU漏洞相关的指令,两个规则的具体用途类似,区别主要在于:虚拟漏洞防御规则用于在虚拟机系统中进行防护,宿主漏洞防御规则用于在宿主系统中进行防护。因此,虚拟漏洞防御规则与宿主漏洞防御规则的具体内涵可完全相同或部分交叉,本发明对此不做限定。
其中,预设的虚拟漏洞防御规则和/或宿主漏洞防御规则包括以下两种规则中的至少一种:
第一种漏洞防御规则为:根据指令频率是否大于预设频率阈值进行防御的规则。具体地,发明人在实现本发明的过程中发现:恶意进程发起攻击时,通过会在短期内多次发送指令,以实现攻击目的。相应地,通过监测指令频率有利于筛查恶意指令。例如,在本实施例中,根据预设频率阈值确定一个预设次数阈值,当一秒内命中预设漏洞指令的次数超过该预设次数阈值时确定指令符合漏洞防御规则。其中,该预设漏洞指令可以为预先确定的与CPU漏洞相关的指令。
第二种漏洞防御规则为:根据指令序列和/或指令序列组合是否与预设的漏洞指令序列特征相匹配进行防御的规则。其中,预设的漏洞指令序列特征根据预先确定的与CPU漏洞相关的指令生成。该漏洞指令序列特征既可以是单个指令的单序列特征,也可以是由多个指令构成的指令集合的序列集合特征。
例如,该漏洞指令序列特征包括:与缓存线清除指令(例如CLFLUSH指令)相对应的指令序列特征、与读取时间标签计数器操作码指令(例如RDTSC指令)相对应的指令序列特征、和/或与读取TSC寄存器指令(例如RDTSCP指令)相对应的指令序列特征等。与CPU漏洞相关的指令除上述提到的CLFLUSH指令、RDTSC指令、以及RDTSCP指令之外,还可以包括CLFLUSHOPT指令(即刷新缓存行已优化指令),通过上述指令能够实现针对CPU漏洞进行攻击的目的,因此,在本发明中需要重点监控这些指令。具体地,根据上述指令设置的漏洞指令序列特征可以包括上述指令的全部内容,也可以仅包括从上述指令中抽取出的特征内容。另外,考虑到有时需要通过一组由多个不同的指令构成的指令集合来实现攻击目的,因此,漏洞指令序列特征还可以包括:依序排列的多个指令特征。
在一个具体示例中,预设的漏洞指令序列特征包括以下指令序列和/或指令序列组合:读取TSC寄存器指令、和/或清除指令;并且,两条读取TSC寄存器指令之间的指令为预设的漏洞特征指令;其中,预设的漏洞特征指令包括:数据传送指令(如MOV指令)。其中,读取TSC寄存器指令包括指令,清除指令包括CFLUSH指令。例如,当CPU执行先后执行了RDTSCP指令以及CFLUSH指令,并且两条RDTSCP指令之间的指令符合CPU漏洞特征(例如两条RDTSCP指令之间的指令为MOV内存指令)时确定符合漏洞防御规则,应加以防范。优选地,还可以进一步增加一个执行次数的限制:例如,当CPU执行先后执行了RDTSCP指令以及CFLUSH指令,并且两条RDTSCP指令之间的指令符合CPU漏洞特征,并且执行次数大于预设次数阈值时,确定符合漏洞防御规则,应加以防范。另外,当CPU清除(flush)的内存在RDTSCP指令之间被访问时,也能够确定符合漏洞防御规则。
具体实施时,该预设的漏洞防御规则可以预先通过机器学习方式创建:首先,分别将样本监控代码注入各个样本进程,由样本监控代码接管与各个样本进程相对应的指令,以使与各个样本进程相对应的指令在虚拟CPU环境中执行;然后,通过机器学习算法,针对与各个样本进程相对应的指令以及指令执行结果进行训练,根据训练结果确定预设的漏洞防御规则。其中,样本监控代码与预设监控代码类似,都可以通过DLL实现,作用在于通过虚拟机模拟虚拟CPU环境,以使样本进程在虚拟CPU环境中运行。相应地,该样本监控代码能够监控到与该样本进程相关的全部指令,并且,该样本监控代码通过接管与该样本进程相关的全部指令并协助指令执行的方式能够获取到各个指令的执行结果,从而便于根据执行结果提取出恶意指令(即与CPU漏洞相关的指令),进而通过训练过程学习出恶意指令的指令特征,以扩充漏洞防御规则。通过机器学习方式,能够针对大量样本的指令进行学习,以确定各个指令是否为恶意指令,并进一步提取出恶意指令的特征,从而提升了漏洞防御规则的全面性及准确性。
最后,为了便于理解本发明,图3示出了一种用于实施上述实施例中描述的CPU漏洞检测方法的CPU漏洞检测系统的结构示意图。如图3所示,该CPU漏洞检测系统包括:虚拟机装置31以及主机装置32。其中,虚拟机装置31进一步包括:进程监控模块311、以及驱动模块312。可选地,进程监控模块311进一步包括:进程管理模块3111、防御模块3112、以及云查模块3113。其中,进程管理模块3111以及云查模块3113分别与防御模块3112相连,且防御模块3112进一步与驱动模块312相连。并且,进一步可选地,该虚拟机装置31还包括:共享内存模块313,与驱动模块312以及预设的主机装置32分别相连,适于存储预设的主机装置32返回的监测结果,以供驱动模块312读取。其中,主机装置32内部进一步设置有主机监控模块(图中未示出)。该主机监控模块用于在主机装置内部实现注入第二DLL等监控功能。
由此可见,图3所示的CPU漏洞检测系统包括虚拟机装置31以及主机装置32。该虚拟机装置31中安装的是虚拟操作系统。该虚拟操作系统例如可以为Windows系统等,用于实现上文提到的虚拟机系统。主机装置32为该虚拟机装置所对应的宿主装置,该宿主装置中安装有与虚拟操作系统相对应的宿主操作系统,用于实现上文提到的宿主系统。为了便于描述,也可以将虚拟机装置简称为Guest端,将由主机装置实现的宿主装置简称为Host端。
下面重点描述本发明实施例中提供的虚拟机装置中包含的各个模块的具体工作原理,以阐述虚拟机系统中的第一层防护流程:进程监控模块主要用于实现针对各个进程的监控。每当进程启动时,进程监控模块即可获取到该启动的进程的相关信息,以便针对该进程进行持续性监控。为了确保进程监控模块能够在进程启动的第一时间监测到对应的启动事件并进行及时有效地监控,本实施例中的进程监控模块进一步包括:进程管理模块以及防御模块。其中,该进程管理模块用于通过防御模块注册各个进程的回调信息,并在已注册的进程执行时,向防御模块发送回调通知。由此可见,进程管理模块能够预先向防御模块注册各个进程和/或线程的回调信息,以创建与各个进程和/或线程相对应的回调函数。相应地,当已经注册过的进程和/或线程执行时,将通过对应的回调函数向防御模块发送回调通知。防御模块用于在接收到进程管理模块111发送的回调通知时,获取与回调通知相对应的未知进程的进程信息,并将获取到的未知进程的进程信息发送给云查模块。其中,未知进程的进程信息包括:进程名称、进程标识(如进程的ID或PID)、进程的路径等相关信息。云查模块113用于将防御模块112发送的未知进程的进程信息发送给云服务器,并将云服务器返回的查询结果返回给防御模块。其中,云服务器上存储有已知安全等级的进程的相关信息。例如,在云服务器上维护有一个进程等级表,该进程等级表中存储有各种等级的进程的相关信息。其中,进程的等级可以划分为:危险等级、安全等级、以及可疑等级。或者,该等级信息也可通过黑白名单表示,例如,存储在白名单中的进程为安全等级、存储在黑名单中的进程为危险等级、存储在灰名单中的进程为可疑等级。相应地,防御模块可以根据不同等级的查询结果执行对应的处理,并在根据云服务器返回的查询结果确定未知进程为预设等级的进程时,执行步骤S210中的操作。其中,预设等级可以为可疑等级和/或危险等级等各类非安全等级。例如,在一种具体的实现方式中,防御模块执行以下操作:若未知进程的等级为安全等级,则放行该未知进程;若未知进程的等级为危险等级,则拦截该未知进程(例如杀死该未知进程,以阻止该未知进程继续运行);若未知进程的等级为可疑等级,则在预设的虚拟机系统中将第一预设监控代码注入未知进程。
由此可见,通过进程监控模块能够第一时间监控到当前系统中启动的各个进程,并借助云服务器实时查询各个已启动进程的安全等级,以实现针对非安全等级的进程的实时防护功能。另外,驱动模块用于在步骤S250中当检测结果为预设结果时将未知进程的进程信息提供给预设的宿主系统。例如,将进程监控模块提供的未知进程的进程信息发送给预设的主机装置,以供主机装置监测未知进程是否执行与CPU漏洞相关的指令。由于虚拟机装置与主机装置中运行的操作系统分别为虚拟操作系统以及宿主操作系统,因此,为了便于实现跨操作系统的通信功能,在本实施例中,进一步设置有驱动模块。该驱动模块专用于实现虚拟操作系统与宿主操作系统之间的通信。
另外,可选的,在本实施例中,为了进一步便于虚拟操作系统(即虚拟机操作系统)与宿主操作系统相互通信,在虚拟机装置中进一步包含共享内存模块,与驱动模块以及预设的主机装置分别相连,适于存储预设的主机装置返回的监测结果,以供驱动模块读取。该共享内存模块能够缓存与进程相对应的进程数据,该缓存的进程数据能够被虚拟机系统以及宿主系统同时访问,从而能够在多进程的情况下实现多个进程间的数据共享,提升了虚拟操作系统与宿主操作系统之间的通信效率。
虚拟操作系统还可以通过VM Call(虚拟机调用)方式与宿主操作系统进行通信,由于VM Call为单向传输,只能由虚拟机向外传送信息,而无法从外部(主机侧)向虚拟机传输信息。因此,借助共享内存模块能够实现虚拟机系统与宿主操作系统之间的双向通信。
综上可知,通过本实施例中的方式,能够通过二进制转义的方式模拟CPU执行汇编指令,进而从指令级别监控进程,由于指令更为细化,因此,与传统的监测操作系统或CPU提供的接口的方式相比,扩大了监控范围、提升了监控的准确性。该方式能够把进程虚拟机(即提供进程运行环境的虚拟机)的DLL注入到该进程,后续该进程会在该进程虚拟机DLL中执行,相应地,该DLL能够在指令级别监控该进程,如果监控到符合漏洞防御规则的指令则会拦截,还可以触发报警,以提示用户。另外,该方案能够从环3(即Ring3)层来模拟CPU,实现监控,从而能够监控到指令级别的内容。另外,本实施例提供的DLL注入方式能够在不改变进程运行环境的情况下实现DLL的注入过程,从而确保注入过程以及后续的监测过程对于用户而言是完全无感知的,从而提升了用户体验。在传统方式中,当发现可疑进程后,需要先杀死可疑进程,然后再重启该可疑进程,例如通过代理进程调用被监控的未知进程的方式实现重启,然而在这种方式中,当可疑进程被杀死时会对用户造成影响,且经重启后进程的父进程以及运行环境(例如,cmdline等)都会产生变化,不仅无法做到用户无感知,还容易被可疑进程发现异常。相比之下,本发明中的方式不仅实现了用户无感知,也不容易被可疑进程察觉,具有更好的实用性。
另外,由于主机装置(即宿主系统)具有更好的兼容性,因此,在主机装置中实施DLL注入及指令监控的方式能够更好地兼容各种类型的指令,适用范围广泛。
另外,通常情况下虚拟机装置对应的虚拟机运行环境只能实现程序行为层面的监控,例如,监控进程执行的写文件或读取注册表等行为,但是,无法从指令层面进行监控。然而,在本实施例中,通过注入用于二进制转义的第一DLL的方式能够在虚拟机装置中实现指令级别的监控,从而克服了常规方案中无法在虚拟机装置中监测进程指令的弊端。
总而言之,通过本实施例中的二进制转义操作,能够模拟执行进程的二进制指令,从而监控到进程调用了那些跟CPU漏洞相关的指令,如RDTSCP,CFLUSH,(CFLUSH是把内存从缓存cache里面清掉,RDTSCP主要是把CPU的时间读出来。通常,触发CPU漏洞时都会调用RDTSCP指令。该方式还能够监控进程访问了那些内存。由于操作系统本身不提供CPU指令级别的监控,所以传统的监测方式无法监测指令级别。
最后,为了便于理解,再以一个具体示例描述一下本实施例中的二进制转义的具体细节:首先,当进程a.exe启动的时候,本实施例中的监测系统会监控到,并根据a.exe的相关信息查询云服务器,以确定a.exe的安全等级,若等级为非安全,则会插入上文提到的用于实现二进制转义的DLL(即vm.dll)到a.exe中。当vm.dll插入到a.exe后,会代理进程执行,并转义,以便模拟执行a.exe的二进制。并且,当vm.dll在执行a.exe的二进制的时候,会监控记录a.exe的一些特定行为,如调用RDTSCP,CFLUSH指令等,一旦vm.dll发现a.exe触发了CPU漏洞的规则后,将会触发报警以进行处理。
图4示出了本发明又一实施例提供的一种基于虚拟机实现的CPU漏洞检测系统的系统结构图,如图4所示,所述系统包括:
第一监控模块41,适于在预设的虚拟机系统中将第一预设监控代码注入未知进程,所述第一预设监控代码获取与所述未知进程相对应的二进制指令;
转义模块42,适于按照预设的二进制转义规则,确定与所述二进制指令相对应的汇编指令;
虚拟漏洞防御模块43,适于通过虚拟机模拟CPU执行所述汇编指令,并根据预设的虚拟漏洞防御规则,检测模拟CPU执行的所述汇编指令是否为与CPU漏洞相关的指令;
宿主漏洞防御模块44,适于当检测结果为预设结果时,将所述未知进程的进程信息提供给预设的宿主系统,以便在所述预设的宿主系统中将第二预设监控代码注入所述未知进程,并根据预设的宿主漏洞防御规则,检测所述未知进程执行的指令是否为与CPU漏洞相关的指令。
可选的,所述第一监控模块41具体适于:
所述第一预设监控代码监测内存中的内存数据的变化量;
根据所述内存中的内存数据的变化量确定与所述未知进程相对应的二进制指令。
可选的,所述转义模块42进一步适于:
确定二进制指令与汇编指令之间的对应关系,根据所述对应关系设置所述二进制转义规则。
可选的,所述虚拟漏洞防御模块43具体适于:
通过虚拟机代理CPU执行所述汇编指令,并将执行结果反馈给所述未知进程。
可选的,所述第二预设监控代码用于获取所述未知进程中包含的各个线程以及所述各个线程执行的指令。
可选的,所述预设的虚拟漏洞防御规则和/或预设的宿主漏洞防御规则包括以下中的至少一个:
根据指令频率是否大于预设频率阈值进行防御的规则、以及根据指令序列和/或指令序列组合是否与预设的漏洞指令序列特征相匹配进行防御的规则。
可选的,所述预设的虚拟漏洞防御规则和/或预设的宿主漏洞防御规则中存储的预设的漏洞指令序列特征包括以下中的至少一个:
与缓存线清除指令相对应的指令序列特征、与读取时间标签计数器操作码指令相对应的指令序列特征、以及与读取TSC寄存器指令相对应的指令序列特征。
可选的,所述预设的漏洞指令序列特征包括以下指令序列和/或指令序列组合:
读取TSC寄存器指令、和/或清除指令;并且,两条读取TSC寄存器指令之间的指令为预设的漏洞特征指令;其中,所述预设的漏洞特征指令包括:数据传送指令。
可选的,所述第一预设监控代码和/或第二预设监控代码包括:动态链接库DLL文件,且所述动态链接库DLL文件用于实现虚拟CPU环境。
上述各个模块的具体结构和工作原理可参照方法实施例中相应步骤的描述,此处不再赘述。
本申请实施例提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的基于虚拟机实现的CPU漏洞检测方法。
图5示出了根据本发明实施例的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图5所示,该电子设备可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。
其中:
处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。
通信接口504,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器502,用于执行程序510,具体可以执行上述基于虚拟机实现的CPU漏洞检测方法实施例中的相关步骤。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
处理器502可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序510具体可以用于使得处理器502执行上述基于虚拟机实现的CPU漏洞检测方法实施例中的相关步骤。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的基于虚拟机实现的CPU漏洞检测系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (16)

1.一种基于虚拟机实现的CPU漏洞检测方法,包括:
在预设的虚拟机系统中将第一预设监控代码注入未知进程,所述第一预设监控代码获取与所述未知进程相对应的二进制指令;
按照预设的二进制转义规则,确定与所述二进制指令相对应的汇编指令;
通过虚拟机模拟CPU执行所述汇编指令,并根据预设的虚拟漏洞防御规则,检测模拟CPU执行的所述汇编指令是否为与CPU漏洞相关的指令;
当检测结果为预设结果时,将所述未知进程的进程信息提供给预设的宿主系统,以便在所述预设的宿主系统中将第二预设监控代码注入所述未知进程,并根据预设的宿主漏洞防御规则,检测所述未知进程执行的指令是否为与CPU漏洞相关的指令;
其中,所述预设的虚拟漏洞防御规则和/或预设的宿主漏洞防御规则包括以下中的至少一个:
根据指令频率是否大于预设频率阈值进行防御的规则、以及根据指令序列和/或指令序列组合是否与预设的漏洞指令序列特征相匹配进行防御的规则;
其中,所述预设的虚拟漏洞防御规则和/或预设的宿主漏洞防御规则中存储的预设的漏洞指令序列特征包括以下中的至少一个:
与缓存线清除指令相对应的指令序列特征、与读取时间标签计数器操作码指令相对应的指令序列特征、以及与读取TSC寄存器指令相对应的指令序列特征。
2.根据权利要求1所述的方法,其中,所述第一预设监控代码获取与所述未知进程相对应的二进制指令包括:
所述第一预设监控代码监测内存中的内存数据的变化量;
根据所述内存中的内存数据的变化量确定与所述未知进程相对应的二进制指令。
3.根据权利要求1所述的方法,其中,所述方法执行之前,进一步包括:
确定二进制指令与汇编指令之间的对应关系,根据所述对应关系设置所述二进制转义规则。
4.根据权利要求1所述的方法,其中,所述通过虚拟机模拟CPU执行所述汇编指令包括:
通过虚拟机代理CPU执行所述汇编指令,并将执行结果反馈给所述未知进程。
5.根据权利要求1所述的方法,其中,所述第二预设监控代码用于获取所述未知进程中包含的各个线程以及所述各个线程执行的指令。
6.根据权利要求1所述的方法,其中,所述预设的漏洞指令序列特征包括以下指令序列和/或指令序列组合:
读取TSC寄存器指令、和/或清除指令;并且,两条读取TSC寄存器指令之间的指令为预设的漏洞特征指令;其中,所述预设的漏洞特征指令包括:数据传送指令。
7.根据权利要求1-6任一所述的方法,其中,所述第一预设监控代码和/或第二预设监控代码包括:动态链接库DLL文件,且所述动态链接库DLL文件用于实现虚拟CPU环境。
8.一种基于虚拟机实现的CPU漏洞检测系统,包括:
第一监控模块,适于在预设的虚拟机系统中将第一预设监控代码注入未知进程,所述第一预设监控代码获取与所述未知进程相对应的二进制指令;
转义模块,适于按照预设的二进制转义规则,确定与所述二进制指令相对应的汇编指令;
虚拟漏洞防御模块,适于通过虚拟机模拟CPU执行所述汇编指令,并根据预设的虚拟漏洞防御规则,检测模拟CPU执行的所述汇编指令是否为与CPU漏洞相关的指令;
宿主漏洞防御模块,适于当检测结果为预设结果时,将所述未知进程的进程信息提供给预设的宿主系统,以便在所述预设的宿主系统中将第二预设监控代码注入所述未知进程,并根据预设的宿主漏洞防御规则,检测所述未知进程执行的指令是否为与CPU漏洞相关的指令;
其中,所述预设的虚拟漏洞防御规则和/或预设的宿主漏洞防御规则包括以下中的至少一个:
根据指令频率是否大于预设频率阈值进行防御的规则、以及根据指令序列和/或指令序列组合是否与预设的漏洞指令序列特征相匹配进行防御的规则;
其中,所述预设的虚拟漏洞防御规则和/或预设的宿主漏洞防御规则中存储的预设的漏洞指令序列特征包括以下中的至少一个:
与缓存线清除指令相对应的指令序列特征、与读取时间标签计数器操作码指令相对应的指令序列特征、以及与读取TSC寄存器指令相对应的指令序列特征。
9.根据权利要求8所述的系统,其中,所述第一监控模块具体适于:
所述第一预设监控代码监测内存中的内存数据的变化量;
根据所述内存中的内存数据的变化量确定与所述未知进程相对应的二进制指令。
10.根据权利要求8所述的系统,其中,所述转义模块进一步适于:
确定二进制指令与汇编指令之间的对应关系,根据所述对应关系设置所述二进制转义规则。
11.根据权利要求8所述的系统,其中,所述虚拟漏洞防御模块具体适于:
通过虚拟机代理CPU执行所述汇编指令,并将执行结果反馈给所述未知进程。
12.根据权利要求8所述的系统,其中,所述第二预设监控代码用于获取所述未知进程中包含的各个线程以及所述各个线程执行的指令。
13.根据权利要求8所述的系统,其中,所述预设的漏洞指令序列特征包括以下指令序列和/或指令序列组合:
读取TSC寄存器指令、和/或清除指令;并且,两条读取TSC寄存器指令之间的指令为预设的漏洞特征指令;其中,所述预设的漏洞特征指令包括:数据传送指令。
14.根据权利要求8-13任一所述的系统,其中,所述第一预设监控代码和/或第二预设监控代码包括:动态链接库DLL文件,且所述动态链接库DLL文件用于实现虚拟CPU环境。
15.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7任一所述的基于虚拟机实现的CPU漏洞检测方法对应的操作。
16.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7任一所述的基于虚拟机实现的CPU漏洞检测方法对应的操作。
CN201811614314.5A 2018-12-27 2018-12-27 基于虚拟机实现的cpu漏洞检测方法及系统 Active CN111444509B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811614314.5A CN111444509B (zh) 2018-12-27 2018-12-27 基于虚拟机实现的cpu漏洞检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811614314.5A CN111444509B (zh) 2018-12-27 2018-12-27 基于虚拟机实现的cpu漏洞检测方法及系统

Publications (2)

Publication Number Publication Date
CN111444509A CN111444509A (zh) 2020-07-24
CN111444509B true CN111444509B (zh) 2024-05-14

Family

ID=71655610

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811614314.5A Active CN111444509B (zh) 2018-12-27 2018-12-27 基于虚拟机实现的cpu漏洞检测方法及系统

Country Status (1)

Country Link
CN (1) CN111444509B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113378182B (zh) * 2021-07-13 2023-05-12 杭州安恒信息技术股份有限公司 一种提权漏洞检测方法、装置、设备及介质
CN116226859A (zh) * 2022-12-16 2023-06-06 杭州后量子密码科技有限公司 一种针对Meltdown漏洞精准动态分析检测方法和装置

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154258A (zh) * 2007-08-14 2008-04-02 电子科技大学 恶意程序动态行为自动化分析系统与方法
CN101923618A (zh) * 2010-08-19 2010-12-22 中国航天科技集团公司第七一○研究所 一种基于隐马尔可夫模型的汇编指令级漏洞检测方法
CN101964036A (zh) * 2010-10-29 2011-02-02 北京椒图科技有限公司 漏洞检测方法及装置
CN102043915A (zh) * 2010-11-03 2011-05-04 厦门市美亚柏科信息股份有限公司 一种非可执行文件中包含恶意代码的检测方法及其装置
US8225317B1 (en) * 2009-04-17 2012-07-17 Symantec Corporation Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines
WO2012154664A2 (en) * 2011-05-06 2012-11-15 University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting injected machine code
CN104915595A (zh) * 2015-06-30 2015-09-16 北京奇虎科技有限公司 云平台虚拟化漏洞修复的方法及装置
CN105204985A (zh) * 2014-06-23 2015-12-30 腾讯科技(深圳)有限公司 漏洞检测方法及装置
US9305147B1 (en) * 2015-06-08 2016-04-05 Flexera Software Llc Preventing license exploitation using virtual namespace devices
US9454659B1 (en) * 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods
US9530016B1 (en) * 2016-01-29 2016-12-27 International Business Machines Corporation Using source taint analysis to reduce false positives in an advanced persistent threat (APT) protection solution
CN106611122A (zh) * 2015-10-27 2017-05-03 国家电网公司 基于虚拟执行的未知恶意程序离线检测系统
CN106850582A (zh) * 2017-01-05 2017-06-13 中国电子科技网络信息安全有限公司 一种基于指令监控的apt高级威胁检测方法
CN107220544A (zh) * 2016-03-22 2017-09-29 趣斯特派普有限公司 用于检测感兴趣指令序列的系统和方法
CN107315961A (zh) * 2017-07-11 2017-11-03 北京奇虎科技有限公司 程序漏洞检测方法及装置、计算设备、存储介质
CN107450964A (zh) * 2017-08-10 2017-12-08 西安电子科技大学 一种用于发现虚拟机自省系统中是否存在漏洞的方法
CN107526970A (zh) * 2017-08-24 2017-12-29 安徽大学 基于动态二进制平台检测运行时程序漏洞的方法
CN108427576A (zh) * 2018-02-12 2018-08-21 华夏芯(北京)通用处理器技术有限公司 一种免受Spectre攻击的高性能推测执行算法
US10089461B1 (en) * 2013-09-30 2018-10-02 Fireeye, Inc. Page replacement code injection

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100175108A1 (en) * 2009-01-02 2010-07-08 Andre Protas Method and system for securing virtual machines by restricting access in connection with a vulnerability audit
US9083692B2 (en) * 2012-05-07 2015-07-14 Samsung Electronics Co., Ltd. Apparatus and method of providing security to cloud data to prevent unauthorized access
US9507935B2 (en) * 2014-01-16 2016-11-29 Fireeye, Inc. Exploit detection system with threat-aware microvisor
US10417065B2 (en) * 2016-06-13 2019-09-17 Dynatrace Llc Method and system for automated agent injection in container environments

Patent Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154258A (zh) * 2007-08-14 2008-04-02 电子科技大学 恶意程序动态行为自动化分析系统与方法
US8225317B1 (en) * 2009-04-17 2012-07-17 Symantec Corporation Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines
CN101923618A (zh) * 2010-08-19 2010-12-22 中国航天科技集团公司第七一○研究所 一种基于隐马尔可夫模型的汇编指令级漏洞检测方法
CN101964036A (zh) * 2010-10-29 2011-02-02 北京椒图科技有限公司 漏洞检测方法及装置
CN102043915A (zh) * 2010-11-03 2011-05-04 厦门市美亚柏科信息股份有限公司 一种非可执行文件中包含恶意代码的检测方法及其装置
WO2012154664A2 (en) * 2011-05-06 2012-11-15 University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting injected machine code
US10089461B1 (en) * 2013-09-30 2018-10-02 Fireeye, Inc. Page replacement code injection
CN105204985A (zh) * 2014-06-23 2015-12-30 腾讯科技(深圳)有限公司 漏洞检测方法及装置
US9454659B1 (en) * 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods
US9305147B1 (en) * 2015-06-08 2016-04-05 Flexera Software Llc Preventing license exploitation using virtual namespace devices
CN104915595A (zh) * 2015-06-30 2015-09-16 北京奇虎科技有限公司 云平台虚拟化漏洞修复的方法及装置
CN106611122A (zh) * 2015-10-27 2017-05-03 国家电网公司 基于虚拟执行的未知恶意程序离线检测系统
US9530016B1 (en) * 2016-01-29 2016-12-27 International Business Machines Corporation Using source taint analysis to reduce false positives in an advanced persistent threat (APT) protection solution
CN107220544A (zh) * 2016-03-22 2017-09-29 趣斯特派普有限公司 用于检测感兴趣指令序列的系统和方法
CN106850582A (zh) * 2017-01-05 2017-06-13 中国电子科技网络信息安全有限公司 一种基于指令监控的apt高级威胁检测方法
CN107315961A (zh) * 2017-07-11 2017-11-03 北京奇虎科技有限公司 程序漏洞检测方法及装置、计算设备、存储介质
CN107450964A (zh) * 2017-08-10 2017-12-08 西安电子科技大学 一种用于发现虚拟机自省系统中是否存在漏洞的方法
CN107526970A (zh) * 2017-08-24 2017-12-29 安徽大学 基于动态二进制平台检测运行时程序漏洞的方法
CN108427576A (zh) * 2018-02-12 2018-08-21 华夏芯(北京)通用处理器技术有限公司 一种免受Spectre攻击的高性能推测执行算法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
基于异常诊断的代码注入攻击自动分析和响应系统;李闻;戴英侠;连一峰;冯萍慧;鲍旭华;;软件学报;20080615(第06期);1519-1532 *
基于指令集随机化的代码注入型攻击防御技术;王奕森;舒辉;谢耀滨;赵利军;;计算机应用与软件;20160515(第05期);312-316 *
基于沙箱技术的恶意代码行为检测方法;童瀛;牛博威;周宇;张旗;;西安邮电大学学报;20180910(第05期);101-110 *
基于监控器时间开销的虚拟机发现方法;余冲;王振兴;郭浩然;刘慧生;;计算机工程;20091120(第22期);47-49 *

Also Published As

Publication number Publication date
CN111444509A (zh) 2020-07-24

Similar Documents

Publication Publication Date Title
US11716348B2 (en) Malicious script detection
CN106850582B (zh) 一种基于指令监控的apt高级威胁检测方法
US9792430B2 (en) Systems and methods for virtualized malware detection
US9251343B1 (en) Detecting bootkits resident on compromised computers
EP2774038B1 (en) Systems and methods for virtualization and emulation assisted malware detection
US10382468B2 (en) Malware identification via secondary file analysis
US11204998B2 (en) Detection and mitigation of fileless security threats
CN109597675B (zh) 虚拟机恶意软件行为检测方法及系统
CN107566401B (zh) 虚拟化环境的防护方法及装置
US20230262076A1 (en) Malicious domain generation algorithm (dga) detection in memory of a data processing unit using machine learning detection models
CN111444509B (zh) 基于虚拟机实现的cpu漏洞检测方法及系统
Win et al. Detection of malware and kernel-level rootkits in cloud computing environments
Xuan et al. Toward revealing kernel malware behavior in virtual execution environments
CN111382440B (zh) 基于虚拟机实现的cpu漏洞检测方法及系统
CN111444510A (zh) 基于虚拟机实现的cpu漏洞检测方法及系统
US9881155B2 (en) System and method for automatic use-after-free exploit detection
CN107517226B (zh) 基于无线网络入侵的报警方法及装置
CN111291368A (zh) Cpu漏洞的防御方法及系统
CN110674501B (zh) 恶意驱动检测方法、装置、设备及介质
US11763004B1 (en) System and method for bootkit detection
CN114640484A (zh) 网络安全对抗方法、装置和电子设备
CN111444508A (zh) 基于虚拟机实现的cpu漏洞检测装置及方法
US20230319108A1 (en) Malicious uniform resource locator (url) detection in memory of a data processing unit using machine learning detection models
US20230259625A1 (en) Ransomware detection in memory of a data processing unit using machine learning detection models
US20230259614A1 (en) Malicious activity detection in memory of a data processing unit using machine learning detection models

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