pinauten/Fugu15
GitHub: pinauten/Fugu15
Fugu15 是一个基于代码签名绕过和内核漏洞利用的 iOS 15 半完美签名越狱工具,支持 Safari 无线安装并提供内核级调试与包管理功能。
Stars: 1146 | Forks: 123
# Fugu15
Fugu15 是一个半完美签名(permasigned)的 iOS 15 越狱工具。
它包含代码签名绕过、内核漏洞利用、内核 PAC 绕过和 PPL 绕过。
此外,它可以通过 Safari 安装,也就是说不需要计算机,除非需要一台 Web Server 来托管 Fugu15。
请注意,Fugu15 不支持插件(没有插件注入库)。
# 测试过的设备和 iOS 版本
- iPhone Xs Max:iOS 15.4.1
- iPhone 11 (SRD):iOS 15.4.1
- iPhone 12 (SRD):iOS 15.4.1
- iPhone 12 Pro Max:iOS 15.4.1
- iPhone 13:iOS 15.1(离线版 - 参见下方的 bug [WiFi bug])
其他设备可能也受支持。
不支持非 arm64e 架构的设备。
# 构建
前置条件:
1. 确保你安装了 Xcode ~~13/14~~ 14.1
2. 将 fastPath arm 证书 (`Exploits/fastPath/arm.pfx`) 导入到你的 Keychain(双击该文件)。密码是 "password"(不包括引号)
3. 你需要一份从 AppStore 下载的具有有效签名的 Apple Developer App 副本(带有 DRM!)。将此 IPA 复制到 `Server/orig.ipa`。请注意,如果你想使用其他的 AppStore App,你需要获取它的 Team ID,并在所有的 `make` 命令中添加 `TEAMID=<该 App 的 Team ID>`
现在你可以直接运行 `make` 来构建 Fugu15(需要网络连接以下载依赖项)。
请注意,系统会要求你授予 "fastPathSign" 访问 Keychain 中 "privateKey"(fastPath 证书的私钥)的权限。输入你的密码并选择“始终允许”。
## 构建工具
构建 Fugu15 需要多个工具,这些工具可以在 `Tools` 目录中找到。构建它们完全是可选的,因为我已经将它们编译好了。
如果你想自己编译它们,只需在 `Tools` 目录中运行 `make`。
# 安装
有两种方法可以将 Fugu15 安装到你的设备上:通过 Safari 或通过 USB
## 通过 Safari 安装
要通过 Safari 安装 Fugu15,请执行以下操作(需要你拥有一个域名):
1. 确保你的设备与计算机连接在同一个网络中
2. 将你所拥有的某个域名的 DNS A 记录更改为你计算机的本地 IP 地址
3. 为你的域名获取证书(例如通过 Let's Encrypt),并将其复制到 `Server/serverCert/fullchain.cer`(证书本身)和 `Server/serverCert/server.key`(私钥)
4. 确保你已安装 Flask(`pip3 install Flask`)
5. 将 `Server/server.py` 中的 `serverUrl` 修改为你的域名
6. 在 `Server` 目录中运行 `python3 server.py`
7. 在你的 iPhone 上访问 `https://<你的域名>` 并按照说明操作
## 通过 USB 安装
1. 安装 `Fugu15_Developer.ipa`,例如使用 `ideviceinstaller -i Fugu15_Developer.ipa`。或者,通过 TrollStore 安装 Fugu15/Fugu15.ipa。
2. 在你的 iPhone 上打开新安装的“Developer”App(或者你使用的任何 AppStore App)
# iDownload
与所有的 Fugu 越狱工具一样,Fugu15 自带了 iDownload。可以在端口 1337 上访问 iDownload shell(运行 `iproxy 1337 1337 &`,然后运行 `nc 127.1 1337` 以连接到 iDownload)。
输入 `help` 以查看支持的命令列表。
以下命令特别有用:
- `r64/r32/r16/r8 `:读取给定内核地址处的 64/32/16/8 位整数。添加 `@S` 后缀以滑动给定的地址,或使用 `@P` 从物理地址读取。
- `w64/w32/w16/w8 `:将给定的 64/32/16/8 位整数写入给定的内核地址。同样支持上述后缀,此外还支持 `@PPL` 以写入受 PPL 保护的地址(参见 `krwhelp`)。
- `kcall <最多 8 个参数>`:调用给定地址处的内核函数,最多可传递 8 个 64 位整数参数。
- `tcload `:将给定的 TrustCache 加载到内核中
# Procursus Bootstrap 和 Sileo
Fugu15 还附带了 procursus bootstrap 和 Sileo。在 iDownload 中运行 `bootstrap` 命令即可安装这二者。之后,你可能需要重新注销(respring)以强制 Sileo 显示在主屏幕上(`uicache -r`)。
Procursus 安装在 `/private/preboot/jb` 目录中,并且 `/var/jb` 是指向它的符号链接。
# 已知问题/Bug
1. 如果 oobPCI(利用内核的进程)退出,系统可能会处于不一致的状态,并在某个时刻发生崩溃。这通常发生在 iDownload 中运行 `exit_full` 命令后约 5 秒左右。
解决方法:不要退出 oobPCI,或者确保以尽可能快的速度完成以降低发生内核崩溃的概率。目前尚不清楚导致此崩溃的原因。
2. 当未连接电源时,进入深度睡眠会由于 DriverKit 中的一个 bug 而导致内核崩溃(在 Fugu14 中也发生过)。遗憾的是,Fugu14 中的修复方案在 iOS 15 上不起作用。
解决方法:退出 oobPCI 时不会发生此 bug。但是,当 oobPCI 退出时,可能会发生上述的 bug。
3. 某些 iOS 版本(至少 iOS 15.1 及以下版本,也许 15.2 和 15.3 也是)存在一个 DriverKit bug,这会导致在运行 oobPCI 时禁用 WiFi 芯片的总线主控,从而在使用 WiFi 时引发内核崩溃。这个 bug 是可以修复的,但目前 Fugu15 中并未包含修复方案。
解决方法:禁用 WiFi。
# 常见问题
问:我是一个普通用户。Fugu15 对我有用吗?
答:没有。
问:我的 iOS 版本/设备不受 Fugu15 支持,你会添加对它的支持吗?
答:不会。(我已经完成了 iOS 15 相关的工作)
问:你以后会添加对插件注入的支持吗?
答:不会。
问:你为 Fugu15 提供官方支持吗?有更新计划吗?
答:没有。
问:我通过 Sileo 安装/更新了内容,但它无法启动。我该如何解决这个问题?
答:Fugu15 使用 TrustCache 注入来绕过代码签名。因此,如果你安装或更新了某些内容,它的代码签名必须包含在 TrustCache 中。你可以通过 `tcload` 命令从 iDownload shell 加载额外的 TrustCache。
问:Wen eta Fugu16??????
答:...
# 鸣谢
Fugu15 使用了以下开源软件:
- [Procursus Bootstrap](https://github.com/ProcursusTeam/Procursus):Fugu15 使用的 bootstrap。许可证:[BSD 0-Clause](https://github.com/ProcursusTeam/Procursus/blob/main/LICENSE)。bootstrap 中包含的工具采用了多种不同的许可证,请参阅 procursus 仓库获取更多信息
- [Sileo](https://github.com/Sileo/Sileo):Fugu15 中包含的包管理器。许可证:[BSD 4-Clause](https://github.com/Sileo/Sileo/blob/stable/LICENSE)
- [ZIPFoundation](https://github.com/weichsel/ZIPFoundation):用于处理 ZIP 归档的 Swift 库。在 FuguInstall 中用于安装 Fugu15 App。许可证:[MIT](https://github.com/weichsel/ZIPFoundation/blob/development/LICENSE)
# 许可证
MIT。请参阅 `LICENSE` 文件。
标签:CVE监控, iOS, PAC绕过, Web报告查看器, 代码签名绕过, 内核漏洞利用, 客户端加密, 提权, 目录枚举, 移动安全, 越狱, 逆向工具