一种基于硬件虚拟化的Rootkit技术

2017-03-29 06:56李扬周安民张磊陈航
现代计算机 2017年5期
关键词:拷贝内核虚拟化

李扬,周安民,张磊,陈航

(1.四川大学电子信息学院,成都 610065;2.四川无声信息技术有限公司,成都 610041)

一种基于硬件虚拟化的Rootkit技术

李扬1,周安民1,张磊2,陈航2

(1.四川大学电子信息学院,成都 610065;2.四川无声信息技术有限公司,成都 610041)

针对当前Windows x64版本的内核保护技术,提出一种基于硬件虚拟化的内核Rootkit技术,该技术利用Intel VT-x硬件虚拟化技术将客户系统(Guest OS)迁移到VMM之上运行实现Rootkit。借鉴Shadow Walker内存隐藏思想,基于扩展页表技术对客户系统的不同内存操作映射不同的物理内存,实现隐藏Rootkit代码,对内核保护研究有一定的启发意义。实验证明该技术稳定性强,能够绕过内核保护机制实现内核Rootkit。

内核保护;硬件虚拟化;内核Rootkit;扩展页表

0 引言

无论是对于黑客攻击研究者还是安全研究人员,内核Rootkit一直是二进制安全研究的热点。黑客攻击者利用内核Rootkit技术来隐藏攻击行为不被操作系统或者反病毒软件发现(包括文件、网络端口、注册表、进程线程等),安全研究人员研究内核Rootkit技术提升反病毒软件查杀能力和增加内核主动防御软件的隐蔽性[1-2]。在黑客攻击者与安全研究人员不断攻防博弈下,Rootkit技术不断发展,从用户态到内核态,从函数内联挂钩到直接操纵内核对象(Direct Kernel Object Manipulation)[3]。

由于Windows平台使用的广泛性,Windows内核Rootkit一直是攻防双方研究的重点对象。早期由于微软对Widnwos内核层面管控不完善,黑客攻击者通过加载特定功能的驱动模块就能实现Rootkit功能。在这种背景下,针对Windows系统的内核Rootkit攻击方法不断出现,这些Rootkit攻击方法主要分为两种,直接修改内核指令流程和直接操纵内核对象,前者通过在正常内核指令中添加钩子指令(Hook)使指令执行流程发生改变从而过滤特定信息,后者通过直接修改内核内存中指令查询的内核对象来实现特定功能的Rootkit[4]。为应对这些内核Rootkit对系统内核修改造成的危害,微软在x64版本的Windows系统中新增了一个内核完整性保护措施:内核补丁保护(Kernel Patch Protection),又称为PatchGuard,通过循环地对内核中重要内核函数及一些关键数据结构进行检查判断内核是否被修改,如果被修改则直接引发0x109蓝屏[5]。

本文提出一种利用硬件虚拟化技术在x64版本Windows上实现内核Rootkit的技术,通过内存欺骗的方式对抗PatchGuard,以实现内核Rootkit,利用扩展页表EPT(Extented Page Table)对Guest OS不同的内存操作映射不同的物理内存,从而保证攻击代码对内核保护PatchGuard的透明性。

1 硬件虚拟化技术

硬件虚拟化是一种对计算机或则操作系统的虚拟,表现为一个抽象的计算平台,提升了处理器的使用效率,特别是各种云服务发展的今天,硬件虚拟化被应用到各个领域,但其实在1999年,硬件虚拟化就被IBM实现,运用到Power 5 CPU实现逻辑分区。在Windows平台下应用硬件虚拟化技术主要包括Intel-VT及AMD-V两种,本文基于Intel VT-x硬件虚拟化技术实现。

1.1 VMM及其运行模式切换

Intel VT-x硬件虚拟化技术称为虚拟机扩展(Virtual Machine Extension,VMX),主要包含两个角色:虚拟机监视器(Virtual Machine Monitor,VMM)和客户操作系统(Guest OS)。VMM位于VMX root模式,运行在Guest OS下一层比Ring 0权限更大,能够完全控制硬件资源包括CPU资源、物理内存、中断管理及I/O控制等,Guest OS位于VMX non-root模式[6],VMM运行模式及权限级别如图1所示。

图1 VMM运行模式及权限级别

图2 VMM与Guest OS的交互

VMM root模式与VMM non-root模式的切换如图2所示,从特权模式到非特权模式的切换被称为VM迁入(VM Entry),相反的切换称为VM迁出(VM Exit),这两种模式的状态迁移由虚拟机控制结构(Virtual–Machine Control Structure,VMCS)控制。在VMM启动Guest OS后,当Guest OS在运行过程中,在执行某些指令或则发生某些异常时会触发#VMEXIT事件而陷入VMM中,此时VMM获得Guest OS控制权,在VMM对陷入的事件处理后(可以通过对VMCS结构进行配置选择处理特定的事件),VMM使用VMRESUME指令恢复Guest OS执行。

利用硬件虚拟化实现的VMM与Guest OS模型中,VMM是一个轻量级的虚拟机监视器,VMM将原本在物理处理器中运行操作系统变成客户操作系统Guest OS,VMM位于Guest OS特权等级Ring 0之下,能够完全控制Guest OS对各种资源的访问。但与普通虚拟机客户机模型不同的是,硬件虚拟化实现的VMM不需要对系统进行完全的抽象,只是当发生特定的事件与异常后VMM才获得完全控制权,允许Guest OS与本地I/O进行访问,大大提高了运行的效率。

1.2 虚拟内存及扩展页表EPT

在硬件虚拟化提供的虚拟模型中,VMM管理物理硬件控制Guest OS对各种资源的访问,为Guest OS提供运行环境。虚拟内存是计算机系统管理的一种技术,为操作系统提供连续可用的内存,提供虚拟内存到真实物理内存的映射关系,CPU必须通过内存管理单元将虚拟地址(Virtual Address,VA)转换为物理地址(Physical Address)。在虚拟环境中,VMM管理真实的物理内存即主机物理内存(Host Physical Address, HPA),直接控制着Guset OS对物理内存的访问,在这种情况下原有的物理地址变成主机物理地址,客户物理地址与物理内存不再一一对应,客户物理地址需要通过VMM的虚拟内存管理单元(MMU Virtualization)转换成HPA,具体转换关系如图3所示。

图3 VMM内存虚拟化

在硬件辅助内存虚拟化技术EPT(Extent Physical Table)出现之前,内存的虚拟化通常采用影子页表解决,影子页表是通过软件方式实现,在多个CPU之间同步页面数据时存在严重的性能问题[6]。从Intel VT-x开始,通过在虚拟地址到物理地址的翻译机制上增加一层新的翻译机制即EPT扩展页表技术,大大提升了虚拟化下的虚拟内存管理的效率。EPT工作在VMMno-root模式下,借助EPT页表完成GVA到HPA的转换,EPT的顶级页表保存在VMCS中,图4是在EPT扩展页表开启下Guest OS线性地址到主机物理地址转换的过程图,两次地址转换过程都由CPU硬件(CR3和EPT页表)完成。

图4 开启EPT下地址转换

2 内核Rootkit实现框架

2.1 主要方法和技术

微软在2005年推出的x64版本的Windows XP及Windows Server 2003第一次引入了PatchGuard内核保护机制,并且在之后的x64 Windows版本中不断更新完善,PatchGuard通过定期检查来确保系统内核函数及关键结构体不被更改。如果修改被检测到,Patch-Guard就会开启错误检查导致系统蓝屏关机,但是内核Rootkit不可避免地要修改Windows内核数据。为实现对PatchGuard的内核Rootkit,本文利用基于Intel VT-x的硬件虚拟化技术在Windows系统下层实现一个轻量级虚拟机监控器VMM,借鉴Shadow Walker[8]内核Rootkit内存隐藏方法,对需要修改的内核内存设置EPT页表,对不同的内存操作定向到不同的物理内存,实现对PatchGuard的透明。

当Rootkit程序初始化时,对需要修改的原始内核内存O设置2个内存拷贝A、B。A拷贝用于读写,B拷贝用于执行,对B拷贝中设置INT 3断点且B拷贝不允许读写操作,初始设置对O重定向到B拷贝。当对B拷贝进行读写操作时会触发EPT Violation异常,执行VM-exit控制逻辑使VMM获得控制权,将操作再次重定向到未修改拷贝A,实现修改内存对PatchGuard的透明。当执行时,直接进入B拷贝,触发BP异常,VMM获得控制权然后修改函数逻辑执行Rootkit函数代码[9]。

2.2 系统框架及实现

根据主要方法和技术,设计的内核Rootkit系统框架执行逻辑如图5所示。

图5 内核RootKit总体流程设计

Rootkit程序以Windows内核驱动的形式存在,当Rootkit被加载后执行初始化操作,执行VMM初始化迁移原系统使之成为Guest OS系统运行在VMX nonroot模式,Rootkit程序作为VMM运行在VMM-root模式,然后分配EPT页面设置页面拷贝及重定向等,完成初始化操作后执行VMMRESUME指令Guest OS恢复执行,VMM等待VM-exit事件发生后Guest OS陷入VMM。

当Guest OS对需要修改的内存区域执行读写操作时,由于已经设置了EPT entry到拷贝B且拷贝B被设置为不可读写,导致EPT vilolation异常触发VM Exit 使Guest OS陷入VMM,VMM将EPT entry设置为拷贝A并设置MTF位(通过设置MTF位可以使读写执行完后Guest OS重新触发VM Exit),在Guest OS执行完读写操作后会再次触发MTF VM Exit,VMM重新设置EPT Entry为拷贝B回到初始状态。

当Guest OS在执行需要修改的内存区域时,直接进入拷贝B执行,由于已经在拷贝B中设置了INT 3断点,导致BP异常触发VM Exit使Guest OS陷入VMM,VMM通过检查Guest OS寄存器RIP的值是否为需要修改的函数地址进行处理,如果是需要修改的函数地址则直接修改RIP地址为RootKit函数地址,过滤相应的信息,否则正常执行后返回。

3 实验结果

实验环境如表1所示。

表1

实验以进程隐藏为验证,通过内核Hook内核函数NtQuerySystemInformation隐藏进程InstDrv.exe[10]。当执行到原始NtQuerySystemInformation内存区域时,触发VM Exit使VMM获得控制权,VMM修改当前RIP值为HookNtQuerySystemInformation,使得代码执行流程进入Rootkit函数。在HookNtQuerySystemInformation函数中执行原始函数后在SYSTEM_PROCESS_INFORMATION链表信息中摘除关于InstDrv.exe的进程信息,达到内核进程信息隐藏,实验效果如图6所示。

在实验中未触发PatchGurad而导致蓝屏,可以得出本方案能够较好地在基于x64架构的Windows系统下实现内核Rootkit,在内核进程链表中摘除了需要隐藏的“InstrDrv.exe”进程信息,达到了内核进程隐藏的目的且实现了Rootkit代码对内核保护PatchGuard的透明性。

图6 虚拟化RootKit隐藏进程效果

4 结语

通过引入硬件虚拟化技术,本文提出并实现了基于硬件虚拟化的Rootkit技术方法,利用EPT扩展页面技术对需要修改的内存不同操作重定位到不同主机物理内存,实现Rootkit代码对内核保护机制PatchGuard的透明性。该方法充分利用底层硬件虚拟化技术实现内存,对于Rootkit和系统保护技术研究具有一定的启发意义。

[1]Symantec Corporation.Windows rootkit overview[EB/OL].[2014-12-10].http://www.symantec.com/avcenter/reference/windows.rootkit. overview.pdf

[2]Hoglund G,Butler J.Rootkits:Subverting the Windows Kernel[M].USA:Addison-Wesley Professional,2007.

[3]易再尧,黄本雄,孙建华.一种基于虚拟化哈佛体系结构的Rootkit技术[J].微电子学与计算机,2010,27(4):129-132.

[4]张瑜,刘庆中,李涛,等.Rootkit研究综述[J].电子科技大学学报,2015(4):563-578.

[5]Ahmed I,Iii G G R,Zoranic A,et al.Integrity Checking of Function Pointers in Kernel Pools via Virtual Machine Introspection[M]. Information Security.Springer International Publishing,2015.

[6]凌冲,孙乐昌,刘京菊,等.一种硬件虚拟化技术的Rootkit及其检测[J].西安科技大学学报,2010,30(1):86-91.

[7]李勇,郭玉东,王晓睿,等.基于EPT的内存虚拟化研究与实现[J].计算机工程与设计,2010,31(18):4101-4104.

[8]Sparks S,Butler J,Sparks S,et al.Shadow Walker:Raising The Bar For Windows Rootkit Detection[J].Phrack,2005.

[9]Satoshi,Tanda.Monitoring&Controlling Kernel-mode Events by HyperPlatform[EB/OL].https://recon.cx/2016/resources/slides/RECON-0xA-HyperPlatform-Satoshi.pdf.

[10]王雷,凌翔.Windows Rootkit进程隐藏与检测技术[J].计算机工程,2010,36(5):140-142.

A Rootkit Based on Hardware Virtualization

LI Yang1,ZHOU An-min1,ZHANG Lei2,CHEN Hang2
(1.College of Electronics and Information Engineering,Sichuan University,Chengdu 610065; 2.Sichuan Silence Information Technology Co.,Ltd.Chengdu 610041)

To bypass the Kernel Patch Protection of Windows x64,puts forward a kernel Rootkit technology based on hardware virtualization,which migrates the Guest OS to VMM to achieve kernel Rootkit by Intel VT-x hardware virtualization technology.Inspired by the Shadow Walker,uses the EPT technology to hide rootkit code by mapping different physical memory to different Guest OS memory operations,it has some enlightening significance to the study of kernel protection.Experiments show that the method is robust and can bypass the Kernel Patch Protection and achieve kernel Rootkit.

Kernel Patch Protection;Hardware Virtualization;Kernel Rootkit;EPT

1007-1423(2017)05-0021-05

10.3969/j.issn.1007-1423.2017.05.006

李扬(1992-),男,四川绵阳人,硕士研究生,研究方向为信息安全

2016-12-01

2017-02-06

周安民(1963-),男,四川成都人,硕士导师,研究员,研究方向为信息安全保护技术

猜你喜欢
拷贝内核虚拟化
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
微软发布新Edge浏览器预览版下载换装Chrome内核
基于OpenStack虚拟化网络管理平台的设计与实现
对基于Docker的虚拟化技术的几点探讨
文化拷贝应该如何“拷”
食管腺癌DNA拷贝变化相关基因的生物信息学分析
浅谈虚拟化工作原理
用户怎样选择虚拟化解决方案