CN107368739A - 一种内核驱动的监视方法和装置 - Google Patents
一种内核驱动的监视方法和装置 Download PDFInfo
- Publication number
- CN107368739A CN107368739A CN201710619371.1A CN201710619371A CN107368739A CN 107368739 A CN107368739 A CN 107368739A CN 201710619371 A CN201710619371 A CN 201710619371A CN 107368739 A CN107368739 A CN 107368739A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- target drives
- ept
- authority
- kernel
- 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
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/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了内核驱动的监视方法和装置,该方法包括:获取迁移到虚拟机中的物理机的操作系统内核中的驱动的基础信息,利用驱动的基础信息对驱动的权限以及操作系统内核中需保护对象的内存权限进行设置;设置虚拟机控制结构VMCS,根据设置的所述目标驱动的权限,设置的所述需保护对象的内存权限以及设置的所述VMCS,当捕获到驱动的行为引起的预设异常时,触发虚拟机退出事件并输出监视信息完成对驱动的监视。本发明实施例的方案基于虚拟机监视器更高权限特性,解决了监视程序容易被恶意驱动绕过,监视效果差的问题。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种内核驱动的监视方法和装置。
背景技术
操作系统(例如,Windows操作系统)是管理和控制计算机硬件与软件资源的程序,它负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。为了更好的实现对难以计数的计算机硬件的支持和管理,Windows操作系统提供了一种完全集成的驱动程序开发工具WDK(Windows Driver Kit,驱动程序开发包),它允许计算机硬件厂商开发自己的驱动程序。但是,由于Windows驱动程序的高特权性,不法分子常常开发恶意的驱动程序(例如,Rootkit),这些驱动能够对系统内核造成极大的破坏。
内核(Kernel)是一个操作系统的核心,指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。Rootkit本身也是一种驱动程序,只不过没有按照微软公司提供的指导文件进行编写,这类驱动程序可能本身含有恶意代码,可通过多种途径破坏内核完整性,例如,修改内核代码破坏代码完整性、修改一些关键的数据结构(系统调用表)或内核堆栈破坏控制流完整性,进而对用户的操作系统进行恶意破坏。如果使用普通的驱动程序进行对抗,由于驱动程序的权限都相同,所以极容易被Rootkit绕过。
由此可知,现有技术中对操作系统内核中可能存在的像Rootkit这样的恶意驱动程序的分析和监视的难度较大,效果不佳。
发明内容
本发明提供了一种内核驱动的监视方法和装置,以解决现有技术对内核驱动监视难度较大,效果不佳的问题。
根据本申请的一个方面,提供了一种内核驱动的监视方法,该方法包括:启用虚拟机监视器,所述虚拟机监视器执行下列操作:
获取迁移到虚拟机中的物理机的操作系统内核中运行的目标驱动的基础信息;在所述目标驱动初始化时利用所述目标驱动的基础信息对驱动的权限以及所述操作系统内核中需保护对象的内存权限进行设置;以及在所述目标驱动运行时,设置虚拟机控制结构VMCS;
根据设置的所述目标驱动的权限,设置的所述需保护对象的内存权限以及设置的所述VMCS,当捕获到所述目标驱动的行为引起预设的异常时,触发虚拟机退出事件并输出监视信息完成对所述目标驱动的监视。
根据本申请的另一个方面,提供了一种内核驱动的监视装置,应用于启动后的虚拟机监视器,包括:
获取模块,用于获取迁移到虚拟机中的物理机的操作系统内核中运行的目标驱动的基础信息;
设置模块,用于在所述目标驱动初始化时利用所述目标驱动的基础信息对目标驱动的权限以及所述操作系统内核中需保护对象的权限进行设置,以及在所述目标驱动运行时,设置虚拟机控制结构VMCS,
监视模块,用于根据设置的所述目标驱动的权限,设置的所述需保护对象的内存权限以及设置的所述VMCS,当捕获到所述目标驱动的行为引起预设的异常时,触发虚拟机退出事件并输出监视信息完成对所述目标驱动的监视。
本发明的有益效果是:本发明实施例的这种内核驱动的监视方法和装置,通过启用虚拟机监视器,对操作系统驱动的行为进行监视,例如,驱动调用内核函数的行为、修改内核数据的行为以及修改寄存器的行为。由此,本发明实施例基于硬件虚拟化技术,利用虚拟机机监视器完成对操作系统内核中的驱动的监视,由于虚拟机监视器的权限比操作系统的权限高,虚拟机监视器可以透明地运行于操作系统之下,动态监控目标驱动的行为,从而保证了对内核驱动监视的有效性,提高了系统的安全性。并且本发明实施例的技术方案无需修改已有操作系统和目标驱动程序或者添加额外硬件。
附图说明
图1是本申请一个实施例的内核驱动的监视方法的示意图;
图2是本申请另一个实施例的内核驱动的监视方法的示意图;
图3是本申请一个实施例的应用场景示意图;
图4是本申请一个实施例的内核驱动的监视装置的结构框图;
图5是本申请另一个实施例的内核驱动的监视装置的结构框图。
具体实施方式
本发明的设计构思是:针对目前Windows驱动的权限太高,难以调试和监视等问题,本申请提出一种对内核驱动进行监视的方案。本申请将硬件虚拟化技术引入到Windows驱动行为的监视中,通过启用一个虚拟机监视器,在更高的权限下对整个操作系统的重要信息进行监视,获取新加载驱动的相关信息,然后通过对虚拟机控制结构VMCS(Virtual-Machine Control Structure)结构的配置,监视目标驱动对一些特殊寄存器的访问或修改行为,通过捕获异常,对目标驱动的行为进行动态监视分析,既保证了对目标驱动监视的有效性也提高了监视效率,而且无需修改已有操作系统和目标驱动程序,也不需要添加额外硬件,方案实现简单。
以下先对本申请实施例中出现的一些技术名词进行说明。
虚拟机监视器:虚拟机监视器(Virtual Machine Monitor,简称VMM)是虚拟机技术的核心,它是一层位于操作系统和计算机硬件之间的软件,用来维护多个高效的、隔离的程序环境,该程序环境支持用户直接访问真实硬件,这样的程序环境就称为虚拟机(Virtual Machine,简称VM)。
硬件虚拟化:硬件虚拟化是一种对计算机或操作系统的虚拟,虚拟化技术最早可以追溯到上个世纪60年代的IBM大型机系统,在上个世界70年代IBM的System370系列机器通过一种叫虚拟机监视器的程序在真实硬件之上生成许多可以运行独立操作系统软件的虚拟机实例。不过由于普通家用处理器厂商,如英特尔,没有对虚拟化提供硬件支持,所以这项技术当时没有得到普及。随着近年来英特尔引入了硬件虚拟化技术,使用扩展页表(Extended Page Tables,简称EPT)大大提高了虚拟化的性能,所以这项技术在多核系统、集群、网格甚至云计算中被广泛部署,虚拟化技术在商业应用上的优势显著:它不仅降低了IT成本,而且还增强了系统安全性和可靠性。本申请即利用硬件虚拟化技术的其中一个特性,拥有比操作系统更高的权限,来实现对Windows内核驱动的监视和分析。
虚拟机控制结构:虚拟机控制结构(Virtual Machine Control Structure,简称VMCS)。VMCS是保存在内存中的数据结构,其包括虚拟处理器(VCPU)的相关寄存器的内容及相关的控制信息。CPU在发生虚拟机进入(VM Entry)或虚拟机退出(VM Exit)时,都会查询和更新VMCS。虚拟机监视器可通过指令来配置VMCS,达到对虚拟处理器的管理。
页表:页表是一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。页表的作用是实现从页号到物理块号的地址映射。客户机逻辑地址转换成机器的物理地址的过程是:用页号p去检索页表,从页表中得到该页的物理块号,把它装入物理地址寄存器中。同时,将页内地址d直接送入物理地址寄存器的块内地址字段中。这样,物理地址寄存器中的内容就是由二者拼接成的实际访问内存的地址,从而完成从逻辑地址到物理地址的转换。
扩展页表:EPT是针对内存管理单元(Memory Management Unit,简称MMU)的虚拟化扩展。客户机中的进程不能直接访问物理地址,而是需要经过两次地址转换,第一次是从客户机虚拟地址到客户机物理地址,第二次是客户机物理地址到宿主机物理地址。EPT技术在原有客户机页表对客户机虚拟地址到客户机物理地址映射的基础上,又引入了EPT页表来实现客户机物理地址到宿主机物理地址的另一次映射,这两次地址映射都是由硬件自动完成。EPT页表对地址的映射机理与客户机页表对地址的映射机理相同,EPT降低了内存虚拟化的难度,也提升了内存虚拟化的性能。不论是英特尔公司Intel的EPT技术,还是超微半导体公司AMD的NPT(Nest Page Table)技术都是对内存虚拟化提供的硬件支持。这两种技术原理类似,都是在硬件层面上实现客户机虚拟地址到宿主机物理地址之间的转换。
虚拟机扩展:虚拟机扩展(Virtual-Machine Extensions,简称VMX)是英特尔Intel实现的处理器虚拟化架构,从硬件层面支持硬件辅助虚拟化技术。Intel VMX的体系结构可划分为两层:虚拟机监视器VMM和虚拟机VM。VMM作为host,具有对处理器资源、物理内存、中断和IO的选择控制的完全控制权限。它为guest提供VCPU(virtual processor)的抽象,并允许guest直接运行在逻辑处理器上。相应地VM(Virtual-Machine)作为guest,本质上提供了一种软件环境,它维护一个栈,其中包含了操作系统和应用程序,其每个操作都独立于其他的VM,并且使用由同一个物理平台所提供的对处理器、内存、硬盘、显卡、IO访问的统一接口。运行于VM中的软件的权限是受限的,如此保障VMM对整个平台资源的完全控制。
支持硬件虚拟化的处理器,有两种操作模式,分别为VMX root mode和VMX non-root mode。通常来说,VMM运行于VMX root mode而guest运行于VMX non-root mode。两种模式之间的转换被称为VMX转换。具体的,从root到non-root被称为VM entry,即虚拟机进入,而从non-root到root则称为VM exit,即,虚拟机退出。
需要说明的是,本实施例中是以Intel的处理器,并以Windows操作系统为例进行的说明。
参见图1,为本申请一个实施例的内核驱动的监视方法的示意图,本申请的内核驱动的监视方法包括如下步骤:
步骤S101,获取迁移到虚拟机中的物理机的操作系统内核中运行的目标驱动的基础信息,
步骤S102,在所述目标驱动初始化时利用所述目标驱动的基础信息对目标驱动的权限以及所述操作系统内核中需保护对象的权限进行设置,以及在所述目标驱动运行时,设置虚拟机控制结构VMCS;
步骤S103,根据设置的所述目标驱动的权限,设置的所述需保护对象的内存权限以及设置的所述VMCS,当捕获到所述目标驱动的行为引起的预设异常时,触发虚拟机退出事件并输出监视信息完成对所述目标驱动的监视。
由图1所示可知,本实施例的方法,通过启用虚拟机监视器,对虚拟机中运行的操作系统内核的驱动的行为进行监视,虚拟机监视器监控目标驱动的行为主要包括:1)目标驱动调用内核函数;2)目标驱动修改内核数据;3)目标驱动修改特殊寄存器。具体的,1)和2)是通过设置EPT页表的内存权限实现虚拟机监视器对该行为的监控,3)是通过设置VMCS实现虚拟机监视器对该行为的监控。由于虚拟机监视器的权限比操作系统的权限更高,保证了对操作系统内核中可能存在的恶意驱动监视的有效性,提高了系统的安全性,满足了用户需求,而且无需修改操作系统也不需要添加额外硬件,降低了监视的成本,方案实现简单。
图2是本申请另一个实施例的内核驱动的监视方法的示意图,图3是本申请一个实施例的应用场景示意图;以下结合图2和图3,对本申请一个实施例的内核驱动的监视方法的实现步骤进行具体说明。
首先,参见图3,本申请实施例的方法应用于虚拟机监视器302。虚拟机监视器302位于硬件301和虚拟机303之间,本质上,虚拟机监视器是运行在VMX root模式的软件程序,而虚拟机是运行在VMX non-root模式的软件程序,虚拟机中运行有操作系统。虽然都是软件,但是虚拟机监视器比操作系统更底层。即,虚拟机监视器的权限比操作系统的权限更高。所以虚拟机监视器能够对虚拟机中运行的操作系统的驱动的行为进行有效监控避免被恶意驱动绕过起不到监视的问题。
具体的,参见图2,本实施例的方法在驱动运行的初始化阶段和持续运行阶段分别执行下列步骤。
首先,在驱动运行的初始化阶段,执行步骤S201,
步骤S201,启用虚拟机监视器;即,打开处理器对硬件虚拟化的支持。
具体的,可通过对CPU的ID进行检测,来判断处理器是否支持硬件虚拟化技术。如果处理器支持硬件虚拟化技术,可通过设置控制寄存器CR4的VMXE控制位来开启VMX操作模式。CR4(Control Register)是Intel在80486处理器基础上新增加的控制寄存器,控制寄存器的作用是决定处理器的操作模式和当前执行任务的一些特征。
假设处理器支持开启硬件虚拟化技术,则本实施例中,设置控制寄存器CR4的VMXE控制位开启VMX操作模式。当开启了VMX操作模式即实现将物理机的操作系统自动迁移到虚拟机中。
步骤S202,获取新加载驱动的基础信息;
在Windows操作系统中,每加载一个驱动,必然会调用一个专用于加载驱动的函数MmLoadSystemImage,将这个函数的二进制代码进行在线修改,虚拟机监视器就能获得函数的控制权,从而获取加载的驱动的基础信息。
一个实施例中,对函数MmLoadSystemImage进行在线修改包括如下子步骤:S2021,利用内存扫描的方法定位MmLoadSystemImage函数入口地址;S2022,将该函数的入口指令替换为VMCALL指令,从而使虚拟机监视器能够截获操作系统内核对该函数的调用操作;S2023,虚拟机监视器模拟执行MmLoadSystemImage函数中被替换的入口指令,使该函数能正常执行;S2024,修改调用MmLoadSystemImage函数的返回地址,使其指向非法地址,从而使虚拟机监视器能够再次截获该函数的返回操作;S2025,虚拟机监视器获取加载驱动的基础信息。
本实施例的方法对Windows操作系统的驱动加载函数进行在线修改,每当一个新的驱动被加载,即可通过上述方式对驱动加载行为进行实时监视。本实施例中获取的驱动的基础信息包括:驱动名称,基地址以及大小信息。
步骤S203,判断是否在白名单中;是则执行步骤S210,否则执行步骤S204;
当获取到新加载驱动的基础信息后,判断其是否在白名单中,即是否与白名单中的驱动匹配,如果是存在于白名单中的驱动,则不进行监视,即执行步骤S210正常运行该驱动。否则将新加载的驱动作为目标驱动,并在目标驱动运行的初始化阶段利用目标驱动的基础信息对驱动的权限以及操作系统内核中需保护对象的权限进行设置。即,对目标驱动进行监视。
这里的白名单是预先设置的,白名单中记录了多个安全的驱动的基础信息,白名单的生成可以是在干净安装的操作系统中获取驱动的信息,将此时获取的驱动的信息保存起来,以便后续用来判断是否需要对新加载的驱动进行监视。
步骤S204,创建一套与原始的EPT映射内容相同的扩展页表;
为了提高监视结果的真实可靠性,本实施例中采用动态分析方式,即,将目标驱动在真实的环境中正常运行,在运行过程中监视目标驱动的行为,从而能够发现目标驱动的更多行为特征。
有一种对内核驱动的动态监视方案是这样的:利用虚拟机监视器,并使用一套页表进行单一的权限设置来对寄存器、内核函数和内核数据进行监视,一旦发现异常行为将会触发虚拟机退出事件,被虚拟机监视器控制,从而发现驱动的恶意行为。
但是,这种方案采用单一的一套页表对待保护的内容进行内存权限设置,所以为了保证驱动的正常运行,需要不断的开启单步调试模式来重新进行权限设置,导致性能开销较大。并且,该方案保护的内容过少,很难保证对驱动的完整监视分析。
对于上述问题,本实施例中,根据原始的扩展页表EPT,创建一套与原始的扩展页表EPT映射内容相同的新扩展页表EPT,使用两套EPT分别设置权限,只需要在驱动运行初始化时设置一次,之后产生EPT异常时通过切换EPT页表,即可保证驱动的正常运行,这样不但提高了系统运行性能,而且降低了监视的逻辑复杂度,方便大规模推广应用。
步骤S205,在原始的EPT中去除所述驱动的可执行权限;
在采集到内核中新加载驱动的基础信息后,在原始的EPT页表中将该驱动的可执行权限设置为否,即,设置驱动不具有可执行权限,这样当目标驱动加载完成后开始执行并使用原始的EPT页表进行地址转换时,就会引起EPT异常,从而触发虚拟机退出事件,被虚拟机监视器捕获,虚拟机监视器根据捕获的异常输出一定的监视信息,进而达到对目标驱动进行监视的目的。
步骤S206,在新EPT中去除内核函数的可执行权限和内核数据的写入权限;
在新EPT中将内核函数的可执行权限设置为否,即不具有可执行权限,并将内核数据的写权限设置为否,即不具有写权限。这样当内核中的目标驱动持续运行并当调用了预先设置的待保护的内核函数时,将引起异常,触发虚拟机退出事件,被虚拟机监视器捕获,虚拟机监视器根据捕获的异常输出一定的监视信息,即可知道目标驱动调用的内核函数,通过这些行为可以对目标驱动的行为进行分析,确定目标驱动是否包含恶意操作。
这里的内核函数是根据经验预先确定的并且是驱动通常调用的函数,本实施例中根据预先获得的Windows内核函数导出表确定出内核函数的地址,并在EPT页表中设置内核函数的可执行权限为否。
具体的,EPT页表中有一个页表目录,该页表目录中包含最终转换的机器物理页的基址,页表目录根据处理器通用寄存器的数据宽度的不同而不同,当处理器的数据宽度为64位时,该页表目录的最后三位(即,0-2位)是关于权限设置的。参数e代表可执行权限,参数w代表写入权限,r参数代表读权限。置0为没有权限,置1为有权限。通过对权限设置,可以对内核函数进行保护。
对于一个内核函数,先查找到该内核函数的地址,然后在新EPT页表中的页表目录的相应位将该内核函数的可执行权限设置为0,使得该内核函数不具有可执行权限,从而当内核中运行的目标驱动调用这一内核函数时,将引发新EPT异常。同时将该内核函数的可写权限设置为0,使该内核函数不具有可写权限,以防止该内核函数被目标驱动修改。
对于Windows内核数据,本实施例中提供了一种获取内核数据地址的方式。具体而言,本实施例采用物理内存扫描技术,获取内核数据的地址。在Windows操作系统中,每个内存对象都拥有一个内存池头结构(POOL_HEADER),这个内存池头结构中不同的内存对象拥有不同的pool_tag变量,例如对于进程对象EPROCESS,在Windows xp操作系统中其pool_tag变量为字符串“Pro”。除此之外,每个内存池头结构中还拥有变量PreviousSize,PoolIndex,PoolType,BlockSize。针对每一类内核对象,这些变量拥有不同的规律。在扫描过程中,首先对pool_tag字符串进行扫描,对扫描出来的地址,再结合整个内存池头结构中其它四个变量的特征,确定这是否是一个真正的内核对象。在获取到内核数据的地址后,即可在新建的EPT页表中将内核数据对应的内存页的可写权限设定为否。
如此,采用两套扩展页表,在两套页表映射内容相同的情况下,在原始的EPT页表中,去除目标驱动的可执行权限,在新EPT页表中,去除内核函数的可执行权限和内核数据的写权限。关于权限的去除方法,前面已有说明,即只要对EPT页表中最后一级页表的相关数据位进行设置即可。并且EPT页表权限设置在被监视的目标驱动初始运行时完成,之后无需设置权限和修改页表内容,不会对性能产生影响。
接下来在目标驱动持续运行阶段,本实施例的方法执行下列步骤S207至步骤S209。
需要说明的是,图2中,主要以目标驱动持续运行阶段过程中出现的目标驱动调用内核函数引起的异常以及内核函数执行完毕返回目标驱动引起的异常进行的示意性说明。由于对目标驱动访问或修改内核数据,或者目标驱动访问特殊寄存器的行为引起的异常不需要切换EPT页表,而利用指令模拟执行技术使目标驱动能继续正常执行,即处理过程和图2所示的S207至步骤S209不同。这里先介绍步骤S207至步骤S209,具体的:
步骤S207,使用原始的EPT页表,当捕获到目标驱动开始执行引起的第一异常时,切换为新EPT并配置VMCS结构开启寄存器保护;
根据前面步骤S205中的说明可知,当使用原始的EPT页表的过程中,如果内核的目标驱动开始执行时,将引起第一异常,这里的第一异常为EPT异常的其中一种,并触发虚拟机退出事件,这时虚拟机监视器获得控制权,虚拟机监视器捕获到这一异常后,查询VMCS,根据VMCS中的设置输出监视信息。
然后虚拟机监视器通过修改EPT基指针寄存器将当前使用页表的根目录地址指向新EPT页表。即,通过修改EPT基指针寄存器完成两套页表的切换。
另外,在使用新EPT的过程中,虚拟机监视器设置VMCS中的执行控制字段的相应字段的值,以对相应寄存器进行保护。相应寄存器包括如下寄存器中的一个或多个:全局描述符表寄存器GDTR,局部描述符表寄存器LDTR,中断描述符表寄存器IDTR,任务寄存器TR,模式寄存器IA32_SYSENTER_EIP,调试控制寄存器DR7,调试状态寄存器DR6。
VMCS结构中有一个虚拟机执行控制字段(VM Execution Fields)。针对全局描述符表寄存器GDTR(Global Descriptor Table Register)、局部描述符表寄存器LDTR(LocalDescriptor Table Register)、中断描述符表寄存器IDTR(Interrupt Descriptor TableRegister)、任务寄存器TR(Task Register)的监视,使用secondary processor-based控制字段,该字段的ID值为0x0000401E,对这个控制字段的第三位descriptor-table exiting进行设置,可以实现对上述四种寄存器GDTR、LDTR、IDTR和TR的访问进行监视。
针对IA32_SYSENTER_EIP寄存器的监视,需要说明的是,IA32_SYSENTER_EIP本身是一个MSR(Model Specific Register)寄存器,所以使用MSR位图地址字段,该字段的ID值为0x00002004,该字段提供一个64位的地址,这个地址保存了一个4K大小的MSR位图,每一位都代表一个MSR寄存器,其中IA32_SYSENTER_EIP在0x176位,将0x176位的值设为1,即可实现对IA32_SYSENTER_EIP寄存器的监视。
针对调试寄存器DR6和DR7,使用primary processor-based控制字段,该字段的ID值为0x00004002,对这个控制字段的第24位进行设置,可以实现对调试寄存器(Debugregisters)的访问的监视。DR7是调试控制寄存器。DR6是调试状态寄存器,这个寄存器主要是在调试异常产生后,报告产生调试异常的相关信息。
有一种内核驱动的监视方案是这样的:利用虚拟机监视器,采用两套页表分别设置不同的权限,不对函数和内核数据的类型进行分析,直接将系统本身与被监视的驱动隔离,所以每当被监视的驱动对内核函数进行调用或者对内核数据进行修改都会引发虚拟机退出,从而被虚拟机监视器捕获。这种技术方案虽然采用了两套页表,不用对权限进行重复设置,但是并没有对保护的内容进行分类、整理,直接取消所有的权限,即使能够发现被监视的驱动的行为,但是并不能得知这些行为的意义,还需要人工进行分析,导致对驱动的监视分析效率低下。
为了解决这一问题,本实施例中在步骤S207中捕获了一个EPT异常,当捕获到该EPT异常时,触发一次虚拟机退出,进入虚拟机监视器,进入虚拟机监视器前,将虚拟机退出的相关原因保存起来。以及,对退出原因进行分类,具体的退出原因可分为:EPT异常退出,GDTR、IDTR访问退出,LDTR、TR访问退出,MSR寄存器读退出,MSR寄存器写退出,DR寄存器访问退出等等。而且预先建立退出原因和输出信息的对应关系,这样当监视到一类退出原因时,将该退出原因对应的输出信息进行输出,从而达到对保护的内容分类输出,提高了输出信息的可读性。
通过输出详细和完整的监视信息能够判断出目标驱动使用了什么指令,访问了哪个寄存器,提高对目标驱动监视分析的效率。进一步地,可以通过获取ECX寄存器(该寄存器是重复前缀指令和LOOP指令的内定计数器)的值,知道驱动访问的具体MSR寄存器。或者可以通过VMCS结构中的qualification字段,知道驱动访问的具体DR寄存器,并且能判断出目标驱动的行为是读还是写。
步骤S208,使用新的EPT页表,当捕获目标驱动调用内核函数引起的第三异常时,切换为原始的EPT并配置VMCS结构关闭寄存器保护;
当使用新EPT时,根据步骤S206中的配置可知,如果目标驱动调用了一个需要保护的内核函数时,也将引起预设的第二异常,并触发虚拟机退出事件,此时,虚拟监视器捕获这一退出事件,将虚拟机退出的相关原因保存起来。然后,虚拟机监视器将VMCS结构中相应字段的值设置为指示关闭对寄存器的保护,并通过修改EPT基指针寄存器将当前使用页表的根目录地址指向原始的EPT页表,使内核中的目标驱动继续运行。
这里需要说明的是,本发明实施例的特点是动态分析,即,是在目标驱动实际运行过程中对目标驱动的行为进行监视和分析,从而能够发现目标驱动的大部分行为,保证了监视的准确性。所以,本实施例中在使用新的EPT时,如果目标驱动调用设定的需保护的内核函数将引起第三异常进而触发虚拟机退出事件,并且本实施例中将当前页表切换为原始EPT页表,将VMCS的虚拟机执行控制字段中的指定字段的值配置为指示关闭保护相应寄存器。这是由于当目标驱动调用的内核函数时,控制权将切换回操作系统,操作系统的行为是不需要监视的,所以这里将VMCS的虚拟机执行控制字段中的指定字段的值配置为指示关闭保护相应寄存器。另外,当目标驱动调用的内核函数执行完后返回目标驱动时将引起预设的第二异常,本实施例将当前页表切换为新EPT页表,并且将VMCS的虚拟机执行控制字段中的指定字段的值配置为指示开启保护相应寄存器。这是由于当内核函数执行完成后返回目标驱动时,控制权将交还给目标驱动这时,需要继续对目标驱动的行为进行监视,因而将将VMCS的虚拟机执行控制字段中的指定字段的值配置为指示开启保护相应寄存器。
本实施例中通过对目标驱动的分析,能够总结出目标驱动对特殊寄存器的利用方式,保证在目标驱动自身的代码运行时,配置VMCS结构中的相关字段,每当有对GDTR、LDTR、IDTR、TR、IA32_SYSENTER_EIP、DR7和DR6寄存器的读取和修改行为时,将触发虚拟机退出。当执行流程从目标驱动转移到操作系统内核的代码运行时,关闭VMCS中此项配置,即将VMCS的虚拟机执行控制字段中的指定字段的值配置为指示关闭保护相应寄存器。
而对于捕获的目标驱动修改内核数据或者访问或修改特定寄存器分别引起的第四异常和第五异常,本实施例的方法是借助虚拟机监视器提供的指令模拟执行机制来运行,无需切换EPT页表。指令模拟执行机制基本流程如下:
(一)读取产生VM Exit的目标驱动的指令;
(二)对目标指令进行语义解析;
(三)将虚拟机中CPU所有寄存器信息加载到位于虚拟机监视器中的模拟器模块的虚拟CPU中;
(四)在模拟器模块的虚拟CPU中模拟执行目标指令;
(五)将模拟执行的结果写回到虚拟机的CPU寄存器中;
(六)更新虚拟机的程序计数器(即RIP寄存器),使其指向目标指令的下一条指令,从而跳过已执行的目标指令。通过指令模拟执行的方式,当目标驱动读取或修改内核数据(或特殊寄存器)时,不需要切换EPT页表,即继续使用新EPT,并保证目标驱动的继续执行以对目标驱动进行动态监视分析。
步骤S209,再次使用原始的EPT,当捕获内核函数执行完成返回目标驱动引起的第二异常时,切换为新EPT并配置VMCS结构开启保护。
如此重复步骤S207和步骤S209直至目标驱动运行完成。
需要说明的是,上述步骤S207至步骤S209中第一异常,第二异常和第三异常都属于EPT异常,即,引起EPT异常的原因有三种,第一种是在使用原始的EPT过程中,目标驱动开始执行,由于在原始的EPT页表中目标驱动的执行权限被设置为否,所以一旦目标驱动开始执行将引起EPT异常。第二种是在使用新的EPT页表的过程中,目标驱动调用了内核函数这时也将引起EPT异常,即第三异常。第三种是内核函数执行完成返回目标驱动时将引起EPT异常,即第二异常。
除此之外,EPT异常还包括目标驱动在使用新的EPT页表的过程中,目标驱动访问特定内核数据的行为引起的第五异常。对于前述第一异常、第二异常和第三异常需要切换EPT页表。而对于第五异常无需切换EPT页表,采用指令模拟执行的方式处理。通过模拟执行的方式,当目标驱动读取或修改内核数据(或特殊寄存器)时,不需要切换EPT页表,即继续使用新的EPT,并通过指令模拟机制保证目标驱动的继续执行以对目标驱动进行动态监视分析。
由上可知,本实施例的方法的工作过程是:通过在EPT页表中进行权限配置,目标驱动产生的EPT异常,会被虚拟机监视器捕获,虚拟机监视器获得系统的控制权进而输出监视信息。本实施例中设置的异常例如有以下几种情况:(1)当使用原始的EPT页表时,被监视的目标驱动本身发生EPT执行异常。然后虚拟机监视器输出相应监视信息,并将当前页表切换为新EPT页表,接着虚拟机监视器会配置VMCS结构保护一些特殊的寄存器。(2)当使用新EPT页表时,发生内核函数执行异常(原因为被监视的驱动调用了内核函数),虚拟机监视器配置VMCS结构关闭对特殊寄存器的保护。以及虚拟机监视器输出相应监视信息,并将当前页表切换为原始的EPT页表(3)当使用新EPT页表时,发生内核数据写入异常(原因为被监视的驱动修改了内核数据),或者寄存器访问异常(原因为被监视的驱动访问了受保护的寄存器)接着虚拟机监视器输出相应监视信息,并通过指令模拟执行的方式执行目标驱动的相应指令代码,这时不需要进行页表切换。
通过以上的异常动态监视,虚拟机监视器可以清楚的知道目标驱动的行为,具体的,可以通过页表的切换知道目标驱动是运行自身的代码还是调用内核函数当目标驱动调用内核函数时引起异常,产生VM Exit并切换EPT页表,当内核函数执行完相关操作返回到目标驱动继续执行时,由于EPT权限的设置将再次产生VM Exit,切换EPT页表,并配置VMCS结构开启对特殊寄存器保护以监控目标驱动对特殊寄存器的访问操作。
另外,在使用新的EPT页表的过程中,通过指令模拟执行的方式,当目标驱动读取或修改内核数据时(或特殊寄存器),不需要切换EPT页表,即继续使用新EPT,并保证目标驱动的继续执行以对目标驱动进行动态监视分析。,通过对VMCS结构进行配置来监控目标驱动对一些寄存器的访问操作。例如,虚拟机监视器配置VMCS结构保护一些特殊的寄存器,如果这个时候被监视的目标驱动对这些寄存器进行了读取或修改,将会触发VM Exit事件,虚拟机监视器输出相应的监视信息。与前述目标驱动调用内核函数或内核函数执行完成后返回引起的异常相比,这种异常时不需要切换EPT页表,也不需要修改VMCS结构中相关配置项的值。
针对发生异常时输出的监视信息,由于本实施例对保护的内容有明确的分类,所以能够详细的输出调用的函数名称、修改的内核数据种类和访问的具体寄存器等信息,提高了内核驱动的行为分析效率和监视结果的可读性。
以下以一个具体实例对本申请的方法的实现过程进行说明。
有一个驱动changeName,该驱动的目标是在内核中修改一个进程的名字。利用本实施例的方法对该驱动进行监视和分析:
首先启用一个虚拟机监视器,然后,启动内核并加载changeName。由于驱动的加载函数已经被修改,即,将加载函数的返回地址修改为一个会引发EPT异常的地址,然后正常运行加载函数。
在changeName加载时,虚拟机监视器能够获取加载函数的控制权。加载函数运行到函数末尾时,changeName加载成功,此时加载函数返回,产生EPT异常,虚拟机监视器再次获取了程序的控制权。
在这时,通过对栈中数据的获取,可以得到changeName的名字,基地址和大小信息。通过这些信息,在原始的EPT页表中去除掉changeName的执行权限。根据预先确定的内核函数地址和通过物理内存扫描得到的内核数据,在新EPT页表中去除内核函数的执行权限和内核数据的写入权限。当使用新EPT页表时,一旦changeName对内核数据(比如进程的名字)进行修改,就会产生一个EPT异常(因为修改名字必须修改进程的EPROCESS控制结构,而这一内核数据的写入权限已经在驱动运行初始化时被设置为不可写入)。
最后,虚拟机监视器将changeName的操作信息输出(例如,输出的监视信息中包括退出原因:修改内核数据),如此能够根据输出的信息得知该changeName的目标,进而判断出目标驱动changeName的行为。为保证目标驱动继续正常执行,虚拟机监视器利用指令模拟执行技术对内核数据进行写操作,并返回目标驱动写操作的下一条指令继续执行。
由上可知,本实施例的内核驱动的监视方法将硬件虚拟化技术应用于Windows操作系统内核驱动行为监视和分析,虚拟机监视器可以透明地运行于操作系统之下,动态监控目标驱动的行为。使用两套EPT页表,降低了性能开销并减小了程序复杂度。保护的内容更全面,并且对内容有明确的分类从而在输出信息时,能够更加详细和完整。最后,通过使用物理内存扫描技术获取内核数据,将物理内存扫描结果应用于Windows操作系统内核驱动行为监视中,而且无需修改已有操作系统,也不需要添加额外硬件,方案实现简单。
本实施例还提供了一种与前述方法属于同一个发明构思的内核驱动的监视装置,参见图4,为本申请一个实施例的内核驱动的监视装置的结构框图,内核驱动的监视装置40,应用于启动后的虚拟机监视器,包括:
获取模块401,用于获取迁移到虚拟机中的物理机的操作系统内核中运行的目标驱动的基础信息,
设置模块402,用于在所述目标驱动初始化时利用所述驱动的基础信息对目标驱动的权限以及所述操作系统内核中需保护对象的内存权限进行设置,以及在所述目标驱动运行时,设置虚拟机控制结构VMCS;
监视模块403,用于根据设置的所述目标驱动的权限,设置的所述需保护对象的内存权限以及设置的所述VMCS,当捕获到所述目标驱动的行为引起预设的异常时,触发虚拟机退出事件并输出监视信息完成对所述目标驱动的监视。
在本发明的一个实施例中,监视模块403预先对触发虚拟机退出事件的原因进行分类,并定义每一类退出原因对应的输出信息,根据本次监视到的触发虚拟机退出事件的原因,查找退出原因和输出信息的对应关系,将查找到的输出信息作为监视信息输出。
本实施例中,设置模块402具体用于根据原始的扩展页表EPT,创建与原始的EPT映射内容相同的新EPT,并在原始的EPT中,根据所述目标驱动的基础信息设置驱动不具有可执行权限,在新EPT中设置指定内核函数不具有可执行权限以及指定内核数据不具有写权限;以及用于设置虚拟机控制结构VMCS,具体设置VMCS的虚拟机执行控制字段中的指定字段的值,以监视所述目标驱动对相应寄存器的读取或修改行为,以及设置VMCS的虚拟机退出消息字段中的指定字段的值,指示触发虚拟机退出事件的原因。
本实施例中,监视模块403包括:第一输出模块,适于在使用原始的EPT的过程中,捕获到所述目标驱动加载完成后开始执行时引起的第一异常或者当捕获到所述目标驱动调用的指定内核函数执行完成后返回目标驱动引起的第二异常时时,触发虚拟机退出事件并输出监视信息后将当前页表切换为新EPT,并将VMCS的虚拟机执行控制字段中的指定字段的值配置为指示开启保护相应寄存器;
第二输出模块,适于在使用新EPT的过程中,捕获到所述目标驱动调用指定内核函数引起的第三异常,则触发虚拟机退出事件并输出监视信息后,将当前页表切换为原始的EPT以及将VMCS的虚拟机执行控制字段中的指定字段的值配置为指示关闭保护相应寄存器,或者每当捕获所述目标驱动修改指定内核数据引起的第四异常,或者捕获所述目标驱动读取或修改相应寄存器引起的第五异常时,触发虚拟机退出事件并输出监视信息后通过指令模拟执行来执行目标驱动的相应指令代码。
这里的相应寄存器包括如下寄存器中的一个或多个:全局描述符表寄存器GDTR,局部描述符表寄存器LDTR,中断描述符表寄存器IDTR,任务寄存器TR,模式寄存器IA32_SYSENTER_EIP,调试控制寄存器DR7,调试状态寄存器DR6。
图4所示的内核驱动的监视装置,根据预先确定的需要保护的相应寄存器和内核函数地址,在驱动运行时,对相应寄存器和内核函数进行保护,采用物理内存扫描,动态、完整的发现系统中的内核数据,使得需要保护的内容尽可能全面。使用两套页表分类进行权限设置,驱动运行过程中只需要切换页表,不需要再重新设置权限,降低了性能开销。并且一旦触发虚拟机退出都能输出完整的调用或者修改信息,无需进行人工分析,提高了内核驱动的监视分析效率和安全性。
图5是本申请另一个实施例的内核驱动的监视装置的结构框图。参见图5,本实施例的内核驱动的监视装置包括:获取模块401,设置模块402,监视模块403,白名单管理模块404和内存扫描模块405。其中获取模块401、设置模块402和监视模块403,前面已经有了说明,这里不再赘述。
下面重点对白名单管理模块和内存扫描模块进行说明。
具体的,白名单管理模块404,预先创建一个白名单,并对于操作系统的用于加载驱动的函数进行修改,实时获取操作系统内核中新加载的驱动的名称以及基地址的信息,根据获取的名称和基地址信息判断所述驱动是否在预设的白名单中,是则,正常运行所述驱动,否则,将所述驱动作为目标驱动,并在所述目标驱动运行的初始化阶段利用所述目标驱动的基础信息对目标驱动的权限以及所述操作系统内核中需保护对象的权限进行设置。
内存扫描模块405,适于在所述操作系统内核运行时,对物理内存中的内存对象进行扫描,根据各内存对象的内存池头结构,得到指定内核数据的地址。具体的,内存扫描模块405对各个内存对象的内存池头结构(pool_tag)进行扫描,再结合整个数据结构的特征,获取到内核数据的地址。
综上所述,本实施例的内核驱动的监视方法和装置,将硬件虚拟化技术应用于Windows操作系统内核驱动行为监视和分析。使用两套EPT页表,降低了性能开销,并减小了程序复杂度。能够对系统中更多内容进行保护,保护的更全面,保证系统的安全性。对需要保护的内容进行分类,使得输出的监视信息更加详细和完整,提高了内核驱动的监视的效率和安全性。
以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围以权利要求的保护范围为准。
Claims (10)
1.一种内核驱动的监视方法,其特征在于,包括:启用虚拟机监视器,利用所述虚拟机监视器执行下列操作:
获取迁移到虚拟机中的物理机的操作系统内核中运行的目标驱动的基础信息;
在所述目标驱动初始化时利用所述目标驱动的基础信息对目标驱动的权限以及所述操作系统内核中需保护对象的内存权限进行设置,以及在所述目标驱动运行时,设置虚拟机控制结构VMCS;
根据设置的所述目标驱动的权限,设置的所述需保护对象的内存权限以及设置的所述VMCS,当捕获到所述目标驱动的行为引起预设的异常时,触发虚拟机退出事件并输出监视信息完成对所述目标驱动的监视。
2.根据权利要求1所述的方法,其特征在于,利用所述目标驱动的基础信息对目标驱动的权限以及内核中需保护对象的内存权限进行设置包括:
根据原始的扩展页表EPT,创建与原始的EPT映射内容相同的新EPT,并在原始的EPT中,根据所述目标驱动的基础信息设置目标驱动不具有可执行权限,在新EPT中设置指定内核函数不具有可执行权限以及指定内核数据不具有写权限,
设置虚拟机控制结构VMCS包括:
设置VMCS的虚拟机执行控制字段中的指定字段的值,以监视所述目标驱动对相应寄存器的读取或修改行为,以及设置VMCS的虚拟机退出消息字段中的指定字段的值,指示触发虚拟机退出事件的原因。
3.根据权利要求2所述的方法,其特征在于,当捕获到所述目标驱动执行超越权限的行为而引起预设的异常时,触发虚拟机退出事件并输出监视信息包括:
使用原始的EPT的过程中,当捕获到所述目标驱动加载完成后开始执行时引起的第一异常或者当捕获到所述目标驱动调用的指定内核函数执行完成后返回目标驱动引起的第二异常时,则触发虚拟机退出事件并输出监视信息后将当前页表切换为新EPT,并将VMCS的虚拟机执行控制字段中的指定字段的值配置为指示开启保护相应寄存器;
使用新EPT的过程中,每当捕获到所述目标驱动调用指定内核函数时引起的第三异常,则触发虚拟机退出事件并输出监视信息后将当前页表切换为原始的EPT以及将VMCS的虚拟机执行控制字段中的指定字段的值配置为指示关闭保护相应寄存器,或者每当捕获所述目标驱动修改指定内核数据引起的第四异常,或者捕获所述目标驱动读取或修改相应寄存器引起的第五异常时,分别触发虚拟机退出事件并输出监视信息后通过指令模拟执行来执行目标驱动的相应指令代码。
4.根据权利要求3所述的方法,其特征在于,输出监视信息包括:
预先对触发虚拟机退出事件的原因进行分类,并定义每一类退出原因对应的输出信息,
根据本次监视到的触发虚拟机退出事件的原因,查找退出原因和输出信息的对应关系,将查找到的输出信息作为监视信息输出。
5.根据权利要求1所述的方法,其特征在于,获取目标驱动的基础信息包括:
对于操作系统的用于加载驱动的函数进行在线修改,实时获取操作系统内核中新加载的驱动的名称以及基地址的信息,
还包括:
根据获取的新加载的驱动的名称以及基地址信息判断所述驱动是否与预设的白名单中的驱动匹配,
是则,正常运行所述驱动,
否则,将所述驱动作为目标驱动并在所述驱动运行的初始化阶段利用所述目标驱动的基础信息对目标驱动的权限以及所述操作系统内核中需保护对象的内存权限进行设置。
6.根据权利要求2所述的方法,其特征在于,所述指定内核数据通过如下方式确定出:
在所述操作系统内核运行时,对物理内存中的内存对象进行扫描,根据各内存对象的内存池头结构,得到指定内核数据的内存地址。
7.根据权利要求3所述的方法,其特征在于,所述相应寄存器包括如下寄存器中的一个或多个:
全局描述符表寄存器GDTR,局部描述符表寄存器LDTR,中断描述符表寄存器IDTR,任务寄存器TR,模式寄存器IA32_SYSENTER_EIP,调试寄控制存器DR7,调试状态寄存器DR6。
8.一种内核驱动的监视装置,其特征在于,应用于启动后的虚拟机监视器,包括:
获取模块,用于获取迁移到虚拟机中的物理机的操作系统内核中运行的目标驱动的基础信息,
设置模块,在所述目标驱动运行的初始化阶段利用所述目标驱动的基础信息对目标驱动的权限以及所述操作系统内核中需保护对象的权限进行设置,以及在所述目标驱动的持续运行阶段,设置虚拟机控制结构VMCS;
监视模块,用于根据设置的所述目标驱动的权限,设置的所述需保护对象的内存权限以及设置的所述VMCS,当捕获到所述目标驱动的行为引起预设的异常时,触发虚拟机退出事件并输出监视信息完成对所述目标驱动的监视。
9.根据权利要求8所述的装置,其特征在于,
所述设置模块,具体用于根据原始的扩展页表EPT,创建与原始的EPT映射内容相同的新EPT,并在原始的EPT中,根据所述目标驱动的基础信息设置驱动不具有可执行权限,在新EPT中设置指定内核函数不具有可执行权限以及指定内核数据不具有写权限;
以及,设置VMCS的虚拟机执行控制字段中的指定字段的值,以监视所述目标驱动对相应寄存器的读取或修改行为,以及设置VMCS的虚拟机退出消息字段中的指定字段的值,指示触发虚拟机退出事件的原因。
10.根据权利要求9所述的装置,其特征在于,
所述监视模块包括:第一输出模块,用于使用原始的EPT的过程中,当捕获到所述目标驱动加载完成后开始执行时引起的第一异常或者当捕获到所述目标驱动调用的指定内核函数执行完成后返回目标驱动引起的第二异常时,则触发虚拟机退出事件并输出监视信息后将当前页表切换为新EPT,将VMCS的虚拟机执行控制字段中的指定字段的值配置为指示开启保护相应寄存器;
第二输出模块,用于使用新EPT的过程中,当捕获到所述目标驱动调用指定内核函数引起的第三异常,则触发虚拟机退出事件并输出监视信息后,将当前页表切换为原始的EPT以及将VMCS的虚拟机执行控制字段中的指定字段的值配置为指示关闭保护相应寄存器,或者每当捕获所述目标驱动修改指定内核数据引起的第四异常,或者捕获所述目标驱动读取或修改相应寄存器引起的第五异常时,分别触发虚拟机退出事件并输出监视信息后通过指令模拟执行来执行目标驱动的相应指令代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710619371.1A CN107368739B (zh) | 2017-07-26 | 2017-07-26 | 一种内核驱动的监视方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710619371.1A CN107368739B (zh) | 2017-07-26 | 2017-07-26 | 一种内核驱动的监视方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107368739A true CN107368739A (zh) | 2017-11-21 |
CN107368739B CN107368739B (zh) | 2020-02-07 |
Family
ID=60307192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710619371.1A Active CN107368739B (zh) | 2017-07-26 | 2017-07-26 | 一种内核驱动的监视方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107368739B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109784062A (zh) * | 2018-12-29 | 2019-05-21 | 360企业安全技术(珠海)有限公司 | 漏洞检测方法及装置 |
CN111444504A (zh) * | 2020-03-30 | 2020-07-24 | 安芯网盾(北京)科技有限公司 | 一种用于软件运行时自动识别恶意代码的方法及装置 |
CN111949376A (zh) * | 2020-08-24 | 2020-11-17 | 海光信息技术有限公司 | 虚拟机系统和用于虚拟机系统的方法 |
CN116049809A (zh) * | 2022-06-14 | 2023-05-02 | 荣耀终端有限公司 | 一种驱动调用方法和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8387046B1 (en) * | 2009-03-26 | 2013-02-26 | Symantec Corporation | Security driver for hypervisors and operating systems of virtualized datacenters |
CN104809401A (zh) * | 2015-05-08 | 2015-07-29 | 南京大学 | 一种操作系统内核完整性保护方法 |
CN106778242A (zh) * | 2016-11-28 | 2017-05-31 | 北京奇虎科技有限公司 | 基于虚拟机的内核漏洞检测方法及装置 |
-
2017
- 2017-07-26 CN CN201710619371.1A patent/CN107368739B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8387046B1 (en) * | 2009-03-26 | 2013-02-26 | Symantec Corporation | Security driver for hypervisors and operating systems of virtualized datacenters |
CN104809401A (zh) * | 2015-05-08 | 2015-07-29 | 南京大学 | 一种操作系统内核完整性保护方法 |
CN106778242A (zh) * | 2016-11-28 | 2017-05-31 | 北京奇虎科技有限公司 | 基于虚拟机的内核漏洞检测方法及装置 |
Non-Patent Citations (2)
Title |
---|
张磊等: "基于虚拟机的内核完整性保护技术", 《电子科技大学学报》 * |
肖如良等: "一种面向Xen虚拟计算环境的运行时内存泄漏检测方法", 《计算机研究与发展》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109784062A (zh) * | 2018-12-29 | 2019-05-21 | 360企业安全技术(珠海)有限公司 | 漏洞检测方法及装置 |
CN111444504A (zh) * | 2020-03-30 | 2020-07-24 | 安芯网盾(北京)科技有限公司 | 一种用于软件运行时自动识别恶意代码的方法及装置 |
CN111949376A (zh) * | 2020-08-24 | 2020-11-17 | 海光信息技术有限公司 | 虚拟机系统和用于虚拟机系统的方法 |
CN116049809A (zh) * | 2022-06-14 | 2023-05-02 | 荣耀终端有限公司 | 一种驱动调用方法和设备 |
CN116049809B (zh) * | 2022-06-14 | 2023-11-07 | 荣耀终端有限公司 | 一种驱动调用方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107368739B (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10810306B2 (en) | Cognizant engines: systems and methods for enabling program observability and controlability at instruction level granularity | |
CN103399812B (zh) | 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法 | |
CN104766011B (zh) | 基于主机特征的沙箱检测告警方法和系统 | |
CN107368739A (zh) | 一种内核驱动的监视方法和装置 | |
CN111597109B (zh) | 一种跨架构固件堆内存的缺陷检测方法及系统 | |
KR101740604B1 (ko) | 멀웨어 검출을 위한 애플리케이션들의 제네릭 언패킹 | |
CN106055385B (zh) | 监控虚拟机进程的系统和方法、过滤page fault异常的方法 | |
CN102651062B (zh) | 基于虚拟机架构的恶意行为跟踪系统和方法 | |
CN1561485A (zh) | 用于限制在由虚拟机监控器支持的虚拟机上运行的客户软件操作的新处理器模式 | |
CN109714314B (zh) | 一种重现漏洞全生命周期的全息漏洞库的构建方法 | |
CN112286823A (zh) | 一种操作系统内核的测试方法和装置 | |
CN104715202A (zh) | 一种虚拟机中的隐藏进程检测方法和装置 | |
CN109597675A (zh) | 虚拟机恶意软件行为检测方法及系统 | |
CN110737888B (zh) | 虚拟化平台操作系统内核数据攻击行为检测方法 | |
CN103425563B (zh) | 基于虚拟化技术的在线i/o电子取证系统及其取证方法 | |
CN111309589A (zh) | 一种基于代码动态分析的代码安全扫描系统及方法 | |
CN113176926B (zh) | 一种基于虚拟机自省技术的api动态监控方法及系统 | |
Liu et al. | A smart contract vulnerability detection mechanism based on deep learning and expert rules | |
Bravo et al. | Proactive detection of kernel-mode rootkits | |
CN107391234B (zh) | 一种基于vmi的文件系统细粒度监控方法 | |
CN107885489A (zh) | 一种快速检测实名登记数据指标的方法和系统 | |
CN107203410A (zh) | 一种基于系统调用重定向的vmi方法及系统 | |
CN106775941A (zh) | 一种虚拟机内核完整性保护方法和装置 | |
CN107203716A (zh) | 一种Linux内核轻量级结构化保护方法及装置 | |
CN108563491B (zh) | 一种基于虚拟机的自省自动化管理、配置与自省方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |