hacktricks/mobile-pentesting/ios-pentesting/ios-testing-environment.md
2023-08-03 19:12:22 +00:00

12 KiB
Raw Blame History

iOS测试环境

☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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/<username>/Library/Developer/CoreSimulator/Devices中找到

要打开模拟器请运行Xcode然后按下_Xcode标签_ --> 打开开发人员工具 --> 模拟器
__在下图中点击“iPod touch [...]”可以选择其他设备进行测试:

模拟器中的应用程序

/Users/<username>/Library/Developer/CoreSimulator/Devices中,您可以找到所有已安装的模拟器。如果您想访问在其中一个模拟器中创建的应用程序的文件,可能很难知道应用程序安装在哪个模拟器中。找到正确的UID的一个快速方法是在模拟器中执行应用程序并执行以下操作

xcrun simctl list | grep Booted
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/

在这个文件夹中,你可以找到应用程序的包

模拟器

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漏洞)。这意味着一旦苹果停止签署固件你就无法降级到特定的iOS版本

如果你有一个用于安全测试的越狱设备,保持原样除非你百分之百确定在升级到最新的iOS版本后可以重新越狱。

iOS升级是基于挑战-响应过程生成所谓的SHSH blob作为结果。只有当由Apple签署的响应对挑战进行签名时设备才允许安装操作系统。这就是研究人员所说的"签名窗口",也是你不能简单地存储你下载的OTA固件包并在需要时加载到设备上的原因。在次要的iOS升级中两个版本都可能由Apple签署最新版本和上一个iOS版本。这是唯一可以降级iOS设备的情况。你可以检查当前的签名窗口并从IPSW Downloads网站下载OTA固件。

{% hint style="danger" %} 更新操作系统会取消越狱的效果。 {% endhint %}

越狱类型

不同的iOS版本需要不同的越狱技术确定你的iOS版本是否有公开的越狱工具。要小心假工具和间谍软件,它们经常隐藏在与越狱组织/作者的名称相似的域名后面。

版本示例:

  • Checkra1n适用于A7芯片和最新的A11芯片的设备例如iPhone 5S到iPhone X。
  • Palera1n适用于Checkm8设备A8-A11运行iOS 15.0-16.5。
  • Unc0ver仅适用于iOS版本14.8及以下因为苹果修补了允许Unc0ver运行的问题

iOS越狱领域发展迅速提供最新的说明很困难。然而我们可以向你指出一些目前可靠的来源

请注意,对设备进行任何修改都是自担风险。尽管越狱通常是安全的,但事情可能会出错,你可能会使设备变砖。除了你自己之外,没有其他任何一方可以对任何损害负责。

好处

越狱的最重要的副作用是移除了操作系统设置的任何沙盒。因此,设备上的任何应用程序都可以读取文件系统上的任何文件包括其他应用程序的文件、Cookie和钥匙串。

越狱设备允许用户安装未经批准的应用程序并利用更多的API,否则是无法访问的。

{% hint style="warning" %} 不建议普通用户对移动设备进行越狱 {% endhint %}

越狱后

{% content-ref url="basic-ios-testing-operations.md" %} basic-ios-testing-operations.md {% endcontent-ref %}

越狱检测

有几个应用程序会尝试检测移动设备是否已越狱,如果是,则应用程序将无法运行

  • 越狱iOS后通常会安装文件和文件夹,可以搜索这些文件来确定设备是否已越狱。
  • 在越狱设备上,应用程序可以读/写访问沙盒之外的新文件
  • 一些API调用表现不同
  • 存在OpenSSH服务。
  • 调用/bin/sh将返回1而不是0。

有关如何检测越狱的更多信息在这里

您可以尝试使用objection的 ios jailbreak disable 来避免这些检测。

越狱检测绕过

  • 您可以尝试使用objection的 ios jailbreak disable 来避免这些检测。
  • 您还可以安装工具Liberty Lite (https://ryleyangus.com/repo/)。一旦添加了该存储库,该应用程序应该出现在“搜索”选项卡中。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥