iOS 基础测试操作
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
Summary of iOS Device Identification and Access
识别 iOS 设备的 UDID
要唯一识别 iOS 设备,使用一个称为 UDID 的 40 位序列。在 macOS Catalina 或更高版本中,可以在 Finder app 中找到它,因为 iTunes 已不再存在。设备通过 USB 连接并在 Finder 中选中后,点击其名称下的详细信息即可查看包含 UDID 在内的信息。
在 Catalina 之前的 macOS 版本中,可通过 iTunes 查找 UDID。详细说明见 here.
命令行工具提供检索 UDID 的替代方法:
- 使用 I/O Registry Explorer 工具
ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
- 在 macOS (和 Linux) 上使用
ideviceinstaller:
$ brew install ideviceinstaller
$ idevice_id -l
- 使用
system_profiler:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- 使用
instruments列出设备:
$ instruments -s devices
访问设备 Shell
SSH access 通过在越狱后安装 OpenSSH package 启用,可通过 ssh root@<device_ip_address> 进行连接。为保护设备,应更改用户 root 和 mobile 的默认密码(alpine)。
在没有 Wi-Fi 的情况下,通常需要使用 SSH over USB,使用 iproxy 将设备端口映射以进行 SSH 连接。通过运行以下命令即可通过 USB 启用 SSH 访问:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
设备上的 shell 应用,如 NewTerm 2,便于与设备直接交互,特别适用于故障排查。Reverse SSH shells 也可以建立,以便从主机远程访问。
重置忘记的密码
要将忘记的密码重置回默认值(alpine),需要编辑 /private/etc/master.passwd 文件。具体做法是将现有的哈希替换为 alpine 的哈希,替换位置在 root 和 mobile 用户条目旁。
数据传输技术
传输应用数据文件
通过 SSH 和 SCP 进行归档与检索: 可以使用 tar 将应用的 Data 目录归档,然后使用 scp 传输。下面的命令将 Data 目录归档为 .tgz 文件,然后从设备拉取:
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
Graphical User Interface Tools
Using iFunbox and iExplorer: 这些 GUI 工具可用于管理 iOS 设备上的文件。然而,从 iOS 8.4 起,Apple 限制了这些工具访问应用程序沙箱的能力,除非设备已越狱。
Using Objection for File Management
Interactive Shell with Objection: 启动 Objection 后可访问应用的 Bundle 目录。在这里,你可以导航到应用的 Documents 目录并管理文件,包括从 iOS 设备下载以及向 iOS 设备上传文件。
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
获取与提取应用
获取 IPA 文件
Over-The-Air (OTA) 分发链接: 通过 OTA 分发用于测试的应用可以使用 ITMS services asset downloader 工具下载,该工具通过 npm 安装,并用于将 IPA 文件保存到本地。
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
提取应用二进制文件
- From an IPA: 解压 IPA 以获取已解密的应用二进制文件。
- From a Jailbroken Device: 在越狱设备上安装应用并从内存中提取已解密的二进制文件。
解密过程
Manual Decryption Overview: iOS 应用二进制由 Apple 使用 FairPlay 加密。要进行逆向,需要从内存中 dump 出已解密的二进制。解密过程包括检查 PIE flag、调整内存标志、识别被加密的 section,然后 dump 并用其解密后的内容替换该 section。
检查并修改 PIE flag:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
识别加密段并转储内存:
使用 otool 确定加密段的起始和结束地址,并使用 gdb 从 jailbroken device 转储内存。
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
覆盖加密部分:
将原始应用二进制中的加密部分替换为解密后的 dump。
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
完成解密: 使用像 MachOView 这样的工具修改二进制的元数据以表明未加密,将 cryptid 设置为 0。
解密(自动)
frida-ios-dump
工具 frida-ios-dump 用于从 iOS 设备自动解密和提取应用。首先需要配置 dump.py 以连接到 iOS 设备,这可以通过 iproxy 在 localhost 的 2222 端口完成,或直接使用设备的 IP 地址和端口。
设备上安装的应用可以通过以下命令列出:
$ python dump.py -l
要 dump 特定应用(例如 Telegram),请使用以下命令:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
此命令会启动 app dump,在当前目录生成一个 Telegram.ipa 文件。该过程适用于 jailbroken 设备,因为未签名或伪签名的应用可以使用像 ios-deploy 这样的工具重新安装。
frida-ipa-extract
基于 Frida 的 IPA 提取器,适用于 jailbroken 设备;使用 USB Frida sessions,并可选用 SSH/SFTP 以加快拉取速度。
- 要求: Python 3.9+,
frida,paramiko, jailbroken device with frida-server (OpenSSH for SSH mode). - 设置:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- 用法:
python extract.py -U -f com.example.app -o MyApp.ipa
python extract.py -U -f com.example.app -o MyApp.ipa --sandbox --no-resume
python extract.py -H 192.168.100.32 -P 2222 -u root -p password -f com.example.app
- 标志:
-f <bundle>启动/附加(或使用--pid指定 PID);-o设置输出名称。-U使用 USB;-H/-P/-u/-p打开到frida-server的 27042 端口的 SSH 隧道并通过 SFTP 拉取(可与-U组合)。--sandbox转储沙箱;--no-resume在会话断开时保持应用挂起,以避免因系统进程重试而导致的崩溃。 - 故障排除:
Frida attach timed out→ 使用-f或--no-resume;script has been destroyed→ 使用--no-resume或通过 SSH 传输;No running apps found→ 启动或 spawn 应用。
flexdecrypt
The flexdecrypt tool, along with its wrapper flexdump, allows for the extraction of IPA files from installed applications. Installation commands for flexdecrypt on the device include downloading and installing the .deb package. flexdump can be used to list and dump apps, as shown in the commands below:
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
flexdump list
flexdump dump Twitter.app
bagbak
bagbak, 另一个基于 Frida 的工具,要求一台 jailbroken device 来对 app 进行解密:
bagbak --raw Chrome
r2flutch
r2flutch,结合 radare 和 frida,用于应用解密与转储。更多信息可见其 GitHub page。
Installing Apps
Sideloading 指在官方 App Store 之外安装应用程序。该过程由 installd daemon 处理,并要求应用使用 Apple 签发的证书进行签名。Jailbroken 设备可以通过 AppSync 绕过此限制,从而安装伪签名的 IPA 包。
Sideloading Tools
-
Cydia Impactor:用于在 iOS 上签名并安装 IPA 文件、在 Android 上安装 APK 文件的工具。指南和故障排除可见 yalujailbreak.net。
-
libimobiledevice:用于在 Linux 和 macOS 上与 iOS 设备通信的库。提供了安装命令和 ideviceinstaller 的使用示例以通过 USB 安装应用。
-
ipainstaller:该命令行工具允许直接在 iOS 设备上安装应用。
-
ios-deploy:对于 macOS 用户,ios-deploy 可从命令行安装 iOS 应用。过程包括解压 IPA 并使用
-m标志直接启动应用。 -
Xcode:通过 Xcode 安装应用,导航至 Window/Devices and Simulators 并将应用添加到 Installed Apps。
Allow Application Installation on Non-iPad Devices
要在 iPhone 或 iPod touch 上安装仅针对 iPad 的应用,需要将 Info.plist 中的 UIDeviceFamily 值更改为 1。但由于签名校验,修改后需要重新签名 IPA 文件。
注意:如果应用要求仅在更新 iPad 型号上可用的硬件/功能,那么在较旧的 iPhone 或 iPod touch 上可能会失败。
References
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/
- frida-ipa-extract
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。


