CN107391234A - 一种基于vmi的文件系统细粒度监控方法 - Google Patents

一种基于vmi的文件系统细粒度监控方法 Download PDF

Info

Publication number
CN107391234A
CN107391234A CN201710681503.3A CN201710681503A CN107391234A CN 107391234 A CN107391234 A CN 107391234A CN 201710681503 A CN201710681503 A CN 201710681503A CN 107391234 A CN107391234 A CN 107391234A
Authority
CN
China
Prior art keywords
pointer
virtual machine
file
file system
pointing
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
Application number
CN201710681503.3A
Other languages
English (en)
Other versions
CN107391234B (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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN201710681503.3A priority Critical patent/CN107391234B/zh
Publication of CN107391234A publication Critical patent/CN107391234A/zh
Application granted granted Critical
Publication of CN107391234B publication Critical patent/CN107391234B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation 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)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于VMI的文件系统细粒度监控方法,当虚拟机内程序发生了文件系统调用时,涉及特权指令或物理硬件的访问,会陷入虚拟机管理器,并将控制权返还虚拟机管理器,然后对这些指令进行模拟。在模拟过程中,虚拟机管理器能够获得虚拟机操作系统的内存页面和寄存器信息。依据虚拟机操作系统数据结构信息,本发明能够对这些内存和寄存器信息进行细粒度的语义还原,最终获得虚拟机内部视图,具有良好的可视性。解决了现有技术中VMI系统无法提供对虚拟机文件系统的细粒度监控功能的问题,本发明用于实时监控Linux文件系统的活动,可以保护Linux文件系统的安全。

Description

一种基于VMI的文件系统细粒度监控方法
技术领域
本发明属于计算机科学与技术领域,涉及虚拟机文件系统的监控,尤其涉及一种基于VMI的文件系统细粒度监控方法。
背景技术
在对虚拟机操作系统进行安全监控时,基于主机的入侵检测系统被部署在虚拟机内部,能够获得客户机(即虚拟机)操作系统的完整视图信息,具有良好的可视性。但是,由于监控系统和被监控对象处于同一个地址空间,隔离性较差,容易被恶意程序绕过。而基于网络的入侵检测系统被部署在虚拟机的外部,通常在网络出口处,监控系统与虚拟机之间具备了良好的隔离性,但是监控系统很难获得虚拟机内部的信息,可视性较差。
斯坦福大学的研究者将两种入侵检测系统的优点进行结合,提出了VMI(VirtualMachine Introspection,虚拟机自省)技术[Garfinkel et al.,NDSS 2003]。在VMI系统中,监控系统运行在虚拟机下面的虚拟机管理器上,位于客户机操作系统外部,具备了良好的隔离性。与此同时,虚拟机管理器为VMI提供了能够直接检查被监控虚拟机的硬件级别状态(比如物理内存页面、寄存器和硬盘等)和事件(比如系统调用和中断等)的能力,并且能基于先前的数据结构和相关知识对捕获到的信息进行语义还原,由此获得了良好的可视性。VMI技术极大地推动了虚拟化安全系统的发展。
VMI技术被提出之后,多个基于VMI的安全系统被相继开发出来,比较知名的包括微软研究院开发的Strider GhostBuster[Wang et al.,DSN2005]、乔治梅森大学开发的VMwatcher[Jiang et al.,CCS 2007]和乔治亚理工学院开发的XenAccess[Payne et al.,ACSAC 2007]等。Strider GhostBuster是一种通过将虚拟机内部视图和虚拟机外部视图进行比较,进而发现恶意文件/进程/模块的方法,但它并没有提供对文件操作(比如创建文件、删除文件、读写文件等)的监控功能。VMwatcher通过采用“guest view casting”方法对虚拟机内部的关键数据结构进行语义重构,监控虚拟机内存页面和虚拟机文件系统信息。但是,VMwatcher仅仅能够对虚拟机文件静态内容进行语义还原,而无法监控动态的文件操作(比如创建文件、删除文件、读写文件等)。XenAccess基于Xen虚拟机管理器开发,包含了两个组成部分,分别是虚拟机内存自省部分(监控虚拟机内部内存页面信息)和虚拟机硬盘自省部分(监控虚拟机文件系统信息)。但是,XenAccess对客户机文件系统的监控功能很不完善,仅仅能够监控文件/目录的创建和删除两种操作,而不能对文件的其他活动进行监控。并且,XenAccess对文件目录的创建和删除操作也仅仅能够监控到相关的事件,而无法提供细粒度的详细信息。
综上所述,现有的VMI系统无法提供对虚拟机文件系统的细粒度监控功能。
发明内容
本发明的目的在于提供一种基于VMI的文件系统细粒度监控方法,解决了现有技术中VMI系统无法提供对虚拟机文件系统的细粒度监控功能的问题,本发明用于实时监控Linux文件系统的活动,可以保护Linux文件系统的安全。
为达到上述目的,本发明采用如下技术方案:
本发明提供了一种基于VMI的文件系统细粒度监控方法,包括以下步骤:
(1)用虚拟机管理器启动虚拟机。
(2)在虚拟机管理器层面向虚拟机添加系统调用监控规则,传入与文件操作相关的系统调用号作为监控参数。
(3)在虚拟机管理器层面开启系统调用监控功能。
(4)虚拟机正常运行中出现操作码异常,虚拟机产生系统中断,产生操作码异常的程序陷入虚拟机管理器,虚拟机将控制权移交虚拟机管理器。
(5)虚拟机管理器判定引起异常的指令类型,如果是SYSCALL指令,跳转到步骤(6),否则跳转到步骤(12)。
(6)虚拟机管理器搜集跟系统调用相关的VCPU上下文信息,虚拟机管理器模拟虚拟机SYSCALL指令执行,并获得系统调用相关信息。
(7)虚拟机管理器读取RAX寄存器的值并记录系统调用发生的时刻,判定RAX的值,如果是与文件操作相关的系统调用,则解析系统调用相关参数。
(8)虚拟机管理器解析发出系统调用程序的PID号。
(9)虚拟机管理器解析发出系统调用程序所在的目录。
(10)虚拟机管理器解析发出系统调用程序的名称。
(11)虚拟机管理器读取寄存器RAX的值,解析系统调用的返回值。
(12)虚拟机管理器将控制权交还虚拟机。
(13)虚拟机管理器判断文件系统调用监控是否关闭,如果是,跳转到步骤(14),否则跳转到步骤(5)。
(14)用户发出关闭系统调用监控的指令,由虚拟机管理器执行。
更进一步地,本发明的特点还在于:
步骤(2)包括以下步骤:
(2.1)暂停虚拟机运行。
(2.2)传入要监控的文件系统调用号0x0、0x1、0x2、0x3、0x50、0x52、0x53、0x54、0x59、0xa1和0x107作为监控参数,添加系统调用监控规则。
(2.3)恢复虚拟机运行。
步骤(3)包括以下步骤:
(3.1)获得每一个虚拟机VCPU的扩展功能使能寄存器EFER的值。
(3.2)设置扩展功能使能寄存器EFER的SCE位值为0。
步骤(7)包括以下步骤:
(7.1)读取RAX寄存器的值并记录系统调用发生的时刻,如果RAX=0或1,则执行步骤(7.2);如果RAX=2,则执行步骤(7.3);如果RAX=3,则执行步骤(7.4);如果RAX=80,则执行步骤(7.5);如果RAX=82,则执行步骤(7.6);如果RAX=83,则执行步骤(7.7);如果RAX=84,则执行步骤(7.8);如果RAX=89,则执行步骤(7.9);如果RAX=161,则执行步骤(7.10);如果RAX=263,则执行步骤(7.11)。
(7.2)若RAX=0,文件系统调用是读系统调用;若RAX=1,文件系统调用是写系统调用,依据Linux文件系统调用表,需要解析文件描述符fd、文件缓冲区和缓冲区大小,步骤如下。
(7.2a)文件描述符fd的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得文件描述符fd。
(7.2b)指向文件缓冲区的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向文件缓冲区的指针,访问指向文件缓冲区的指针,获得文件缓冲区内容。
(7.2c)缓冲区大小被存放在寄存器RDX中,通过地址转换,访问物理内存,获得缓冲区大小。
(7.2d)跳转到步骤(8)。
(7.3)文件系统调用是打开或创建文件系统调用,依据Linux文件系统调用表,需要解析文件名、文件的flag信息、文件的mode参数,步骤如下:
(7.3a)指向文件名的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向文件名的指针,访问指向文件名的指针,获得打开或创建的文件名。
(7.3b)文件的flag信息被保存在寄存器RSI中,通过地址转换,访问物理内存,获得文件的flag信息。
(7.3c)文件的mode参数被保存在寄存器RDX中,通过地址转换,访问物理内存,获得文件的mode参数。
(7.3d)跳转到步骤(8)。
(7.4)文件系统调用是关闭文件系统调用,依据Linux文件系统调用表,需要解析文件描述符fd,具体步骤如下:
(7.4a)文件描述符fd的值被保存在寄存器RDI中,通过地址转换,访问物理内存,可获得文件描述符fd。
(7.4b)跳转到步骤(8)。
(7.5)文件系统调用是改变当前工作目录的系统调用,依据Linux文件系统调用表,需要解析目录名,步骤如下:
(7.5a)目录名的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得指向目录名的指针,访问指向目录名的指针,获得目录名。
(7.5b)跳转到步骤(8)。
(7.6)文件系统调用是文件或文件夹重命名系统调用,依据Linux文件系统调用表,需要解析旧名称和新名称,具体步骤如下:
(7.6a)指向旧名称的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向旧名称的指针,访问指向旧名称的指针,获得旧名称。
(7.6b)指向新名称的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向新名称的指针,访问指向新名称的指针,获得新名称。
(7.6c)跳转到步骤(8)。
(7.7)文件系统调用是创建文件夹系统调用,依据Linux文件系统调用表,需要解析文件夹名和文件夹的mode参数,具体步骤如下:
(7.7a)指向文件夹名的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向文件夹名的指针,访问指向文件夹名的指针,获得创建的文件夹名。
(7.7b)文件夹的mode参数被保存在寄存器RSI中,通过地址转换,访问物理内存,获得文件夹的mode参数。
(7.7c)跳转到步骤(8)。
(7.8)文件系统调用是删除文件夹系统调用,依据Linux文件系统调用表,需要解析删除的文件夹名,步骤如下:
(7.8a)指向删除的文件夹名的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向删除的文件夹名的指针,访问指向删除的文件夹名的指针,获得删除的文件夹名。
(7.8b)跳转到步骤(8)。
(7.9)文件系统调用是读文件链接状态系统调用,依据Linux文件系统调用表,需要解析文件路径、文件缓冲区和缓冲区大小,具体步骤如下:
(7.9a)文件路径的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得指向文件路径的指针,访问指向文件路径的指针,获得文件路径。
(7.9b)指向文件缓冲区的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向文件缓冲区的指针,访问指向文件缓冲区的指针,获得文件缓冲区内容。
(7.9c)缓冲区大小被存放在寄存器RDX中,通过地址转换,访问物理内存,获得缓冲区大小。
(7.9d)跳转到步骤(8)。
(7.10)文件系统调用是改变根目录的系统调用,依据Linux文件系统调用表,需要解析目录名,具体步骤如下:
(7.10a)目录名的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得指向目录名的指针,访问指向目录名的指针,获得目录名。
(7.10b)跳转到步骤(8)。
(7.11)文件系统调用是删除文件系统调用,依据Linux文件系统调用表,需要解析文件描述符、文件路径和标志位flag,具体步骤如下:
(7.11a)文件描述符的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得文件描述符。
(7.11b)指向文件路径的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向文件路径的指针,访问指向文件路径的指针,获得文件路径。
(7.11c)标志位flag被存放在寄存器RDX中,通过地址转换,访问物理内存,获得标志位flag。
(7.11d)跳转到步骤(8)。
步骤(8)包括以下步骤:
(8.1)虚拟机管理器获得虚拟机TR寄存器的值,TR寄存器的base字段指向的是esp0,获得esp0的值。
(8.2)在Linux栈空间中,esp0的低13位地址置0,即64位地址按位与0xFFFFFFFFFFFFE000后,得到指向thread_info结构体的指针。
(8.3)根据指向thread_info结构体的指针,访问获得指向task_struct结构体的指针。
(8.4)根据指向task_struct结构体的指针,获得指向pid字段的指针,获得发出系统调用程序的PID号。
步骤(9)包括以下步骤:
(9.1)虚拟机管理器读取RBP寄存器的值。
(9.2)RBP寄存器的值减去偏移量0x30,得到指向环境变量的指针。
(9.3)访问指向环境变量的指针得到环境变量的地址,将环境变量的地址的值加上0x58,得到PWD环境变量的地址。
(9.4)访问PWD环境变量的地址,读取发出系统调用程序所在的目录。
步骤(10)包括以下步骤:
(10.1)虚拟机管理器读取RBP寄存器的值。
(10.2)RBP寄存器的值减去偏移量0x30得到指向环境变量的指针。
(10.3)访问指向环境变量的指针,得到环境变量的地址,访问环境变量的地址,获得发出系统调用程序的名称。
与现有技术相比,本发明具有以下有益的技术效果:
本发明提供的一种基于VMI的文件系统细粒度监控方法,虚拟机管理器运行于虚拟机外部,保证了良好的隔离性。同时,当虚拟机内程序发生了文件系统调用时,涉及特权指令或物理硬件的访问,会陷入虚拟机管理器,并将控制权返还虚拟机管理器,然后对这些指令进行模拟。在模拟过程中,虚拟机管理器能够获得虚拟机操作系统的内存页面和寄存器信息。依据客户机操作系统数据结构信息,本发明能够对这些内存和寄存器信息进行细粒度的语义还原,最终获得虚拟机内部视图,具有良好的可视性。综上,本发明能够克服现有技术的不足,结合了基于网络的入侵检测系统和基于主机的入侵检测系统的优点。
再者,本发明能够实时捕获虚拟机操作系统内的文件系统调用的细粒度信息。每当虚拟机操作系统内发生文件系统调用时,本发明总能够立刻捕获该系统调用的各项信息,具有良好的实时性。同时,本发明在实时捕获到文件系统调用信息之后,能够对文件系统调用进行分析,并还原发出系统调用程序的上下文信息和系统调用的各项参数信息,包括:系统调用发生的时间、文件系统调用号、文件系统调用名称、系统调用传入参数、系统调用返回值,以及产生系统调用进程的PID号、程序名和程序的执行路径。与现有的VMI技术相比较,本发明监控的内容更具体、更全面,是一种细粒度的监控方法。
附图说明
图1为本发明的流程图;
图2为本发明的基于VMI的文件系统调用参数解析子流程图。
具体实施方式
下面结合附图对本发明做进一步详细描述:
本发明提出了一种基于VMI的文件系统细粒度监控方法,可以用于实时监控Linux文件系统的活动。本发明主要基于如下观测而提出:每种文件操作,包括文件打开、关闭、读、写、删除、重命名等,都对应了一个系统调用,那么,利用VMI技术在虚拟机管理器层监控和解析这些与文件操作相关的系统调用,就可以实现对运行在其上的虚拟机内部文件系统的实时细粒度监控。本发明监控的对象为X64 Linux虚拟机,监控的内容包括:文件相关系统调用的发生时间、系统调用号、系统调用名称、系统调用传入参数、系统调用返回值,以及产生系统调用进程的PID号、程序名和程序的执行路径。
参照图1,本发明主要包括添加系统调用监控规则、开启系统调用监控、捕获文件系统调用和系统调用参数解析。
具体实现如下:
步骤(1):用KVM虚拟机管理器启动虚拟机。
步骤(2):在虚拟机管理器层面向虚拟机添加系统调用监控规则,传入与文件操作相关的系统调用号作为监控参数。
本发明在添加系统调用监控规则时,需要传入十六进制表示的系统调用号作为监控参数。本发明能够监控的与文件操作相关的系统调用号包括:0x0、0x1、0x2、0x3、0x50、0x52、0x53、0x54、0x59、0xa1和0x107,因此需要将这些系统调用号传入。其中,系统调用号0x0代表读文件系统调用,系统调用号0x1代表写文件系统调用,系统调用号0x2代表打开/新建文件系统调用,系统调用号0x3代表关闭文件系统调用,系统调用号0x50代表改变当前工作目录系统调用,系统调用号0x52代表文件或文件夹重命名系统调用,系统调用号0x53代表创建文件夹系统调用,系统调用号0x54代表删除文件夹系统调用,系统调用号0x59代表读取文件链接情况的系统调用,系统调用号0xa1代表改变根目录系统调用,系统调用号0x107代表删除文件系统调用。
步骤(2)具体包括以下步骤:
步骤(2.1):暂停虚拟机运行。
步骤(2.2):传入要监控的文件系统调用号0x0、0x1、0x2、0x3、0x50、0x52、0x53、0x54、0x59、0xa1和0x107作为监控参数,添加系统调用监控规则。
步骤(2.3):恢复虚拟机运行。
步骤(3):开启系统调用监控功能。
本发明监控的是X64 Linux虚拟机,又称为客户机,该虚拟机运行在KVM虚拟机管理器上。由于KVM虚拟机管理器无法直接捕获系统调用,本发明将每个虚拟机VCPU的扩展功能使能寄存器的SCE位置0,从而开启系统调用监控功能。Linux虚拟机发生系统调用时会执行SYSCALL指令,由于SYSCALL指令依赖于MSRs指令集,当SCE位置0后,调用指令SYSCALL时客户机操作系统将会产生无效操作码异常,进而产生一般保护错误。由于KVM能够捕获一般保护错误,因此在捕获后通过判断产生异常的指令是否为SYSCALL,就能够实时捕获文件系统调用。
步骤(3)具体包括以下步骤:
步骤(3.1):虚拟机VCPU的扩展功能使能寄存器EFER的值。
步骤(3.2):设置扩展功能使能寄存器EFER的SCE位值为0。
开启系统调用监控功能后,虚拟机管理器KVM完成地址转换工作。只有通过地址转换,才能让虚拟机管理器获得虚拟机内部的内存页面和寄存器信息。在KVM机制下,对虚拟机来说,一个客户机(即被监控的Linux虚拟机)虚拟地址(Guest Virtual Address,简称GVA)需要经过内存管理单元MMU翻译为虚拟机物理地址(Guest Physical Address,简称GPA)。GVA到GPA的转换发生在客户机内部,虚拟机系统透明地完成地址翻译,与虚拟机管理器无关。由于一个客户机虚拟地址对应于一个宿主机物理地址(Host Physical Address,简称HPA),虚拟机的地址空间并非真实的物理地址空间,所以GPA需要再次经过地址翻译机制,转换到HPA,GPA到HPA的转换由虚拟机管理器完成。最终KVM虚拟机管理器取出内存单元中的内容。
在本发明中,具体的翻译过程是:从进程空间处获得页目录指针,CPU加载客户进程的页目录指针,CPU的内存管理单元首先查询硬件的翻译后备缓冲器TLB(TranslationLookaside Buffer),如果没有对应项,则继续查询高速缓存,如果高速缓存中还没有对应项,则查询物理内存,最终获得该物理地址单元。读取该物理地址单元指向的内容,作为下一个页表的基地址,将此基地址加上虚拟地址中的偏移量,获得一个客户机虚拟地址。通过地址转换机制,将该虚拟机物理地址转换为宿主机物理地址。地址转换完成后,从最终物理地址处读出内存单元的内容。
步骤(4):Linux虚拟机正常运行中出现操作码异常,虚拟机产生系统中断,产生操作码异常的程序陷入虚拟机管理器,虚拟机将控制权移交虚拟机管理器。
步骤(5):虚拟机管理器判定引起异常的指令类型,如果是SYSCALL指令,跳转到步骤6,否则跳转到步骤12。
如果不是SYSCALL指令,虚拟机管理器不用对此不相关异常进行处理,直接将控制权返还给虚拟机,由虚拟机自身完成异常处理工作。
步骤(6):虚拟机管理器搜集跟系统调用相关的VCPU上下文信息,虚拟机管理器模拟虚拟机SYSCALL指令执行,并获得系统调用相关信息。
当虚拟机运行无需虚拟机管理器干预时,由虚拟机内VCPU执行指令,当陷入虚拟机管理器时,则需要在虚拟机管理器的监控下,由物理机CPU执行指令。虚拟机管理器模拟虚拟机SYSCALL指令执行时,将虚拟机内VCPU的上下文环境信息和指令执行相关参数SS寄存器、CS寄存器、IP寄存器和flags赋值给物理机CPU,完成物理机CPU设置后,由物理机完成指令的执行。
步骤(7):虚拟机管理器读取RAX寄存器的值并记录该时刻,该时刻即为系统调用发生的时刻,判定RAX的值,如果是文件操作相关的系统调用,则解析该系统调用相关参数。系统调用相关参数包括:系统调用发生的时间、文件系统调用号、文件系统调用名称、系统调用传入参数、系统调用返回值,以及产生系统调用进程的PID号、程序名和程序的执行路径。
在Linux文件系统下,发生系统调用时,寄存器RAX内存放着系统调用号。因此,本发明根据RAX的值,查看Linux系统调用表,获得对应条目的系统调用名称。在X64 Linux文件系统中,系统调用传入参数或指向传入参数的指针被依次存放在寄存器RDI、RSI、RDX、RCX、R8和R9中。访问这些寄存器,经过地址翻译,访问物理内存后能够直接获得传入参数的值或传入参数的地址,如果获得的是存放参数的地址,则需要再一次访问该地址才能获得具体参数的值。为了实现文件系统的细粒度监控,需要对多个参数进行解析,这些参数分别是系统调用号、系统调用名称、发出系统调用程序的PID号、程序所在目录、程序名、系统调用传入参数和调用返回值。对不同的系统调用,由于函数传入参数不一致,因此需要进行不同的解析。
参照图2,具体实现如下:
步骤(7.1):读取RAX寄存器的值并记录该时刻(该时刻即是系统调用发生的时刻),如果RAX=0或1,则执行步骤(7b);如果RAX=2,则执行步骤(7c);如果RAX=3,则执行步骤(7d);如果RAX=80,则执行步骤(7e);如果RAX=82,则执行步骤(7f);如果RAX=83,则执行步骤(7g);如果RAX=84,则执行步骤(7h),如果RAX=89,则执行步骤(7i);如果RAX=161,则执行步骤(7j);如果RAX=263,则执行步骤(7k)。
步骤(7.2):若RAX=0,文件系统调用是读系统调用;若RAX=1,文件系统调用是写系统调用,依据Linux文件系统调用表,需要解析文件描述符fd、文件缓冲区和缓冲区大小,具体步骤如下:
步骤(7.2a):文件描述符fd的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得文件描述符fd。
步骤(7.2b):指向文件缓冲区的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向文件缓冲区的指针,访问该指针,获得文件缓冲区内容。
步骤(7.2c):缓冲区大小被存放在寄存器RDX中,通过地址转换,访问物理内存,获得缓冲区大小。
步骤(7.2d):跳转到步骤8。
步骤(7.3):文件系统调用是打开或创建文件系统调用,依据Linux文件系统调用表,需要解析文件名、文件的flag信息、文件的mode参数。具体步骤如下:
步骤(7.3a):指向文件名的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向文件名的指针,访问该指针,获得打开或创建的文件名。
步骤(7.3b):文件的flag信息被保存在寄存器RSI中,通过地址转换,访问物理内存,获得文件的flag信息。
步骤(7.3c):文件的mode参数被保存在寄存器RDX中,通过地址转换,访问物理内存,获得文件的mode参数。
步骤(7.3d):跳转到步骤8。
步骤(7.4):文件系统调用是关闭文件系统调用,依据Linux文件系统调用表,需要解析文件描述符fd。具体步骤如下:
步骤(7.4a):fd的值被保存在寄存器RDI中,通过地址转换,访问物理内存,可获得文件描述符fd。
步骤(7.4b):跳转到步骤8。
步骤(7.5):文件系统调用是改变当前工作目录的系统调用,依据Linux文件系统调用表,需要解析目录名filename。具体步骤如下:
步骤(7.5a):目录名filename的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得指向目录名filename的指针,访问该指针,获得目录名filename。
步骤(7.5b):跳转到步骤8。
步骤(7.6):文件系统调用是重命名系统调用,依据Linux文件系统调用表,需要解析旧名称和新名称。具体步骤如下:
步骤(7.6a):指向旧名称的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向旧名称的指针,访问该指针,获得旧名称。
步骤(7.6b):指向新文件名的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向新名称的指针,访问该指针,获得新名称。
步骤(7.6c):跳转到步骤8。
步骤(7.7):文件系统调用是创建文件夹系统调用,依据Linux文件系统调用表,需要解析文件夹名和文件夹的mode参数。具体步骤如下:
步骤(7.7a):指向文件夹名的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向文件夹名的指针,访问该指针,获得创建的文件夹名。
步骤(7.7b):文件夹的mode参数被保存在寄存器RSI中,通过地址转换,访问物理内存,获得文件夹的mode参数。
步骤(7.7c):跳转到步骤8。
步骤(7.8):文件系统调用是删除文件夹系统调用,依据Linux文件系统调用表,需要解析删除的文件夹名。具体步骤如下:
步骤(7.8a):指向删除的文件夹名的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向删除的文件夹名的指针,访问该指针,获得删除的文件夹名。
步骤(7.8b):跳转到步骤8。
步骤(7.9):文件系统调用是读文件链接状态的系统调用,依据Linux文件系统调用表,需要解析文件路径、文件缓冲区和缓冲区大小,具体步骤如下:
步骤(7.9a):文件路径的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得指向文件路径的指针,访问该指针,获得文件路径。
步骤(7.9b):指向文件缓冲区的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向文件缓冲区的指针,访问该指针,获得文件缓冲区内容。
步骤(7.9c):缓冲区大小被存放在寄存器RDX中,通过地址转换,访问物理内存,获得缓冲区大小。
步骤(7.9d):跳转到步骤8。
步骤(7.10):文件系统调用是改变根目录的系统调用,依据Linux文件系统调用表,需要解析目录名filename。具体步骤如下:
步骤(7.10a):filename的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得指向目录名filename的指针,访问该指针,获得目录名filename。
步骤(7.10b):跳转到步骤8。
步骤(7.11):文件系统调用是删除文件系统调用,依据Linux文件系统调用表,需要解析文件描述符、文件路径和标志位flag,具体步骤如下:
步骤(7.11a):文件描述符的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得文件描述符。
步骤(7.11b):指向文件路径的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向文件路径的指针,访问该指针,获得文件路径。
步骤(7.11c):标志位flag被存放在寄存器RDX中,通过地址转换,访问物理内存,获得标志位flag。
步骤(7.11d):跳转到步骤8。
步骤8:虚拟机管理器解析发出系统调用程序的PID(即进程标识)号,具体步骤如下:
步骤(8.1):虚拟机管理器获得虚拟机TR寄存器的值,TR寄存器的base字段指向的是esp0,获得esp0的值。
步骤(8.2):在Linux栈空间中,esp0的低13位地址置0,即64位地址按位与0xFFFFFFFFFFFFE000后,得到指向thread_info结构体的指针。
步骤(8.3):根据指向thread_info的结构体指针,访问获得指向task_struct结构体的指针。
步骤(8.4):根据指向task_struct的结构体的指针,获得指向pid字段的指针,获得PID的值。
步骤9:虚拟机管理器解析发出系统调用程序所在的目录,具体步骤如下:
步骤(9.1):虚拟机管理器读取RBP寄存器的值。
步骤(9.2):RBP寄存器的值减去偏移量0x30,得到指向环境变量的指针。
步骤(9.3):访问指向环境变量的指针得到环境变量的地址,将该地址的值加上0x58,得到PWD环境变量的地址。
步骤(9.4):访问PWD环境变量的地址,读取发出系统调用程序所在目录。
步骤10:虚拟机管理器解析发出系统调用程序的名称,具体步骤如下:
步骤(10.1):虚拟机管理器读取RBP寄存器的值。
步骤(10.2):RBP寄存器的值减去偏移量0x30得到指向环境变量的指针。
步骤(10.3):访问指向环境变量的指针,得到环境变量的地址,访问该地址,获得发出系统调用程序程序的名称。
步骤(11):虚拟机管理器解析系统调用的返回值。
在X64 Linux文件系统下,发生系统调用时,寄存器RAX内存放系统调用返回值,因此直接访问RAX即可。
步骤(12):虚拟机管理器将控制权交还虚拟机。
一般情况下,虚拟机管理器不干涉虚拟机的运行,因此在监控结束后,控制权需移交至虚拟机,由虚拟机对自身内部进行管理。
步骤(13):虚拟机管理器判断文件系统调用监控是否关闭,如果是,跳转到步骤14,否则跳转到步骤5。
步骤(14):用户发出关闭系统调用监控的指令,由虚拟机管理器执行。
本发明的性能效果可以通过以下实验进一步说明:
实验条件
将本发明实现到X64Ubuntu13.04虚拟机的文件系统监控中。物理机(即宿主机)操作系统为X64Ubuntu12.04,内核版本为2.6.37,虚拟机管理器为KVM 0.12.4。硬件平台选用HP公司的LV2001PC机,它的CPU是Intel(R)Core(TM)i5-3470,内存为8GB。
实验内容
选用benchmark测试工具Unixbench,分别对未运行监控程序的宿主机操作系统和运行了监控程序的宿主机操作系统进行性能测试,并将性能测试结果进行对比,最后计算系统性能损耗的百分比,以得出本发明所带来的性能损失。测试的任务或操作包括进程创建、上下文切换、文件复制、基本图形测试和C语言库等系统基准性能,共测试三次,取平均值。
3)结果分析
运行了监控程序后,宿主机操作系统性能下降,本发明的最大性能损失为19.99%。

Claims (7)

1.一种基于VMI的文件系统细粒度监控方法,其特征在于,包括以下步骤:
(1)用虚拟机管理器启动虚拟机;
(2)在虚拟机管理器层面向虚拟机添加系统调用监控规则,传入与文件操作相关的系统调用号作为监控参数;
(3)在虚拟机管理器层面开启系统调用监控功能;
(4)虚拟机正常运行中出现操作码异常,虚拟机产生系统中断,产生操作码异常的程序陷入虚拟机管理器,虚拟机将控制权移交虚拟机管理器;
(5)虚拟机管理器判定引起异常的指令类型,如果是SYSCALL指令,跳转到步骤(6),否则跳转到步骤(12);
(6)虚拟机管理器搜集跟系统调用相关的VCPU上下文信息,虚拟机管理器模拟虚拟机SYSCALL指令执行,并获得系统调用相关信息;
(7)虚拟机管理器读取RAX寄存器的值并记录系统调用发生的时刻,判定RAX的值,如果是与文件操作相关的系统调用,则解析系统调用相关参数;
(8)虚拟机管理器解析发出系统调用程序的PID号;
(9)虚拟机管理器解析发出系统调用程序所在的目录;
(10)虚拟机管理器解析发出系统调用程序的名称;
(11)虚拟机管理器读取寄存器RAX的值,解析系统调用的返回值;
(12)虚拟机管理器将控制权交还虚拟机;
(13)虚拟机管理器判断文件系统调用监控是否关闭,如果是,跳转到步骤(14),否则跳转到步骤(5);
(14)用户发出关闭系统调用监控的指令,由虚拟机管理器执行。
2.根据权利要求1所述的基于VMI的文件系统细粒度监控方法,其特征在于,步骤(2)包括以下步骤:
(2.1)暂停虚拟机运行;
(2.2)传入要监控的文件系统调用号0x0、0x1、0x2、0x3、0x50、0x52、0x53、0x54、0x59、0xa1和0x107作为监控参数,添加系统调用监控规则;
(2.3)恢复虚拟机运行。
3.根据权利要求1所述的基于VMI的文件系统细粒度监控方法,其特征在于,步骤(3)包括以下步骤:
(3.1)获得每一个虚拟机VCPU的扩展功能使能寄存器EFER的值;
(3.2)设置扩展功能使能寄存器EFER的SCE位值为0。
4.根据权利要求1所述的基于VMI的文件系统细粒度监控方法,其特征在于,步骤(7)包括以下步骤:
(7.1)读取RAX寄存器的值并记录系统调用发生的时刻,如果RAX=0或1,则执行步骤(7.2);如果RAX=2,则执行步骤(7.3);如果RAX=3,则执行步骤(7.4);如果RAX=80,则执行步骤(7.5);如果RAX=82,则执行步骤(7.6);如果RAX=83,则执行步骤(7.7);如果RAX=84,则执行步骤(7.8);如果RAX=89,则执行步骤(7.9);如果RAX=161,则执行步骤(7.10);如果RAX=263,则执行步骤(7.11);
(7.2)若RAX=0,文件系统调用是读系统调用;若RAX=1,文件系统调用是写系统调用,依据Linux文件系统调用表,需要解析文件描述符fd、文件缓冲区和缓冲区大小,步骤如下:
(7.2a)文件描述符fd的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得文件描述符fd;
(7.2b)指向文件缓冲区的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向文件缓冲区的指针,访问指向文件缓冲区的指针,获得文件缓冲区内容;
(7.2c)缓冲区大小被存放在寄存器RDX中,通过地址转换,访问物理内存,获得缓冲区大小;
(7.2d)跳转到步骤(8);
(7.3)文件系统调用是打开或创建文件系统调用,依据Linux文件系统调用表,需要解析文件名、文件的flag信息、文件的mode参数,步骤如下:
(7.3a)指向文件名的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向文件名的指针,访问指向文件名的指针,获得打开或创建的文件名;
(7.3b)文件的flag信息被保存在寄存器RSI中,通过地址转换,访问物理内存,获得文件的flag信息;
(7.3c)文件的mode参数被保存在寄存器RDX中,通过地址转换,访问物理内存,获得文件的mode参数;
(7.3d)跳转到步骤(8);
(7.4)文件系统调用是关闭文件系统调用,依据Linux文件系统调用表,需要解析文件描述符fd,具体步骤如下:
(7.4a)文件描述符fd的值被保存在寄存器RDI中,通过地址转换,访问物理内存,可获得文件描述符fd;
(7.4b)跳转到步骤(8);
(7.5)文件系统调用是改变当前工作目录的系统调用,依据Linux文件系统调用表,需要解析目录名,步骤如下:
(7.5a)目录名的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得指向目录名的指针,访问指向目录名的指针,获得目录名;
(7.5b)跳转到步骤(8);
(7.6)文件系统调用是文件或文件夹重命名系统调用,依据Linux文件系统调用表,需要解析旧名称和新名称,具体步骤如下:
(7.6a)指向旧名称的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向旧名称的指针,访问指向旧名称的指针,获得旧名称;
(7.6b)指向新名称的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向新名称的指针,访问指向新名称的指针,获得新名称;
(7.6c)跳转到步骤(8);
(7.7)文件系统调用是创建文件夹系统调用,依据Linux文件系统调用表,需要解析文件夹名和文件夹的mode参数,具体步骤如下:
(7.7a)指向文件夹名的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向文件夹名的指针,访问指向文件夹名的指针,获得创建的文件夹名;
(7.7b)文件夹的mode参数被保存在寄存器RSI中,通过地址转换,访问物理内存,获得文件夹的mode参数;
(7.7c)跳转到步骤(8);
(7.8)文件系统调用是删除文件夹系统调用,依据Linux文件系统调用表,需要解析删除的文件夹名,步骤如下:
(7.8a)指向删除的文件夹名的指针被存放在寄存器RDI中,通过地址转换,访问物理内存,获得指向删除的文件夹名的指针,访问指向删除的文件夹名的指针,获得删除的文件夹名;
(7.8b)跳转到步骤(8);
(7.9)文件系统调用是读文件链接状态系统调用,依据Linux文件系统调用表,需要解析文件路径、文件缓冲区和缓冲区大小,具体步骤如下:
(7.9a)文件路径的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得指向文件路径的指针,访问指向文件路径的指针,获得文件路径;
(7.9b)指向文件缓冲区的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向文件缓冲区的指针,访问指向文件缓冲区的指针,获得文件缓冲区内容;
(7.9c)缓冲区大小被存放在寄存器RDX中,通过地址转换,访问物理内存,获得缓冲区大小;
(7.9d)跳转到步骤(8);
(7.10)文件系统调用是改变根目录的系统调用,依据Linux文件系统调用表,需要解析目录名,具体步骤如下:
(7.10a)目录名的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得指向目录名的指针,访问指向目录名的指针,获得目录名;
(7.10b)跳转到步骤(8);
(7.11)文件系统调用是删除文件系统调用,依据Linux文件系统调用表,需要解析文件描述符、文件路径和标志位flag,具体步骤如下:
(7.11a)文件描述符的值被保存在寄存器RDI中,通过地址转换,访问物理内存,获得文件描述符;
(7.11b)指向文件路径的指针被存放在寄存器RSI中,通过地址转换,访问物理内存,获得指向文件路径的指针,访问指向文件路径的指针,获得文件路径;
(7.11c)标志位flag被存放在寄存器RDX中,通过地址转换,访问物理内存,获得标志位flag;
(7.11d)跳转到步骤(8)。
5.根据权利要求1所述的基于VMI的文件系统细粒度监控方法,其特征在于,步骤(8)包括以下步骤:
(8.1)虚拟机管理器获得虚拟机TR寄存器的值,TR寄存器的base字段指向的是esp0,获得esp0的值;
(8.2)在Linux栈空间中,esp0的低13位地址置0,即64位地址按位与0xFFFFFFFFFFFFE000后,得到指向thread_info结构体的指针;
(8.3)根据指向thread_info结构体的指针,访问获得指向task_struct结构体的指针;
(8.4)根据指向task_struct结构体的指针,获得指向pid字段的指针,获得发出系统调用程序的PID号。
6.根据权利要求1所述的基于VMI的文件系统细粒度监控方法,其特征在于,步骤(9)包括以下步骤:
(9.1)虚拟机管理器读取RBP寄存器的值;
(9.2)RBP寄存器的值减去偏移量0x30,得到指向环境变量的指针;
(9.3)访问指向环境变量的指针得到环境变量的地址,将环境变量的地址的值加上0x58,得到PWD环境变量的地址;
(9.4)访问PWD环境变量的地址,读取发出系统调用程序所在的目录。
7.根据权利要求1所述的基于VMI的文件系统细粒度监控方法,其特征在于,步骤(10)包括以下步骤:
(10.1)虚拟机管理器读取RBP寄存器的值;
(10.2)RBP寄存器的值减去偏移量0x30得到指向环境变量的指针;
(10.3)访问指向环境变量的指针,得到环境变量的地址,访问环境变量的地址,获得发出系统调用程序的名称。
CN201710681503.3A 2017-08-10 2017-08-10 一种基于vmi的文件系统细粒度监控方法 Active CN107391234B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710681503.3A CN107391234B (zh) 2017-08-10 2017-08-10 一种基于vmi的文件系统细粒度监控方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710681503.3A CN107391234B (zh) 2017-08-10 2017-08-10 一种基于vmi的文件系统细粒度监控方法

Publications (2)

Publication Number Publication Date
CN107391234A true CN107391234A (zh) 2017-11-24
CN107391234B CN107391234B (zh) 2020-07-03

Family

ID=60355419

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710681503.3A Active CN107391234B (zh) 2017-08-10 2017-08-10 一种基于vmi的文件系统细粒度监控方法

Country Status (1)

Country Link
CN (1) CN107391234B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108875357A (zh) * 2017-12-20 2018-11-23 北京安天网络安全技术有限公司 一种程序启动方法、装置、电子设备及存储介质
CN109409089A (zh) * 2018-09-28 2019-03-01 西安电子科技大学 一种基于虚拟机自省的Windows加密型勒索软件检测方法
WO2023020069A1 (zh) * 2021-08-18 2023-02-23 华为技术有限公司 虚拟机管理方法及相关系统、存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814049A (zh) * 2010-03-23 2010-08-25 北京大学 一种内存泄漏探测方法
CN103793288A (zh) * 2014-02-14 2014-05-14 北京邮电大学 一种软件看门狗系统及方法
CN104794407A (zh) * 2015-04-16 2015-07-22 华中科技大学 一种基于kvm的虚拟机文件强制访问控制方法及系统
CN105607945A (zh) * 2015-12-22 2016-05-25 中国科学院信息工程研究所 基于虚拟化的主机行为异步侦听截获系统和方法
CN105740046A (zh) * 2016-01-26 2016-07-06 华中科技大学 一种基于动态库的虚拟机进程行为监控方法与系统
CN106445639A (zh) * 2016-09-30 2017-02-22 北京奇虎科技有限公司 监测虚拟机的方法及装置
US20170124326A1 (en) * 2014-06-11 2017-05-04 Orange Method for monitoring the security of a virtual machine in a cloud computing architecture

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814049A (zh) * 2010-03-23 2010-08-25 北京大学 一种内存泄漏探测方法
CN103793288A (zh) * 2014-02-14 2014-05-14 北京邮电大学 一种软件看门狗系统及方法
US20170124326A1 (en) * 2014-06-11 2017-05-04 Orange Method for monitoring the security of a virtual machine in a cloud computing architecture
CN104794407A (zh) * 2015-04-16 2015-07-22 华中科技大学 一种基于kvm的虚拟机文件强制访问控制方法及系统
CN105607945A (zh) * 2015-12-22 2016-05-25 中国科学院信息工程研究所 基于虚拟化的主机行为异步侦听截获系统和方法
CN105740046A (zh) * 2016-01-26 2016-07-06 华中科技大学 一种基于动态库的虚拟机进程行为监控方法与系统
CN106445639A (zh) * 2016-09-30 2017-02-22 北京奇虎科技有限公司 监测虚拟机的方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108875357A (zh) * 2017-12-20 2018-11-23 北京安天网络安全技术有限公司 一种程序启动方法、装置、电子设备及存储介质
CN108875357B (zh) * 2017-12-20 2020-05-12 北京安天网络安全技术有限公司 一种程序启动方法、装置、电子设备及存储介质
CN109409089A (zh) * 2018-09-28 2019-03-01 西安电子科技大学 一种基于虚拟机自省的Windows加密型勒索软件检测方法
WO2023020069A1 (zh) * 2021-08-18 2023-02-23 华为技术有限公司 虚拟机管理方法及相关系统、存储介质

Also Published As

Publication number Publication date
CN107391234B (zh) 2020-07-03

Similar Documents

Publication Publication Date Title
Payne et al. Secure and flexible monitoring of virtual machines
Fu et al. Exterior: Using a dual-vm based external shell for guest-os introspection, configuration, and recovery
CN109933441A (zh) 微内核进程间通讯方法和系统
CN101458754B (zh) 一种监控应用程序行为的方法及装置
CN106897121B (zh) 一种基于虚拟化技术的无代理客户机进程防护方法
CN105393255A (zh) 用于虚拟机中的恶意软件检测的过程评估
US8875114B2 (en) Employing identifiers provided by an operating system of a processing environment to optimize the processing environment
KR20050085014A (ko) 보안 처리 시스템 내의 예외 타입
CN109923546A (zh) 虚拟机安全性应用程序的事件过滤
CN107391234A (zh) 一种基于vmi的文件系统细粒度监控方法
Saltaformaggio et al. Screen after Previous Screens:{Spatial-Temporal} Recreation of Android App Displays from Memory Images
CN110058921A (zh) 客户虚拟机内存动态隔离和监控方法及系统
CN107450964A (zh) 一种用于发现虚拟机自省系统中是否存在漏洞的方法
CN110737888B (zh) 虚拟化平台操作系统内核数据攻击行为检测方法
CN109857520B (zh) 一种虚拟机自省中的语义重构改进方法及系统
CN111444504A (zh) 一种用于软件运行时自动识别恶意代码的方法及装置
CN107368739A (zh) 一种内核驱动的监视方法和装置
CN109120618B (zh) 一种基于硬件虚拟化的云平台受控侧信道攻击检测方法
Liang et al. Detecting stealthy malware with inter-structure and imported signatures
CN108228319A (zh) 一种基于多桥的语义重构方法
CN113138835B (zh) 基于ipt与虚拟机自省的api调用监控方法及系统
CN112463288A (zh) 基于插桩的行为监控方法及系统
CN112464231A (zh) 基于虚拟机的威胁检测方法及系统
Tang et al. Virtav: An agentless antivirus system based on in-memory signature scanning for virtual machine
Ren et al. From dynamic loading to extensible transformation: An infrastructure for dynamic library transformation

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