周益周,谢小权
(中国航天科工集团第二研究院七〇六所 北京 100854)
云环境下基于VMI技术的入侵检测架构研究
周益周,谢小权
(中国航天科工集团第二研究院七〇六所 北京100854)
虚拟机自省(Virtual Machine Introspection,VMI)指在虚拟机监视器层对虚拟机进行安全监控,VMI技术可用于监控和分析云环境下虚拟机内部的恶意行为。本文设计了一个可以检测云环境中虚拟机内部恶意行为的入侵检测架构,为解决当前虚拟环境下监控数据获取方法安全性的不足,本文提出并设计了一种云环境下利用硬件辅助虚拟化(Virtualization Technology)技术在虚拟机监视器层获取监控数据的方法,将此数据作为入侵检测的数据源。
虚拟机自省;虚拟化;硬件辅助虚拟化;云计算;入侵检测
云用户可以使用IaaS提供的计算、存储、网络等基本计算资源,并能够在上面部署操作系统和应用软件。云用户并不能够管理或控制底层的基础设施,但可以控制其部署的操作系统、存储资源和应用程序。与此同时,攻击者也可以将恶意代码部署在云基础设施上,借助被植入恶意程序的虚拟机,继续感染云中的其他虚拟机或外部网络。
为此,云服务商有责任为云用户提供一个安全的云环境,最典型的方式是在每台虚拟机内部安装代理,实现对云基础设施的监控。但是虚拟机内部的代理本身并不安全,因为虚拟机可能会被攻击者控制,若虚拟机被恶意控制后,该虚拟机可以攻击云环境内部或外部其他的用户,所以云服务商不能依赖传统方式对云进行保护。
云计算引入虚拟化技术为其提供核心支持的同时,也引入了虚拟化技术带来的安全风险。虚拟机逃逸是一种针对虚拟化技术的攻击方式,攻击者通过执行一个虚拟机内部的恶意程序,获取虚拟机监视器权限,从而可对宿主机上的其他虚拟机进行攻击。2008年,Core Security Technologies发现了VMware的漏洞(CVE-2008-0923)[2],其可以证明虚拟机逃逸是存在的。2012年,在Xen 4.1.2版本中也发现了一个类似的漏洞(CVE-2012-0217)[3],证明Intel处理器在执行SYSRET指令的差错处理时出现问题,使得本地用户通过执行一个恶意程序就可以获得管理员权限,进而可对云环境中的其他虚拟机造成威胁。
这说明,在云环境中监控虚拟机并识别出虚拟机中发生的恶意行为对于解决云安全问题非常关键。基于以上背景,为了保证云环境的安全性,本文将设计一个针对云环境的入侵检测系统,可以检测虚拟机的恶意行为。
为了检测虚拟机内部的恶意行为,需要对虚拟机进行监控,传统的监控方式是通过在虚拟机内部加载钩子函数来拦截被监控虚拟机中的行为,并通过虚拟机监视器对这些钩子函数进行保护。具有代表性的系统是Lares[4]。这种架构的优点是由于在虚拟机内部对虚拟机的行为进行监控,所获得的监控数据是操作系统级语义,无需进行语义重构。缺点是需要对每个被监控的虚拟机中增加钩子函数,可移植性差,且监控工具在虚拟机内部查找恶意行为的同时,恶意软件也会发现监控工具的行为,由此恶意软件可通过分析监控工具的行为,对自己进行适当改变从而逃避监控。
X86处理器有4个特权级别 (Ring 0~Ring 3),Ring 0优先级最高,Ring 3最低。上述虚拟机内部监控机制其监控工具与恶意程序同在Ring 3层,导致该机制不够安全。为了避免虚拟机内部监控所存在的问题,Tal Garfinkel[5]首次提出了VMI技术的概念:VMI是一种为了分析运行在虚拟机内部的软件而在虚拟机监视器层对该虚拟机进行检测的方法。由此可见,在Ring 0层对Ring 1~Ring 3层进行监控,避免了传统监控方式下恶意软件可以检测到监控软件存在的缺点。Sina Bahram[6]等人提出的DKSM攻击,是对现有基于VMI技术的安全工具的一种攻击手段,DKSM攻击可以改变客户虚拟机中内核数据结构的语法和语义,DKSM通过内核Rootkit工具伪造并交付给客户和VMI工具所想要看到的信息,但实际上这两种信息都不是系统执行的真实信息,这就使得基于客户虚拟机中内核数据结构的语法和语义的VMI安全工具都失去作用。
针对以上问题,本文提出一个基于硬件辅助虚拟化技术(Virtualization Technology,简称VT技术)的VMI监控虚拟机内部状态的方案,并使其符合云环境的特点,设计一个云环境下基于该方案的入侵检测架构。
本文主要的工作有:
设计云环境下基于VMI技术的入侵检测体系结构,该结构采用节点端-云端双重入侵检测分析模式。节点端是指在每个节点服务器对其上的每个虚拟机的行为进行入侵检测,通过在节点服务器上部署系统调用序列采集工具,收集其上每个虚拟机用户空间所执行的进程的系统调用序列,实时的对其进行入侵检测。云端入侵检测分析是指对某时期客户虚拟机所产生的行为进行阶段性集中分析。
提出基于硬件的监控数据采集机制。该机制具有两个特点:1)确保自身安全性。不论是传统的虚拟机内部监控工具和基于VMI技术的监控工具,其本身都可能会遭到恶意程序危害。本文通过研究x86架构的VT技术,设计一个只需要底层硬件支持的VMI工具进行监控数据采集,保证该采集工具的自身安全性。2)普适性。本文监控数据采集机制设计的最终目的是用于对云环境进行入侵检测,该机制需满足云环境中各种各样的操作系统不同的监控数据采集方式,该机制将对x86架构所支持的系统调用进行采集,所采集的系统调用序列将作为入侵检测的原始数据。
将云环境下基于VMI技术的入侵检测系统分为3个层次,其总体架构如图1虚线左侧所示,虚线右侧是云中入侵检测系统工作流程模块图。其中,云控制端是系统的核心,云环境中所有虚拟机的运行状态以及所采集的监控信息都保存在云控制端。同时它也是外界访问云内部唯一的接口,其通过公用网络实现对集群控制端的管理。集群控制端主要负责协调一个集群内的虚拟机资源,并且管理集群内的网络流量,起到负载均衡的作用,在本文的研究中,它的作用主要是通过网络完成数据的转发。节点端运行在每个托管了虚拟机物理服务器上,控制主机操作系统以及相应的虚拟机监视器。具体如下:
图1 云环境中基于VMI技术的入侵检测系统体系结构Fig.1 Cloud environment IDS structure based on VMI
1.1节点端
节点端负责对运行在其服务器上的主机操作系统和运行在该系统之上的虚拟机实例的管理,接收集群控制端和云控制端的命令管理虚拟机实例,并反馈客户虚拟机系统的资源情况和控制信息。除了上述基本功能外,节点端还需收集客户虚拟机的行为信息,并对单个事件的行为进行节点端检测,即上图实时分析模块。单个事件的行为特征主要表现为客户虚拟机中程序所执行的系统调用序列。在计算机系统运行过程中,系统会发生各种事件,例如文件的读写、进程的启动与删除、U盘的插入与拔出等。为了实现程序的功能,内核操作系统提供系统调用接口为这些程序所用,系统调用序列可以反映客户虚拟机操作系统的运行状态。
节点端的实时分析主要采用基于行为特征的分析方法,主要思想是先对安全程序所产生的系统调用序列进行学习并建立行为特征库。该行为特征库存放在云端,当采集到客户虚拟机所产生的系统调用序列后,实时分析模块从云端行为特征库中获取该程序所对应的安全系统调用序列特征,并对比采集的系统调用序列,从而判断该客户虚拟机中是否有恶意行为。
系统调用序列分析结果的处理策略主要分为两大类:交互式和非交互式。交互式处理指符合特征的事件触发后,向用户和云管理员询问处理方式,如果超过指定时间没有得到反馈,则按默认方式处理。非交互式处理指直接按照预先设置的策略,对触发的事件进行处理。最后根据定义的处理策略,对发生的事件进行报警处理。
1.2云控制端
云控制端是系统的核心,负责各节点端监控数据的收集、存储、阶段性分析等工作。云控制端需具备高效率、高稳定性的特点。
云环境中虚拟机众多,其节点端所采集的监控数据量大,消息队列子模块管理消息队列,任何从节点端接收的监控数据都会先被送入消息队列等候处理,起到缓冲的作用,防止数据量过大造成丢失或阻塞。然后使用关系型数据库对消息队列中的监控数据进行存储,这些存储的监控数据会根据云管理员所配置的筛选规则进行阶段性分析。筛选规则是指云管理员通过配置规则,筛选特定的事件进行检测,即指定对某用户、某节点、某程序或某时间段进行检测,可以通过搜索算法筛选数据库记录得到所需事件。阶段性分析是指从大量数据中发现用户异常行为数据,对历史数据进行统计分析,得出云环境的安全状况,发现在某段时间潜在的安全威胁。
文中主要对上述系统的监控信息采集模块进行设计。
由于纯软件的虚拟化解决方案会增加系统的复杂性和性能开销,所以出现了硬件辅助虚拟化(Virtualization Technology,VT技术)。由于VT技术支持客户操作系统直接在其上运行,无需进行二进制翻译或超级调用,因此减少了相关性能开销。硬件支持虚拟化技术设计初衷并没有将VMI技术考虑在内,其重点也并不在安全方面,它本身只支持直接对一部分事件进行截获,并不能直接截获某些安全方面关注的事件。
目前,Intel IA-32和Intel EM64T架构不支持系统调用事件陷入VMM,为了获得安全监控所需要的系统调用事件,可以利用Intel虚拟化扩展技术(VT-x技术)提供的强制系统中断方法使控制权陷入VMM。如此一来,便可以在VMM层实现系统调用的截获,过程如图2所示。
图2 截获系统调用过程Fig.2 The process of intercept system calls
文中设计的监控信息采集工具所采集的监控信息是客户虚拟机中程序运行时所产生的系统调用序列。该采集工具有两个特点:1)确保自身安全性。传统的虚拟机监控工具在虚拟机的内部,这会使得恶意软件发现监控工具的存在,通过分析监控工具的行为可隐藏自己;基于客户操作系统内核的VMI监控工具工作在VMM层(即Ring 0层),可能遭到上述DKSM攻击,其自身也不安全。本文通过研究x86架构的VT技术,设计一个只需要底层硬件支持的VMI工具,相当于在Ring-1层对客户虚拟机进行监控,其本身不会受到内核级或用户级攻击。2)普适性。目前使用最广的是x86架构的机器,最常见的操作系统是Windows和Linux,分别有32位和64位。x86架构有3种系统调用机制,本文将对3种系统调用的截获方法进行研究。
2.1基于中断的系统调用
基于中断的系统调用也称为传统系统调用,通过软中断的方式实现。x86架构通过中断描述符表(IDT)执行中断操作,IDT将每个异常或中断向量分别与它们的处理过程联系起来。IDT最多有256个描述符,每个描述符长度为8B。处理器通过中断描述符表寄存器 (IDTR)来定位IDT的位置,IDTR中存放着IDT的长度值和系统内存中IDT的开始地址(即基地址)。当中断发生时,硬件通过IDTR查询IDT,找出中断处理函数的位置并执行。
Intel的虚拟化扩展技术支持系统中断(int0~int31)陷入VMM,系统中断即指是由Intel固定设定或保留用的,属于软件中断。但不支持用户中断(int31~int255)陷入VMM,用户中断是指用户自己设定的,这些用户中断可能会用于系统调用。所以必须设计一种方法,通过用户中断形成系统中断。
将进行如下设计:对IDT进行自虚拟,即将客户机IDT拷贝到虚拟机监视器,然后对修改IDTR寄存器并陷入所有的写访问,因此就不会接受其他操作。IDTR寄存器中存有IDT的长度值,接着把IDTR中存放的IDT大小的值加入到基础地址,从而获得IDT最后一位有效字节的偏移,将IDT大小设置为32*8-1=255。这样做的话,所有的系统中断(int0~int31)将不受影响,而所有的用户中断(int32~int255)将会引起一个一般性保护错误(int13),即IDT边界溢出。接着就可以将所有的一般性保护错误陷入到虚拟机监视器,但是,必须分清故意设计的一般性保护错误和正常发生的一般性保护错误。
如果这个异常不是故意造成的 (即属于程序正常的异常),将该异常传回客户虚拟机并继续执行。但如果这个异常是由用户中断产生的(即故意造成的),那么查看该中断号并判断是否已经捕获系统调用。若陷入了系统调用,则根据指定规则进行数据收集,否则使用VMM中的IDT仿真int指令并将控制权还给客户虚拟机。当发生系统调用后,寄存器EAX保存了系统调用号(System Call Number)。
2.2基于SYSCALL的系统调用
执行SYSCALL/SYSRET指令也可以进行系统调用。但需要一组MSR寄存器对这两个指令进行支持,分别是STAR_MSR(适用于32位传统模式),CSTAR_MSR(适用于保护模式),LSTAR_MSR (适用于 64位长模式)。在执行SYSCALL/SYSRET指令前,进程会检测EFER寄存器的SCE标志位,以确认是否开启系统调用扩展(System Call Extension)功能,如果没有开启会产生无效操作码(opcode)异常。
因此,可以使用上述方式造成系统中断,将SCE标志位设置为关闭状态,便可使所有的无效操作码异常陷入虚拟机监视器。当虚拟机监视器得到控制权时,还需再次区分该异常是原本就会发生的异常还是故意造成的异常。可以通过检查违反指令,若指令既不是SYSCALL也不是SYSRET,我们在客户操作系统中注入一个无效操作码异常,并将控制权还给客户操作系统。但如果违反指令是SYSCALL,那么将对所需信息进行收集,并对该指令进行仿真,最后把控制权还给客户操作系统。
上述操作同样适用于SYSRET指令。基于SYSENTER的系统调用与SYSCALL/SYSRET类似,此处不再叙述。
上述所截获到的客户虚拟机中的系统调用是底层信息,虚拟机监视器并不清楚是哪个进程发起了这个系统调用,所以该工具还要确定系统调用是由哪个进程产生的。本文将采取这样的思想:每次系统调用中断时,收集对于某进程而言是唯一的标识符,即进程号(pid)和进程名(comm)。该信息都存储于内核数据结构task_struct中,内核在初始化进程的时候,为每个进程分配了独立的存储空间,其中存有结构体thread_info和内核态堆 栈,thread_info中 存 放 了指向task_struct的指针,VMM通过读取ESP寄存器指示的内核态堆栈栈顶值,通过地址计算可以得到thread_info的首地址,进而找到task_struct并对其进行分析,可以得到进程号和进程名。具体过程如图3所示。
图3 由ESP寄存器值取得进程信息过程Fig.3 The process of ESP register achieving process information
在x86平台上,CR3寄存器为处理器提供当前进程的页目录表的基地址。虚拟机监视器除了读取ESP寄存器来获取进程信息以外,还要读取CR3寄存器的值。如此一来可以建立一个进程标识符表,在每次进行系统调用时(系统调用号保存在EAX寄存器中,相应参数按顺序保存在ebx、ecx、edx、esi及edi寄存器中),向进程标识表中添加CR3寄存器值、进程号、进程名、系统调用号、系统调用参数5类信息。根据进程标识表与其对应的系统调用陷入的先后顺序,可以构造某进程的系统调用序列。在此需要说明的是,只比较CR3寄存器的值就可以判断是否为同一进程,添加进程号和进程名在进程标识表中是为了云环境中入侵检测分析端使用方便。
云计算中共享基础设施和远程随时访问的特点给其带来了各种各样的威胁,本文从虚拟机的恶意行为检测的角度进行了研究,接下来的工作重点是对云计算环境中其他方面可能面临的威胁进行研究,比如说数据存储、访问权限、网络控制等问题,进而形成一个完整的云安全架构。
[1]Pfoh J,Schneider C,Eckert C.A formal model for virtual machine introspection,2009[C].Proceedings of the 2nd ACM workshop on Virtual Machine Security(VMSec’09). 2009:1-10.
[2]Core Security Technologies.Path Traversal vulnerability in VMware’s shared folders implementation-CVE-2008-0923. 2007.
[3]Mimoso M.Virtual Machine Escape Exploit Targets Xen. 2012.
[4]Payne D,Carbone M,Sharif M,et al.Lares:An Architecture for Secure Active Monitoring Using Virtualization,2008[C]// 2008 IEEE Symposium on Security and Privacy,2008:233-247.
[5]Garfinkel T,Rosenblum M.A virtual machine introspection based architecture for intrusion detection,2003[C]//Proceedings of Network Distributed System Security,2003:253-285.
[6]Bahram S,Jiang X,Wang Z,Grace M,et al.DKSM:Subverting Virtual Machine Introspection for Fun and Profit,2010[C]. Reliable Distributed System,2010 29th IEEE Symposium,2010:82-91.
[7]Jin H,Guofu Xiang,Deqing Zou,et al.A VMM-based intrusion prevention system in cloud computing environment [J].The Journal of Supercomputing,2013,66:1133-1151.
[8]Gupta S,S G,Gupta S,et al.An immediate system Call sequence based approach for detecting malicious program executions in cloud environment[J].Wireless Personal Communications,2014.
VMI-based intrusion detection framework in cloud environment
ZHOU Yi-zhou,XIE Xiao-quan
(Institute 706,The Second Academy of China Aerospace Science and Industry Corporation,Beijing 100854,China)
Virtual Machine Introspection(VMI)refers to monitoring the state of a virtual machine from the virtual machine monitor layer.It can also be used for monitoring and analysis of the malicious behavior of cloud infrastructure.this article designed an intrusion detection framework to detect the malicious behavior of virtual machine in the cloud,in order to solve the problem that lack of security in monitoring current virtual machines'state,this article also presented and designed a VT-based technology to get monitoring data from the virtual machine monitor layer,and made sure this method meet the characteristics of the cloud.
Virtual Machine Introspection;virtualization;hardware-assisted virtualization technology;cloud computing;intrusion detection
TP309
A
1674-6236(2016)01-0062-04
2015-01-31稿件编号:201501281
周益周(1990—),男,山西太原人,硕士,助理工程师。研究方向:信息安全。