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

8.5 KiB
Raw Blame History

iOS 测试环境

从零开始学习 AWS 黑客技术,成为专家 htARTEHackTricks AWS 红队专家)

支持 HackTricks 的其他方式:

Apple 开发者计划

配置文件标识是与苹果开发者帐户关联的公钥和私钥集合。为了签署应用程序,您需要支付99美元/年注册Apple 开发者计划以获取您的配置文件标识。否则,您将无法在物理设备上从源代码运行应用程序。另一种选择是使用越狱设备

从 Xcode 7.2 开始,苹果提供了一个选项来创建免费的 iOS 开发配置文件,允许在真实的 iPhone 上编写和测试您的应用程序。转到 Xcode --> 首选项 --> 帐户 --> +(添加新的 Apple ID 到您的凭据) --> 单击创建的 Apple ID --> 管理证书 --> +Apple 开发) --> 完成
__然后为了在您的 iPhone 上运行应用程序,您需要首先指示 iPhone 信任计算机。然后,您可以尝试从 Xcode 在手机上运行应用程序,但会出现错误。因此,转到 设置 --> 通用 --> 配置文件与设备管理 --> 选择未受信任的配置文件并点击“信任”。

请注意,由相同签名证书签署的应用程序可以以安全的方式共享资源,如钥匙串项

配置文件存储在手机内的**/Library/MobileDevice/ProvisioningProfiles**中

模拟器

{% hint style="info" %} 请注意,模拟器与模拟器不同。模拟器只是模拟设备和功能的行为,但实际上不使用它们。 {% endhint %}

模拟器

首先需要知道的是,在模拟器中进行渗透测试将比在越狱设备中进行的测试受到更多限制。

构建和支持 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 Rooting vs. iOS Jailbreaking

尽管经常进行比较Android上的rooting和iOS上的jailbreaking是根本不同的过程。在Android设备上对rooting可能涉及安装su二进制文件用具有root权限的自定义ROM替换系统,如果解锁了引导加载程序,则不一定需要利用漏洞。刷写自定义ROM会在解锁引导加载程序后替换设备的操作系统,有时需要利用漏洞。

相比之下由于引导加载程序限制为仅引导Apple签名的映像iOS设备无法刷写自定义ROM。越狱iOS旨在绕过苹果的代码签名保护,以运行未签名代码,这一过程由于苹果持续加强安全性而变得复杂。

越狱挑战

随着苹果迅速修补漏洞越狱iOS变得越来越困难。降级iOS仅在发布后的有限时间内可能,这使得越狱成为一项时间敏感的问题。用于安全测试的设备不应更新,除非可以保证重新越狱。

iOS更新受挑战-响应机制SHSH blobs控制只允许安装Apple签名的响应。这种机制被称为“签名窗口”限制了存储和以后使用OTA固件包的能力。IPSW Downloads网站是检查当前签名窗口的资源。

越狱类型

  • 有线越狱需要每次重新启动时连接计算机。
  • 半有线越狱允许在没有计算机的情况下启动到非越狱模式。
  • 半无线越狱需要手动重新越狱,无需计算机。
  • 无线越狱提供永久的越狱解决方案,无需重新应用。

越狱工具和资源

越狱工具根据iOS版本和设备而异。资源如Can I Jailbreak?The iPhone WikiReddit Jailbreak提供最新信息。例如:

  • Checkra1n适用于A7-A11芯片设备。
  • Palera1n适用于Checkm8设备A8-A11支持iOS 15.0-16.5。
  • Unc0ver适用于iOS版本高达14.8。

修改您的设备存在风险,越狱应谨慎对待。

越狱的好处和风险

越狱移除了操作系统强制的沙箱限制使应用程序可以访问整个文件系统。这种自由使得可以安装未经批准的应用程序并访问更多API。然而对于普通用户由于潜在的安全风险和设备不稳定性不建议越狱。

越狱后

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

越狱检测

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

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

有关如何检测越狱的更多信息在此处

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

越狱检测绕过

  • 您可以尝试使用objectionios jailbreak disable来避免这些检测。
  • 您还可以安装工具Liberty Lite (https://ryleyangus.com/repo/)。一旦添加了存储库,应用程序应该出现在“搜索”选项卡中。

参考资料