vmware fusion 在此主机上不支持嵌套虚拟化。_从虚拟机逃逸看kvmqemu虚拟化安全防御...

注:不知道是出于啥原因,很少找到对虚拟化安全防御相关的中文资料,去年很想写这个话题,但我家三星笔记本uefi硬是没法关闭导致无法从硬盘安装双系统又加上virtualbox不支持vt-x嵌套(试了N种方法未成),当然我也没有u盘,故在看完phrack上经典的vm escape文章后留下遗憾,然最近打开一年未开机的笔记本竟然发现解锁版vmware完美支持vt-x嵌套,经过一顿实验后,决定写写这个久违又很感兴趣的话题,抛错引玉也希望能看到更多的分享和资料。

本文分为如下章节:

  1. 威胁建模/风险分析

  2. 一个真实的逃逸实例

  3. 逃逸监控

  4. 逃逸防御

  5. 应急响应 6谷歌怎么做的

1、威胁建模/风险分析

威胁建模是个很好的系统化进行风险分析的方法,在理解架构、数据流、攻击面时尤为重要。

kvm-qemu实现相对复杂,用尽量通俗的话描述一下。

一个操作系统运行需要cpu,内存,IO/外设,在利用intel vt-x实现的kvm(内核模块),用户态的qemu进程实现了guest系统外设(磁盘/网卡/显示等)的虚拟化(全虚或virtio的半虚拟化,还有利用vt-d实现pci透传的设备不在此探讨。),涉及磁盘读写、网络收发包等实现均由qemu进程中实现(kvm处理io请求后发送给qemu),内核模块kvm利用硬件特性实现了cpu/内存的虚拟化,包括执行guest系统中的代码,处理内存的地址转换(影子页表或intel ept),响应外部中断,kvm对guest系统中的涉及特权/敏感操作的代码实现进行了模拟(读写特殊寄存器等等)。

补充一张网上摘来的KVM运行时图。

vmware fusion 在此主机上不支持嵌套虚拟化。_从虚拟机逃逸看kvmqemu虚拟化安全防御..._第1张图片

下图对数据流走向及信任边界进行了标识。

vmware fusion 在此主机上不支持嵌套虚拟化。_从虚拟机逃逸看kvmqemu虚拟化安全防御..._第2张图片

攻击面分析:

  • guest-kvm模块
    kvm中特权/敏感指令的模拟,中断响应、切换vmx模式等只要在kvm中实现可被guest数据流触发的代码中存在漏洞被利用,kvm实现相对较轻量,所以漏洞相对较少。

  • guest-qemu进程

qemu模拟IO/设备实现中存在漏洞被利用,目前主流公有云的采用了virtio半虚拟             化,而最多的漏洞出现在全虚的设备模拟。

  • guest-透传的pci设备

  • guest-宿主cpu

        guest代码在宿主cpu执行,cpu硬件漏洞也可能成为利用点。

存在的主要威胁/风险如下:

  • guest逃逸到宿主机

  • guest读取同宿主机其他guest数据

  • 宿主机内核被guest拒绝服务/crash

2、一个真实的逃逸案例a) 基于qemu全虚设备模拟的逃逸

详情可参考phrack文章,利用逻辑优美、执行稳定,是少有的可直接拿来验证/演示的实现,为作者点赞赞。(http://phrack.org/papers/vm-escape-qemu-case-study.html)

文章利用两个漏洞实现了完美的虚拟机逃逸,第一个信息泄露漏洞(cve-2015-5165)完美的获得了虚拟机在宿主机物理内存、text段地址、shellcode依赖函数地址。第二个漏洞(cve-2015-5174)利用第一个漏洞的地址泄露实现了代码执行,shellcode直接在宿主机上执行bash,没有用bindshell/反弹的逻辑,避免了宿主机地址不确定/防火墙存在的限制,利用代码中无论是获取地址及shellcode的逻辑都非常优美,值得仔细研究

你可能感兴趣的:(vmware,fusion,在此主机上不支持嵌套虚拟化。,VM虚拟机中,localhost,login)