# iOS测试环境
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* 你在一家**网络安全公司**工作吗?你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
## Apple开发者计划
**配置文件标识**是与Apple开发者帐户关联的一组公钥和私钥。为了**签署应用程序**,您需要支付**99美元/年**注册**Apple开发者计划**以获取您的配置文件标识。如果没有这个,您将无法在物理设备上从源代码运行应用程序。另一种选择是使用**越狱设备**。
从Xcode 7.2开始,Apple提供了一个选项来创建一个**免费的iOS开发配置文件**,允许在真实的iPhone上编写和测试您的应用程序。转到_Xcode_ --> _Preferences_ --> _Accounts_ --> _+_(添加新的Appli ID到您的凭据)--> _点击创建的Apple ID_ --> _管理证书_ --> _+_(Apple Development)--> _完成_\
\_\_然后,为了在您的iPhone上运行应用程序,您首先需要**指示iPhone信任计算机**。然后,您可以尝试从Xcode在移动设备上运行应用程序,但是会出现错误。因此,转到_设置_ --> _通用_ --> _配置文件和设备管理_ --> 选择不受信任的配置文件并点击“**信任**”。
请注意,**由相同签名证书签名的应用程序可以以安全的方式共享资源,如钥匙链项**。
配置文件存储在手机内的**`/Library/MobileDevice/ProvisioningProfiles`**中
## **模拟器**
{% hint style="info" %}
请注意,**模拟器和模拟器不是同一个概念**。模拟器只是模拟设备和功能的行为,而不实际使用它们。
{% endhint %}
**iOS SDK模拟器**提供了对iOS设备的更高级别的_模拟_。最重要的是,模拟器二进制文件是编译为x86代码而不是ARM代码。为真实设备编译的应用程序无法运行,使模拟器对黑盒分析和逆向工程无用。
### **模拟器**
首先,您需要知道的是,**在模拟器中进行渗透测试的限制要比在越狱设备中进行渗透测试要多得多**。
构建和支持iOS应用程序所需的所有工具都**仅在Mac OS上得到官方支持**。\
苹果用于创建/调试/检测iOS应用程序的事实上的工具是**Xcode**。它可以用于下载其他组件,如**模拟器**和所需的不同**SDK版本**来构建和**测试**您的应用程序。\
强烈建议从**官方应用商店**下载Xcode。其他版本可能携带恶意软件。
模拟器文件可以在`/Users//Library/Developer/CoreSimulator/Devices`中找到
要打开模拟器,请运行Xcode,然后按下_Xcode标签_ --> _打开开发人员工具_ --> _模拟器_\
\_\_在下图中,点击“iPod touch \[...]”可以选择其他设备进行测试:
![](<../../.gitbook/assets/image (457).png>)
![](<../../.gitbook/assets/image (458).png>)
### 模拟器中的应用程序
在`/Users//Library/Developer/CoreSimulator/Devices`中,您可以找到所有**已安装的模拟器**。如果您想访问在其中一个模拟器中创建的应用程序的文件,可能很难知道**应用程序安装在哪个模拟器中**。找到正确的UID的一个快速方法是在模拟器中执行应用程序并执行以下操作:
```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中的Root权限比较
iOS越狱经常与Android的Root权限进行比较,但实际上这两个过程是相当**不同**的。为了解释这种差异,我们首先回顾一下Android上的"Root权限"和"刷机"的概念。
* **Root权限**: 这通常涉及在系统上安装`su`二进制文件或替换整个系统为具有Root权限的自定义ROM。只要可访问引导加载程序,就不需要利用漏洞来获取Root权限。
* **刷机**: 这允许你在解锁引导加载程序后替换设备上运行的操作系统。解锁引导加载程序可能需要利用漏洞来解锁。
**在iOS设备上,刷入自定义ROM是不可能的**,因为iOS引导加载程序**只允许启动和刷入由苹果签名的映像**。这就是为什么即使是**官方的iOS映像,如果没有经过苹果签名,也无法安装**,并且只有在之前的iOS版本仍然被签名的情况下,才能进行iOS降级。
越狱的目的是为了**禁用iOS的保护机制**(尤其是苹果的代码签名机制),以便在设备上运行任意未签名的代码(例如自定义代码或从Cydia或Sileo等替代应用商店下载的代码)。"越狱"一词是对自动化禁用过程的俗称参考。
### 越狱注意事项
由于苹果不断加固系统并修补被利用的漏洞,越狱iOS设备变得越来越**复杂**。越狱已经成为一个非常时间敏感的过程,因为**苹果在发布修复程序后相对很快停止签署这些易受攻击的版本**(除非越狱受益于基于硬件的漏洞,例如影响iPhone 4和iPad 1的BootROM的[limera1n漏洞](https://www.theiphonewiki.com/wiki/Limera1n))。这意味着**一旦苹果停止签署固件,你就无法降级到特定的iOS版本**。
如果你有一个用于安全测试的越狱设备,**保持原样**,除非你百分之百确定在升级到最新的iOS版本后可以重新越狱。
iOS升级是基于挑战-响应过程(生成所谓的SHSH blob作为结果)。只有当由Apple签署的响应对挑战进行签名时,设备才允许安装操作系统。这就是研究人员所说的"签名窗口",也是**你不能简单地存储你下载的OTA固件包并在需要时加载到设备上的原因**。在次要的iOS升级中,两个版本都可能由Apple签署(最新版本和上一个iOS版本)。这是唯一可以降级iOS设备的情况。你可以**检查当前的签名窗口并从**[**IPSW Downloads网站**](https://ipsw.me)下载OTA固件。
{% hint style="danger" %}
**更新操作系统会取消越狱的效果**。
{% endhint %}
### 越狱类型
不同的iOS版本需要**不同的越狱技术**。[确定你的iOS版本是否有公开的越狱工具](https://canijailbreak.com)。要小心假工具和间谍软件,它们经常隐藏在与越狱组织/作者的名称相似的域名后面。
版本示例:
* [Checkra1n](https://checkra.in/):适用于A7芯片和最新的A11芯片的设备,例如iPhone 5S到iPhone X。
* [Palera1n](https://palera.in/):适用于Checkm8设备(A8-A11),运行iOS 15.0-16.5。
* [Unc0ver](https://checkra.in/):仅适用于iOS版本14.8及以下,因为苹果修补了允许Unc0ver运行的问题
iOS越狱领域发展迅速,提供最新的说明很困难。然而,我们可以向你指出一些目前可靠的来源:
* [**Can I Jailbreak?**](https://canijailbreak.com)
* [**The iPhone Wiki**](https://www.theiphonewiki.com)
* [**Redmond Pie**](https://www.redmondpie.com)
* [**Reddit Jailbreak**](https://www.reddit.com/r/jailbreak/)
* [**https://checkra.in/**](https://checkra.in)
> 请注意,对设备进行任何修改都是自担风险。尽管越狱通常是安全的,但事情可能会出错,你可能会使设备变砖。除了你自己之外,没有其他任何一方可以对任何损害负责。
### 好处
越狱的最重要的副作用是**移除了操作系统设置的任何沙盒**。因此,设备上的任何**应用程序都可以读取文件系统上的任何文件**,包括其他应用程序的文件、Cookie和钥匙串。
越狱设备允许用户**安装未经批准的应用程序**并利用**更多的API**,否则是无法访问的。
{% hint style="warning" %}
**不建议普通用户对移动设备进行越狱**
{% endhint %}
### **越狱后**
{% 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/)。一旦添加了该存储库,该应用程序应该出现在“搜索”选项卡中。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* 您在**网络安全公司**工作吗?您想在HackTricks中看到您的**公司广告**吗?或者您想获得最新版本的PEASS或下载PDF格式的HackTricks吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**