1、从 探 索 到 利 用:揭 示 安 卓 模 拟 器 漏 洞罗思礼 华为RO0T实验室大纲1.背景介绍2.案例分析3.经验总结背景为什么研究安卓模拟器研究安卓模拟器的实现研究虚拟机逃逸模拟器中其他 APP 数据被窃取虚拟机逃逸,攻击宿主机攻击场景用户运行不可信应用(破解应用、外挂)攻击恶意软件分析人员云手机攻击场景与危害危害安卓模拟器方案基于 Docker:Anbox基于 Hyper-V:Windows Subsystem for Android基于 QEMU:Google 官方模拟器、部分云手机厂商基于 VirtualBox:主流商业模拟器,比如 BlueStacks自研虚拟化方案:腾讯安卓模
2、拟器方案基于 Docker:Anbox基于 Hyper-V:Windows Subsystem for Android基于 QEMU:Google 官方模拟器、部分云手机厂商基于 VirtualBox:主流商业模拟器,比如 BlueStacks自研虚拟化方案:腾讯今天的话题基于 VirtualBox 的模拟器的攻击面Vendor Device图片来源:Box Escape:Discovering 10+Vulnerabilities in VirtualBox总体情况Vendor AVendor BVendor CVendor DVendor EVendor FVirtualBox5.2.36
3、5.1.344.1.342.1.246.1.366.1.36自研外设数161513ADB开启情况YYYNYNGuest LPEYYNYYYVM DOSYYYYYYVM EscapeNYNYNY漏洞数252/N4656漏洞类型:堆栈溢出、数组越界、条件竞争、逻辑漏洞等总体情况Vendor AVendor BVendor CVendor DVendor EVendor FVirtualBox5.2.365.1.344.1.342.1.246.1.366.1.36自研外设数161513ADB开启情况YYYNYNGuest LPEYYNYYYVM DOSYYYYYYVM EscapeNYNYNY漏洞数
4、252/N4656本次将介绍 A B D F 四个厂商的案例案例分析工具和思路IDA:逆向分析x64dbg:调试frida:函数 hookprocexp tcpview:观察进程信息dadb:Java 实现的 adb 客户端1.定位模拟器进程2.获取外设列表和外设所处模块3.恢复关键结构体4.定位 MMIO/PORT IO 回调函数5.代码逻辑和数据流分析6.漏洞挖掘与利用思路工具分析技巧-动态分析绕过反调试:Patch DLL 然后 attach分析技巧-函数结构体恢复分析技巧-函数结构体恢复原始代码恢复结构体后VENDOR AGuest LPE安卓系统启动后,会开启 ADB 服务,监听在
5、127.0.0.1:5555。APK 使用 adblib 连接 127.0.0.1:5555 获得 ROOT 权限模拟器进程信息启动/关闭模拟器,对比进程情况,发现模拟器进程:VendorVmHandle.exe获取外设列表bpl func,init dev:s:8:rcx+0 x48+4VB 的 pdmR3DevInit 函数用于在启动虚拟机过程中初始化外设,通过设置日志断点,可以获取所有的外设。获取外设列表init dev:pcarchinit dev:pcbiosinit dev:ich9pciinit dev:pckbdinit dev:apicinit dev:i8259init d
6、ev:ioapicinit dev:hpetinit dev:i8254init dev:mc146818init dev:8237Ainit dev:VMMDevinit dev:virtio-netinit dev:ichac97init dev:usb-ohciinit dev:acpiinit dev:GIMDevinit dev:lpcinit dev:“AAAptdeviceVENDORa.dll外设分析ptdevice 的设备构造函数为 ptR3Construct外设分析ptR3Construct 中注册了 IO Port 回调函数,Guest 通过写 IO Port 与 外设交