导语:苹果系统的安全性向来是行业标杆,SPTM(Static Kernel Trusted Loadable Monitor)和TXM(Trusted EXecute Monitor)更是其内核层面最核心的信任根组件。然而一位安全研究员刚刚开源了一个项目——darwin-vm,让这些”不可逾越”的安全边界在Qemu虚拟机里变成了可以随意调试的代码。iPhone 17到iPhone 12,所有M系列Mac,一个命令直接拿到root shell。这不是越狱,这是合法合规的系统级研究框架。
一、项目概述
darwin-vm(https://github.com/jprx/darwin-vm)由安全研究员约瑟夫·拉维钱德兰(Joseph Ravichandran,Twitter/X ID:0xjprx)于2026年8月开源。该项目基于Qemu实现对苹果操作系统的虚拟机化支持,区别于传统模拟器,它不是一个完整的iPhone或Mac模拟器——不提供屏幕、WiFi、蓝牙、图形界面或完整的SpringBoard——它的核心目标是让研究者能够直接调试内核、SPTM、TXM、launchd、dyld以及所有用户态程序。
换句话说,这是一个专为苹果系统安全研究设计的轻量级调试环境。
二、核心能力
2.1 支持的设备范围
| 设备 | CPU | iOS 27.0 beta 7 | iOS 26.6 |
|---|---|---|---|
| iPhone 17(A19) | t8150 | ✅ | ✅ |
| iPhone 16(A18) | t8140 | ✅ | ✅ |
| iPhone 15(A16) | t8120 | ✅ | ✅ |
| iPhone 14(A15) | t8110 | ✅ | ✅ |
| iPhone 13(A15) | t8110 | ✅ | ✅ |
| iPhone 12(A14) | t8101 | ✅ | ✅ |
macOS方面,M5 Macbook Air、M4 Mac Mini、M3 Macbook Air、M2 Mac Mini均完美支持。M1 Mac Mini可运行iOS 26.6,但macOS 26.6会因内核恐慌而无法启动launchd。
2.2 启动即root,秒级拿到shell
在Qemu中加载SPTM内核后,系统直接启动到root shell:
bash-3.2# uname -v
Darwin Kernel Version 27.0.0: Tue Aug 11 22:05:33 PDT 2026; root:xnu-13432.1.9~3/RELEASE_ARM64_T8142
bash-3.2# whoami
root
无需越狱,无需内核补丁,不需要任何绕过。SPTM(Static Kernel Trusted Loadable Monitor)是苹果A14+芯片引入的最底层安全组件,它在硬件级别确保只有苹果签名的固件才能被加载运行。darwin-vm通过模拟SPTM执行环境,让研究者在虚拟机中完整运行受SPTM保护的内核——这对安全研究来说意义重大。
2.3 全栈可调试
以下组件全部可调试、可修改、可patch:
- 内核内核(XNU):直接用GDB附加断点,单步跟踪系统调用
- SPTM:这是苹果芯片最底层的安全监控器,传统上几乎不可能被研究,darwin-vm首次实现了用户态级别的调试能力
- TXM(Trusted EXecute Monitor):处理敏感操作的受信任执行环境
- launchd:苹果的初始化系统和进程管理器
- dyld:动态链接器,所有用户态程序的加载入口
- 所有用户态程序:自行编译的程序可以直接放入虚拟磁盘运行
2.4 支持MIE/MTE内存安全功能
MIE(Memory Integrity Engine)和MTE(Memory Tagging Extension)是苹果芯片的硬件级内存安全防护。darwin-vm支持带有MIE的CPU,这意味着即使在启用硬件级内存保护的条件下,系统依然可以正常运行。
三、技术原理
3.1 为什么需要Mac?
获取iOS/macOS的IPSW(苹果固件包)并从中提取内核组件这一步骤,需要在真实Mac上执行。脚本get_files.sh会连接苹果服务器下载指定IPSW文件,从中提取以下关键文件:
- kernelcache.release.xxx:压缩后的内核映像
- sptm.xxx.release:SPTM固件
- txm.xxx.release:TXM固件
- DeviceTree.xxx:设备树描述
- ramdisk.dmg:恢复环境的根文件系统
这些文件受苹果签名保护,无法在非苹果设备上合法获取。因此整个流程的第一步必须在Mac上完成,但一旦文件提取完毕,后续的Qemu运行环境可以在任何支持Qemu的机器上运行——不需要ARM架构主机。
3.2 qemu-sptm分支
darwin-vm使用了一个特殊的Qemu分支——qemu-sptm。这个分支在标准Qemu基础上添加了对SPTM/TXM虚拟化的支持,能够模拟A14到A19以及M1到M5芯片的核心安全组件行为。编译方式与标准Qemu完全相同:
git submodule update --init
cd qemu-sptm
mkdir build && cd build
../configure --target-list=aarch64-softmmu
make -j
编译完成后,二进制文件位于qemu-sptm/build/qemu-system-aarch64。
3.3 根文件系统注入
get_files.sh会自动修改ramdisk.dmg,在其中植入启动脚本,使虚拟机启动后直接进入root shell而非正常iOS/macOS的图形界面。这个修改后的磁盘镜像可以被重新挂载并添加自定义程序:
hdiutil attach -owners on -mountpoint mnt firmware/ramdisk.dmg
sudo cp my_program mnt/bin/my_program
hdiutil detach mnt
添加的程序需要用苹果开发者证书签名,并将CDHash注册到信任缓存(trustcache)中,才能在启用了签名验证的系统里运行。
四、安装步骤
4.1 环境准备
在Mac上安装依赖:
brew install jq wget ipsw
4.2 克隆项目并获取固件
git clone https://github.com/jprx/darwin-vm.git
cd darwin-vm
./get_files.sh
./fix_perms.sh firmware/ramdisk.dmg
如需指定特定版本:
DEVNAME="iPhone17,3" URL="<IPSW_URL>" ./get_files.sh
DEVNAME="Mac16,10" URL="<IPSW_URL>" ./get_files.sh
4.3 编译Qemu
git submodule update --init
cd qemu-sptm
mkdir build && cd build
../configure --target-list=aarch64-softmmu
make -j
cd ../..
4.4 启动虚拟机
./run.sh
退出:按Ctrl+A然后按x。
五、局限性
这是一个重要的免责声明:
- 不提供图形界面:没有屏幕输出,没有WiFi、蓝牙、摄像头等硬件模拟
- 没有完整的SpringBoard:看不到iOS主屏幕和任何图形应用
- 不能运行App Store应用:这不是一个可用的iPhone模拟器
- 早期启动偶发崩溃:t8110设备(iPhone 13/14)有时会在launchd之前内核恐慌,重启即可
- MIE影响性能:如果设备支持MIE,虚拟化会显著变慢,不需要MIE时建议选择不带MIE的设备
本质上,这是一个类似”用Qemu加载定制内核+initrd来调试Linux”的工作流程,只是对象换成了Darwin系统。
六、安全研究价值
darwin-vm的出现对苹果平台安全研究具有里程碑意义:
第一,SPTM首次被开放给社区研究。 SPTM自A14芯片引入,是苹果芯片级安全架构的核心。它的存在让业界几乎没有人能够在真实硬件上研究其行为。darwin-vm第一次创造了一个可控、可调、可修改的虚拟SPTM执行环境。
第二,内核漏洞挖掘门槛大幅降低。 过去想在iOS/macOS内核上挖漏洞,你需要越狱设备或者购买内核调试工具包(KDK)并配有特定硬件。darwin-vm让任何有Mac的人都能用GDB调试内核。
第三,供应链安全研究的新工具。 有了可调试的虚拟化环境,研究者可以更深入地分析iOS/macOS的启动链信任模型,研究苹果的代码签名机制和信任缓存的运作方式。
七、总结
darwin-vm不是”破解iPhone”的项目,也不是为了绕过苹果的安全防护——它是一个合法的苹果平台安全研究基础设施。通过虚拟化技术,它让那些原本躺在苹果芯片最底层的信任组件变得透明可见。
对于安全研究员来说,这是难得的机会:过去只有苹果内部团队和少数授权合作伙伴才能接触到的研究领域,现在你只需要一台Mac和GitHub上一行git clone。
条条大路通shell——这次,连苹果的硬件级安全壁垒都给你开了一扇窗。
项目地址:https://github.com/jprx/darwin-vm
版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。














暂无评论内容