CN107391225A - 一种基于多ept列表的监控方法和系统 - Google Patents

一种基于多ept列表的监控方法和系统 Download PDF

Info

Publication number
CN107391225A
CN107391225A CN201710568489.6A CN201710568489A CN107391225A CN 107391225 A CN107391225 A CN 107391225A CN 201710568489 A CN201710568489 A CN 201710568489A CN 107391225 A CN107391225 A CN 107391225A
Authority
CN
China
Prior art keywords
eptp
address
ept
kernel
lists
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.)
Pending
Application number
CN201710568489.6A
Other languages
English (en)
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.)
Beihang University
Original Assignee
Beihang 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 Beihang University filed Critical Beihang University
Priority to CN201710568489.6A priority Critical patent/CN107391225A/zh
Publication of CN107391225A publication Critical patent/CN107391225A/zh
Pending legal-status Critical Current

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开一种基于多EPT列表的监控方法和系统,其将不同需求的进程地址映射到不同的内核态地址中,复制一个修改的内核页表,在需要截获的进程在执行系统调用时,在所述复制的内核页表中进行寻址,而不需要的进程则使用原始的内核页表。本发明的方法和系统提高了系统的安全性和监控的效率。

Description

一种基于多EPT列表的监控方法和系统
技术领域
本发明属于虚拟化监控领域,具体涉及一种基于多EPT列表的监控方法和系统。
背景技术
云计算如今广泛应用于处理海量数据和复杂计算的需求,以服务的形式为用户提供各种需求下的计算资源,越来越多的人们开始在云端存储、处理数据,这对云端数据的安全性提出了更高的要求。虚拟化技术作为云计算的支撑技术,也随着云计算的广泛应用而受到了极大的重视,但是在云平台尤其是公有云平台中,同一台虚拟机会为很多用户提供服务,如果虚拟机有了安全漏洞并被攻破,这个漏洞会很快传递开来,影响当前甚至后续用户的使用。另外,虚拟机分布于多台物理机中,如果不具有隔离性,会导致这种漏洞的传递更加容易。虚拟机监控器提供了客户机系统之间的强隔离性,保证了恶意软件无法影响部署在其之外的安全工具。
传统的虚拟机监控器部署在虚拟机内部,一些新型的恶意软件会对安全监控器进行攻击,并且部署在虚拟机内部的安全监控器需要在客户操作系统中插入内核模块,透明性较差,对于不同的虚拟机,也不具有通用性。如今比较常用的虚拟机自省方法,是将监控系统完全置于被监控虚拟机外部,通过虚拟机监视器的高控制权来完成关键事件或关键内核数据结构的监控,外部监控通过在指令中设置断点,当执行到该断点时,调用相应的监控函数,执行完监控函数后才能继续执行原来的指令。但是这种方法,系统调用在执行到同一个指令时,每次都需要中断去执行监控函数,对虚拟机的指令执行效率影响较大。
发明内容
本发明公开一种基于多EPT列表的监控方法和系统,其对不同应用需要对同样的内核代码做不同的探针,通过写时拷贝的方法复制出一个做了修改的内核页表,对于需要截获的进程在执行系统调用时,在所述修改的内核页表中进行寻址,而不需要的进程则使用原始的内核页表,很好地隔离了进程,可以对进程做一些特殊的处理而不会影响到其他进程。
附图说明
图1为现有技术中虚拟机监控自省方法。
图2为本发明中客户页表和EPT页表的操作关系。
图3为本发明中基于多EPT的虚拟机监控步骤
图4为本发明中的系统调用过程。
图5为本发明中监控系统的整体架构图。
图6为本发明中监控系统的处理过程。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
图1展示了现有技术中虚拟机监控自省方法,当app1与app2在内核执行同一个系统调用时,由于所有进程共享内核空间,因此它们会被映射到同一个物理地址,安全工具为了监控该系统调用,会设置钩子函数将其截获,进程会发生VM-Exit中断,进入安全监控,使用安全分析代码进行分析,分析完成VM-Entry后才能继续执行。所述VM-Exit和VM-Entry是很耗时的过程,如果我们对每一个使用了这个系统调用的应用都进行该监控过程,则会对系统性能造成较大影响,严重影响虚拟机的效率。
本发明基于多EPT列表的监控方法将不同需求的进程地址映射到不同的内核态地址中。如内核工作队进程,每隔一段时间会将数据存入磁盘,但是有的应用想要获得写入磁盘的数据量,有的应用需要知道写入磁盘的时间,由于针对不同应用需要对同样的内核代码做不同的探针,因此可以通过写时拷贝的方法复制出一个做了修改的内核页表,例如在不同位置加入探针,从而在需要截获的进程在执行系统调用时,在所述修改的内核页表中进行寻址,而不需要的进程则使用原始的内核页表。此种方法很好地隔离了进程,可以对进程做一些特殊的处理而不会影响其他进程。
本发明中采用多EPT列表,其中存储不同的EPTP,因此对于同一个内核系统调用,可以映射到不同的物理地址,使虚拟机监控器可以有选择地对进程的系统调用进行截获。
本发明中从VMX root operation切换到VMX non-root operation被称为VM-entry,表示从VMM进入到VM执行guest软件;从VMX non-root operation切换到VMX rootoperation被称为VM-Exit,表示从VM返回VMM,VMM接管工作,VM失去处理器控制权。当客户机要执行一些特权指令时,会通过VM-Exit进入到根操作模式下才可以完成。使用EPT来进行内存虚拟化,可以提高内存虚拟化的效率。EPT引入了额外的一套页表结构,定义了客户机物理地址到主机物理地址之间的映射关系,所有的客户机物理地址(如CR3给出的页目录基址、PDE给出的页表基址、PTE给出的页基址等)须经由EPT页表结构转换后用于访存。如图2所示为客户页表和EPT页表的操作关系,客户在读写CR3和执行INVLPG指令时不会导致VMexit,并且由于客户页表结构自身导致的页故障也不会导致VM exit,因此极大地提高了内存虚拟化的效率,简化了内存虚拟化的实现。
图3所示为本发明基于多EPT的虚拟机监控步骤,本发明允许在非根操作模式VMXnon-root operation内切换EPTP值,从而可以使用不同的EPT页表结构进行客户机物理地址guest-physical address的转换。其中,VM-function control供了对多EPT的切换(即EPTP switching),其第0位的值表示是否激活EPTP switching功能。EAX寄存器提供VM功能号0,表明调用“EPTP switching”功能,EAX寄存器的值为N,如果VM-functions control字段的bit N为0,则产生VM-exit,此时VM退出,从VMX non-root operation切换到VMXrootoperation,表示从VM返回VMM,VMM接管工作,VM失去处理器控制权。exit reason字段为59,表示“VM-exit”由VMFUNC指令引发,所述VMFUNC指令为VMX调用服务器例程的指令,可以在non-root环境里使用的VMX指令。ECX寄存器提供EPTP-list表项的索引值,根据ECX找到EPTP的值,处理器使用新的EPT页表结构转换guest-physical address。
EPTP-list列表需要在使用EPTP switching功能前准备好,该列表提供4K的物理地址,总共有512个表项,每个表项是一个EPTP值。首先定义一个page类型的ept列表页eptp_list_pg,为其分配物理地址,并将原来的EPT页表复制512份,写入不同的内存地址,并在EPTP_list中存入指向这些页表的指针。
多EPT切换的功能需要从ECX寄存器中取出EPTP-list的表项,如果ECX的值大于511,则产生VM-exit,否则,可以获得EPTP-list的值,其值是一个8字节的EPTP值。然后判断新的ETPT值是否有效,如果无效,产生VM-exit。检查ETPT有效的标准为当使用EPTPswitching功能时,要检查处理器控制字段中secondary processor-based VM-executioncontrol字段,其中“enable VM functions”字段必须为1,并且保留位为0;VM-functioncontrol字段的“EPTP switching”为1,并且在EPTP-list address字段里提供4K页面物理地址,地址值的bits1:0必须为0,并且宽度不能超过预设值。
检查通过后,将新的ETPT值写入VMCS区域内的ETPT字段,所述VMCS为当VMXoperation模式的root和non-root环境切换时,VMCS(Virtual Machine ControlStructure)用来配置当前发生切换的逻辑处理器的状态及执行环境。处理器使用新的EPT页表结构转换guest-physical address。通过在KVM源码中加入vmx_enable_ept_switching和vmx_disable_ept_switching函数,所述vmx_enable_ept_switching函数生成eptp_list_pg的页表内容,并存入vmx结构体中,所述vmx_disable_ept_switching函数释放eptp_list_pg的页表空间,从而将原有的内存寻址新增一步对EPTP-list表项的寻址,在这个过程中,还需要对是否启用VMFUNCTION和EPTP_SWITCHING功能进行判断,即检测处理器控制字段中VM-execution control字段,其中“enable VM functions”字段必须为1,并且保留位为0,VM-function control字段的“EPTP switching”为1。
本发明采用多EPT列表,可以将不同需求的进程地址映射到不同的内核态地址中。多EPT列表中存储不同的EPTP,即在eptp_list中,存入多个指向不同ept的指针,可以使得同一个客户机的物理地址guest-physical address(GPA)通过不同的EPT页表映射到不同的宿主机进程的线性地址Host Physical Address(HPA)。因此对于同一个内核系统调用,可以映射到不同的物理地址,使虚拟机监控器可以有选择地对进程的系统调用进行截获。
如图4所示,当app1与app2执行同一个系统调用时,只对不可信应用app1进行系统调用截获,使用安全分析工具进行分析,而app2可以正常执行。
本发明的基于多EPT的监控系统使用KVM作为虚拟机监控器管理客户机。图5展示了监控系统的整体架构图,KVM使宿主机本身成为一个虚拟机监视器,并且可以完成了EPT页表的映射,实现从客户机虚拟地址到宿主机物理地址的转换。在转换的过程中,可以将不同需求的进程地址映射到不同的内核态地址,进一步的,是将同一个内核地址通过EPTP_switching映射到不同的物理地址,从而被设置在虚拟机监控器中的钩子函数截获,通过安全应用进行监控与分析。相比现有技术中所有进程共享内核空间被映射到同一个物理地址,监控系统需从VMX non-root模式通过VM-exit变为VMX root模式,提高了监控的效率。
本发明的系统也可以满足不同应用对不同内存权限的需求。本发明中,不同的EPT页表可以有着不同的内存权限,因此不再需要所有的CPU共享一套EPT。此种方式对于系统的安全性也会有较大提升,当一个应用需要较高的内存权限时,只需要提高这个应用的权限,而不会影响其它的应用。
图6是监控系统的处理过程,在客户机中,不同的进程进行同一个系统调用,使用同一个GPA,切换为VMX root-operation模式,这时通过多EPT机制,在VMM中映射到不同的HPA,底层信息截获模块通过钩子函数设置断点将需要进行安全监控的部门截获,然后进行安全分析,通过可以对外部的安全应用提供一个接口,安全应用可以自定义需要截获的内容,通过接口来进行安全监控。
其监控系统的工作主要分为4个步骤:
步骤1,前期准备工作,在需要监控的内核代码处写入断点函数,将EPTP-list表项在内存中写入,并部署好安全监控工具。
步骤2,启动安全工具,在客户机中测试需要被监控的系统调用函数:,提前定义好应用的可信程度。
步骤3,对于可信应用,则调用服务器例程令切换到没有设置截获函数的内核地址对应的EPTP值;对于不可信应用,则切换到设置了截获函数的内核地址对应的EPTP值。
步骤4,截获系统调用后,使用安全工具对该系统调用进行分析,例如检测程序是否频繁地进行一些不安全的系统调用,或者扫描分析要加载的模块代码等,从而判断下一步操作,是中断还是继续执行。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (7)

1.一种基于多EPT列表的监控方法,包括,将不同需求的进程地址映射到不同的内核态地址中,复制一个修改的内核页表,在需要截获的进程在执行系统调用时,在所述复制的内核页表中进行寻址,而不需要的进程则使用原始的内核页表。
2.如权利要求1所述的方法,其特征在于,所述多EPT列表中存储不同的EPTP,使虚拟机监控器可以有选择地对进程的系统调用进行截获。
3.如权利要求2所述的方法,其特征在于,所述EPT列表的切换过程为以下步骤:S1,读取寄存器EAX值,如果EAX寄存器的值为N,如果VM-functions control字段的bit N为0,则产生VM-exit,如果EAX寄存器提供VM功能号0,表明调用“EPTP switching”功能,进入步骤S2;S2,读取寄存器ECX的值,如果ECX的值大于511,则产生VM-exit,否则,可以获得EPTP的值,进入S3;S3,判断EPTP值是否有效,如果无效,产生VM-exit,如果有效,则调用服务器例程,进行EPT列表的切换。
4.如权利要求3所述的方法,检查ETPT有效的标准为当使用EPTP switching功能时,要检查处理器控制字段中的secondary processor-based VM-execution control字段,其中“enable VM functions”字段必须为1,并且保留位为0;VM-function control字段的“EPTPswitching”为1,并且在EPTP-list address字段里提供4K页面物理地址,地址值的第1至0位必须为0,并且宽度不能超过预设值。
5.一种基于多EPT列表的监控系统,所述系统利用KVM使宿主机本身成为一个虚拟机监视器,进行EPT页表的映射,将从客户机虚拟地址到宿主机物理地址的转换,在转换的过程中将同一个内核地址映射到不同的物理地址。
6.如权利要求5所述的系统,其特征在于,所述同一个内核地址映射到不同的物理地址被设置在虚拟机监控器中的钩子函数截获,通过安全应用进行监控与分析。
7.如权利要求6所述的系统,其工作流程包括以下几步:步骤1,在需要监控的内核代码处写入断点函数,将EPTP-list表项在内存中写入,并部署好安全监控工具;
步骤2,启动安全工具,在客户机中测试需要被监控的系统调用函数:,提前定义好应用的可信程度;
步骤3,对于可信应用,则调用服务器例程令切换到没有设置截获函数的内核地址对应的EPTP值;对于不可信应用,则切换到设置了截获函数的内核地址对应的EPTP值;
步骤4,截获系统调用后,使用安全工具对该系统调用进行分析,从而判断下一步操作为中断还是继续执行。
CN201710568489.6A 2017-07-13 2017-07-13 一种基于多ept列表的监控方法和系统 Pending CN107391225A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710568489.6A CN107391225A (zh) 2017-07-13 2017-07-13 一种基于多ept列表的监控方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710568489.6A CN107391225A (zh) 2017-07-13 2017-07-13 一种基于多ept列表的监控方法和系统

Publications (1)

Publication Number Publication Date
CN107391225A true CN107391225A (zh) 2017-11-24

Family

ID=60339493

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710568489.6A Pending CN107391225A (zh) 2017-07-13 2017-07-13 一种基于多ept列表的监控方法和系统

Country Status (1)

Country Link
CN (1) CN107391225A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110892388A (zh) * 2018-07-11 2020-03-17 华为技术有限公司 增强用户空间与内核空间的隔离性的方法和装置
CN113064697A (zh) * 2021-04-01 2021-07-02 上海交通大学 利用多硬件特性加速微内核进程间通信的方法
CN116991543A (zh) * 2023-09-26 2023-11-03 阿里云计算有限公司 宿主机、虚拟化实例自省方法及存储介质
CN117850985A (zh) * 2024-03-07 2024-04-09 济南浪潮数据技术有限公司 一种虚拟机内存资源管理方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809401A (zh) * 2015-05-08 2015-07-29 南京大学 一种操作系统内核完整性保护方法
CN105487837A (zh) * 2015-05-11 2016-04-13 上海兆芯集成电路有限公司 具有载入扩展页表指令的处理器
US20160335436A1 (en) * 2015-05-15 2016-11-17 Harshawardhan Vipat Kernel runtime integrity using processor assists

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809401A (zh) * 2015-05-08 2015-07-29 南京大学 一种操作系统内核完整性保护方法
CN105487837A (zh) * 2015-05-11 2016-04-13 上海兆芯集成电路有限公司 具有载入扩展页表指令的处理器
US20160335436A1 (en) * 2015-05-15 2016-11-17 Harshawardhan Vipat Kernel runtime integrity using processor assists

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110892388A (zh) * 2018-07-11 2020-03-17 华为技术有限公司 增强用户空间与内核空间的隔离性的方法和装置
CN110892388B (zh) * 2018-07-11 2022-07-22 华为技术有限公司 增强用户空间与内核空间的隔离性的方法和装置
US11436155B2 (en) 2018-07-11 2022-09-06 Huawei Technologies Co., Ltd. Method and apparatus for enhancing isolation of user space from kernel space
CN113064697A (zh) * 2021-04-01 2021-07-02 上海交通大学 利用多硬件特性加速微内核进程间通信的方法
CN116991543A (zh) * 2023-09-26 2023-11-03 阿里云计算有限公司 宿主机、虚拟化实例自省方法及存储介质
CN116991543B (zh) * 2023-09-26 2024-02-02 阿里云计算有限公司 宿主机、虚拟化实例自省方法及存储介质
CN117850985A (zh) * 2024-03-07 2024-04-09 济南浪潮数据技术有限公司 一种虚拟机内存资源管理方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
CN105393229B (zh) 虚拟机中的页面错误注入
CN109923546B (zh) 虚拟机安全性应用程序的事件过滤
US7330942B2 (en) Method for efficient virtualization of physical memory in a virtual-machine monitor
Zhou et al. A bare-metal and asymmetric partitioning approach to client virtualization
Amit et al. The design and implementation of hyperupcalls
Wu et al. Taming hosted hypervisors with (mostly) deprivileged execution.
US20050076186A1 (en) Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements
US20120255015A1 (en) Method and apparatus for transparently instrumenting an application program
Sá et al. A first look at RISC-V virtualization from an embedded systems perspective
CN107391225A (zh) 一种基于多ept列表的监控方法和系统
CN107025405A (zh) 使用安全堡垒提高云可用性和硅隔离的方法
More et al. Virtual machine introspection: towards bridging the semantic gap
US20180267818A1 (en) Hypervisor-assisted approach for locating operating system data structures based on notification data
CN104715202A (zh) 一种虚拟机中的隐藏进程检测方法和装置
Gu et al. {EPK}: Scalable and Efficient Memory Protection Keys
US10248785B2 (en) Application memory protection using a host page table switching virtual machine function
Wang et al. Vmdetector: A vmm-based platform to detect hidden process by multi-view comparison
Kiperberg et al. Hypervisor-assisted atomic memory acquisition in modern systems
Hsiao et al. Hardware-assisted MMU redirection for in-guest monitoring and API profiling
US20190129741A1 (en) Host-based virtual machine introspection with dynamic guest assistance
Zhong et al. A virtualization based monitoring system for mini-intrusive live forensics
Park et al. Libmpk: software abstraction for Intel memory protection keys
Qiang et al. Libsec: A hardware virtualization-based isolation for shared library
Kiperberg et al. Efficient DLP-visor: An efficient hypervisor-based DLP
Amit et al. DLP-Visor: A Hypervisor-based Data Leakage Prevention System.

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20171124