iOS Pentesting without Jailbreak

Reading time: 6 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

主要思想

使用 entitlement get_task_allow 签名的应用程序允许第三方应用程序运行一个名为 task_for_pid() 的函数,参数为初始应用程序的进程 ID,以便获取其任务端口(能够控制它并访问其内存)。

然而,这并不像简单地提取 IPA、使用该权限重新签名并将其刷回设备那么简单。这是因为 FairPlay 保护。当应用程序的签名更改时,DRM(数字版权管理)密钥会 失效,应用程序将无法工作

在旧的越狱设备上,可以安装 IPA,使用你喜欢的工具进行解密(例如 Iridium 或 frida-ios-dump),然后将其提取回设备上。尽管如此,如果可能的话,建议直接向客户请求解密后的 IPA。

获取解密的 IPA

从 Apple 获取

  1. 在 iPhone 上安装要进行渗透测试的应用程序
  2. 在你的 macos 上安装并启动 Apple Configurator
  3. 在你的 Mac 上打开 Terminal,并 cd 到 /Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps。稍后 IPA 将出现在此文件夹中。
  4. 你应该能看到你的 iOS 设备。双击它,然后点击顶部菜单栏中的 Add + → Apps。
  5. 点击 Add 后,Configurator 将从 Apple 下载 IPA,并尝试将其推送到你的设备。如果你之前遵循了我的建议并已安装 IPA,将会出现提示要求你重新安装应用程序。
  6. IPA 应该下载到 /Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps,你可以从那里获取它。

查看 https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed 以获取有关此过程的更多详细信息。

解密应用程序

为了解密 IPA,我们将安装它。然而,如果你有一部旧的越狱 iPhone,可能其版本不被应用程序支持,因为通常应用程序只支持最新版本。

因此,为了安装它,只需解压 IPA:

bash
unzip redacted.ipa -d unzipped

检查 Info.plist 以获取最低支持版本,如果您的设备早于该版本,请更改该值以使其受支持。

将 IPA 压缩回去:

bash
cd unzipped
zip -r ../no-min-version.ipa *

然后,使用以下命令安装IPA:

bash
ideviceinstaller -i no-min-version.ipa -w

请注意,您可能需要从 Cydia 安装 AppSync Unified tweak 以防止任何 invalid signature 错误。

安装后,您可以使用 Cydia 中的 Iridium tweak 来获取解密的 IPA。

修补权限和重新签名

为了使用 get-task-allow 权限重新签名应用程序,有几种可用的工具,如 app-signercodesigniResignapp-signer 具有非常用户友好的界面,可以非常轻松地重新签名 IPA 文件,指明要重新签名的 IPA、将其设置为 get-task-allow 以及要使用的证书和配置文件。

关于证书和签名配置文件,Apple 通过 Xcode 为所有账户提供 免费的开发者签名配置文件。只需创建一个应用并配置一个。然后,通过导航到 SettingsPrivacy & Security,点击 Developer Mode 来配置 iPhone 以信任开发者应用

使用重新签名的 IPA,现在可以将其安装到设备上进行渗透测试:

bash
ideviceinstaller -i resigned.ipa -w

Hook

您可以使用常见工具如 frida 和 objection 轻松地挂钩您的应用程序:

bash
objection -g [your app bundle ID] explore

参考

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks