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

8.4 KiB
Raw Blame History

iOS 测试环境

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

支持 HackTricks 的其他方式:

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

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

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 越狱

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

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

越狱挑战

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

iOS 更新受到挑战-响应机制SHSH blobs的控制只允许安装苹果签名的响应。这种机制被称为“签名窗口”限制了存储和以后使用 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/)。一旦添加了存储库,该应用程序应该出现在“搜索”选项卡中。

参考资料