39 views

Rootkit技术 3 – 虚拟机Rootkit

 

image

【1】中提到三种虚拟机(系统虚拟机)技术相关联的rootkit技术,

 

1.VAM(Virtualization-aware malware)虚拟感知恶意软件

这一部分前面提到过,就是恶意软件检测自身是否运行在虚拟机中的技术。按照【1】的说法,这种技术趋于消亡,因为虚拟机并不仅用于安全人员分析攻击,而是真正的运转着客户应用,包括客户资源,有攻击的价值。因此,恶意软件有必要在虚拟机中运行。

 

2.VMBR(Virtual-Machine based Rootkit)基于虚拟机的Rootkit

Subvirt是微软的验证性项目,攻击者在OS下层安装了一层VMM。需要依赖VMWare或者Virtual PC的功能。可以躲避target中的IDS系统。

VMM的作用是模拟硬件,对guest提供硬件抽象层。可以为多个guest提供多份硬件抽象层。下图是一个运行VM的例子。

image

VMM的另一个功能是提供了一个容易添加service的platform,service可以是对guest OS的调试等。这一部分service放在guest之外。

VM service和guest OS视角上差异大,VM service可以看到的是disk block,网络报文,内存。Guest OS看到的是文件、TCP连接、变量。他们之间有鸿沟。因此有VMI(Virtual-machine introspection),它使得VM service可以看到VM内的对象。它的实现是通过读取guest OS和应用的符号表以及页表之类操作实现的。通过它甚至可以调用guest以及其中app的代码,例如可以调用Guest API读取guest中的文件等。

这种特性使得VMM成为恶意软件的平台。

Subvirt的实现原理如下:

image

一个干净的OS在感染后被插入了VMM层。(前提假设是机器被攻陷,获得root权限,恶意程序已经被拷贝到disk)。插入的过程通过修改引导扇区实现:

1.修改引导扇区,更改bootup顺序,将Subvirt先于Guest OS加载。

2.为了让引导分区的修改不被发现,对于XP,在Shundown的最后阶段,其它应用都退出后的hook点,攻击者修改引导扇区。

3.启动后,Subvirt先执行,装载自己的一个host OS,启动恶意服务。以前的OS被放到VMM内部。

 

通过Subvirt的可能的攻击方式有:

1.直接运行恶意服务,例如垃圾邮件Rely,位于Target OS(这里已经没有Host和Guest OS概念了,Host OS直接变成了Target OS)外面,根本无法被察觉。

2.窃取guest的信息,这个是spyware范畴了,有VMI这样的接口,监控之类功能的容易实现。

3.篡改guest信息,例如网络报文等。

这些攻击都很难被Target直接检测到,只能通过观察CPU响应速度,或者内存是否减少之类信息推断。

 

为了避免被攻击脱机检测(从CD启动等),Subvirt将reset替换为虚拟硬件重启,将关机替换为特定的休眠,关闭一些外设,但使得RAM还带电,十分狡猾。

 

3.HVM(Hypervisor virtual machine)系统管理程序虚拟机Rootkit

前文的VMBR中,黑客费力修改引导区,更改启动顺序等,最终的目的是将在OS下加入VMM层。随着Intel和AMD的CPU辅助的虚拟化技术的引入,一大波新的指令被添加进来(对于AMD是它的SVM扩展,Intel是VT-x)。这些指令被Rootkit利用,很大程度简化了攻击过程。

Blue Pill和HVM Rootkit就是这方面的例子。它支持在运行时刻,将OS无缝切到Hypervisor下,不被Target OS发觉,也很难检测出来。两者实现原理类似,前者应用AMD的SVM扩展,后者应用Intel的VT-x硬件虚拟化扩展。

 

有关Intel的VT-x,这里首先了解一些概念:

特权解除

在没有CPU硬件辅佐虚拟化技术前Guest OS Kernel会被降级到Ring1或Ring3运行。此时所有System Call会产生trap,另外对只有在Ring0才能访问的寄存器GDT,IDT,LDT和TSS等的访问也必须trap,开销很大。

Root/Non-root mode

为了避免虚拟机特权压缩或解除,最好的办法是将Guest OS Kernel运行在Ring0。Intel为此将CPU分为两个模式,Root和Non-root,两种模式都有Ring0到Ring3这四个级别。这样Guest OS运行在Non-root的Ring0级别,而VMM运行在Root mode,有时候被称为Ring-1下。

由此可见VT-x引入优点是,Guest kernel的System Call和特定寄存器访问不会产生trap,可以在non-root的Ring0直接执行。只有必要的指令,例如IO访问等才会trap到VMM。

 

HVM Rootkit运行时的原理如下:

1.OS中安装内核驱动

2.访问低级虚拟化指令,例如VT-x中提供的VMXON

VMM可以在non-root模式启动一个虚拟机。

3.为恶意的Hypervisior创建内存空间

4.为新的虚拟机创建内存空间

5.将运行的OS切到创建的虚拟机中,类似VMRun之类的指令切换到non-root模式。

6.收到VM exit后处理trap,和Hypervisior一样。

 

【参考】

1.黑客大曝光:恶意软件和Rootkit安全

2,SubVirt: Implementing malware with virtual machines

3.AMD SVM, https://en.wikipedia.org/wiki/X86_virtualization#AMD_virtualization_.28AMD-V.29

4.x86硬件辅助虚拟化之迷,http://www.mcplive.cn/index.php/article/index/id/5994/page/5

5.An Introduction to Hardware-Assisted Virtual Machine (HVM) Rootkits

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">