从checkra1n到Frida:iOS App Pentesting Quickstart on iOS 13
2019年12月15日 · 1304字 · 7分钟阅读
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模拟器,它仅模拟iPhone的软件环境而非硬件。因此,iOS应用渗透测试需要实际的iOS设备。
此外,即使是基本操作如绕过SSL证书锁定也很麻烦。Portswigger的Burp Suite Mobile Assistant需要安装在已越狱设备上,且仅支持iOS 9及以下版本。
长期以来,iOS渗透测试指南建议从eBay购买运行旧版iOS的旧iPhone。较新的努力如Yogendra Jaiswal的优秀指南基于Unc0ver越狱,支持iOS 11.0-12.4。如果没有该范围内的iDevice,那就没办法了。
幸运的是,随着checkra1n越狱工具的发布,现在可以在最新iOS上越狱A5-A11 iPhone、iPad和iPod。许多iOS应用渗透测试工具在越狱的漫长冬季中处于休眠状态,现在正在迎头赶上,新工具也在不断发布。
因此,我编写了这份快速入门指南,用于在现代设备上使用checkra1n越狱进行iOS应用渗透测试,并将不同工具的设置指南整合在一起。我将后续发布一篇关于使用这里安装的工具在iOS应用中发现漏洞的文章。
快速入门
硬件
让我们从基础开始。你需要一个A5-A11 iDevice,最好是iPhone。我使用了iPhone 8。多亏了checkra1n,你实际上不必担心iOS版本;截至目前,它支持最新的iOS 13.3。除了macOS,checkra1n还支持Linux。
越狱
警告: 越狱你的iDevice会显著削弱你的安全态势。你不应在主设备上进行此操作。实际上,你不应将越狱设备用于除渗透测试之外的任何用途。
请使用USB-A线缆越狱你的设备,因为USB-C越狱已导致问题。
请注意,checkra1n是一个半绑定越狱;每次重启iPhone时,越狱都会丢失,因此你必须重新执行此操作。
- 在https://checkra.in/下载最新的checkra1n越狱工具
- 将你的iPhone连接到macOS设备,并通过Applications → 右键点击checkra1n → 打开来打开checkra1n
- 解锁你的iPhone并在checkra1n中点击“开始”
- 按照checkra1n中的其余步骤操作,并在必要时重启
对于Linux,请按照此处的说明安装checkra1n,然后再打开它并运行相同的步骤来越狱你的iPhone。
恭喜!你已拥有越狱的iPhone。让我们开始正事。
Cydia
这非常简单。在越狱的iPhone上,打开checkra1n应用,然后在“安装”部分点击“Cydia”。
现在你有了Cydia,可以安装几个有助于测试的软件包。稍后会详细介绍。
iProxy
虽然你可以通过无线网络SSH到你的iPhone,但通过USB进行更快、更可靠。
在你的iPhone上,前往Cydia商店并安装OpenSSH软件包。安装后,它应重启Springboard。
回到连接的macOS设备,运行:
|
|
在另一个终端中,运行 ssh root@localhost -p 2222
对于密码,输入 alpine
你现在应该在你的iPhone中有一个SSH会话。
一个好处是,你还可以使用像FileZilla这样的客户端通过SFTP与你的iPhone传输文件。只需选择SFTP协议,将主机设置为localhost,端口设置为2222。
Frida和Objection
是时候安装我最喜欢的两个移动应用测试工具Frida和Objection了。我不会在这里详细介绍它们的用法,只介绍设置。Frida有一个iOS指南我将参考。
在你的macOS设备上,运行 pip3 install frida-tools
在你的iPhone上,打开Cydia并通过Sources → Edit → Add添加Frida的存储库,输入 https://build.frida.re
前往Search → 输入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 → Bind to port: 1337 → Bind to address : All interfaces (或选择Specific Address) → TLS Protocols → Use Custom Protocols → 取消选中TLSv1.3 → “OK”
在你的iPhone上,Settings → Wi-Fi → Info → Configure Proxy → Manual → 将服务器和端口设置为上一步中的值
在你的iPhone上,前往 http://burp
→ 点击“CA Certificate” → 下载配置文件 → Settings → General → Profiles & Device Management → Portswigger CA → 安装
现在流量应通过Burp代理 - 除了利用证书锁定的应用。幸运的是,SSL Kill Switch 2证书锁定绕过工具最近更新以支持iOS 13。
确保你在Cydia中安装了以下软件包:wget、Debian Packager、Cydia Substrate、PreferenceLoader
前往SSL Kill Switch 2发布页面并复制最新.deb发布的链接
SSH到你的iPhone(参见上面的iProxy部分)并运行 wget <步骤2中的发布URL>
→ dpkg -i <下载的包名>
→ killall -HUP SpringBoard
→ rm <下载的包名>
在你的iPhone上,前往Settings → SSL Kill Switch 2(它应在底部) → 禁用证书验证
你应该可以开始了。
绕过越狱检测
越狱检测很烦人但可以解决。在所有支持iOS 13的软件包中,我发现Liberty Lite Cydia模块工作最一致。
在你的iPhone上,打开Cydia并通过Sources → Edit → Add添加模块作者Ryley Angus的存储库,输入 https://ryleyangus.com/repo/
前往Search → 输入Liberty Lite → 安装
安装后,前往Settings → Liberty → Block Jailbreak Detection → 为你要绕过的应用启用
杀死并重新打开你的应用。如果仍未绕过,你可以尝试其他模块。
转储应用文件
与Android apk文件不同,iOS应用存储为加密的ipa文件,防止轻松访问和分析。安装了iproxy和Frida后,我们可以使用frida-ios-dump在运行时执行此操作。
在你的macOS设备上,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 <应用显示名称或包标识符>
通常,我喜欢将我的工具符号链接,以便通过 ln -s <dump.py的绝对路径> /usr/local/bin/dump-ipa
从我的PATH轻松访问。现在,每当我想转储应用时,我可以在任何地方使用dump-ipa命令。
结论
通过本快速入门指南,你现在已经设置了基本工具来开始iOS应用渗透测试,从搜索应用文件中的秘密,到钩住类,当然还有测试Web API。最重要的是,这是在现代iOS硬件和版本上进行的。
我希望本指南对那些希望设置iOS测试实验室的人有所帮助。我将后续发布一篇关于使用这些工具发现的几个漏洞的文章,并希望能指出需要留意的典型问题。