iOS 测试环境
Reading time: 11 minutes
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
Apple 开发者计划
Provisioning identity 是与 Apple 开发者账户关联的一组公钥和私钥。为了签名应用程序,您需要支付99$/年注册Apple 开发者计划以获取您的 provisioning identity。没有这个,您将无法在物理设备上从源代码运行应用程序。另一个选择是使用越狱设备。
从 Xcode 7.2 开始,Apple 提供了创建免费 iOS 开发 provisioning profile的选项,允许您在真实的 iPhone 上编写和测试您的应用程序。前往 Xcode --> Preferences --> Accounts --> + (添加新的 Appli ID 和您的凭据) --> 点击创建的 Apple ID --> Manage Certificates --> + (Apple Development) --> Done
__然后,为了在您的 iPhone 上运行应用程序,您首先需要指示 iPhone 信任计算机。 然后,您可以尝试**从 Xcode 在移动设备上运行应用程序,**但会出现错误。因此,前往 Settings --> General --> Profiles and Device Management --> 选择不受信任的配置文件并点击“信任”。
请注意,由相同签名证书签名的应用程序可以以安全的方式共享资源,例如钥匙串项。
Provisioning profiles 存储在手机内的 /Library/MobileDevice/ProvisioningProfiles
模拟器
note
请注意,模拟器与仿真器不同。模拟器只是模拟设备的行为和功能,但实际上并不使用它们。
模拟器
您需要知道的第一件事是,在模拟器内进行渗透测试的限制要比在越狱设备上进行的要大得多。
构建和支持 iOS 应用程序所需的所有工具仅在 Mac OS 上正式支持。
Apple 用于创建/调试/插桩 iOS 应用程序的事实工具是Xcode。它可用于下载其他组件,例如模拟器和构建和测试您的应用程序所需的不同SDK 版本。
强烈建议从官方应用商店下载 Xcode。其他版本可能携带恶意软件。
模拟器文件可以在 /Users/<username>/Library/Developer/CoreSimulator/Devices
中找到。
要打开模拟器,请运行 Xcode,然后在 Xcode 标签 中按 --> Open Developer tools --> Simulator
__在下图中,点击“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 解决方案,采用按用户许可模式,不提供任何试用许可。
无需越狱
查看这篇关于如何在未越狱设备上进行 iOS 应用程序渗透测试的博客文章:https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
越狱
苹果严格要求在 iPhone 上运行的代码必须是由苹果签发的证书签名的。越狱是主动规避此类限制和操作系统施加的其他安全控制的过程。因此,一旦设备越狱,负责检查应用程序安装的完整性检查就会被修补,从而绕过。
note
与 Android 不同,**你不能在 iOS 中切换到“开发者模式”**以在设备上运行未签名/不受信任的代码。
Android Rooting 与 iOS 越狱
虽然经常被比较,Android 的rooting和 iOS 的越狱在本质上是不同的过程。对 Android 设备进行 root 可能涉及安装 su
二进制文件或用已 root 的自定义 ROM 替换系统,如果引导加载程序已解锁,则不一定需要利用漏洞。闪存自定义 ROM在解锁引导加载程序后替换设备的操作系统,有时需要利用漏洞。
相比之下,由于引导加载程序限制只能启动苹果签名的镜像,iOS 设备无法闪存自定义 ROM。越狱 iOS旨在绕过苹果的代码签名保护以运行未签名的代码,这一过程因苹果不断的安全增强而变得复杂。
越狱挑战
越狱 iOS 变得越来越困难,因为苹果迅速修补漏洞。降级 iOS仅在发布后有限时间内可能,越狱是一个时间敏感的问题。用于安全测试的设备在确保重新越狱的情况下不应更新。
iOS 更新由挑战-响应机制(SHSH blobs)控制,仅允许安装苹果签名的响应。这个机制被称为“签名窗口”,限制了存储和后续使用 OTA 固件包的能力。IPSW Downloads 网站是检查当前签名窗口的资源。
越狱种类
- 有线越狱需要每次重启时连接计算机。
- 半有线越狱允许在没有计算机的情况下启动到非越狱模式。
- 半无线越狱需要手动重新越狱而不需要计算机。
- 无线越狱提供永久越狱解决方案,无需重新应用。
越狱工具和资源
越狱工具因 iOS 版本和设备而异。资源如 Can I Jailbreak?、The iPhone Wiki 和 Reddit Jailbreak 提供最新信息。示例包括:
- Checkra1n 适用于 A7-A11 芯片设备。
- Palera1n 适用于 iOS 15.0-16.5 上的 Checkm8 设备(A8-A11)。
- Unc0ver 适用于 iOS 版本高达 14.8。
修改设备存在风险,越狱应谨慎进行。
越狱的好处和风险
越狱移除操作系统施加的沙盒限制,允许应用程序访问整个文件系统。这种自由使得安装未批准的应用程序和访问更多 API 成为可能。然而,对于普通用户来说,由于潜在的安全风险和设备不稳定,越狱不推荐。
越狱后
越狱检测
一些应用程序会尝试检测手机是否越狱,在这种情况下应用程序将无法运行
- 在越狱的 iOS 设备上,文件和文件夹通常会被安装,可以搜索这些文件以确定设备是否越狱。
- 在越狱设备上,应用程序获得对新文件的读/写访问权限,超出沙盒限制。
- 一些API 调用将表现不同。
- OpenSSH 服务的存在。
- 调用
/bin/sh
将返回 1 而不是 0。
有关如何检测越狱的更多信息 在这里。
你可以尝试使用 objection's ios jailbreak disable
来避免这些检测。
越狱检测绕过
- 你可以尝试使用 objection's
ios jailbreak disable
来避免这些检测。 - 你还可以安装工具 Liberty Lite (https://ryleyangus.com/repo/)。一旦添加了 repo,应用程序应该出现在“搜索”标签中。
参考
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。