盘古越狱工具在用户空间的行为

福利攻略 2026-02-28 04:11:13

背景知识

盘古在用户空间主要利用了iOS安装程序的一个漏洞,这里先列出安装一个应用的主要过程:

整个安装过程分为12个阶段,上图只是列出了起点、终点还是对盘古越狱来说比较重要的阶段。大家注意上图红线所示的时间区间,在这个区间内如果在“Staging Directory”中创建一个符号链接指向沙盒之外,就可以利用解压程序向系统目录写入文件。同时也可以通过控制压缩包中的文件列表,在起始处放一个大文件,从而在解压过程中创建一个符号链接。这是在盘古在安装过程中利用的主要漏洞,后面介绍的盘古在用户空间的行为基本都是围绕这个漏洞。

主要的组件

盘古主要由四部分组成,:

1、桌面程序:提供资源,控制越狱流程。

2、com.pangu.ipa1.ipa:Socket Server,与桌面程序配合制造竞态条件。

3、pangu.dylib,Socket Server,利用内核漏洞安装Untecher,Cydia等。

4、pangu.tar,Untecher

这里主要涉及的是前两个组件,及第三个组件中用户空间相关的部分。

工作流程

说明:为了验证自己的分析是正确的,用Python重新实现了盘古桌面程序的功能,利用盘古的Payload可以实现越狱,下面会在主要阶段给出相应示例代码。

阶段一:安装辅助程序,获取相关资源

1、安装com.pangu.ipa1.ipa

def install_pangu():

lockdown = LockdownClient()

afc = AFCClient(lockdown)

mci = lockdown.startService("com.apple.mobile.installation_proxy")

file_name = "com.pangu.ipa1.ipa"

afc.set_file_contents("/PublicStaging/" + file_name, open("payload/" + file_name,"rb").read())

mci.sendPlist({"Command":"Install", "PackageP