CN107688481B - 一种支持多节点的kvm虚拟机隐藏进程检测系统 - Google Patents
一种支持多节点的kvm虚拟机隐藏进程检测系统 Download PDFInfo
- Publication number
- CN107688481B CN107688481B CN201710707446.1A CN201710707446A CN107688481B CN 107688481 B CN107688481 B CN 107688481B CN 201710707446 A CN201710707446 A CN 201710707446A CN 107688481 B CN107688481 B CN 107688481B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- module
- system call
- pid
- kvm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 711
- 230000008569 process Effects 0.000 title claims abstract description 668
- 238000001514 detection method Methods 0.000 title claims abstract description 95
- 230000006870 function Effects 0.000 claims description 24
- 230000006399 behavior Effects 0.000 claims description 13
- 238000004886 process control Methods 0.000 claims description 9
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 4
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 abstract description 4
- 238000002955 isolation Methods 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 5
- 230000006378 damage Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 101100136092 Drosophila melanogaster peng gene Proteins 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000000611 regression analysis Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Classifications
-
- 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
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种支持多节点的KVM虚拟机隐藏进程检测系统,属于虚拟化安全技术领域。其包括可信进程追踪模块、进程系统调用捕获模块、终止进程判定模块、非可信进程列表获取模块及隐藏进程对比检测模块。该系统利用虚拟机内省机制以及虚拟机监控器提供的高特权性和高隔离性,在宿主机中实现同时对多个虚拟机节点的进程追踪、进程系统调用行为捕获以及隐藏进程检测,为非专业人士对KVM虚拟机内部进程进行实时监控提供了便利的工具。
Description
技术领域
本发明涉及虚拟化安全技术领域,特别是指一种支持多节点的KVM虚拟机隐藏进程检测系统。
背景技术
KVM/QEMU-KVM是目前虚拟化研究方向的核心支撑技术之一,被广泛应用于各个方向。但是引入QEMU-KVM技术后,由于其虚拟化出来的操作系统之间的安全性问题目前尚未获得较好的解决或证明方法,使攻击者有渠道完成虚拟机逃逸,甚至可以在宿主机平台上造成严重的破坏。目前绝大多数内核级rootkit,都具有隐藏进程的功能,一旦与恶意进程相配合,将会对系统安全造成巨大的威胁。因此,研究恶意隐藏进程的检测方法对保障系统的安全具有重要的意义。
VMwatcher在虚拟机外部构建进程控制块链表,并通过交叉视图的方式比较外部重构进程列表和内部汇报进程列表的差异,以此确定是否存在隐藏进程。然而直接操作内核对象(Direct Kernel Object Manipulation,DKOM)类攻击可以将待隐藏进程控制块从进程队列中摘链,因而该方法可能会出现漏检现象。
Lycosid利用假设检验方法判定被检测系统中是否存在隐藏进程,并通过最小二乘回归分析法计算进程的CPU占用率情况,以识别目标隐藏进程。该方法适合相对活跃系统(进程创建、销毁频繁的系统),但是需要统计一定数量的数据,在此过程中恶意隐藏进程可能己对系统造成了破坏。由于它通过概率的方式识别隐藏进程,可能存在漏检或误警的现象。
虚拟机监视器(Virtual Machine Monitor,VMM)对上层虚拟机的完全控制权以及虚拟机间运行环境的强隔离性,为安全检测系统提供了良好的实施平台。借助虚拟机监控器提供的控制权与隔离性,电子科技大学的彭春洪与刘丹提出了一种基于KVM虚拟机的隐藏进程检测算法。算法依据客户机调度进程时会访问CR3寄存器而引起VCPU陷入到根模式执行的原理,在虚拟机的陷入异常处理函数中插入多视图进程检测算法,大大提升了隐藏进程的检测准确性,同时提出一种优化的hash算法来减小对虚拟机的性能损失。
目前的虚拟机隐藏进程检测技术通过不断深入了解虚拟机架构及机理,已经逐步提高了检测准确率以及对虚拟机的性能消耗。但现有的研究仍局限于方法验证的层次,仅针对单个虚拟机进行检测算法研究层次上的功能和性能优化。从应用角度来看,现有的技术无法实现对宿主机上部署的所有节点的同时检测,难以用于实际的工程应用。同时目前尚没有成熟、可靠、实用的工具软件可供使用,对虚拟机隐藏进程技术的实用化产生了不利影响。
发明内容
有鉴于此,本发明提供一种支持多节点的KVM虚拟机隐藏进程检测系统,其具有对部署宿主机上的所有虚拟机节点进行实时、准确、高效的隐藏进程检测的能力,用户不必在虚拟机内部进行多余操作,便可在宿主机中对虚拟机进行进程监控,有助于促进KVM虚拟机隐藏进程检测技术在实际工程方面的应用。
为了实现上述目的,本发明提供的技术方案是:
一种支持多节点的KVM虚拟机隐藏进程检测系统,其包括可信进程追踪模块、进程系统调用捕获模块、终止进程判定模块、非可信进程列表获取模块、隐藏进程对比检测模块及用于集成上述模块的系统框架程序;其中:
可信进程追踪模块:用于实现从虚拟机监控器层次上对多个虚拟机节点的进程追踪、语义重构以及进程列表存储;
进程系统调用捕获模块:用于实现对多个虚拟机节点的进程系统调用行为的捕获及识别功能;
终止进程判定模块:用于对可信进程模块追踪得到的各个虚拟机节点的进程进行终止判定;
非可信进程列表获取模块:用于实现从虚拟机操作系统层次获取目标虚拟机的内部进程列表的功能;
隐藏进程对比检测模块:用于将可信进程追踪模块获取的可信进程列表以及非可信进程列表获取模块输出的非可信进程列表进行对比,检测出当前虚拟机中的隐藏进程,并将检测结果输出至系统框架程序提供的用户界面;
系统框架程序:用于实现各子模块的集成和数据的传递与管理,并提供用户界面,将用户输入的虚拟机域名传递至非可信进程列表获取模块,将隐藏进程对比检测模块的检测结果输出至用户界面。
可选的,所述可信进程追踪模块实现如下过程:
(1)在虚拟机监控器中处理客户机进程切换的功能模块中,获取虚拟机CPU描述符kvm_vcpu结构体,借助内核接口vmcs_readl从中读取将被切换至非运行状态的进程页目录基地址寄存器以及内核栈顶指针寄存器的值;
(2)依据内核栈顶指针寄存器值解析得到目标虚拟机的进程控制块thread_info结构体对应的客户机虚拟地址;同时进程页目录基地址寄存器的值被保存到指向当前虚拟机的虚拟机描述符kvm结构体中,提供给终止进程判定模块作为查找进程的依据;
(3)调用内核接口kvm_mmu_gva_to_gpa_read以及kvm_read_guest,完成客户机虚拟地址到客户机物理地址的转换以及进程控制块thread_info结构体的数据读取,thread_info结构体成员变量中包含指向虚拟机当前进程的进程描述符的客户机虚拟地址;
(4)根据进程描述符的客户机虚拟机以及目标虚拟机内核中进程pid及进程名称偏移值,再次调用内核接口kvm_mmu_gva_to_gpa_read以及kvm_read_guest,完成地址转换并读取出进程pid、父进程pid、线程组id以及进程名称等关键信息;
(5)将重构出的虚拟机当前进程的进程pid、进程名称、进程pid、父进程pid、线程组id以及进程页目录基地址存入目标虚拟机对应的kvm结构体;
(6)每当目标虚拟机进行进程切换时,自动执行步骤(1)至(5),收集所有曾在目标虚拟机中被调度执行过的进程信息。
可选的,所述进程系统调用捕获模块实现如下过程:
(1)在虚拟机监控器运行虚拟机后,修改虚拟机硬件支持寄存器EFER的SCE位,关闭目标虚拟机对syscall系统调用指令的支持,同时设置捕获陷阱标记;
(2)设置系统调用捕获范围;
(3)在虚拟机监控器负责模拟syscall指令的模块中,设置检测点:首先判断捕获陷阱标记是否存在;如果不存在,则说明是目标虚拟机操作系统自身产生的指令异常;否则,说明捕获到目标虚拟机的进程系统调用行为;
(4)若捕获到进程的系统调用行为,则借用内核接口kvm_register_read读取当前RAX、RDI、RSI寄存器的值作为系统调用信息,提供给终止进程判定模块进行进程终止判定的数据来源;
(5)将系统调用信息以及目标虚拟机对应的虚拟机描述符传输至终止进程判定模块;
(6)每当目标虚拟机内部进程使用syscall指令调用系统调用时,自动执行步骤(1)至(5)。
可选的,所述终止进程判定模块实现如下过程:
(1)在进程系统调用捕获模块输出的系统调用信息中,RAX寄存器的值为系统调用号,本模块将根据系统调用号对系统调用行为进行区分处理;
(2)如果系统调用号对应sys_exit或者sys_exit_group,则根据目标虚拟机描述符结构体中记录的当前进程,将该进程判定为已终止;系统调用号对应sys_exit_group时,要将与调用该系统调用的进程处于同一线程组的进程全部判定为已终止;
(3)如果系统调用号对应sys_wait4,则RDI寄存器为要被终止的目标进程的进程pid,当pid为0时,针对调用该系统调用的进程的子进程,将与调用进程处于同一线程组的所有进程判定为已终止;当pid为-1时,将调用该系统调用的进程的所有子进程判定为已终止;当pid小于-1时,针对调用该系统调用的进程的子进程,将线程组id等于pid绝对值的进程判定为已终止;当pid大于0时,针对调用该系统调用的进程的子进程,将线程组id等于pid的进程判定为已终止;
(4)如果系统调用号对应sys_waitid,则RSI寄存器为要被终止的目标进程的进程pid,RDI寄存器中为idtype;当idtype为0时,将调用该系统调用的进程的所有子进程判定为已终止;当idtype为1时,针对调用该系统调用的进程的子进程,将进程pid等于RSI寄存器值的进程判定为已终止;
(5)如果捕获到的系统调用为sys_kill或者sys_tkill或者sys_tgkill,则RDI寄存器为要被终止的目标进程的进程pid,RSI寄存器为向目标进程发出的信号类型;当信号类型表示终止目标进程时,则根据进程pid将对应进程判定为已终止;
(6)将判定结果写入虚拟机描述符中的对应进程项。
可选的,所述非可信进程列表获取模块实现如下过程:
(1)系统框架程序将用户输入的目标虚拟机域名传递至本模块,根据域名完成libvmi库初始化;
(2)根据虚拟机域名获取该虚拟机内核中进程pid及进程名称等信息的偏移值;
(3)暂停虚拟机运行,用以访问虚拟机内存;
(4)读取内0号进程swapper的地址;
(5)根据地址读取出0号进程对应进程描述符的内容,其成员变量tasks为当前虚拟机内存中的进程链表;
(6)遍历该进程链表,根据步骤(2)获取的进程pid等偏移值,获取进程信息,存入本模块自定义的进程列表中;
(7)读取完所有进程信息后,将进程链表输出至隐藏进程对比检测模块;
(8)借助预先在虚拟机内部添加的模块,将通过在虚拟机内部执行ps命令获取的进程列表,通过socket接口传输回至主机中的本模块,而本模块再将该列表传输至隐藏进程对比检测模块。
可选的,所述隐藏进程对比检测模块实现如下过程:
(1)添加用户空间与内核空间进行通信的ioctl指令接口,调用该接口实现将存储在宿主机内核中的可信进程列表读取至用户空间的功能;
(2)将由系统框架程序传递来的目标虚拟机域名参数传入非可信进程列表获取模块,调用该模块获取两份非可信进程列表;
(3)将可信进程列表与通过libvmi工具获取的非可信进程列表相结合,以进程pid为比对标准,与通过从目标虚拟机内部视角获取的非可信进程列表进行对比检测,最后将检测结果输出至系统框架程序的用户界面中。
可选的,所述系统框架程序完成对可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块的部署以及模块调用、参数传递,其实现方式如下:
(1)移除宿主机内核原有kvm及kvm_intel模块;
(2)将本系统生成的包含可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块的KVM相关内核模块插入宿主机内核;
(3)完成内核模块插入后,可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块将自动开始运行;
(4)根据用户的操作执行隐藏进程检测,首先将用户在用户界面输入的虚拟机域名,传递至隐藏进程对比检测模块;
(5)调用隐藏进程对比检测模块,读取内核中的可信进程列表,再将虚拟机域名传入非可信进程列表获取模块,得到两份非可信进程列表;
(6)获取隐藏进程对比检测模块对比检测的结果,将其显示在用户界面。
本发明与现有技术相比的优点在于:本发明实现了支持多节点的KVM虚拟机隐藏进程检测技术,同时提供了实用、可靠的隐藏进程检测系统,与现有虚拟机隐藏进程检测技术相比,将其扩展至支持同时对宿主机上所有运行的虚拟机节点进行检测,而且克服了当前隐藏进程检测技术只局限于方法验证层次的不足,为工程人员提供了一种实际可用、操作简便、性能可靠的工具系统,适用于工程应用。用户只需要输入目标虚拟机的名称便可完成对目标虚拟机的隐藏进程检测功能。
附图说明
图1为本发明的系统架构图;
图2为本发明中的可信进程追踪模块的实现原理;
图3为本发明中的进程系统调用捕获模块以及终止进程判定模块实现原理;
图4为本发明中的非可信进程列表获取模块的实现原理;
图5为本发明中的隐藏进程对比检测模块实现过程。
具体实施方式
下面结合具体实施方式对本发明的技术方做进一步地详细说明。
一种支持多节点的KVM虚拟机隐藏进程检测系统,其包括:可信进程追踪模块、进程系统调用捕获模块、终止进程判定模块、非可信进程列表获取模块、隐藏进程对比检测模块及用于集成上述模块的系统框架程序;其中:
可信进程追踪模块:用于实现从虚拟机监控器层次上对多个虚拟机节点的进程追踪、语义重构以及进程列表存储;利用虚拟机操作系统进行进程切换时会将控制权移交至位于宿主机内核中的虚拟机监控器这一机制,以虚拟机监控器提供的目标虚拟机的虚拟机CPU描述符为输入,通过从中读取相关寄存器值获取当前虚拟机内部运行进程的页目录基地址以及内核栈顶指针;依据内核栈顶指针,重构出目标虚拟机内部当前进程的进程描述符,获取到当前进程的相关信息;将解析得到的进程信息保存至与输入的虚拟机CPU描述符对应的虚拟机描述符结构体中;利用进程追踪方法,为所有运行的虚拟机节点在其各自对应的虚拟机描述符结构体中保存一份可信进程列表;
进程系统调用捕获模块:用于实现对多个虚拟机节点的进程系统调用行为的捕获及识别功能;以虚拟机监控器提供的虚拟机CPU描述符为输入,通过修改其中的虚拟化硬件寄存器的系统调用使能位,关闭虚拟机对syscall指令的硬件支持,使得虚拟机进程调用系统调用时陷入至宿主机虚拟机监控器;在虚拟机监控器中负责模拟syscall指令的模块中设置标记点,完成对系统调用的捕获;通过读取参数寄存器获取系统调用号及系统调用参数,获取系统调用信息;将系统调用信息连同虚拟机CPU描述符对应的目标虚拟机描述符输出至终止进程判定模块;
终止进程判定模块:用于对可信进程模块追踪得到的各个虚拟机节点的进程进行终止判定;利用进程系统调用捕获模块输出的系统调用信息,在每次捕获到系统调用时根据系统调用号判断系统调用类别;如果捕获到的系统调用为sys_exit或者sys_exit_group,则根据目标虚拟机的虚拟机描述符结构体中保存的当前进程,将该进程判定为已终止;如果捕获到的系统调用为sys_wait4,进程系统调用捕获模块输出的系统调用参数值为对应目标进程编号(process identifier,以下简称pid),根据pid将虚拟机描述符结构体中保存的对应进程判定为已终止;如果捕获到的系统调用为sys_waitid,进程系统调用捕获模块输出的系统调用参数1代表idtype,参数2代表进程pid,其中idtype用于指示pid的作用范围,根据两个参数将对应进程判定为已终止;如果捕获到的系统调用为sys_kill或者sys_tkill或者sys_tgkill,进程系统调用捕获模块输出的系统调用参数1代表目标进程pid,参数2代表信号类型,当信号类型表示要终止目标进程时,则将对应进程判定为已终止;最后将判定结果写入虚拟机描述符中保存的对应进程项;
非可信进程列表获取模块:用于实现从虚拟机操作系统层次获取目标虚拟机的内部进程列表的功能;根据输入的虚拟机域名,借助libvmi工具提供的接口定位对应的虚拟机,完成数据读取初始化工作;读取内核符号“init_task”地址,获取0号进程的进程描述符结构体地址;依据该进程描述符地址,读取出存储在虚拟机内存中的进程列表,解析出进程pid以及名称等关键信息;将进程信息保存为进程列表输出至隐藏进程对比检测模块;同时借助在宿主机及虚拟机内部实现的socket通信接口从目标虚拟机中获取一份通过ps命令得到的进程列表,并输出至隐藏进程对比检测模块;
隐藏进程对比检测模块:此模块用于将可信进程追踪模块获取的可信进程列表以及非可信进程列表获取模块输出的非可信进程列表进行对比,检测出当前虚拟机中的隐藏进程;在宿主机用户空间中从内核空间读取出可信进程追踪模块存储的可信进程列表;将可信进程列表与非可信进程列表获取模块输出的非可信进程列表进行对比检测,并将检测结果输出至系统框架程序提供的用户界面;
系统框架程序:用于实现各子模块的集成和数据的传递与管理,主要功能包括将包含可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块的KVM内核模块插入宿主机内核,以及对各子模块的调用;提供用户界面,将用户输入的虚拟机域名传递至非可信进程列表获取模块,将隐藏进程对比检测模块的检测结果输出至用户界面。
所述可信进程追踪模块实现过程:
(1)在虚拟机监控器中处理客户机进程切换的功能模块中,获取虚拟机CPU描述符kvm_vcpu结构体,借助内核接口vmcs_readl从中读取将被切换至非运行状态的进程页目录基地址寄存器以及内核栈顶指针寄存器的值;
(2)依据内核栈顶指针寄存器值解析得到目标虚拟机的进程控制块thread_info结构体对应的客户机虚拟地址;同时进程页目录基地址寄存器的值被保存到指向当前虚拟机的虚拟机描述符kvm结构体中,提供给终止进程判定模块作为查找进程的依据;
(3)调用内核接口kvm_mmu_gva_to_gpa_read以及kvm_read_guest,完成客户机虚拟地址到客户机物理地址的转换以及进程控制块thread_info结构体的数据读取,thread_info结构体成员变量中包含指向虚拟机当前进程的进程描述符的客户机虚拟地址;
(4)本系统只支持检测linux操作系统且内核版本为2.6.38的虚拟机,所以其内核中进程pid及进程名称偏移值的偏移值为预先知晓的。根据进程描述符的客户机虚拟机以及目标虚拟机内核中进程pid及进程名称偏移值,再次调用内核接口kvm_mmu_gva_to_gpa_read以及kvm_read_guest,完成地址转换并读取出进程pid、父进程pid、线程组id以及进程名称等关键信息;
(5)将重构出的虚拟机当前进程的进程pid、进程名称、进程pid、父进程pid、线程组id以及进程页目录基地址存入目标虚拟机对应的kvm结构体;
(6)每当目标虚拟机进行进程切换时,自动执行步骤(1)至(5),收集所有曾在目标虚拟机中被调度执行过的进程信息;
(7)因为各个虚拟机节点拥有各自对应的kvm结构体,所以进程追踪过程互不干扰;本模块会为所有运行的虚拟机节点维护一张进程列表。
所述进程系统调用捕获模块实现过程:
(1)在虚拟机监控器运行虚拟机后,修改虚拟机硬件支持寄存器EFER的SCE位,关闭目标虚拟机对syscall系统调用指令的支持,同时设置捕获陷阱标记;
(2)设置系统调用捕获范围;
(3)在虚拟机监控器负责模拟syscall指令的模块中,设置检测点:首先判断捕获陷阱标记是否存在;如果不存在,则说明是目标虚拟机操作系统自身产生的指令异常;否则,说明捕获到目标虚拟机的进程系统调用行为;
(4)若捕获到进程的系统调用行为,则借用内核接口kvm_register_read读取当前RAX、RDI、RSI寄存器的值作为系统调用信息,提供给终止进程判定模块进行进程终止判定的数据来源;
(5)将系统调用信息以及目标虚拟机对应的虚拟机描述符传输至终止进程判定模块;
(6)每当目标虚拟机内部进程使用syscall指令调用系统调用时,自动执行步骤(1)至(5);
(7)因为各个虚拟机节点有各自的虚拟机CPU描述符以及虚拟机描述符,所以系统调用捕获功能互不影响。
所述终止进程判定模块具体实现过程如下:
(1)在进程系统调用捕获模块输出的系统调用信息中,RAX寄存器的值为系统调用号,本模块将根据系统调用号对系统调用行为进行区分处理;
(2)如果系统调用号对应sys_exit或者sys_exit_group,则根据目标虚拟机描述符结构体中记录的当前进程,将该进程判定为已终止;系统调用号对应sys_exit_group时,要将与调用该系统调用的进程处于同一线程组的进程全部判定为已终止;
(3)如果系统调用号对应sys_wait4,则RDI寄存器为要被终止的目标进程的进程pid,当pid为0时,针对调用该系统调用的进程的子进程,将与调用进程处于同一线程组的所有进程判定为已终止;当pid为-1时,将调用该系统调用的进程的所有子进程判定为已终止;当pid小于-1时,针对调用该系统调用的进程的子进程,将线程组id等于pid绝对值的进程判定为已终止;当pid大于0时,针对调用该系统调用的进程的子进程,将线程组id等于pid的进程判定为已终止;
(4)如果系统调用号对应sys_waitid,则RSI寄存器为要被终止的目标进程的进程pid,RDI寄存器中为idtype;当idtype为0时,将调用该系统调用的进程的所有子进程判定为已终止;当idtype为1时,针对调用该系统调用的进程的子进程,将进程pid等于RSI寄存器值的进程判定为已终止;
(5)如果捕获到的系统调用为sys_kill或者sys_tkill或者sys_tgkill,则RDI寄存器为要被终止的目标进程的进程pid,RSI寄存器为向目标进程发出的信号类型;当信号类型表示终止目标进程时,则根据进程pid将对应进程判定为已终止;
(6)将判定结果写入虚拟机描述符中的对应进程项。
所述非可信进程列表获取模块实现过程:
(1)系统框架程序将用户输入的目标虚拟机域名传递至本模块,根据域名完成libvmi库初始化;
(2)根据虚拟机域名获取该虚拟机内核中进程pid及进程名称等信息的偏移值;
(3)暂停虚拟机运行,用以访问虚拟机内存;
(4)读取内核符号“init_task”即0号进程swapper的地址;
(5)根据地址读取出0号进程对应进程描述符的内容,其成员变量tasks为当前虚拟机内存中的进程链表;
(6)遍历该进程链表,根据步骤(2)获取的进程pid等偏移值,获取进程信息,存入本模块自定义的进程列表中;
(7)读取完所有进程信息后,将进程链表输出至隐藏进程对比检测模块;
(8)之后借助预先在虚拟机内部添加的模块,将通过在虚拟机内部执行ps命令获取的进程列表,通过socket接口传输回至主机中的本模块,而本模块再将该列表传输至隐藏进程对比检测模块。
所述隐藏进程对比检测模块实现过程:
(1)添加用户空间与内核空间进行通信的ioctl指令接口,调用该接口实现将存储在宿主机内核中的可信进程列表读取至用户空间的功能;
(2)将由系统框架程序传递来的目标虚拟机域名参数传入非可信进程列表获取模块,调用该模块获取非可信进程列表;
(3)将可信进程列表与通过libvmi工具获取的非可信进程列表相结合,以进程pid为比对标准,与通过从目标虚拟机内部视角获取的非可信进程列表进行对比检测,最后将检测结果输出至系统框架程序的用户界面中。
系统框架程序完成对可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块的部署以及模块调用、参数传递,其实现方法如下:
模块部署:
(1)移除宿主机内核原有kvm及kvm_intel模块;
(2)将本系统生成的包含可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块的KVM相关内核模块插入宿主机内核;首先插入核心模块kvm.ko,为kvm_intel模块的插入提供依赖支持;
(3)之后插入kvm_intel模块,并关闭虚拟机对扩展页表的支持,使得虚拟机进行进程切换时会陷入至虚拟机监控器;
各子模块的调用、参数传递:
(1)完成内核模块插入后,可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块将自动开始运行;
(2)根据用户的操作执行隐藏进程检测,首先将用户在用户界面输入的虚拟机域名,传递至隐藏进程对比检测模块;
(3)之后调用隐藏进程对比检测模块,读取内核中的可信进程列表,再将虚拟机域名传入非可信进程列表获取模块,得到两份非可信进程列表;
(4)获取隐藏进程对比检测模块对比检测的结果,将其显示在用户界面。
如图1所示,本发明为支持多节点的KVM虚拟机隐藏进程检测系统,由可信进程追踪模块、进程系统调用捕获模块、终止进程判定模块、非可信进程列表获取模块、隐藏进程对比检测模块及用于集成上述模块的系统框架程序组成。整体实现过程如下:
(一)可信进程追踪模块:用于实现从虚拟机监控器层次上对多个虚拟机节点的进程追踪、语义重构以及进程列表存储;利用虚拟机操作系统进行进程切换时会将控制权移交至位于宿主机内核中的虚拟机监控器这一机制,以虚拟机监控器提供的目标虚拟机的虚拟机CPU描述符为输入,通过从中读取相关寄存器值获取当前虚拟机内部运行进程的页目录基地址以及内核栈顶指针;依据内核栈顶指针,重构出目标虚拟机内部当前进程的进程描述符,获取到当前进程的相关信息;将解析得到的进程信息保存至与输入的虚拟机CPU描述符对应的虚拟机描述符结构体中;利用进程追踪方法,为所有运行的虚拟机节点在其各自对应的虚拟机描述符结构体中保存一份可信进程列表;
(二)进程系统调用捕获模块:用于实现对多个虚拟机节点的进程系统调用行为的捕获及识别功能;以虚拟机监控器提供的虚拟机CPU描述符为输入,通过修改其中的虚拟化硬件寄存器的系统调用使能位,关闭虚拟机对syscall指令的硬件支持,使得虚拟机进程调用系统调用时陷入至宿主机虚拟机监控器;在虚拟机监控器中负责模拟syscall指令的模块中设置标记点,完成对系统调用的捕获;通过读取参数寄存器获取系统调用号及系统调用参数,获取系统调用信息;将系统调用信息连同虚拟机CPU描述符对应的目标虚拟机描述符输出至终止进程判定模块;
(三)终止进程判定模块:用于对可信进程模块追踪得到的各个虚拟机节点的进程进行终止判定;利用进程系统调用捕获模块输出的系统调用信息,在每次捕获到系统调用时根据系统调用号判断系统调用类别;如果捕获到的系统调用为sys_exit或者sys_exit_group,则根据目标虚拟机的虚拟机描述符结构体中保存的当前进程,将该进程判定为已终止;如果捕获到的系统调用为sys_wait4,进程系统调用捕获模块输出的系统调用参数值为对应目标进程编号(process identifier,以下简称pid),根据pid将虚拟机描述符结构体中保存的对应进程判定为已终止;如果捕获到的系统调用为sys_waitid,进程系统调用捕获模块输出的系统调用参数1代表idtype,参数2代表进程pid,其中idtype用于指示pid的作用范围,根据两个参数将对应进程判定为已终止;如果捕获到的系统调用为sys_kill或者sys_tkill或者sys_tgkill,进程系统调用捕获模块输出的系统调用参数1代表目标进程pid,参数2代表信号类型,当信号类型表示要终止目标进程时,则将对应进程判定为已终止;最后将判定结果写入虚拟机描述符中保存的对应进程项;
(四)非可信进程列表获取模块:用于实现从虚拟机操作系统层次获取目标虚拟机的内部进程列表的功能;根据输入的虚拟机域名,借助libvmi工具提供的接口定位对应的虚拟机,完成数据读取初始化工作;读取内核符号“init_task”地址,获取0号进程的进程描述符结构体地址;依据该进程描述符地址,读取出存储在虚拟机内存中的进程列表,解析出进程pid以及名称等关键信息;将进程信息保存为进程列表输出至隐藏进程对比检测模块;同时借助在宿主机及虚拟机内部实现的socket通信接口从目标虚拟机中获取一份通过ps命令得到的进程列表,并输出至隐藏进程对比检测模块;
(五)隐藏进程对比检测模块:此模块用于将可信进程追踪模块获取的可信进程列表以及非可信进程列表获取模块输出的非可信进程列表进行对比,检测出当前虚拟机中的隐藏进程;在宿主机用户空间中从内核空间读取出可信进程追踪模块存储的可信进程列表;将可信进程列表与非可信进程列表获取模块输出的非可信进程列表进行对比检测,并将检测结果输出至系统框架程序提供的用户界面;
(六)系统框架程序:用于实现各子模块的集成和数据的传递与管理,主要功能包括将包含可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块的KVM内核模块插入宿主机内核,以及对各子模块的调用;提供用户界面,将用户输入的虚拟机域名传递至非可信进程列表获取模块,将隐藏进程对比检测模块的检测结果输出至用户界面。
上述各模块的实现原理及过程如下:
1.可信进程追踪模块的实现
该模块的实现原理如图2所示:
(1)虚拟机进行进程切换时会将新进程的页目录基地址载入CR3寄存器,这个操作涉及到特权指令会产生虚拟机陷入,将系统控制权移交至虚拟机监控器,该模块在此时进行进程的语义重构。
(2)通过虚拟机监控器提供的虚拟机CPU描述符,读取CR3即要被切换变为非运行状态的进程对应的页目录基地址寄存器以及RSP即内核栈指针寄存器的值。这里我们称该进程为当前进程。
(3)linux中用户栈由用户栈stack和进程控制块thread_info结构体组成。RSP指向的是内核堆栈的结尾,RSP和thread_info位于同一个8KB的块当中。通过RSP寄存器的值可以解析出thread_info结构体的地址。
(4)thread_info结构体的第一个成员变量是指向当前进程的进程描述符task_struct的客户机虚拟地址。调用linux内核提供的接口kvm_mmu_gva_to_gpa_read以及kvm_read_guest实现客户机虚拟地址到客户机物理地址的转换以及对thread_info结构体数据的读取,继而得到指向前进程的进程描述符task_struct的客户机虚拟地址。
(5)再次调用linux内核提供的接口kvm_mmu_gva_to_gpa_read实现地址转换,获取task_struct的客户机物理地址。依据目标虚拟机的进程信息项偏移得出进程pid、父进程id、线程组id以及进程名称的客户机物理地址。
(6)调用linux内核提供的接口kvm_read_guest读取出当前进程的pid、父进程id、线程组id以及进程名称,连同页目录基地址,存入位于指向当前虚拟机的虚拟机描述符结构体中由本模块添加的表示目标虚拟机进程列表的“vmm_process”成员变量,同时将页目录基地址存入表示当前进程的“process_now”成员变量,以便终止进程判定模块用作判定数据来源。
(7)每当虚拟机进行进程切换时,重复(2)至(6),不停获取虚拟机内部进程信息。
(8)因为各个虚拟机节点拥有各自对应的kvm结构体,所以进程追踪过程互不干扰;本模块会为所有运行的虚拟机节点维护一张进程列表。
2.进程系统调用捕获模块以及终止进程判定模块的实现
这两个模块实现的大致过程如图3所示,具体实现原理如下:
进程系统调用捕获模块:
(1)在虚拟机启动运行后,通过虚拟机监控器提供的虚拟机CPU描述符,将EFER寄存器中的SCE位置为0,关闭虚拟机对syscall指令的支持,使得当目标虚拟机内部进程通过syscall指令调用系统调用时,产生未定义指令异常,继而产生虚拟机陷入;本模块利用此时机进行系统掉捕获,在对EFER寄存器修改完成后,设置陷阱标记。
(2)在负责处理未定义指令异常的处理程序中,有专门针对syscall指令的代码块。在此代码块中,检查陷阱标记是否存在,如果存在,说明捕获到目标虚拟机内部进程的系统调用,设置捕获标记。
(3)上层的监测点监测到捕获标记后,利用内核接口kvm_register_read读取RAX、RDI、RSI寄存器的值作为系统调用信息。
(4)将读取到的系统调用信息以及目标虚拟机对应的虚拟机描述符传输至终止进程判定模块。
终止进程判定模块:
(1)接收到进程系统调用捕获模块传输来的系统调用信息后,首先对系统调用号进行判断。
(2)如果系统调用号对应sys_exit或者sys_exit_group,则根据目标虚拟机描述符结构体中记录的当前进程,将该进程判定为已终止;系统调用号对应sys_exit_group时,要将与调用该系统调用的进程处于同一线程组的进程全部判定为已终止。
(3)如果系统调用号对应sys_wait4,则RDI寄存器为要被终止的目标进程的进程pid,当pid为0时,针对调用该系统调用的进程的子进程,将与调用进程处于同一线程组的所有进程判定为已终止;当pid为-1时,将调用该系统调用的进程的所有子进程判定为已终止;当pid小于-1时,针对调用该系统调用的进程的子进程,将线程组id等于pid绝对值的进程判定为已终止;当pid大于0时,针对调用该系统调用的进程的子进程,将线程组id等于pid的进程判定为已终止。
(4)如果系统调用号对应sys_waitid,则RSI寄存器为要被终止的目标进程的进程pid,RDI寄存器中为idtype;当idtype为0时,将调用该系统调用的进程的所有子进程判定为已终止;当idtype为1时,针对调用该系统调用的进程的子进程,将进程pid等于RSI寄存器值的进程判定为已终止。
(5)如果捕获到的系统调用为sys_kill或者sys_tkill或者sys_tgkill,则RDI寄存器对应要被终止的目标进程的进程pid,RSI寄存器对应向目标进程发出的信号类型;当信号类型表示终止目标进程时,则根据进程pid将对应进程判定为已终止。
(6)将判定结果写入目标虚拟机描述符中的对应进程项。
3.非可信进程列表获取模块的实现
非可信进程列表获取模块的实现原理如图4所示,具体实现过程如下:
(1)虚拟机内省应用申请读取内核符号init_task内容。libvmi通过对应客户机的内核符号表获取内核符号的客户机虚拟地址。
(2)找到客户机虚拟地址所对应的客户机内核页目录,并获取对应的页表。
(3)通过客户机中的页表访问到正确的数据页。
(4)对应的数据页被返回给libvmi。
(5)libvmi将内核符号的数据返回给虚拟机内省应用程序。
(6)这样就得到了init_task的进程描述符task_struct中的内容,其成员变量tasks就是当前虚拟机内存中的进程链表。
(7)通过libvmi接口遍历该进程链表,依次读取出该链表上所有进程的进程pid以及进程名称并进行存储,最终得到一份进程列表。
(8)之后借助预先在虚拟机内部添加的模块,将通过在虚拟机内部执行ps命令获取的进程列表,通过socket接口传输回至主机中的本模块,而本模块再将该列表传输至隐藏进程对比检测模块。
4.隐藏进程对比检测模块的实现
隐藏进程对比检测模块的实现过程如图5所示。实现步骤如下:
(1)由用户输入的虚拟机名称解析出对应虚拟机进程的pid。
(2)将虚拟机名称作为参数传入非可信进程列表获取模块,调用非可信进程列表获取模块获取针对目标虚拟机的非可信进程列表。
(3)将虚拟机进程的pid作为参数传入可信进程追踪模块,从虚拟机监控器中读取出针对目标虚拟机的可信进程列表。
(4)将可信进程列表与通过libvmi工具获取的非可信进程列表相结合,以进程pid为比对标准,与通过从目标虚拟机内部视角获取的非可信进程列表进行对比检测,最后将检测结果输出至系统框架程序以显示。
5.系统框架程序的实现
系统框架程序完成对可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块的部署以及模块调用、参数传递,其实现方法如下:
模块部署:
(1)移除宿主机内核kvm及kvm_intel模块。
(2)将本系统生成的包含可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块的KVM相关内核模块插入宿主机内核;首先插入核心模块kvm.ko,为kvm_intel模块的插入提供依赖支持。
(3)之后插入kvm_intel模块,并关闭虚拟机对扩展页表的支持,使得虚拟机进行进程切换时陷入至虚拟机监控器。
各子模块的调用、参数传递:
(1)完成内核模块插入后,可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块将自动开始运行。
(2)根据用户的操作执行隐藏进程检测,首先将用户在用户界面输入的虚拟机域名,传递至隐藏进程对比检测模块。
(3)之后调用隐藏进程对比检测模块,读取内核中的可信进程列表,再将虚拟机域名传入非可信进程列表获取模块,得到两份非可信进程列表。
(4)获取隐藏进程对比检测模块对比检测的结果,将其显示在用户界面。
本发明未详细阐述部分均属于本领域公知技术。
以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (6)
1.一种支持多节点的KVM虚拟机隐藏进程检测系统,其特征在于,包括可信进程追踪模块、进程系统调用捕获模块、终止进程判定模块、非可信进程列表获取模块、隐藏进程对比检测模块及用于集成上述模块的系统框架程序;其中:
可信进程追踪模块:用于实现从虚拟机监控器层次上对多个虚拟机节点的进程追踪、语义重构以及进程列表存储;具体实现如下过程:
(101)在虚拟机监控器中处理客户机进程切换的功能模块中,获取虚拟机CPU描述符kvm_vcpu结构体,借助内核接口vmcs_readl从中读取将被切换至非运行状态的进程页目录基地址寄存器以及内核栈顶指针寄存器的值;
(102)依据内核栈顶指针寄存器值解析得到目标虚拟机的进程控制块thread_info结构体对应的客户机虚拟地址;同时进程页目录基地址寄存器的值被保存到指向当前虚拟机的虚拟机描述符kvm结构体中,提供给终止进程判定模块作为查找进程的依据;
(103)调用内核接口kvm_mmu_gva_to_gpa_read以及kvm_read_guest,完成客户机虚拟地址到客户机物理地址的转换以及进程控制块thread_info结构体的数据读取,thread_info结构体成员变量中包含指向虚拟机当前进程的进程描述符的客户机虚拟地址;
(104)根据进程描述符的客户机虚拟机以及目标虚拟机内核中进程pid及进程名称偏移值,再次调用内核接口kvm_mmu_gva_to_gpa_read以及kvm_read_guest,完成地址转换并读取出进程pid、父进程pid、线程组id以及进程名称关键信息;
(105)将重构出的虚拟机当前进程的进程pid、进程名称、父进程pid、线程组id以及进程页目录基地址存入目标虚拟机对应的kvm结构体;
(106)每当目标虚拟机进行进程切换时,自动执行步骤(101)至(105),收集所有曾在目标虚拟机中被调度执行过的进程信息;
进程系统调用捕获模块:用于实现对多个虚拟机节点的进程系统调用行为的捕获及识别功能;
终止进程判定模块:用于对可信进程模块追踪得到的各个虚拟机节点的进程进行终止判定;
非可信进程列表获取模块:用于实现从虚拟机操作系统层次获取目标虚拟机的内部进程列表的功能;
隐藏进程对比检测模块:用于将可信进程追踪模块获取的可信进程列表以及非可信进程列表获取模块输出的非可信进程列表进行对比,检测出当前虚拟机中的隐藏进程,并将检测结果输出至系统框架程序提供的用户界面;
系统框架程序:用于实现各子模块的集成和数据的传递与管理,并提供用户界面,将用户输入的虚拟机域名传递至非可信进程列表获取模块,将隐藏进程对比检测模块的检测结果输出至用户界面。
2.根据权利要求1中所述的一种支持多节点的KVM虚拟机隐藏进程检测系统,其特征在于:所述进程系统调用捕获模块实现如下过程:
(1)在虚拟机监控器运行虚拟机后,修改虚拟机硬件支持寄存器EFER的SCE位,关闭目标虚拟机对syscall系统调用指令的支持,同时设置捕获陷阱标记;
(2)设置系统调用捕获范围;
(3)在虚拟机监控器负责模拟syscall指令的模块中,设置检测点:首先判断捕获陷阱标记是否存在;如果不存在,则说明是目标虚拟机操作系统自身产生的指令异常;否则,说明捕获到目标虚拟机的进程系统调用行为;
(4)若捕获到进程的系统调用行为,则借用内核接口kvm_register_read读取当前RAX、RDI、RSI寄存器的值作为系统调用信息,提供给终止进程判定模块进行进程终止判定的数据来源;
(5)将系统调用信息以及目标虚拟机对应的虚拟机描述符传输至终止进程判定模块;
(6)每当目标虚拟机内部进程使用syscall指令调用系统调用时,自动执行步骤(1)至(5)。
3.根据权利要求1所述的一种支持多节点的KVM虚拟机隐藏进程检测系统,其特征在于:所述终止进程判定模块实现如下过程:
(1)在进程系统调用捕获模块输出的系统调用信息中,RAX寄存器的值为系统调用号,本模块将根据系统调用号对系统调用行为进行区分处理;
(2)如果系统调用号对应sys_exit或者sys_exit_group,则根据目标虚拟机描述符结构体中记录的当前进程,将该进程判定为已终止;系统调用号对应sys_exit_group时,要将与该系统调用的进程处于同一线程组的进程全部判定为已终止;
(3)如果系统调用号对应sys_wait4,则RDI寄存器的值为要被终止的目标进程的进程pid,当pid为0时,针对调用该系统调用的进程的子进程,将与调用进程处于同一线程组的所有进程判定为已终止;当pid为-1时,将调用该系统调用的进程的所有子进程判定为已终止;当pid小于-1时,针对调用该系统调用的进程的子进程,将线程组id等于pid绝对值的进程判定为已终止;当pid大于0时,针对调用该系统调用的进程的子进程,将线程组id等于pid的进程判定为已终止;
(4)如果系统调用号对应sys_waitid,则RSI寄存器的值为要被终止的目标进程的进程pid,RDI寄存器中的值为idtype;当idtype为0时,将调用该系统调用的进程的所有子进程判定为已终止;当idtype为1时,针对调用该系统调用的进程的子进程,将进程pid等于RSI寄存器值的进程判定为已终止;
(5)如果捕获到的系统调用为sys_kill或者sys_tkill或者sys_tgkill,则RDI寄存器的值为要被终止的目标进程的进程pid,RSI寄存器的值为向目标进程发出的信号类型;当信号类型表示终止目标进程时,则根据进程pid将对应进程判定为已终止;
(6)将判定结果写入虚拟机描述符中的对应进程项。
4.根据权利要求1中所述的一种支持多节点的KVM虚拟机隐藏进程检测系统,其特征在于:所述非可信进程列表获取模块实现如下过程:
(1)系统框架程序将用户输入的目标虚拟机域名传递至本模块,根据域名完成libvmi库初始化;
(2)根据虚拟机域名获取该虚拟机内核中进程pid及进程名称信息的偏移值;
(3)暂停虚拟机运行,用以访问虚拟机内存;
(4)读取0号进程swapper的地址;
(5)根据地址读取出0号进程对应进程描述符的内容,其成员变量tasks为当前虚拟机内存中的进程链表;
(6)遍历该进程链表,根据步骤(2)获取的进程pid及进程名称信息的偏移值,获取进程信息,存入本模块自定义的进程列表中;
(7)读取完所有进程信息后,将进程链表输出至隐藏进程对比检测模块;
(8)借助预先在虚拟机内部添加的模块,将通过在虚拟机内部执行ps命令获取的进程列表,通过socket接口传输回至主机中的本模块,而本模块再将该列表传输至隐藏进程对比检测模块。
5.根据权利要求1中所述的一种支持多节点的KVM虚拟机隐藏进程检测系统,其特征在于:所述隐藏进程对比检测模块实现如下过程:
(1)添加用户空间与内核空间进行通信的ioctl指令接口,调用该接口实现将存储在宿主机内核中的可信进程列表读取至用户空间的功能;
(2)将由系统框架程序传递来的目标虚拟机域名参数传入非可信进程列表获取模块,调用该模块获取两份非可信进程列表;
(3)将可信进程列表与通过libvmi工具获取的非可信进程列表相结合,以进程pid为比对标准,与通过从目标虚拟机内部视角获取的非可信进程列表进行对比检测,最后将检测结果输出至系统框架程序的用户界面中。
6.根据权利要求1中所述的一种支持多节点的KVM虚拟机隐藏进程检测系统,其特征在于:所述系统框架程序完成对可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块的部署以及模块调用、参数传递,其实现方式如下:
(1)移除宿主机内核原有kvm及kvm_intel模块;
(2)将本系统生成的包含可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块的KVM相关内核模块插入宿主机内核;
(3)完成内核模块插入后,可信进程追踪模块、进程系统调用捕获模块以及终止进程判定模块将自动开始运行;
(4)根据用户的操作执行隐藏进程检测,首先将用户在用户界面输入的虚拟机域名,传递至隐藏进程对比检测模块;
(5)调用隐藏进程对比检测模块,读取内核中的可信进程列表,再将虚拟机域名传入非可信进程列表获取模块,得到两份非可信进程列表;
(6)获取隐藏进程对比检测模块对比检测的结果,将其显示在用户界面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710707446.1A CN107688481B (zh) | 2017-08-17 | 2017-08-17 | 一种支持多节点的kvm虚拟机隐藏进程检测系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710707446.1A CN107688481B (zh) | 2017-08-17 | 2017-08-17 | 一种支持多节点的kvm虚拟机隐藏进程检测系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107688481A CN107688481A (zh) | 2018-02-13 |
CN107688481B true CN107688481B (zh) | 2023-12-15 |
Family
ID=61153561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710707446.1A Active CN107688481B (zh) | 2017-08-17 | 2017-08-17 | 一种支持多节点的kvm虚拟机隐藏进程检测系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107688481B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948102B (zh) * | 2019-11-26 | 2023-10-13 | 中国电信股份有限公司 | 虚拟机事件处理方法、装置和系统 |
CN114356440B (zh) * | 2021-12-21 | 2023-11-10 | 西安四叶草信息技术有限公司 | 系统优化方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521537A (zh) * | 2011-12-06 | 2012-06-27 | 北京航空航天大学 | 基于虚拟机监控器的隐藏进程检测方法和装置 |
CN103065084A (zh) * | 2012-12-27 | 2013-04-24 | 武汉大学 | 在虚拟机外部机进行的windows隐藏进程检测方法 |
CN104715202A (zh) * | 2015-03-31 | 2015-06-17 | 北京奇虎科技有限公司 | 一种虚拟机中的隐藏进程检测方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8607013B2 (en) * | 2007-10-30 | 2013-12-10 | Vmware, Inc. | Providing VMM access to guest virtual memory |
US8549648B2 (en) * | 2011-03-29 | 2013-10-01 | Mcafee, Inc. | Systems and methods for identifying hidden processes |
-
2017
- 2017-08-17 CN CN201710707446.1A patent/CN107688481B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521537A (zh) * | 2011-12-06 | 2012-06-27 | 北京航空航天大学 | 基于虚拟机监控器的隐藏进程检测方法和装置 |
CN103065084A (zh) * | 2012-12-27 | 2013-04-24 | 武汉大学 | 在虚拟机外部机进行的windows隐藏进程检测方法 |
CN104715202A (zh) * | 2015-03-31 | 2015-06-17 | 北京奇虎科技有限公司 | 一种虚拟机中的隐藏进程检测方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107688481A (zh) | 2018-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Redini et al. | Karonte: Detecting insecure multi-binary interactions in embedded firmware | |
CN102622536B (zh) | 一种恶意代码捕获方法 | |
EP3175386B1 (en) | Transparent detection and extraction of return-oriented-programming attacks | |
KR101493076B1 (ko) | 버퍼 오버플로우 관리를 통한 바이러스 코드 실행방지장치 및 그 방법 | |
CN103399812B (zh) | 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法 | |
CN112733150B (zh) | 一种基于脆弱性分析的固件未知漏洞检测方法 | |
US20090133126A1 (en) | Apparatus and method for detecting dll inserted by malicious code | |
Pagani et al. | Introducing the temporal dimension to memory forensics | |
CN105393255A (zh) | 用于虚拟机中的恶意软件检测的过程评估 | |
CN104182688A (zh) | 基于动态激活及行为监测的Android恶意代码检测装置和方法 | |
KR102162995B1 (ko) | 가상 및 리얼 머신 기반의 악성코드 탐지 시스템 및 방법 | |
CN103310152A (zh) | 基于系统虚拟化技术的内核态Rootkit检测方法 | |
CN111191243A (zh) | 一种漏洞检测方法、装置和存储介质 | |
CN107688481B (zh) | 一种支持多节点的kvm虚拟机隐藏进程检测系统 | |
CN111967044A (zh) | 一种适用于云环境的被泄漏隐私数据的追踪方法及系统 | |
Wang et al. | Vmdetector: A vmm-based platform to detect hidden process by multi-view comparison | |
US20160088007A1 (en) | Information processing device and information processing method | |
CN111444504A (zh) | 一种用于软件运行时自动识别恶意代码的方法及装置 | |
CN105550574B (zh) | 基于内存活动的边信道攻击取证系统及方法 | |
US20160092313A1 (en) | Application Copy Counting Using Snapshot Backups For Licensing | |
Al-Sharif et al. | The Effects of Platforms and Languages on the Memory Footprint of the Executable Program: A Memory Forensic Approach. | |
Kumara et al. | Execution time measurement of virtual machine volatile artifacts analyzers | |
CN109936528B (zh) | 监测方法、装置、设备及系统 | |
US11687361B1 (en) | Generating thread sensors for extracting side channel information from multithreading processors | |
CN110674501B (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 |