hacktricks/mobile-pentesting/ios-pentesting/ios-testing-environment.md

155 lines
9.6 KiB
Markdown
Raw Normal View History

# iOS 测试环境
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
{% endhint %}
2022-04-28 16:01:33 +00:00
## Apple 开发者计划
2021-05-14 22:25:03 +00:00
**配置身份**是与 Apple 开发者账户关联的一组公钥和私钥。为了**签名应用程序**,您需要支付**99$/年**注册**Apple 开发者计划**以获取您的配置身份。没有这个,您将无法在物理设备上从源代码运行应用程序。另一种方法是使用**越狱设备**。
2021-05-14 22:25:03 +00:00
从 Xcode 7.2 开始Apple 提供了创建**免费 iOS 开发配置文件**的选项,允许您在真实的 iPhone 上编写和测试您的应用程序。前往 _Xcode_ --> _Preferences_ --> _Accounts_ --> _+_ (添加新的应用 ID 和您的凭据) --> _点击创建的 Apple ID_ --> _管理证书_ --> _+_ (Apple Development) --> _完成_\
\_\_然后为了在您的 iPhone 上运行应用程序,您首先需要**指示 iPhone 信任计算机。** 然后,您可以尝试**从 Xcode 在移动设备上运行应用程序,**但会出现错误。因此,前往 _设置_ --> _通用_ --> _配置文件和设备管理_ --> 选择不受信任的配置文件并点击“**信任**”。
2021-05-14 22:25:03 +00:00
请注意,**由相同签名证书签名的应用程序可以以安全的方式共享资源,例如钥匙串项**。
2021-05-14 22:25:03 +00:00
配置文件存储在手机内的 **`/Library/MobileDevice/ProvisioningProfiles`**
2021-05-14 22:25:03 +00:00
2023-08-03 19:12:22 +00:00
## **模拟器**
{% hint style="info" %}
请注意,**模拟器与仿真器并不相同**。模拟器只是模拟设备的行为和功能,但实际上并不使用它们。
{% endhint %}
2023-08-03 19:12:22 +00:00
### **模拟器**
您需要知道的第一件事是,**在模拟器中进行渗透测试的限制远大于在越狱设备中进行的限制**。
构建和支持 iOS 应用程序所需的所有工具**仅在 Mac OS 上正式支持**。\
Apple 的事实工具用于创建/调试/插桩 iOS 应用程序是**Xcode**。它可以用于下载其他组件,例如**模拟器**和构建和**测试**您的应用程序所需的不同**SDK** **版本**。\
强烈建议从**官方应用商店**下载 Xcode。其他版本可能携带恶意软件。
模拟器文件可以在 `/Users/<username>/Library/Developer/CoreSimulator/Devices` 中找到。
要打开模拟器,请运行 Xcode然后在 _Xcode 标签_ 中按 --> _打开开发者工具_ --> _模拟器_\
\_\_在下图中点击“iPod touch \[...\]”可以选择其他设备进行测试:
![](<../../.gitbook/assets/image (270).png>)
![](<../../.gitbook/assets/image (520).png>)
### 模拟器中的应用程序
`/Users/<username>/Library/Developer/CoreSimulator/Devices` 中,您可能会找到所有**已安装的模拟器**。如果您想访问在其中一个模拟器中创建的应用程序的文件,可能很难知道**应用程序安装在哪个模拟器中**。找到**正确的 UID**的快速方法是先在模拟器中执行应用程序,然后执行:
```bash
xcrun simctl list | grep Booted
2023-08-03 19:12:22 +00:00
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
```
一旦你知道了 UID安装在其中的应用可以在 `/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application` 中找到。
然而,令人惊讶的是,你在这里找不到应用。你需要访问 `/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/`
在这个文件夹中,你可以**找到应用的包**。
2023-08-03 19:12:22 +00:00
## 模拟器
Corellium 是唯一公开可用的 iOS 模拟器。它是一个企业级 SaaS 解决方案,采用按用户许可模式,不提供任何试用许可。
2023-08-03 19:12:22 +00:00
## 越狱
苹果严格要求在 iPhone 上运行的代码必须**由苹果签发的证书签名**。**越狱**是主动**规避此类限制**和操作系统施加的其他安全控制的过程。因此,一旦设备越狱,负责检查应用安装的**完整性检查**就会被修补,从而**绕过**。
{% hint style="info" %}
与 Android 不同,**你不能在 iOS 中切换到“开发者模式”**以在设备上运行未签名/不受信任的代码。
{% endhint %}
### Android Rooting 与 iOS Jailbreaking
虽然经常被比较Android 的**rooting**和 iOS 的**越狱**在本质上是不同的过程。对 Android 设备进行 root 可能涉及**安装 `su` 二进制文件**或**用已 root 的自定义 ROM 替换系统**,如果引导加载程序已解锁,则不一定需要利用漏洞。**闪存自定义 ROM**在解锁引导加载程序后替换设备的操作系统,有时需要利用漏洞。
相比之下由于引导加载程序限制只能启动苹果签名的镜像iOS 设备无法闪存自定义 ROM。**越狱 iOS**旨在绕过苹果的代码签名保护以运行未签名的代码,这一过程因苹果持续的安全增强而变得复杂。
### 越狱挑战
越狱 iOS 变得越来越困难,因为苹果迅速修补漏洞。**降级 iOS**仅在发布后有限时间内可能,越狱是一个时间敏感的问题。用于安全测试的设备在确保重新越狱的情况下不应更新。
iOS 更新由**挑战-响应机制**SHSH blobs控制仅允许安装苹果签名的响应。这个机制被称为“签名窗口”限制了存储和后续使用 OTA 固件包的能力。[IPSW 下载网站](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/) 适用于 iOS 15.0-16.5 上的 Checkm8 设备A8-A11
* [Unc0ver](https://unc0ver.dev/) 适用于 iOS 版本高达 14.8。
修改设备存在风险,越狱应谨慎进行。
### 越狱的好处和风险
越狱**移除操作系统施加的沙盒限制**,允许应用访问整个文件系统。这种自由使得安装未批准的应用和访问更多 API 成为可能。然而,对于普通用户来说,由于潜在的安全风险和设备不稳定,越狱**不推荐**。
2023-08-03 19:12:22 +00:00
### **越狱后**
{% content-ref url="basic-ios-testing-operations.md" %}
[basic-ios-testing-operations.md](basic-ios-testing-operations.md)
{% endcontent-ref %}
2023-08-03 19:12:22 +00:00
### **越狱检测**
**一些应用会尝试检测手机是否越狱,如果是,应用将无法运行**
* 在越狱后的 iOS 中,**文件和文件夹通常会被安装**,可以搜索这些文件以确定设备是否越狱。
* 在越狱设备中,应用可以**读写新文件**,超出沙盒限制。
* 一些**API** **调用**将**表现不同**
* **OpenSSH** 服务的存在。
* 调用 `/bin/sh` 将**返回 1** 而不是 0。
**有关如何检测越狱的更多信息** [**在这里**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**。**
2021-05-19 16:11:33 +00:00
你可以尝试使用 **objection 的** `ios jailbreak disable` 来避免这些检测。
2022-04-05 21:52:22 +00:00
2023-08-03 19:12:22 +00:00
## **越狱检测绕过**
2022-04-05 21:52:22 +00:00
* 你可以尝试使用 **objection 的** `ios jailbreak disable` 来避免这些检测。
* 你还可以安装工具 **Liberty Lite** (https://ryleyangus.com/repo/)。一旦添加了 repo应用应该会出现在“搜索”标签中。
2022-04-28 16:01:33 +00:00
## 参考
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}
</details>
{% endhint %}