CN105683985A - 虚拟机内省 - Google Patents
虚拟机内省 Download PDFInfo
- Publication number
- CN105683985A CN105683985A CN201380080310.2A CN201380080310A CN105683985A CN 105683985 A CN105683985 A CN 105683985A CN 201380080310 A CN201380080310 A CN 201380080310A CN 105683985 A CN105683985 A CN 105683985A
- Authority
- CN
- China
- Prior art keywords
- file
- symbol
- introspection
- accessed
- memory
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 39
- 238000012545 processing Methods 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 9
- 230000000694 effects Effects 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims 1
- 238000012544 monitoring process Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 238000013459 approach Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 208000015181 infectious disease Diseases 0.000 description 1
- 230000000246 remedial effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
虚拟机内省可以包括:实施虚拟机硬盘映像的离线分析。可以在该离线分析期间定位与操作系统关联的核心操作系统文件。基于该核心操作系统文件,可以从符号服务器中访问操作系统结构符号。可以使用所访问的操作系统结构符号来实施该虚拟机的内省。
Description
背景技术
虚拟化的机器可以用于管理应用和服务。但是,恶意软件(例如,电脑病毒)可以安装在虚拟机(VM)上,并且用于破坏VM的操作、收集存储在VM上的信息和/或获得计算系统的访问权。恶意软件在复杂性和系统感染率方面已经增长。若不做防卫,则VM可能处于抵御恶意软件的风险中。
附图说明
图1图示根据本公开的用于虚拟机内省的环境的示例。
图2图示根据本公开的用于虚拟机内省的系统的示例的图。
图3图示根据本公开的用于虚拟机内省的计算设备的示例的图。
图4图示根据本公开的用于虚拟机内省的方法的示例的流程图。
具体实施方式
恶意软件可能对VM带来许多问题。结果,已经设计出一些方法来帮助防止出现这些问题。一些方法尝试检测计算系统上的恶意软件,以允许采取补救措施。为了检测恶意软件,一些方法依赖于安装系统内监视代理,该系统内监视代理可以实施系统内的文件和代码执行的分析。但是,这些监视代理本身可能处于恶意软件攻击的风险中,并且复杂恶意软件的许多片段在感染系统时尝试识别并禁用任何检测到的安全软件。
一些方法通过安装系统内监视代理来尝试保持对操作系统(OS)应用编程接口(API)的访问,系统内监视代理被保护以防恶意修改。系统内监视代理随后可以针对恶意软件的攻击而监视OS。但是,虽然此方法旨在保护系统内监视代理,仍可能是:该代理的存在可以被恶意软件检测到并且恶意软件能够改变该代理的行为,以使该代理在检测恶意软件时失效。
其它方法通过监视类似系统的组并且通过比较从每个类似系统拍摄的内存快照来检测可能由恶意软件引起的未知的或意料不到的系统行为,对恶意软件进行检测。但是,此方法假设在拍摄内存快照并实施其分析之前,系统是未受感染的。因此,如果在拍摄内存快照以及随后比较内存快照之前多个系统感染了恶意软件,那么这些系统可能似乎未被恶意软件感染。
此外,一些方法通过内存快照或通过VM内省来实施系统内存的分析。但是,在更新与系统关联的OS更新时,必须手动地更新与这些方法关联的软件,这可能使该系统直到可以实施该更新为止易受攻击。
本公开的示例可以包括:实施VM硬盘映像的离线分析。在该离线分析期间可以定位与OS关联的核心OS文件。可以基于该核心操作系统文件从符号服务器中访问OS结构符号。可以使用被访问的OS结构符号来实施VM的内省。
图1图示用于实施VM机内省(introspection)的环境。该环境可以包括主机系统102、管理器106、VM108、内省引擎110和生成的报告112。此外,该环境可以包括以下方法步骤:实施离线盘分析118,启动内省引擎116,以及启动虚拟机120。本公开的示例可以通过实施位于VM108之外的分析来检测VM108上的恶意软件。通过实施位于VM108之外的分析,可以避免与其它方法关联的潜在缺陷。例如,如本文讨论的,虽然一些方法使用系统内监视代理,但是该代理可能被恶意软件损坏。通过外部地实施分析,恶意软件可能没有机会影响正实施的分析。可以使用内省(introspection)来实施该分析,内省可以被限定为以下分析:该分析绕过VM的OS以直接从与VM关联的硬盘读取二进制数据。
由于从虚拟机外部(例如,绕过OS)解释该虚拟机的内存可能困难,所以挑战可能与实施内省关联。例如,与虚拟机关联的内存可以包括二进制信息,该二进制信息通常可以由与OS关联的应用编程接口解释。因此,当绕过应用编程接口时,二进制信息必须被转换成有意义的信息。本公开的示例可以访问包含OS结构符号的程序数据库,OS结构符号可以用于解释与VM的内存关联的二进制数据。
由于对OS进行更新,所以OS结构符号可能改变。因此,由于进行更新,所以已尝试使用内省的一些方法可能变得过时。这些方法可以包括手动地更新包含OS符号结构的注册表。但是,如本文讨论的,在实施手动更新之前的时间,VM108可能易受到恶意软件攻击。本公开的示例可以在更新包含OS结构符号的程序数据库时更新该OS结构符号。因此,在实施手动更新的时间段期间,虚拟机可以不易受到恶意软件攻击。
本公开的示例可以包括:在启动VM108之前,实施118VM硬盘映像的离线分析。在一些示例中,可以启动116内省引擎,以实施离线分析118。例如,可以由内省引擎110实施VM108的分析,并且可以在断开状态下并且在VM108的初始启动之前实施VM108的分析。一旦VM108处于在线状态(例如,连接),恶意软件就可能访问VM108并因此感染VM108。因此,通过离线地实施VM108的分析,恶意软件可能没有机会访问VM108。
在一些示例中,VM108硬盘映像的离线分析可以包括:在启动VM108之前,使用VM108硬盘映像生成文件偏移量(offset)。在一些示例中,由于在断开状态下并且在VM108的初始启动之前实施VM108硬盘映像的分析,所以可以根据未改变的和/或未访问的状态下的文件确定文件偏移量。因此,在一些示例中,在VM108启动时,可以在两个状态(例如,启动之前和启动之后)之间分析文件偏移量,以确定正在访问哪些文件。
在本公开的一些示例中,在实施118离线分析时并且在启动120VM108之前,可以定位与OS关联的核心OS文件。在一些示例中,可以基于VM108硬盘映像的离线分析来识别OS版本,并且可以基于OS版本定位核心OS文件。
核心OS文件可以包括内核编译版本、与OS关联的标识符、和/或程序数据库文件名。内核编译版本可以用于识别OS版本。在视窗OS的示例中,与OS关联的标识符可以包括全局唯一标识符。
本公开的示例可以在离线分析期间定位程序数据库文件名和与VM108的OS关联的标识符。通过在离线分析期间定位程序数据库文件名和与VM108的OS关联的标识符,恶意软件可能不会影响文件名和标识符的位置,恶意软件可能引起定位到不正确的程序数据库文件名和/或标识符。如本文讨论的,在视窗OS的示例中,与OS关联的标识符可以包括全局唯一标识符,该全局唯一标识符可以与程序数据库文件名一起用于访问程序数据库。程序数据库可以包含在程序和/或系统崩溃时使用的调试信息。此外,程序数据库可以包含OS结构定义,OS结构定义可以用于实施内省。
OS结构定义可以包括OS结构符号,OS结构符号可以用于解释与VM108关联的内存以及实施内省。本公开的示例可以使用程序数据库文件名和与VM108的OS关联的标识符来访问包含OS结构符号的程序数据库,以访问OS结构符号。可选地,可以基于OS版本来访问包含OS结构符号的程序数据库,以访问OS结构符号。
在一些示例中,程序数据库可以由操作系统用于与关联于VM108的内存接合。例如,与VM108关联的内存可以呈二进制形式。因此,OS可以通过使用包括在程序数据库中的OS结构定义(例如,OS结构符号)来读取与VM108关联的内存。
程序数据库可以位于与OS关联的文件系统中。例如,程序数据库可以存储在由VM108使用的内存中。可选地,程序数据库可以位于远离VM108的符号服务器中。符号服务器可以利用操作系统版本、程序数据库文件名和/或与VM的OS关联的标识符来联系。基于此信息,随后可以访问在符号服务器上的OS结构符号,和/或可以从符号服务器下载OS结构符号,以在实施内省时使用。
在示例中,在VM108使用视窗OS的情况下,可以如下那样访问程序数据库(例如,OS结构符号)。依据正在内省的VM108的配置,视窗OS可以使用四个特定内核中的一个。例如,针对没有物理地址扩展(PAE)的单处理器系统,可以定位文件ntoskrnl.exe以确定编译版本,使得可以从微软(例如,符号服务器)访问正确的程序数据库。针对没有PAE的多处理器系统,可以定位文件ntkrnlmp.exe以确定编译版本。针对具有PAE的单处理器系统,可以定位文件ntkrnlpa.exe以确定编译版本。针对具有PAE的多处理器系统,可以定位文件ntkrpamp.exe以确定编译版本。
为了在VM108的虚拟硬盘中定位正确的内核文件,可以分析该盘的主文件表,并且可以确定内核文件的位置,这可以在启动120VM之前实施。可以如下面那样分析该盘的主文件表,并且可以确定内核文件的位置。
在一些示例中,可以解析在主文件表中出现的所有文件记录,以查找以下文件记录:该文件记录含有包含特定内核文件(例如,ntoskrnl.exe)的属性。在定位含有特定属性的记录时,可以确定至该内核文件的路径是否正确。当确定正确的文件名和路径时,可以解析主文件表以定位数据属性,数据属性可以存储关于内核文件如何物理地存储在盘(例如,扇区、簇)上的信息。可以分析数据属性,并且可以访问数据属性中的信息,以定位位于盘上的内核文件的所有部分并且在内存中创建该文件的副本,可以向可移植可执行(PE)分析器发送该副本。
在示例中,由于新技术文件系统(NTFS)的设计方式的原因,文件可能不存储在连续的扇区中。因此,本公开的示例可以将内核文件的所有部分重建到数据的单个连续运行中。例如,微软视窗可以对例如可执行的文件(例如,.exe,.dll,等)使用PE格式。因此,PE解析器已被开发出以分析与OS关联的PE文件并从与OS关联的PE文件内提取信息。与程序数据库有关的PE文件的特定区域被称为调试目录。调试目录可以包含关于与PE文件关联的特定程序数据库的信息。该程序数据库由微软自己的调试器(例如,WinDBG)使用,使得可以在调试期间识别和使用内部结构(例如,符号)。
在一些示例中,在调试目录中包含的信息可以由程序数据库文件名(例如,ntkrnlmp.pdb,其是ntoskrnl.exe需要的)以及与OS关联的标识符构成,该标识符可以被称为微软视窗中的全局唯一标识符。程序数据库文件名以及与OS关联的标识符可以用于访问程序数据库。例如,可以从符号服务器访问程序数据库。可选地,如本文所用的,可以从与OS(例如,在LinuxOS中)关联的文件系统访问程序数据库。
在一些示例中,在已经访问程序数据库之后,可以启动120VM108。在一些示例中,VM108可以由主机系统102管理。主机系统102可以是具有在其上运行的管理器106的物理服务器或计算机。管理器106可以是提供虚拟化环境的软件,在该虚拟化环境中,软件(包括操作系统)可以以对底层系统硬件的完全访问权的表象运行,但事实上,这样的访问权受管理器控制。
本公开的示例可以包括:分配主机系统102内存的与VM108关联的部分,以实施VM108的内省。在示例中,在创建VM108期间,管理器106可以分配与主机系统102关联的内存区域(例如,单个区域)以供VM108使用。因此,该内存区域可以用于实施内省。
本公开的示例可以包括:使用被访问的OS结构符号来实施VM108的内省。在一些示例中,本公开可以通过使用被访问的OS结构符号实施VM108的内省,检测在VM108的内存中是否存在恶意软件。例如,可以使用OS结构符号来解释与VM108关联的内存。如本文所讨论的,在系统内监视代理可以使用与OS关联的应用编程接口来读取与VM108关联的内存。但是,由于恶意软件能够隐藏信息和/或通过应用编程接口向系统内监视代理传递错误信息,所以恶意软件可以改变系统内监视代理具有的观点。例如,恶意软件可以修改应用编程接口和/或操控内核数据结构。
在VM108的内省期间,通过使用OS结构符号来解释在从盘发出/向盘发送的输入/输出请求中包含的二进制数据,可以监视与VM关联的盘活动(例如,读取、写入)。例如,使用OS结构符号来解释二进制数据,可以监视内核内存。如本文讨论的通过使用所生成的文件偏移量,可以确定OS当前正在访问哪些文件。当OS访问文件时,可以改变与文件关联的偏移量。因此,通过将在启动VM108之前生成的所生成的文件偏移量(例如,最初生成的文件偏移量)与所监视的盘活动(例如,在启动VM108并访问文件从而引起偏移量变化之后的文件偏移量)作比较,确定当前正在访问什么文件。此外,由于绕过了OS,所以安装的恶意软件不能导致隐藏访问的文件以不被查看。因此,不能掩盖恶意软件的存在。
在一些示例中,管理器106可以干预处理在VM108内发生的特定事件(例如,页面故障)。利用管理器106的干预可以通过VM108控制命令来触发。在视窗OS的示例中,VM108控制命令可以包括vmexit指令,该vmexit指令引起将执行的控制传递给管理器106,管理器106可以实施操作并且利用关联的vmenter指令向VM108返回控制。管理器106可以利用控制命令操纵器来操纵VM108控制命令。本公开的示例可以包括:修改管理器106控制命令操纵器,以通过该管理器106控制命令操纵器来检测VM108的内存的改变。例如,被修改的管理器106控制命令操纵器可以访问与VM108关联的内存,并且允许内省引擎110分析与VM108关联的内存。
在一些示例中,可以通过修改由管理器106执行的管理器106控制命令操纵器,访问与VM108的内存关联的二进制数据。如本文讨论的,由于VM108的内存未由应用编程接口解释,所以在访问VM108的内存时,数据可以呈二进制形式。在处理VM108控制命令时,被修改的管理器106控制命令操纵器可以访问与VM108内存关联的二进制数据。随后,该数据可以由管理器106向内省引擎110传递,并且被访问的OS结构符号可以用于解释该二进制数据。
通过解释该二进制数据,本公开的示例可以使用内省来确定正在VM108上活跃地运行的进程。因此,即使为了掩盖与恶意软件关联的运行进程,恶意软件对应用编程接口进行了改变,但是由于可以绕过该应用编程接口并且可以通过内省读取原二进制数据,所以本公开的示例仍可以检测恶意软件。因此,本公开的示例可以通过使用被访问的OS结构符号实施VM108的内省,检测在VM108的内存中是否存在恶意软件。
在一些示例中,与VM108控制结构关联的管理功能可以用于提取VM108中央处理单元状态信息。VM108控制结构可以用于维护VM108控制命令(例如,vmexit、vmenter)之间的转换。如果是引起将控制的执行传递给管理器106的VM108控制命令(例如,vmexit),可以记录主机系统102和VM108中央处理单元状态,使得能够在接下来的将控制返回给VM108的VM108控制命令(例如,vmenter)时恢复它们。与管理器内存在的VM108控制结构关联的管理功能能够提取VM108中央处理单元状态信息。在示例中,可以提取模式特定寄存器的值,该模式特定寄存器可以存储OS配置数据,如内核内存位置和用于使能/禁用硬件特征的标志。
在一些示例中,在对视窗OS实施内省的情况中,内省可以始于内核处理器控制区(KPCR)的位置,内核处理器控制区(KPCR)是一种可以包含内核特定数据和指向其它控制结构的指针的结构。在VM108创建KPCR时,OS可以存储KPCR的物理地址,并且管理器可以通过对管理器106控制命令操纵器(例如,管理器vmexit操纵器)的修改,检测KPCR的创建。一旦管理器106已检测到KPCR的创建,KPCR的物理地址就可以被传递给内省引擎110。
作为响应,内省引擎110可以定位OS页面表,OS页面表可以用于实施虚拟至物理的地址转换。OS页面表的基础地址可以存储在中央处理单元的寄存器中,以及辅内核结构(例如,内核处理器区控制块(KPRCB))中。
为了确定结构内组元的正确偏移量,内省引擎可以生成KPCR的内存内哈希图,该内存内哈希图可以通过解析从程序数据库访问的OS结构符号并且记录每个组元的偏移量、名称和类型来生成。为了显示当前活跃进程的列表,可以定位OS内核调试结构(例如,KDDEBUGGER_DATA64(KDBG))。在定位KDBG时,可以解析KDBG的组元,以定位活跃进程的OS维护的双重链接列表。
可以通过EPROCESS结构来引用OS中的每个活跃进程,EPROCESS结构可以包含与关联于每个活跃进程的当前系统活动有关的数据,数据包括活跃线程数、当前内存使用情况以及唯一的数字标识符。由于每个EPROCESS结构在双重链接列表中,所以各自包含至列表中的下一进程的链接(例如,正向链接)和该列表中的前一进程的链接(例如,后向链接)。因此,可以通过跟随该列表中的每个正向链接后面,解析每个活跃进程。此外,可以监视当前执行的线程,并且通过将当前正在执行的线程与EPROCESS链接的列表中被访问的数据相比较,可以识别可能隐藏的进程(例如,恶意软件)。
本公开的示例可以包括:在更新程序数据库时,接收与被访问的OS结构符号关联的更新。作为OS更新的结果,OS结构符号可以改变。例如,OS更新可以更新OS的功能和/或调试OS。但是,在更新OS的过程中,还可以更新OS结构符号。通过应用编程接口访问与OS关联的内存时,可以应用更新,并且可以正确地解释内存。但是,如果在读取与VM108关联的内存时绕过应用编程接口,则过时的OS结构符号可以用于解释内存,这可能引起不正确的内存读取。
因此,在一些示例中,内省引擎110可以访问更新的OS结构符号。例如,当从服务器(例如,微软公共符号服务器)访问OS结构符号时,可以从该服务器中访问更新的OS结构符号,和/或从该服务器下载更新的OS结构符号。在一些示例中,可以对内省引擎110通知OS结构符号的更新可以获得,并且可以自动地和/或手动地(例如,在收到提示时)下载和/或访问更新的OS结构符号。可选地,如果从与OS关联的文件系统中访问OS结构符号,则在更新发生时,可以从该文件系统下载和/或访问该文件系统的更新的OS结构符号。
在一些示例中,可以在服务器和/或文件系统上以规则的时间间隔更新OS结构符号。因此,本公开的一些示例可以以规则的时间间隔检查更新。例如,对微软公共符号服务器的更新可以在星期二发生,并且在该更新以后,内省引擎110可以自动地访问微软公共符号服务器,以访问更新的OS结构符号。
本公开的示例可以包括生成的报告112。生成的报告112可以包括由内省引擎110实施的VM108的分析。如本文讨论的,该分析可以通过使用被访问的OS结构符号实施的VM的内省,检测在VM108的内存中是否存在恶意软件。在一些示例中,所生成的报告还可以包括用于移除和/或隔离恶意软件的功能,并且可以在图形用户界面上显示。
图2图示根据本公开的用于虚拟机内省的系统222的示例的图。系统222可以包括数据储存器224、内省系统226和/或多个引擎。系统222可以与数据储存器224通信。在一些示例中,内省系统226可以包括多个引擎(例如,实施分析引擎228、定位引擎230、访问引擎232、内省引擎234等)。多个引擎可以包括用于实施本文提供的功能的硬件和/或硬件和程序的组合。内省系统226可以包括比图示的用于指示各种功能的引擎更多或更少的引擎。
实施分析引擎228可以在启动VM之前实施VM硬盘映像的离线分析。在一些示例中,可以在启动VM之前采集和分析硬盘的映像以生成文件偏移量。该偏移量可以用于基于所生成的文件偏移量与被监视的VM盘活动的比较,确定OS正访问的文件。
定位引擎230可以在离线分析期间定位程序数据库文件名和与VM的OS关联的标识符。在一些示例中,程序数据库可以位于(例如,VM之外的)服务器上。可选地,程序数据库可以位于与(例如,VM内部的)OS关联的文件系统中。
访问引擎可以使用程序数据库文件名和与VM的OS关联的标识符,访问包含OS结构符号的程序数据库。通常,与OS关联的应用编程接口可以用于读取与内存关联的二进制数据。但是,当在内省期间绕过应用编程接口时,数据呈必须要解释的二进制形式。因此,本公开的示例可以访问在程序数据库中存储的OS结构符号,OS结构符号可以用于解释二进制数据。
内省引擎234可以通过使用被访问的OS结构符号实施VM的内省,检测在VM的内存中是否存在恶意软件。在一些示例中,可以在不使用应用编程接口的情况下读取与VM关联的内存。因此,在通过对系统内监视代理和/或应用编程接口做出的改变而未检测到运行的恶意软件不可能影响内存的情况下,可以读取内存。
图3图示根据本公开的用于为客户提供资源的计算设备336的示例的图。计算设备336可以使用软件、硬件、固件和/或逻辑来实施本文描述的多个功能。
计算设备336可以是用于共享信息的硬件和指令的组合。例如,硬件可以包括处理资源338和/或内存资源342(例如,计算机可读介质(CRM)、数据库等等)。如本文所用的,处理资源338可以包括能够执行由内存资源342存储的指令的多个处理器。处理资源338可以集成在单个设备中或分布在多个设备上。指令(例如,计算机可读指令(CRI))可以包括在内存资源342上存储的并且可由处理资源338执行的用于实现特定功能(例如,虚拟机内省等)的指令。
内存资源342可以与处理资源338通信。如本文所用的,内存资源342可以包括能够存储可由处理资源338执行的指令的多个内存组件。这样的内存资源342可以是非暂时性的CRM。内存资源342可以集成在单个设备中或分布在多个设备上。此外,内存资源342可以全部或部分集成在与处理资源338相同的设备中,或其可以与该设备和处理资源338分离但可由该设备和处理资源338访问。因此,注意到,计算设备336可以在用户设备和/或一组用户设备上实现,在移动设备和/或一组移动设备上实现,和/或在用户设备和移动设备的组合上实现。
内存资源342可以经由通信链路340(例如,路径)与处理资源338通信。通信链路340可以相对于与处理资源338关联的计算设备位于本地或外地。本地通信链路340的示例可以包括位于计算设备内部的电子总线,其中内存资源342是经由电子总线与处理资源338通信的易失性存储介质、非易失性存储介质、固定存储介质和/或可移除存储介质中的一个。
内存资源342可以包括多个模块,如实施分析模块344、定位模块346、访问模块348以及实施内省模块350。多个模块344、346、348、350可以包括CRI,该CRI在被处理资源338执行时可以实施多个功能。多个模块344、346、348、350可以是其它模块的子模块。例如,实施分析模块344和实施分析引擎228可以是子模块和/或包含在相同的计算设备中。在另一示例中,多个模块344、346、348、350可以包括位于分离且不同位置处的单独模块(例如,CRM等)。
多个模块344、346、348、350中的每个包括指令,该指令在由处理资源338执行时可以担当本文描述的对应的引擎。例如,实施内省模块350可以担当内省引擎234,并且实施内省模块350可以使用被访问的OS结构符号实施VM的内省。
图4图示根据本公开的用于VM内省的方法的示例的流程图。该方法可以包括:在启动VM之前,实施452VM硬盘映像的离线分析。如本文讨论的,该分析可以在断开状态下并且在VM的初始启动之前实施。一旦VM处于在线状态,恶意软件就可能访问VM并且因此感染VM。因此,通过离线地实施VM的分析,恶意软件不可能有机会访问VM108。此外,由于在启动VM之前实施VM硬盘映像的分析,所以如果任何恶意软件已感染了VM,则由于VM仍未启动,恶意软件将不会运行。
该方法可以包括:在离线分析期间定位454程序数据库文件名和与VM的OS关联的标识符。在一些示例中,程序数据库可以包括OS结构符号,OS结构符号可以用于解释与VM关联的内存。因此,定位程序数据库文件名和与VM的OS关联的标识符可以确保识别出正确的程序数据库并且因此识别出正确的OS结构符号。
该方法可以包括:使用程序数据库文件名和与VM的OS关联的标识符来访问456包含OS结构符号的程序数据库。在一些示例中,OS结构符号可以用于解释与VM的内存关联的二进制数据。如本文讨论的,本公开的示例可以在不使用应用编程接口和/或系统内监视代理的情况下读取与VM关联的内存。因此,即使恶意软件感染应用程序接口和/或系统内监视代理,也由于未使用该应用编程接口和/或系统内监视代理,所以确定恶意软件的准确性不会受到影响。
该方法可以包括:通过关联的管理器访问458与VM的内存关联的二进制数据。在一些示例中,可以修改管理器控制命令操纵器,以通过该管理器控制命令操纵器来检测对VM的内存的改变。管理器控制命令操纵器可以访问与VM关联的内存,以允许访问二进制数据,该二进制数据可以使用OS结构符号读取。在一些示例中,经修改的管理器控制命令操纵器可以记录与VM的中央处理单元关联的状态。可以分析与VM的中央处理单元关联的状态,以确定VM正在运行的进程和/或正在使用与VM关联的内存的进程。
该方法可以包括:使用OS结构符号来解释460与VM的内存关联的二进制数据。可以从程序数据库访问OS结构符号,并且该OS结构符号可以是由与VM关联的OS用于读取内存的OS结构符号相同OS结构符号。因此,在读取VM的内存时,可以绕过应用编程接口。
该方法可以包括:基于二进制数据的解释,检测462VM的内存中是否存在恶意软件。在一些示例中,通过使用与OS相同的OS结构符号,OS可以以VM的内存将表现的那样读取VM的内存。但是,由于在VM之外实施内省,所以恶意软件不能干扰与内存的读取,这可能影响是否存在恶意软件的确定准确性。
如本文所用的,“逻辑”用于实施本文描述的特定动作和/或功能等的替代的或附加的处理资源,逻辑包括硬件(例如,各种晶体管逻辑、专用集成电路(ASIC)等),而不包括在内存中存储的并可由处理器执行的计算机可执行指令(例如,软件固件等)。
如本文所用的,“一”或“多”等可以指一个或多个这样的东西。例如,“多个小工具”可以指一个或多个工具。
在本公开中,参照附图,附图形成本公开的一部分并且在附图中通过图示示出如何可以实施本公开的多个示例。足够详细地描述这些示例,以使本领域技术人员能够实施本公开的示例,并且将理解,可以使用其它示例,并且可以作出该过程的、电的和/或结构的改变,而不脱离本公开的范围。
本文的图遵循编号惯例,其中第一位数字对应于图编号,并且其它数字识别图中的元件或组件。可以增加、交换和/或去除本文的各图中示出的元件,以提供本公开的多个额外示例。此外,图中提供的元件的比例和相对尺寸的目的在于说明本公开的示例,而不应从限制的意义上去理解。
说明书示例提供本公开的系统和方法的应用和使用的描述。由于可以在不脱离本公开的系统和方法的精神和范围的情况下做出许多示例,所以本说明书阐述许多可能的示例配置和实现方式中的一些。
Claims (15)
1.一种存储指令的非暂时性计算机可读介质,所述指令可由计算机执行以使所述计算机进行以下操作:
实施虚拟机(VM)硬盘映像的离线分析;
在所述离线分析期间,定位与操作系统(OS)关联的核心OS文件;
基于所述核心OS文件,从符号服务器访问OS结构符号;以及
使用所访问的OS结构符号来实施所述VM的内省。
2.根据权利要求1所述的介质,包括可执行以进行以下操作的指令:使用所访问的OS结构符号来读取所述VM的内存。
3.根据权利要求1所述的介质,包括可执行以进行以下操作的指令:在更新所述符号服务器时接收与所访问的OS结构符号关联的更新。
4.根据权利要求1所述的介质,其中在启动所述VM之前,与所述OS关联的所述核心OS文件被定位。
5.根据权利要求1所述的介质,包括可执行以进行以下操作的指令:
修改管理器控制命令操纵器;以及
通过所述管理器控制命令操纵器,检测对所述VM的内存的改变。
6.根据权利要求1所述的介质,包括可执行以进行以下操作的指令:
在所述离线分析期间识别OS版本;以及
基于所述OS版本,定位与所述OS关联的核心OS文件。
7.根据权利要求1所述的介质,其中所述OS结构符号是基于OS版本而从所述符号服务器访问的。
8.根据权利要求1所述的介质,包括可执行以进行以下操作的指令:使用与VM控制结构关联的管理函数提取VM中央处理单元状态信息。
9.一种系统,包括:
实施分析引擎,用于在启动虚拟机(VM)之前实施VM硬盘映像的离线分析;
定位引擎,用于在所述离线分析期间定位程序数据库文件名和与所述VM的操作系统(OS)关联的标识符;
访问引擎,用于使用所述程序数据库文件名和与所述VM的OS关联的标识符来访问包含OS结构符号的程序数据库;以及
内省引擎,用于通过使用所访问的OS结构符号实施所述VM的内省,检测所述VM的内存中是否存在恶意软件。
10.根据权利要求9所述的系统,包括用于进行以下操作的引擎:分配主机内存的与所述VM关联的部分来实施所述VM的内省。
11.根据权利要求9所述的系统,包括用于进行以下操作的引擎:
在启动所述VM之前,使用所述VM硬盘映像生成文件偏移量;
监视VM盘活动;以及
基于所生成的文件偏移量和所监视的VM盘活动的比较,确定所述OS正在访问的文件。
12.根据权利要求11所述的系统,其中所述程序数据库位于与所述OS关联的文件系统中。
13.一种用于虚拟机(VM)内省的方法,包括:
在启动所述VM之前,实施VM硬盘映像的离线分析;
在所述离线分析期间,定位程序数据库文件名和与所述VM的操作系统(OS)关联的标识符;
使用所述程序数据库文件名和与所述VM的所述OS关联的标识符,访问包含OS结构符号的程序数据库;
通过关联的管理器访问与所述VM的内存关联的二进制数据;
使用所述OS结构符号来解释与所述VM的内存关联的所述二进制数据;以及
基于所述二进制数据的解释,检测在所述VM的内存中是否存在恶意软件。
14.根据权利要求13所述的方法,其中所述方法包括:通过修改管理器控制命令操纵器,访问与所述VM的内存关联的所述二进制数据。
15.根据权利要求14所述的方法,其中所修改的管理器控制命令操纵器记录与所述VM的中央处理单元关联的状态。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/067219 WO2015065330A1 (en) | 2013-10-29 | 2013-10-29 | Virtual machine introspection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105683985A true CN105683985A (zh) | 2016-06-15 |
CN105683985B CN105683985B (zh) | 2018-12-21 |
Family
ID=53004751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380080310.2A Active CN105683985B (zh) | 2013-10-29 | 2013-10-29 | 用于虚拟机内省的系统、方法及非暂时性计算机可读介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10089474B2 (zh) |
EP (1) | EP3063692B1 (zh) |
CN (1) | CN105683985B (zh) |
WO (1) | WO2015065330A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107450964A (zh) * | 2017-08-10 | 2017-12-08 | 西安电子科技大学 | 一种用于发现虚拟机自省系统中是否存在漏洞的方法 |
CN113312170A (zh) * | 2020-05-29 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 内存管理系统及方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210026950A1 (en) * | 2016-03-07 | 2021-01-28 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
US10248668B2 (en) * | 2016-07-18 | 2019-04-02 | International Business Machines Corporation | Mapping database structure to software |
US10885157B2 (en) | 2017-04-03 | 2021-01-05 | International Business Machines Corporation | Determining a database signature |
KR20220077694A (ko) * | 2020-12-02 | 2022-06-09 | 삼성전자주식회사 | 하이퍼바이저를 이용한 가상 머신 모니터링 방법 및 이를 지원하는 전자 장치 |
US20230037087A1 (en) * | 2021-07-30 | 2023-02-02 | Cado Security, Ltd. | Memory forensics with dynamic profile generation for cloud environments |
WO2024193804A1 (en) * | 2023-03-20 | 2024-09-26 | Huawei Cloud Computing Technologies Co., Ltd. | Hypervisor controller, virtual machine controller, and methods to operate in virtual machine environment |
US20240330456A1 (en) * | 2023-03-29 | 2024-10-03 | Wiz, Inc. | Techniques for agentless vulnerability inspection in on-premises computing environments |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080263658A1 (en) * | 2007-04-17 | 2008-10-23 | Microsoft Corporation | Using antimalware technologies to perform offline scanning of virtual machine images |
US20080320594A1 (en) * | 2007-03-19 | 2008-12-25 | Xuxian Jiang | Malware Detector |
US20120278295A1 (en) * | 2011-04-29 | 2012-11-01 | International Business Machines Corporation | Disk image introspection for storage systems |
CN103077071A (zh) * | 2012-12-31 | 2013-05-01 | 北京启明星辰信息技术股份有限公司 | 一种kvm虚拟机进程信息的获取方法及系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7409719B2 (en) | 2004-12-21 | 2008-08-05 | Microsoft Corporation | Computer security management, such as in a virtual machine or hardened operating system |
US8195980B2 (en) | 2009-03-31 | 2012-06-05 | Oracle America, Inc. | Virtual machine snapshotting and damage containment |
US8850512B2 (en) * | 2011-10-13 | 2014-09-30 | Mcafee, Inc. | Security assessment of virtual machine environments |
US9529614B2 (en) * | 2012-03-05 | 2016-12-27 | Board Of Regents The University Of Texas Systems | Automatically bridging the semantic gap in machine introspection |
US10572665B2 (en) * | 2012-12-28 | 2020-02-25 | Fireeye, Inc. | System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events |
US8875295B2 (en) * | 2013-02-22 | 2014-10-28 | Bitdefender IPR Management Ltd. | Memory introspection engine for integrity protection of virtual machines |
US20140372717A1 (en) * | 2013-06-18 | 2014-12-18 | Microsoft Corporation | Fast and Secure Virtual Machine Memory Checkpointing |
US9536091B2 (en) * | 2013-06-24 | 2017-01-03 | Fireeye, Inc. | System and method for detecting time-bomb malware |
US9117080B2 (en) * | 2013-07-05 | 2015-08-25 | Bitdefender IPR Management Ltd. | Process evaluation for malware detection in virtual machines |
-
2013
- 2013-10-29 EP EP13896266.7A patent/EP3063692B1/en active Active
- 2013-10-29 WO PCT/US2013/067219 patent/WO2015065330A1/en active Application Filing
- 2013-10-29 US US15/021,032 patent/US10089474B2/en active Active
- 2013-10-29 CN CN201380080310.2A patent/CN105683985B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320594A1 (en) * | 2007-03-19 | 2008-12-25 | Xuxian Jiang | Malware Detector |
US20080263658A1 (en) * | 2007-04-17 | 2008-10-23 | Microsoft Corporation | Using antimalware technologies to perform offline scanning of virtual machine images |
US20120278295A1 (en) * | 2011-04-29 | 2012-11-01 | International Business Machines Corporation | Disk image introspection for storage systems |
CN103077071A (zh) * | 2012-12-31 | 2013-05-01 | 北京启明星辰信息技术股份有限公司 | 一种kvm虚拟机进程信息的获取方法及系统 |
Non-Patent Citations (1)
Title |
---|
JONAS PFOH,ET AL: "A Formal Model for Virtual Machine Introspection", 《PROCEEDINGS OF THE FIRST ACM WORKSHOP ON VIRTUAL MACHINE SECURITY》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107450964A (zh) * | 2017-08-10 | 2017-12-08 | 西安电子科技大学 | 一种用于发现虚拟机自省系统中是否存在漏洞的方法 |
CN107450964B (zh) * | 2017-08-10 | 2020-05-05 | 西安电子科技大学 | 一种用于发现虚拟机自省系统中是否存在漏洞的方法 |
CN113312170A (zh) * | 2020-05-29 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 内存管理系统及方法 |
CN113312170B (zh) * | 2020-05-29 | 2024-01-23 | 阿里巴巴集团控股有限公司 | 内存管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3063692B1 (en) | 2019-07-24 |
WO2015065330A1 (en) | 2015-05-07 |
US10089474B2 (en) | 2018-10-02 |
US20160224794A1 (en) | 2016-08-04 |
EP3063692A4 (en) | 2017-05-31 |
CN105683985B (zh) | 2018-12-21 |
EP3063692A1 (en) | 2016-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8387046B1 (en) | Security driver for hypervisors and operating systems of virtualized datacenters | |
Stüttgen et al. | Anti-forensic resilient memory acquisition | |
US10089474B2 (en) | Virtual machine introspection | |
Dolan-Gavitt et al. | Virtuoso: Narrowing the semantic gap in virtual machine introspection | |
US9529614B2 (en) | Automatically bridging the semantic gap in machine introspection | |
RU2691187C1 (ru) | Система и способы аудита виртуальной машины | |
US9779240B2 (en) | System and method for hypervisor-based security | |
US12158947B2 (en) | Malware analysis through virtual machine forking | |
US8266395B2 (en) | Detecting attempts to change memory | |
Fu et al. | Exterior: Using a dual-vm based external shell for guest-os introspection, configuration, and recovery | |
Latzo et al. | A universal taxonomy and survey of forensic memory acquisition techniques | |
Oyama | Trends of anti-analysis operations of malwares observed in API call logs | |
US20130227680A1 (en) | Automated protection against computer exploits | |
US20110246986A1 (en) | Virtual Machine Crash File Generation Techniques | |
KR20140033169A (ko) | 가상 머신 이미지 분석 기법 | |
CN103310152B (zh) | 基于系统虚拟化技术的内核态Rootkit检测方法 | |
US20160232354A1 (en) | System memory integrity monitoring | |
CN103399812A (zh) | 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法 | |
Vokorokos et al. | Application security through sandbox virtualization | |
Westphal et al. | VMI-PL: A monitoring language for virtual platforms using virtual machine introspection | |
CN107450964A (zh) | 一种用于发现虚拟机自省系统中是否存在漏洞的方法 | |
CN109597675A (zh) | 虚拟机恶意软件行为检测方法及系统 | |
Uroz et al. | Characteristics and detectability of Windows auto-start extensibility points in memory forensics | |
US20170053118A1 (en) | Changed Block Tracking Driver for Agentless Security Scans of Virtual Disks | |
CN111428240B (zh) | 一种用于检测软件的内存违规访问的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |