从checkra1n到Frida:iOS App渗透测试快速入门指南
2020年4月19日更新:
- 通过Cydia安装OpenSSH (ramsexy)
- Checkra1n现已支持Linux (inhibitor181)
- 使用USB Type-A线缆而非Type-C (c0rv4x)
2020年4月26日更新:
- Linux专用说明 (inhibitor181)
2020年8月14日更新:
- Burp TLS v1.3配置
动机
我希望能开展移动应用渗透测试。虽然Android平台相对容易上手,但iOS则困难得多。例如Android有Android Virtual Device等模拟器,而iOS只有Xcode的iOS模拟器——它仅模拟软件环境而非硬件。因此iOS应用测试需要真实设备。
更麻烦的是,即使像绕过SSL证书固定这样的基础操作也很复杂。Portswigger的Burp Suite Mobile Assistant需要安装在已越狱设备上,且仅支持iOS 9及以下版本。
长期以来,渗透测试指南都建议从eBay购买运行旧版iOS的iPhone。较新的方案如Yogendra Jaiswal的优秀指南基于Unc0ver越狱,仅支持iOS 11.0-12.4。如果你的设备不在这个范围内,那就无计可施。
幸运的是,随着checkra1n越狱工具的发布,现在可以越狱运行最新iOS的A5-A11芯片设备(包括iPhone、iPad和iPod)。许多在越狱"寒冬"中沉寂的iOS测试工具正在更新适配,新工具也在不断涌现。
因此我编写这个快速入门指南,整合各种工具的安装说明,帮助你在现代设备上搭建iOS应用测试环境。后续我将分享如何用这些工具发现iOS应用漏洞。
快速开始
硬件准备
首先需要A5-A11芯片的设备,推荐iPhone。我使用iPhone 8。得益于checkra1n,你无需担心iOS版本——目前它支持最新的iOS 13.3。除macOS外,checkra1n也支持Linux。
越狱操作
警告:越狱会显著降低设备安全性。请不要在主设备上进行,且越狱设备应仅用于渗透测试。
建议使用USB-A线缆进行越狱,USB-C可能导致问题。
注意checkra1n是半绑定式越狱——每次重启后越狱状态会丢失,需要重新操作。
步骤:
- 从https://checkra.in/下载最新版checkra1n
- 将iPhone连接至macOS设备,通过Applications → 右键checkra1n → 打开
- 解锁iPhone,点击checkra1n中的"Start"
- 按提示完成后续步骤,必要时重启
Linux用户:请先按此指南安装checkra1n,再执行相同越狱步骤。
恭喜!你现在拥有已越狱的iPhone。让我们继续配置。
安装Cydia
非常简单:在越狱后的iPhone上打开checkra1n应用,点击"Install"部分的"Cydia"按钮。
现在你已安装Cydia,可以安装后续测试所需的各种包。
配置iProxy
虽然可以通过Wi-Fi SSH连接iPhone,但USB连接更快速可靠。
步骤:
- 在iPhone的Cydia商店安装OpenSSH包,安装后会自动重启Springboard
- 在连接的macOS设备上执行:
1 2
brew install libusbmuxd # Linux使用apt-get install libusbmuxd* iproxy 2222 22 # Linux使用iproxy 2222 44
- 另开终端执行:
ssh root@localhost -p 2222
- 密码输入:
alpine
现在你已建立SSH会话。还可以使用FileZilla等SFTP客户端传输文件,设置协议为SFTP,主机localhost,端口2222。
安装Frida和Objection
现在安装两个重要的移动应用测试工具:Frida和Objection。这里只介绍安装,使用细节请参考Frida iOS指南。
步骤:
- macOS执行:
pip3 install frida-tools
- iPhone上打开Cydia → Sources → Edit → Add → 输入
https://build.frida.re
- 搜索安装Frida
- macOS执行:
pip3 install objection
- 测试集成:
objection --gadget "com.apple.AppStore" explore
代理流量与绕过证书固定
通过Burp Suite代理流量是标准操作,请遵循Yogendra Jaiswal文章中的步骤。Burp Suite 2020.4版本新增了禁用TLSv1.3的选项,有助于iOS信任自定义证书。
配置步骤:
- Burp Suite中:Proxy → Options → Proxy Listener → Add → 绑定端口1337 → 绑定地址选All interfaces → TLS Protocols → 取消勾选TLSv1.3 → OK
- iPhone设置:Wi-Fi → 信息 → 配置代理 → 手动 → 设置服务器和端口
- iPhone访问
http://burp
→ 下载CA证书 → 设置中安装
对于使用证书固定的应用,可以使用支持iOS 13的SSL Kill Switch 2工具。
安装步骤:
- 确保Cydia已安装:wget、Debian Packager、Cydia Substrate、PreferenceLoader
- 从SSL Kill Switch 2发布页复制最新.deb链接
- SSH到iPhone执行:
1 2 3 4
wget <下载链接> dpkg -i <包名> killall -HUP SpringBoard rm <包名>
- iPhone设置中启用SSL Kill Switch 2 → 禁用证书验证
绕过越狱检测
虽然越狱检测很麻烦,但有解决方案。在支持iOS 13的包中,Liberty Lite Cydia模块表现最稳定。
安装步骤:
- Cydia中添加源:
https://ryleyangus.com/repo/
- 搜索安装Liberty Lite
- 设置中启用对应应用的越狱检测屏蔽
如果仍不生效,可以尝试其他模块。
提取应用文件
与Android的apk不同,iOS应用以加密的ipa格式存储。通过iproxy和Frida,我们可以使用frida-ios-dump在运行时提取。
操作步骤:
- macOS执行:
1 2 3
git clone https://github.com/AloneMonkey/frida-ios-dump.git cd frida-ios-dump sudo pip3 install -r requirements.txt --upgrade
- 另开终端运行
iproxy 2222 22
(如果未运行) - 提取应用:
./dump.py <应用显示名或Bundle ID>
建议创建符号链接方便使用:
|
|
结语
通过本指南,你现在已具备iOS应用渗透测试的基础工具链,可以开始分析应用文件、挂钩类方法以及测试Web API。最重要的是,这一切都在现代iOS设备和版本上实现。
希望本指南能帮助你搭建iOS测试环境。后续我将分享使用这些工具发现的漏洞案例,指出常见问题模式。