# iOS 测试环境
从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家)!
支持 HackTricks 的其他方式:
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](https://opensea.io/collection/the-peass-family)收藏品
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** 上关注**我们。
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
## Apple 开发者计划
**配置文件标识**是与 Apple 开发者帐户关联的一组公钥和私钥。为了**签署应用程序**,您需要支付**99美元/年**注册到**Apple 开发者计划**以获取您的配置文件标识。没有这个,您将无法在物理设备上从源代码运行应用程序。另一种选择是使用**越狱设备**。
从 Xcode 7.2 开始,Apple 提供了一个选项来创建一个**免费的 iOS 开发配置文件**,允许在真实的 iPhone 上编写和测试您的应用程序。转到 _Xcode_ --> _首选项_ --> _帐户_ --> _+_(添加新的应用 ID 到您的凭据) --> _单击创建的 Apple ID_ --> _管理证书_ --> _+_(Apple 开发) --> _完成_\
\_\_然后,为了在您的 iPhone 上运行应用程序,您需要首先**指示 iPhone 信任计算机**。然后,您可以尝试从 Xcode 在手机上**运行应用程序**,但会出现错误。因此,转到 _设置_ --> _通用_ --> _配置文件与设备管理_ --> 选择未受信任的配置文件并点击“**信任**”。
请注意,**由相同签名证书签名的应用程序可以以安全的方式共享资源,如钥匙串项**。
配置文件存储在手机内部的**`/Library/MobileDevice/ProvisioningProfiles`** 中
## **模拟器**
{% hint style="info" %}
请注意,**模拟器与模拟器不同**。模拟器只是模拟设备和功能的行为,但实际上不使用它们。
{% endhint %}
### **模拟器**
首先需要知道的是,在模拟器中进行渗透测试将比在越狱设备中进行的测试受到更多限制。
构建和支持 iOS 应用程序所需的所有工具**只有在 Mac OS 上得到官方支持**。\
苹果用于创建/调试/检测 iOS 应用程序的事实标准工具是**Xcode**。它可以用于下载其他组件,如**模拟器**和不同的**SDK** **版本**,以构建和**测试**您的应用程序。\
强烈建议从**官方应用商店**下载 Xcode。其他版本可能携带恶意软件。
模拟器文件可以在`/Users//Library/Developer/CoreSimulator/Devices` 中找到
要打开模拟器,请运行 Xcode,然后按 _Xcode 选项卡_ --> _打开开发人员工具_ --> _模拟器_\
\_\_在下面的图像中,点击“iPod touch \[...]”可以选择其他设备进行测试:
![](<../../.gitbook/assets/image (270).png>)
![](<../../.gitbook/assets/image (520).png>)
```bash
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
```
一旦您知道了 UID,安装在其中的应用程序可以在 `/Users//Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application` 中找到。
然而,令人惊讶的是您在这里找不到应用程序。您需要访问 `/Users//Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/`。
在这个文件夹中,您可以**找到应用程序的包。**
## 模拟器
Corellium 是唯一公开可用的 iOS 模拟器。它是一种企业 SaaS 解决方案,采用按用户许可模式,不提供任何试用许可证。
## 越狱
苹果严格要求在 iPhone 上运行的代码必须**由苹果颁发的证书签名**。**越狱**是积极**规避这些限制**和操作系统实施的其他安全控制的过程。因此,一旦设备越狱,负责检查已安装应用的**完整性检查**将被打补丁,因此被**绕过**。
{% hint style="info" %}
与 Android 不同,**您无法在 iOS 中切换到“开发者模式”**以在设备上运行未签名/不受信任的代码。
{% endhint %}
### Android Rooting vs. iOS 越狱
尽管经常进行比较,Android 上的 **rooting** 和 iOS 上的 **jailbreaking** 是根本不同的过程。在 Android 设备上进行 **rooting** 可能涉及**安装 `su` 二进制文件**或**用具有 root 权限的自定义 ROM 替换系统**,如果解锁了引导加载程序,则不一定需要利用漏洞。**刷写自定义 ROM** 会在解锁引导加载程序后替换设备的操作系统,有时需要利用漏洞。
相比之下,由于引导加载程序限制为仅引导 Apple 签名的映像,iOS 设备无法刷写自定义 ROM。**越狱 iOS** 旨在绕过苹果的代码签名保护,以运行未签名代码,这一过程由于苹果持续加强安全性而变得复杂。
### 越狱挑战
随着苹果迅速修补漏洞,越狱 iOS 变得越来越困难。**降级 iOS** 仅在发布后的有限时间内可能,这使得越狱成为一项时间敏感的问题。用于安全测试的设备不应更新,除非可以保证重新越狱。
iOS 更新受到**挑战-响应机制**(SHSH blobs)的控制,只允许安装苹果签名的响应。这种机制被称为“签名窗口”,限制了存储和以后使用 OTA 固件包的能力。[IPSW Downloads 网站](https://ipsw.me) 是检查当前签名窗口的资源。
### 越狱类型
* **有线越狱** 需要每次重新启动都连接到计算机。
* **半有线越狱** 允许在没有计算机的情况下启动到非越狱模式。
* **半无线越狱** 需要手动重新越狱,无需计算机。
* **无线越狱** 提供永久的越狱解决方案,无需重新应用。
### 越狱工具和资源
越狱工具根据 iOS 版本和设备而异。资源如 [Can I Jailbreak?](https://canijailbreak.com)、[The iPhone Wiki](https://www.theiphonewiki.com) 和 [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) 提供最新信息。例如:
* [Checkra1n](https://checkra.in/) 适用于 A7-A11 芯片设备。
* [Palera1n](https://palera.in/) 适用于 Checkm8 设备(A8-A11),支持 iOS 15.0-16.5。
* [Unc0ver](https://unc0ver.dev/) 适用于 iOS 版本高达 14.8。
修改您的设备存在风险,越狱应谨慎对待。
### 越狱的好处和风险
越狱**移除了操作系统强制的沙箱限制**,使应用程序可以访问整个文件系统。这种自由使得可以安装未经批准的应用程序并访问更多的 API。然而,对于普通用户,由于潜在的安全风险和设备不稳定性,不建议越狱。
### **越狱后**
{% content-ref url="basic-ios-testing-operations.md" %}
[basic-ios-testing-operations.md](basic-ios-testing-operations.md)
{% endcontent-ref %}
### **越狱检测**
**一些应用程序将尝试检测移动设备是否已越狱,如果是,则应用程序将无法运行**
* 在越狱后的 iOS 中通常会安装**文件和文件夹**,可以搜索这些内容以确定设备是否已越狱。
* 在越狱设备上,应用程序可以在沙箱之外获得**新文件的读/写访问权限**。
* 一些**API 调用**会**表现不同**。
* 存在 **OpenSSH** 服务的迹象。
* 调用 `/bin/sh` 将返回 1 而不是 0。
**有关如何检测越狱的更多信息** [**在此处**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**。**
您可以尝试使用 **objection** 的 `ios jailbreak disable` 来避免这些检测。
## **越狱检测绕过**
* 您可以尝试使用 **objection** 的 `ios jailbreak disable` 来避免这些检测。
* 您还可以安装工具 **Liberty Lite** (https://ryleyangus.com/repo/)。一旦添加了存储库,该应用程序应该出现在“搜索”选项卡中。
## 参考资料
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)