基于虚拟机的Rootkit技术研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
科技信息
1引言
Rootkit是用来隐藏自身踪迹和保留系统访问权限的工具集。
当前的Rootkit受限于两个方面:首先,Rootkit较于入侵检
测系统在系统的控制程度上没有明显的优势。
如果进攻者与防御者都运行在最高权限下,他们彼此之间没有优势可言,先感知到对方存在的一方将会获胜。
其次,当前的Rootkit在功能性与隐蔽性上无法兼得。
功能强大的恶意程序较简单的程序会留下更多的痕迹,容易被安全工具检测到。
一种名为虚拟机Rootkit(VMBR,virtual-machinebasedrootkit)的恶意程序,利用虚拟机技术突破了当前恶意程序的局限。
VMBR对系统具有更高的控制程度,能提供多方面的功能,并且其状态和活动对运行在目标系统中的安全检测程序来说是不可见的。
VMBR在正在运行的操作系统下安装一个虚拟机监视器(VMM,virtualmachinemonitor),并将这个原有操作系统迁移到虚拟机里,而目标系统中的软件无法访问到他们的状态,因此VMBR很难被检测和移除。
2虚拟机原理
VMM是运行在硬件之上或运行在操作系统之中的软件层次。
VMM为使用仿真硬件的客户软件提供硬件抽象,VMM将
捕获对硬件设备的访问,并利用软件方式进行仿真,使得客户操作系统与虚拟硬件的交互如同与真正的硬件交互一样。
VMM通过复用计算机的硬件以支持多个操作系统运行在同一个主机上,这些操作系统相互隔离,并拥有各自的应用程序。
VMM管理底层硬件的资源以及对一个或多个虚拟机进行抽象。
每一个虚拟机都能运行完整的客户操作系统和客户应
用程序。
虚拟机
(VM,virtualmachine)可分为两种类型,如图1。
图1虚拟机的两种类型
类型I中VMM直接运行在硬件层之上,控制着物理硬件资源,为运行在VMs中的操作系统提供虚拟接口。
类型II中的虚拟化软件(如VMware)作为一个应用程序运行在操作系统中,这个操作系统被称作主机操作系统。
而运行在VM中的操作系统则被称为客户操作系统。
VMware作为主机系统的进程而运行并且为客户系统的I/O请求提供服务。
3虚拟机RootKit的实现
VMM为恶意程序提供了一个强大的平台。
一个VMBR将目标系统迁移到虚拟机中,然后在VMM或另一个虚拟机中运行恶意程序,VMM将恶意程序与目标系统隔离开,这样目标
系统上的安全检测软件就无法发现和修改恶意程序。
同时,
VMM能够掌握目标系统上的所有事件和状态,当VMBR修改
这些事件和状态时,由于它完全控制了面向目标操作系统和应用程序的虚拟硬件,目标系统将无法发现这些改动。
3.1软件虚拟化环境下的VMBR
SubVirt是由微软和密歇根大学的研究人员开发的概念验证型VMBR,它依赖于商用的虚拟机软件(VMware或VirtualPC)来构建虚拟化环境,并且需要供其自身运行的主机操作系统。
3.1.1SubVirt的装载
SubVirt需要运行在目标操作系统及其应用程序之下,并且将目标系统作为客户系统运行。
为了达到这个目的,SubVirt必须篡改系统启动顺序,以确保SubVirt先于目标操作系统装载。
如图2所示,SubVirt在注入前后的对比,灰色部分为VMBR的组件。
图2VMBR注入前后的对比
攻击者在安装这个VMBR之前,必须先获得目标系统足够的访问权限,这样才能更改系统的启动顺序。
当目标系统是Windowsxp时,SubVirt存储在第一个活动分区的开始部分,并将该区域上的原有数据重定位到磁盘的其他空闲区,然后通过修改引导记录来更改系统启动顺序。
为了避免被检测磁盘引导扇区的安全软件检测到,SubVirt在系统关闭期间,大多数进程和内核子系统退出后才修改引导扇区,并且使用底层的磁盘驱动进行VMBR启动代码的复制,这样可以绕过文件系统层上的检测软件。
SubVirt利用内核组件注册了一个LastChanceShutdownNotification事件处理程序,它会在系统关闭时被调用,当调用发生时,SubVirt的启动代码将被拷贝到磁盘的活动分区中。
在下一次系统启动时,SubVirt将会先于目标系统载入,并安装主机系统和VMM,构建虚拟环境,然后载入目标系统,此时的目标系统已成为VM下的客户系统,处于Sub-Virt的控制之下。
在SubVirt安装之后,由VMM控制最底层,把目标系统对虚拟磁盘的访问转换为对应的物理磁盘的访问。
由于VMBR使用了与目标系统相隔离的主机系统,在此之上安装的任何恶意程序对目标系统来说都是不可见的。
而恶意程序则可以对目标系统进行攻击。
基于虚拟机的Rootkit技术研究
沈阳工业大学
孙
迪
杨大全
[摘要]
随着安全检测软件深入到系统内核,传统的内核级Rootkit逐渐丧失了隐藏自身和控制系统的优势。
但是一种利用虚拟机技术的虚拟机Rootkit又一次打破了平衡,它试图在虚拟化环境下躲避检测,并控制目标系统。
本文将介绍两种在不同虚拟化环境下的Roorkit的实现方式。
[关键词]
隐藏虚拟机RootKit控制虚拟化环境HardwareGuestOS1GuestOS2
VirtualMachine(VMM)
(a)TypeⅠ
(b)TypeⅡ
GuestOS1GuestOS2
VirtualMachine(VMM)
HardwareHostOSBeforeinfection
Afterinfection
target
application
targetapplicationtargetoperatingsystemhosthardware
target
application
targetapplication
targetoperatingsystemhosthardware
virtual-machinemonitor(VMM)maliciousservice
maliciousservice
hostoperatingsystem
作者简介:
孙迪(1981-),男,辽宁沈阳人,沈阳工业大学硕士研究生,主要研究方向:计算机网络;杨大全(1948-),男,辽宁沈阳人,硕士,沈阳工业大学教授,硕士研究生导师,主要研究方向:计算机网络。
博士・专家论坛
336——
科技信息
(上接第335页)教学与科研相结合的模式,明确实习基地建设指导思想,通过实习基地的建设,构建创新人才培养的教学环境,确保实践教学质量。
学生实践能力的形成和综合素质的提高是一个循环渐进的过程,是在不断的实践过程中积累,并通过有意识、有计划的培养逐步形成实现的。
实践证明,我院通过实习基地对学生实践技能的培养,以及学生职业工种的考取,弥补了目前大多数本科高校学生只有理论知识的缺陷,使学习具有双重能力,为他们的就业打下深厚的基础,增强了就业竞争力。
参考文献
[1]任洁梅,程冬梅.加强实习基地建设培养学生实践能力[J].实验室科学,2008,2:12-13
[2]张天华.高职院校实习基地建设与校企合作探索[J].辽宁高职学报,2007,9(4):60-62
[3]孟婷婷.对加强校外实习基地建设的几点认识[J].文教资料,2008,15(5):165-166
[4]吴国栋.高校实习基地建设模式研究与实践[J].华东交通大学学报,2007,24(12):117-118
3.1.2维持控制权
为了避免自身被移除,VMBR必须维持对系统的控制。
只要VMBR控制着系统,它就能阻止任何修改其状态的企图。
VMBR对系统失去控制的唯一时机是系统加电到VMBR加载这段时间,任何在这段时间里运行的代码都能访问到VMBR的状态。
而在此时间段内运行的代码是系统的BIOS,由BIOS启动VMBR,然后VMBR取得系统控制权。
但是如果BIOS通过其他媒介启动(如CD-ROM),并运行一段程序,这个程序将能访问到VMBR。
因此VMBR需要减少系统电源关闭的情况,通常造成电力循环的原因是系统重启和关闭,VMBR通过重启虚拟硬件而不是底层的物理硬件来处理重启操作,这样VMBR可以保持对系统的控制权。
同样,VMBR也可以利用APCI的休眠功能仿真系统关机操作,这个功能可以使硬件处于低能耗状态,如同系统关机状态一样,而实际上内存仍处于加电状态,当用户按下电源按钮时,系统从APCI的休眠状态中恢复,内存中的VMBR也重新取得系统的控制权。
在以上两种情况下,即使BIOS通过其他媒介启动系统,都将处于VMBR的控制下。
3.1.3性能评估
(1)由于SubVirt在引导目标系统之前需要加载供自己运行的主操作系统和VMM,因此开机启动的时间要比目标系统正常启动的时间要长,并增加了系统资源的额外开销。
(2)SubVirt提供给目标系统的虚拟硬件较之物理硬件有一定的性能损失,如虚拟显卡无法实现物理显卡的3D应用等。
(3)SubVirt运行在X86环境下,并依赖商用的VMM,虚拟化并不完全,VMM只能捕获处于特权级别的处理器指令,无法捕获仿真非特权敏感指令(Sensitiveinstructions),如SIDT指令,利用这样的指令可以用来检测SubVirt的存在。
3.2硬件辅助虚拟化环境下的VMBR
INTELVT-X与AMD-V实现了处理器对虚拟化的支持,通过新增加的指令来构建和维护虚拟环境。
不同于SubVirt,硬件辅助虚拟化环境下的VMBR不需要修改引导记录更改系统的启动顺序来加载自身,得到系统的控制权,而是通过相关的CPU指令将正在运行的系统迁移到VM中,达到监视控制目标系统的目的。
3.2.1AMD虚拟化技术
AMD-V定义了一些新的CPU指令如:
(1)VMRUN:实现一个客户系统
(2)VMSAVE和VMLOAD:管理客户状态信息
(3)#VMEXIT:退出VM返回到主机模式
(4)VMMCALL:允许客户系统与VM管理程序交互
还定义了一个名为虚拟机控制块(VMCB)的数据结构,处理虚拟化管理功能,该结构由两个区域构成。
第一个区域为控制位区。
第二个区域用来维护客户的状态。
AMD-V功能启动后,具有两种模式:主机模式和客户模式。
VM管理程序(Hypervisor)在主机模式,客户系统运行在客户模式。
在主机模式下的Hypervisor利用VMRUN指令来实现初始化客户系统的操作,并构造相应的VMCB。
在此之后,客户系统进入执行状态,直到产生了#VMEXIT事件的中断,控制权又回到Hypervisor,并处理这个中断,然后再次调用VM-RUN指令回到客户模式。
客户的状态以及产生#VMEXIT事件的原因将被记录在VMCB中。
整个系统就处于VMRUN与#VMEXIT不断循环的过程中。
3.2.2VMBR的装载
为了将正在运行的目标操作系统迁移到VM中转变成客户系统,VMBR必须负责初始化Hypervisor。
VMBR以某种方式侵入到目标系统,利用驱动程序方式加载到系统内核,该驱动程序分配一个不分页的内存区域来存储Hypervisor的代码,当Hypervisor安装完毕后,驱动程序的卸载例程将卸载这个驱动并删除磁盘上的驱动文件。
具体的步骤如下:
(1)VMBR以驱动程序方式装载到系统内核,在内核模式下进行初始化工作。
(2)开启AMD-V功能。
(3)分配连续的不分页的物理内存空间存储VMCB结构。
(4)在内核内存中分配不分页区域,并将Hypervisor代码复制到那里。
(5)为主机模式保存区分配连续的不分页的物理内存,在VM_HSAVE_PA寄存器中存储这个区域的物理地址。
(6)初始化VMCB的控制区域,设置退出客户模式返回主机VM管理模式的条件。
(7)在VMBC中的客户区域保存当前操作系统完整的状态,当该系统置于客户VM中时,能够以正确的状态继续运行。
(8)调用驱动程序之外的Hypervisor代码,执行VMRUN指令,将当前操作系统迁移到客户模式。
(9)返回到驱动程序中,执行卸载例程卸载该驱动。
经过以上的步骤VMBR达到了将目标系统迁移到客户VM中的目的,并对该系统进行控制。
3.2.3性能评估
(1)硬件虚拟化环境下的VMBR不需要修改引导记录更改系统启动顺序加载自身,而是在运行的系统内动态的加载RootKit程序,设置虚拟化环境,但系统关机或重启后需要重复加载的操作。
(2)利用CPU对虚拟化的支持,减小了系统开销,更具可操作性。
(3)对系统性能仍有影响,以及引起系统异常,可以被检测程序利用检测VMBR的存在。
如观察翻译后援存储器(TLB)的变化。
翻译后援存储器是CPU的一个缓存,当某事件引起一个虚拟机退出的时候,就会在TLB中留下踪迹。
4结束语
随着虚拟机RootKit的出现,恶意软件与安全检测工具之间的平衡又一次被打破。
然而目前的VMBR仍不完美,虚拟化环境下的系统差异以及虚拟机RootKit对系统性能的影响都能暴露它的存在。
但是随着虚拟化技术的不断发展与应用,虚拟机RootKit这种威胁就会变得很现实,因此虚拟化环境下的系统安全应受到更多的关注。
参考文献
[1]SamuelT.King,PeterM.Chen,Yi-MinWang,SubVirtImplementingMalwareWithVirtualMachines[EB/OL].2006[2]MichaelMyers,StephenYoundt.AnIntroductiontoHard-ware-AssistedVirtualMachineRootkits[EB/OL].http://crucialse-curity.com.August7,2007
[3]D.D.Zovi.HardwareVirtualization-BasedRootkits.Pre-sentedatBlackHatUSA,Aug.2006
[4]J.Rutkowska,SubvertingVistaKernelforFunandProfit[EB/OL].http://blackhat.com/presentations/bh-usa-06/BH-US-06-Rutkows-ka.pdf
博士・专家论坛
337
——。