一种基于虚拟化技术的云平台客户机系统可用性提升方法与流程

文档序号:12664803阅读:172来源:国知局
一种基于虚拟化技术的云平台客户机系统可用性提升方法与流程
本发明属于虚拟化及系统安全
技术领域
,涉及基于虚拟化技术的云平台客户机系统可用性提升方法,尤其涉及一种针对安全工具误报带来的系统可用性影响问题的提升云平台客户机系统可用性的方法。
背景技术
:随着虚拟化技术的不断发展,云计算应用越来越广泛。解决面向云平台的安全问题、保障使用云服务的客户机系统安全成为云服务的重要需求之一。国内外已有一些基于虚拟化技术或操作系统的安全防护技术方案,主要包括实现恶意代码的检测和分析、完整性监控、入侵检测、安全监控等方面。在恶意代码检测与分析方面,Jiang等人(JIANGX,WANGX,XUD.Stealthymalwaredetectionthroughvmm-basedout-of-the-boxsemanticviewreconstruction[C]//Proceedingsofthe14thACMconferenceonComputerandcommunicationssecurity.ACM,2007:128-138.)提出了VMwatcher(VirtualMachineWatcher)机制,它在客户机系统之外部署恶意行为检测系统,并在监控层进行语义恢复,能够检测出系统存在的恶意程序。Dinaburg等人(DINABURGA,ROYALP,SHARIFM,etal.Ether:malwareanalysisviahardwarevirtualizationextensions[C]//Proceedingsofthe15thACMconferenceonComputerandcommunicationssecurity.ACM,2008:51-62.)提出基于Xen的Ether方法,整个系统分为两个部分,一部分工作在监控层下,一部分工作在Xen的特权管理域(dom0)中,利用IntelVT(IntelVirtualizationTechnology)技术对被监控系统中的可疑程序进行跟踪。Lanzi等人(LANZIA,SHARIFMI,LEEW.K-Tracer:ASystemforExtractingKernelMalwareBehavior[C]//NDSS2009:TheNetworkandDistributedSystemSymposium,SanDiego,California,2009:255-264.)基于QEMU(QuickEmulator)提出并开发了K-Tracer恶意代码行为分析工具,它能够动态收集Windows内核的执行路径信息,并采用后向和前向切片技术来提取恶意代码行为。XUAN等人(XUANC,COPELANDJ,BEYAHR.Towardrevealingkernelmalwarebehaviorinvirtualexecutionenvironments[C]//RecentAdvancesinIntrusionDetection.SpringerBerlinHeidelberg,2009:304-325.)提出的Rkprofiler是一个基于沙盒的恶意代码分析系统,它能够监控并报告客户机操作系统中运行的恶意代码的行为。在完整性保护方面,SESHADRI等人(SESHADRIA,LUKM,QUN,etal.SecVisor:AtinyhypervisortoprovidelifetimekernelcodeintegrityforcommodityOSes[C].ACMSIGOPSOperatingSystemsReview,ACM,2007,41(6):335-350.)提出的SecVisor通过创建一种轻量级虚拟机对操作系统进行内存保护,它基于页表对内核模式和用户模式下的内存进行内存保护。在安全监控方面,Payne等人(PAYNEBD,CARBONEM,SHARIFM,etal.Lares:Anarchitectureforsecureactivemonitoringusingvirtualization[C]//2008IEEESymposiumonSecurityandPrivacy(sp2008).IEEE,2008:233-247.)提出的Lares系统是内部监控的典型代表,它将安全系统部署在客户机系统外的一个安全域中,同时在客户机系统的内核中插入钩子函数,钩子函数用来拦截某些事件。由于钩子函数存在于客户机系统的内核中,能够被客户机系统感知,存在被恶意程序篡改的可能性,因此需要在虚拟机管理层对钩子函数所在内存区域进行保护。在入侵检测方面,Laureano等人(LAUREANOM,MAZIEROC,JAMHOURE.Protectinghost-basedintrusiondetectorsthroughvirtualmachines[J].ComputerNetworks,2007,51(5):1275-1283.)提出了基于主机的入侵检测系统的保护方法,它通过分析在外部监控虚拟机所获取的系统调用序列来判断进程行为是否存在异常,并采用相应的措施。ZHANG等人(ZHANGX,LIQ,QINGS,etal.VNIDA:BuildinganIDSarchitectureusingVMM-basednon-intrusiveapproach[C]//WKDD2008,ProceedingsoftheInternationalWorkshoponKnowledgeDiscoveryandDataMining,IEEE,2008:594-600.)提出的VNIDA是通过建立一个单独的入侵检测域为其他虚拟机提供入侵检测服务。然而,这些方案均没有考虑到云服务客户机的可用性问题。不论是基于操作系统或是基于虚拟化技术的安全工具,在对系统进行检测、防御、恢复的过程中,均会对系统带来可用性的影响,而在云平台之上的客户机对于自身可用性具有更高的要求,因此应该尽量减少安全防护措施对客户机正常运行的干扰。在实际应用场景中,安全防护工具不可避免会发生误报行为,而安全攸关的客户机在安全工具发生警报时,往往会进行暂停、检测、恢复等操作,而安全工具误报(虚报、漏报)的发生和发现存在延迟,因此误报会降低客户机系统的可用性。技术实现要素:针对上述问题,本发明提供一种降低由安全防护工具的误报引发的对云平台客户机系统可用性影响的方法。当安全防护工具发生误报时,该方法能够确保客户机持续不断地运行,而不用进行回滚、暂停、重启等操作,并维护客户机系统应有的状态。本发明采用的技术方案如下:一种基于虚拟化技术的云平台客户机系统可用性提升方法,其步骤包括:1)在虚拟化监控层(VirtualMachineMonitor,VMM)对上层客户机的可疑进程的行为进行捕获;所述可疑进程即为安全防护工具报警时提供的产生威胁的进程;2)根据客户机的可疑进程与其它进程的行为交互,形成进程间的依赖关系;3)在VMM层控制客户机的可疑进程及与其存在依赖关系的进程的行为,同时保证这些进程在客户机中继续运行,并且可疑进程的行为对客户机不产生影响;4)当误报被发现时,若为漏报,则杀死可疑进程及与其存在依赖关系的进程即可;若为虚报,则释放受控制的可疑进程及与其存在依赖关系的进程,使其继续正常运行(即将之前处于控制之下的进程释放掉,使系统状态变为可疑进程正常运行到此时的状态)。下面将分为四个部分对以上步骤的具体内容进行详细描述。1.本方法采用系统调用行为序列作为进程行为控制的基础,在VMM下捕获客户机系统调用行为信息,对客户机进程的行为信息进行捕获。捕获的行为包括文件操作和进程操作,具体内容见表1,其中read表示读操作,write表示写操作,fork和clone表示创建子进程操作,mmap表示映射操作,pipe表示管道操作。捕获到的行为信息包括系统调用号、进程id以及与具体行为有关的信息,如文件操作中的文件路径、进程操作中的进程id。表1.捕获行为捕获行为系统调用行为信息文件相关read、write文件路径进程相关fork、clone、mmap、pipe操作目标进程id2.由于进程之间存在进程间通信,因此有些行为并不是孤立的。比如A进程被判定为可疑进程,A进程的行为会处于控制之下。如果B进程和A进程存在行为交互,那么B进程就可能被A进程所感染,因此B进程的行为也应该受到控制。产生进程间交互的行为可以分为直接交互和间接交互。进程创建,如fork,进程间通信(Inter-ProcessCommunication,IPC),如pipe,是进程间的直接交互。通过文件操作的交互可看作是间接交互,比如进程A写了某文件,进程B读了同一个文件,可以认为进程A、B间产生间接交互。同理还有mmap系统调用。进程间交互行为见表2。表2.各行为控制方式3.当漏报被发现时,要实现只需将威胁进程杀死即可恢复系统安全,就要保证该进程在漏报被发现之前,未对系统造成实质性影响。本方法为控制客户机的可疑进程及与其存在依赖关系的进程的行为,同时保证这些进程在客户机中继续运行,并且可疑进程的行为对客户机不产生影响,采取的控制措施如下:捕获模块捕获到一个来自受控进程或与之存在依赖关系的进程行为;行为控制模块判断该行为是否是一个需要被修改的行为,需要被修改的行为见表2;若不是,则不做处理;若是,则按照表2进行行为控制;修改结束之后返回给客户机,客户机将不会察觉到VMM对该进程的任何修改,并继续正常运行该进程。控制措施例如write系统调用,控制方式为在该系统调用执行之前将写的内容清零;对于mmap系统调用,当多个进程mmap同一个文件时,就会产生进程间依赖,此时的控制方式是允许其执行,同时记录产生的依赖关系。类似的还有write/read产生的进程间依赖,控制方式与mmap相同。fork和clone也会产生进程间依赖,但控制方式是不允许其执行,这里通过在该系统调用执行之前,修改其系统调用号为一个无副作用的系统调用(如getpid())来实现控制。pipe由于经常和fork捆绑使用,当fork无法执行时,pipe也无法起到应有的效果,因此这里允许其执行。由于捕获到进程的系统调用行为时对该行为进行修改,使其并没有对系统产生实质的改变,而这个被修改的行为可能会影响到该进程及其他进程后续的行为,因此,要对该进程以及相关进程的后续行为继续采取控制措施。4.将受控进程的行为释放到客户机中,使其快速恢复应有的运行状态的重点在于在适当的时刻保留进程的运行状态。当某一进程开始处于控制之下,或某一进程与受控进程产生依赖关系时,则交给行为释放模块进行该进程状态的备份。对进程进行备份的方法见图1,在该进程处于用户态时主动陷入到VMM中,此时对该进程注入一个fork系统调用,以实现进程备份。注入fork系统调用的方法是修改进程代码段中的4个字节,将原代码内容修改为int3,int80,int3三条指令。修改代码时需要保存该位置原来的代码内容,以便之后的恢复工作。代码被修改后,还需要设置eax寄存器的值为fork系统调用号,这样,当客户机执行到int80指令时,就能够正确执行fork系统调用完成进程的备份。由于eax寄存器也被修改,因此这里同样需要将原本的eax寄存器值记录下来。fork产生的子进程作为备份进程,应该暂停在此状态下,而不应该被调度运行;当行为需要被释放时,才解除其暂停状态。这里采用的方法是,如果检测到是子进程被调度执行,则注入sched_yield系统调用使其睡眠。另外,由于所修改的代码段部分往往是被多个进程所共享的,因此修改的代码有可能被其他无关进程所执行,而其他进程应执行原来的代码,而不应该执行修改后的代码,因此这里加入两个int3指令,以对客户机陷入VMM时正在运行进程的行为流程进行控制。由于有两个int3指令,因此从int3陷入的情况分为两种:从第一个int3陷入(1stint3)以及从第二个int3陷入(2ndint3)。不同陷入情况的处理措施见图2。如图2所示,如果从第一个int3陷入,无论该进程是无关进程还是受控进程,均需要模拟被修改的位置原来的代码执行效果;如果从第二个int3陷入,则判断该进程为受控进程还是备份产生的子进程,若是子进程则记录该进程ID,若是受控进程,则根据是否需要释放该进程行为进行具体处理。本发明的有益效果是:安全工具不可避免地发生误报,而误报会对云平台之上的客户机带来系统可用性影响。本发明避免安全工具因误报而进行系统恢复、回滚等操作,确保在误报发生后,客户机系统仍然能够持续不断地运行,并维持正确的运行状态。本发明在安全工具误报发生时能够正确控制可疑进程,避免该进程对系统造成实质性影响,并能保证该进程正确运行状态;在误报发现时,客户机系统能够快速恢复到应有的状态,从而降低安全工具对云平台之上的客户机可用性造成的影响。附图说明图1为本发明进程备份流程图。图2为本发明int3陷入处理流程图。图3为本发明方法流程图。具体实施方式下面结合实施例和附图对本发明进行进一步详细描述。本发明方法流程如图3所示。当一个安全工具产生报警时,本方法将接收到该信号,然后执行以下流程:将产生威胁的进程(由安全工具提供)标为可疑进程,将其进程id传递给捕获模块和行为释放模块;行为释放模块对该可疑进程进行备份;捕获模块对该可疑进程的行为进行捕获,并将捕获到的行为传递给行为控制模块;行为控制模块对各进程的行为进行控制,并根据行为类型形成进程间依赖关系;当误报被发现时,若为漏报,则只需杀死该可疑进程、与其存在依赖关系的进程以及这些进程对应的备份进程即可;若为虚报,则将消息发送给行为释放模块,该行为释放模块负责恢复进程状态,使进程能够持续不断运行。所述漏报是指安全工具未对恶意进程进行报警的情况;所述虚报是指安全工具将正常进程误报为恶意进程的情况。下面给出两个具体实施例。可以理解的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一:针对虚报的场景我们进行了如下实验:两个监控工具A和B共同监控客户机,当前客户机中正在运行某一目标进程。t1时刻A对该进程(目标进程)产生报警,B未产生报警,在t2时刻发现虚报。该目标进程被报警之后还执行了其他操作,并与其他进程形成了依赖关系。实验中本方法在报警过后能够正确记录各个进程依赖关系,并对相关进程的行为进行控制。在t2时刻虚报被发现时,能够使相关进程继续正常执行,而不需要重新执行。实验中捕获到的行为及数量如表3所示。表3.各行为控制方式行为数量/个是否控制处理mmap5√write/read11√fork2√clone2√pipe2√实施例二:针对漏报的场景我们进行了如下实验:两个监控工具A和B共同监控客户机,当前客户机中正在运行某一目标进程。t1时刻A对该进程(目标进程)产生报警,B未产生报警,在t2时刻发现漏报。由于目标进程行为受到控制,并未对系统进行实质性破坏,因此此时仅需杀死该进程、与其存在依赖关系的进程以及这些进程对应的备份进程即可,而不需要进行系统暂停、恢复、回滚等操作。实验样本有Tsunami、Kaiten、XOR.DDoS。Tsunami,从行为上分析,该程序开始执行之后需要clone产生子进程,该子进程与攻击主机建立socket连接,并发送数据。接收到攻击主机的命令后,作为僵尸网络中的一台主机,被入侵主机对目标发起DoS(DenialofService)、SYNflood等攻击。在本实验中,clone系统调用被捕获并受到控制,使clone不会成功执行,因此不会发生子进程与远程攻击主机进行socket连接。对另一个恶意程序样本Kaiten进行实验。该进程会对系统文件,如/etc/rc.d/rc.local、/etc/rc.conf进行写操作。本系统会对写内容进行控制,使写操作无效。可以看出,客户机操作系统恢复工作量及其复杂性有所降低。XOR.DDoS开始执行时会进行自我复制,实现方式是在usr/bin、/bin、/tmp下创建文件并写入二进制内容。处于控制之下的进程将无法写入数据到目标文件中。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1