VirtualBox虚拟机最新逃逸漏洞E1000 0day详细分析_公安部

访客3年前黑客文章709

近日,俄罗斯安全研究人员Sergey Zelenyuk发布了有关VirtualBox 5.2.20及早期版本的零日漏洞的详细信息,这些版本可以让攻击者逃离虚拟机并在主机上执行 RING 3层的代码。然后,攻击者可以利用传统的攻击技术将权限提升至 RING 0层。漏洞利用该漏洞利用Linux内核模块(LKM)加载到客户虚拟机操作系统中。如果虚拟机操作系统是Windows则只需要一个与LKM不同的驱动程序,这个驱动程序是初始化包装器和内核API调用所需要的。在两个操作系统中加载驱动程序都需要提升权限。利用提权很普遍,所以不被认为是一个不可逾越的障碍。看看研究人员在Pwn2Own竞赛中使用的漏洞利用链:在客户虚拟机操作系统中的浏览器打开一个恶意网站来利用漏洞,一个浏览器沙箱逃逸可以获得完整的RING3访问权限,在你需要从虚拟机操作系统攻击虚拟机管理程序的地方,你利用操作系统的漏洞可以将权限提升至RING0。威力最强大的虚拟机管理程序漏洞肯定是那些可以从客户虚拟机RING3中利用的漏洞。在VirtualBox中也有这样的代码,可以在没有虚拟机root权限的情况下执行,而且大部分代码都没有被审计过。这个漏洞利用的成功率是100%。这就意味着它要么总是可以成功,要么永远不会因为不匹配的二进制文件或其他没有考虑到的更微妙的原因而导致利用失败。至少在Ubuntu 16.04和18.04 x86_64 的虚拟机上使用默认配置的情况下利用是成功的。开发漏洞利用程序1.攻击者卸载在Linux客户虚拟机中默认加载的e1000.ko并加载漏洞利用程序的LKM。2.LKM根据数据表初始化E1000。由于不需要接收另外一半,因此仅初始化发送一半。3.第1步:信息泄露。· a.LKM禁用E1000环回模式,使堆栈缓冲区溢出代码不可达。· b.LKM使用整数下溢漏洞使堆缓冲区溢出。· c.堆缓冲区溢出导致攻击者可以使用E1000 EEPROM在相对于堆缓冲区128 KB的范围内写入两个任意字节。因此攻击者获得了写原语。· d.LKM使用写原语八次,将字节写入堆上的ACPI(高级配置和电源接口)数据结构。字节被写入堆缓冲区的索引变量,从中读取单个字节。由于缓冲区大小小于更大索引号(255),所以攻击者可以读取缓冲区,因此最终攻击者获得了读原语。· e.LKM使用读原语八次,访问ACPI并从堆中获取8个字节。这些字节是VBoxDD.so共享库的指针。· f.LKM从指针中减去RVA获得VBoxDD.so镜像基址。4.第2步:堆栈缓冲区溢出。· a.LKM启用E1000环回模式,使堆栈缓冲区溢出代码可达。· b.LKM使用整数下溢漏洞使堆缓冲区溢出以及栈缓冲区溢出。保存的返回地址(RIP / EIP)将被覆盖。攻击者获得了控制权。· c.执行ROP链来执行shellcode加载程序。5第3步:shellcode。· a.shellcode加载器从相邻的栈中复制shellcode。shellcode被执行。· b.shellcode执行fork和execve系统调用在主机端生成任意进程。· c.父进程继续运行进程。6.攻击者卸载LKM并加载e1000.ko允许虚拟机使用 *** 。初始化LKM映射了有关于E1000 MMIO的物理内存。物理地址和大小由管理程序预定义。void* map_mmio(void) {    off_t pa = 0xF0000000;    size_t len = 0x20000;    void* va = ioremap(pa, len);    if (!va) {        printk(KERN_INFO PFX"ioremap failed to map MMIO\n");        return NULL;    }    return va;}然后配置E1000通用寄存器,分配Tx Ring存储器,配置发送寄存器。void e1000_init(void* mmio) {    // Configure general purpose registers    configure_CTRL(mmio);    // Configure TX registers    g_tx_ring = kmalloc(MAX_TX_RING_SIZE, GFP_KERNEL);    if (!g_tx_ring) {        printk(KERN_INFO PFX"Failed to allocate TX Ring\n");        return;    }    configure_TDBAL(mmio);    configure_TDBAH(mmio);    configure_TDLEN(mmio);    configure_TCTL(mmio);}ASLR绕过写原语从漏洞利用程序的开发开始,我决定不使用默认情况下禁用的服务中的原语。首先要说的就是提供3D加速的Chromium服务(不是浏览器),去年研究人员发现了40多个漏洞。现在的问题是在默认的VirtualBox子系统中发现信息泄漏。显而易见的想法是,如果整数下溢允许溢出堆缓冲区,那么我们就可以控制任何超过缓冲区的内容。接下来我们将看到我们并不需要一个额外的漏洞:整数下溢似乎非常强大,我们可以从中获取读取,写入和信息泄漏的原语,这里不是在堆栈缓冲区溢出。让我们来看看堆上究竟是什么样的溢出。/** * Device state structure. */struct E1kState_st{...    uint8_t     aTxPacketFallback[E1K_MAX_TX_PKT_SIZE];

标签: 好话题

相关文章

如何快速恢复微信聊天记录 对方知道吗?

微信记录是很多人关心的一件事,是一些老的聊天话题,特别是关于删除微信记录会不会恢复这样的问题也是很多人关心的,很多人恢复,这个恢复工具在正常情况下是很少用的,经常在APP本身使用的时候才会用到各种各样...

四川资阳警方成功破获网络黑产案 收缴黑客软件25套_人民网

一个以大学生等高智商为主要成员的犯罪团伙,频频攻击国内多家知名大型网络公司,非法截取他人信息,获取高额非法利益。近日,在四川省公安厅“净网2019”专项行动统一部署下,四川省资阳市公安局经过两个多月的...

戒赌的第一步就很难,赌徒你真的准备好了吗_腾讯文化

世界上很多事情,没有想象中的那么容易。就算你从别人的身上似乎感觉到了不难,但是真正的换做是自己的时候,才发现是那么的难。 譬如网络赌博,譬如戒赌。 真的容易吗?我告诉你,很难!“没有一番寒彻骨”,...

老婆的微信 我能同时接收吗_老婆的微信 我能同时接收吗

老婆的微信 我能同时接收吗?女人很轻易因为她的情绪而与这个须眉纠缠在一起。在他心中,她处于什么职位?它是普通的朋友还是情人?是玩了一段时间的女人,还是想共度一生的女人?大多数时候,女性是最清楚的,但她...

怎样监控老公手机微信要拿到对方手机吗 怎样监控老公的微信知道他在跟谁聊天

手机“越狱”工具可让iPhone用户取得随意更改 iOS 系统设定。著名 iPhone 黑客团队发布了一款新越狱工具,甚至可解锁运行最新版本 iOS 13.5的 iPhone。 iPhone用户可能...

网络安全攻防技术:移动安全篇_自己的

随着移动通信技术和移动应用的普及,无线网络、移动智能设备等正以前所未有的速度迅猛发展,已经渗透到了社会的各个方面,成为人们生产和生活不可或缺的工具和手段。此外,被誉为继计算机、互联网之后世界信息产业发...