比越狱更棘手!iOS vPhone 虚拟机成黑灰产新温床

vPhone 是一个在 Apple Silicon Mac 上运行的、拥有 root 权限的真实 iOS 虚拟机。它不同于 Xcode Simulator 和传统越狱、而是一个真正的具备 iOS 内核的完整系统。

从今年年初开始,看川就留意到零碎的关于 iOS vphone 虚拟机的消息。最开始没太关注,没想到经过开发者的不断优化,vphone 虚拟机已经被做到了零门槛使用。从相关业务数据分析来看,vphone 已经在被黑灰产使用,需要安全相关的开发者特别关注。

vphone 是什么?

iOS vPhone 虚拟机源于苹果的一项技术泄露。2025 年底,研究员 @matteyeux 在扫描苹果 Private Cloud Compute (PCC) 固件时,意外发现了一个名为 vphone600ap 的组件预置了虚拟 iPhone 的架构,很可能是 Apple 为内部安全研究准备的工具。

这一发现很快引起了众多安全研究人员的注意。开发者 wh1te4ever 于 2 月底发布了 writeup 和工具代码,极大地推动了项目的普及。同时,Lakr233 发布了 vphone-cli,将整个流程自动化封装,进一步降低了使用门槛。

为什么能做到?

同架构的基础优势

Apple Silicon (M 系列) 和 iPhone (A 系列) 使用相同的 ARM64 指令集。macOS 的 Virtualization.framework 提供原生性能的 ARM 虚拟化支持,使 Mac 在硬件层面完全有能力运行 iOS 内核。

Intel Mac 无法实现,这是架构层面的硬性限制。

私有 API

Virtualization.framework 的公开 API 只支持 macOS 和 Linux 虚拟机。但框架内部有个未公开的私有类 _VZMacHardwareModelDescriptor,它的 setPlatformVersion: 方法接受整数参数:

PV = 1  // macOS 虚拟机
PV = 3  // vphone 虚拟 iPhone

虚拟 iPhone 的创建过程依赖 11 个私有 API,包括自定义 ROM、DFU 模式、GDB 调试端口、SEP 协处理器配置、USB 多点触控等。

使用这些私有 API 还需要 5 个特殊 Entitlements:

<key>com.apple.private.virtualization</key>
<key>com.apple.private.virtualization.security-research</key>
<key>com.apple.security.virtualization</key>
<key>com.apple.vm.networking</key>
<key>com.apple.security.get-task-allow</key>

这些权限正常情况下只有苹果签名的二进制才能使用,要绕过这个限制必须禁用 SIP(系统完整性保护)。

与 Xcode Simulator 的区别

vphone 虚拟机和 Xcode 模拟器虽然都是用于在 macOS 上运行 iOS 环境的工具,但他们有明显不同:

对比项vphone 虚拟机Xcode 模拟器
原理基于 Apple Private Cloud Compute (PCC) 技术,使用 Virtualization 框架实现硬件虚拟化。基于 macOS 的模拟环境,使用 CoreSimulator 框架实现软件模拟。
运行环境运行真实的 iOS 固件,模拟完整的 iOS 设备硬件,包括CPU、内存、存储、SEP 协处理器(能力上有缺失)等。运行针对 macOS 编译的 iOS 运行时库,利用 macOS 硬件资源,仅模拟 iOS 应用运行环境。
系统启动完整的 iOS 引导流程(从 bootloader 到内核加载)直接启动 iOS 运行时,没有引导过程。
系统完整性完整的 iOS 系统(包括内核、驱动、系统服务等)。系统应用层排除必须使用硬件能力的,都是可以使用的。仅包含 iOS 应用运行所需的核心组件。系统应用层很多应用缺失。
其他可进行系统快照和回滚,便于对自动化环境的管理。-

如何安装

原始版本的 vphone 固件并非来自单一来源,而是将 iPhone OS 和 cloudOS PC C两份固件进行"杂交"。PCC 固件包含 vresearch101 平台的引导链(iBSS/iBEC/LLB/内核等),而 iPhone IPSW 包含完整的iOS用户空间(Cryptex/SystemOS/AppOS)。

手动处理两份固件的合并、特别是启动引导过程中签名检查绕过步骤比较多,参考:

iOS虚拟手机实现原理解析
super-tart-vphone-writeup

Github 上已经有开发者将修改好完整镜像发布:vphone-aio,可直接运行使用。

关闭 SIP

# 恢复模式下执行
csrutil disable
csrutil allow-research-guests enable

# 重启 macOS 后执行
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"

安装必要工具

brew install git-lfs wget zstd libimobiledevice

运行 vphone-aio.sh

git clone vphone-aio 后,运行 vphone-aio.sh,会下载完整镜像文件(10多G),下载完成后自动解压并启动。使用 vnc 客户端连接:vnc://127.0.0.1:5901,密码为:alpine,运行效果:

vphone

运行后,在 Xcode 中可以识别为真实的 iOS 设备,可以进行开发调试 APP。

对 APP 安全的挑战

检测难度增大

传统的越狱检测手段失效了,vphone 不是越狱手机,可以没有 MobileSubstrate、Cydia,也没有越狱特征文件、甚至也不需要依赖注入。

很容易规模化

以往需要构建批量的真实 iOS 环境,是需要真实的 iOS 设备或刷机而来的。vphone 之后事情变得简单了,只要 macOS 系统硬件能力允许,可以一次性启动多个 vphone 虚拟机,每一个都是完全隔离的真实 iOS系统。 理论上,利用群控、自动化软件,可以批量快照克隆,批量注册账号,批量操作,完成后快照回滚清除痕迹。这套流程的成本极低,自动化程度极高,对账号工厂、黑产薅羊毛、虚假流量生成都是巨大的能力升级。

vphone 虚拟机已知的问题

经过看川测试后发现:vPhone 虚拟机在反侦测识别方面还没有做到很全面,依然可以通过设备特征判断出来。已知的特征项有:

  1. 硬件安全认证功能不可用,无法模拟安全硬件能力;
  2. 传感器不可用:没有蜂窝网络、NFC(依赖硬件的能力都不支持);
  3. 点击事件异常:和使用外置模拟器点击的效果一致,没有真实的接触面积和压力变化;
  4. 版本兼容性:泄漏的 PCC 固件仅支持 vresearch101 硬件(PV=3类型),模拟的是 iPhone 15 系统环境,适配 iOS 26.1 系统。在新系统或其他设备上使用需要进行适配,难度极大。
  5. CPU信息:HW_MODELHW_MACHINE 以及 MTLCreateSystemDefaultDevice GPU 名称异常。

版权信息:本文为 kanchuan.com 原创,转载时请明确注明本文链接。

相关文章:

cocoapods-packager 插件的错误修复和适配
解决 Xcode 下载 iOS Simulator 频繁失败的问题
iOS 真机和模拟器HTTPS Charles抓包指南
Swift并发编程 - 理解结构化和结构化并发的底层技术
pod package的不足和改进

发表留言

您的电子邮箱地址不会被公开,必填项已用*标注。发布的留言可能不会立即公开展示,请耐心等待审核通过。