11 KiB
iOS基本测试操作
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs
- 加入 💬 Discord群 或 电报群 或 关注我们的Twitter 🐦 @carlospolopm。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
iOS设备识别和访问摘要
识别iOS设备的UDID
为了唯一识别iOS设备,使用一个称为UDID的40位数字序列。在macOS Catalina或更新版本中,可以在Finder应用程序中找到UDID,因为iTunes不再存在。一旦通过USB连接设备并在Finder中选择,当单击其名称下的详细信息时,设备会显示其UDID以及其他信息。
在Catalina之前的macOS版本中,iTunes可以帮助发现UDID。可以在这里找到详细的说明。
命令行工具提供了检索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
安装 OpenSSH package 后,可以通过 ssh root@<device_ip_address>
进行 SSH 访问。重要的是要更改用户 root
和 mobile
的默认密码 (alpine
) 以保护设备安全。
在没有 Wi-Fi 的情况下,通过 USB 进行 SSH 变得必要,使用 iproxy
来映射设备端口以进行 SSH 连接。通过运行以下设置,可以通过 USB 实现 SSH 访问:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
设备上的Shell应用程序,如NewTerm 2,促进了直接设备交互,特别适用于故障排除。反向SSH shell也可以建立,以便从主机计算机进行远程访问。
重置忘记的密码
要将忘记的密码重置为默认值(alpine
),需要编辑/private/etc/master.passwd
文件。这涉及将现有哈希替换为root
和mobile
用户条目旁边alpine
的哈希。
数据传输技术
传输应用数据文件
通过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 .
图形用户界面工具
使用 iFunbox 和 iExplorer: 这些图形用户界面工具可用于管理 iOS 设备上的文件。然而,从 iOS 8.4 开始,除非设备已越狱,否则苹果限制了这些工具对应用沙盒的访问权限。
使用 Objection 进行文件管理
使用 Objection 进行交互式 Shell: 启动 objection 可访问应用程序的 Bundle 目录。从这里,您可以导航到应用程序的 Documents 目录,并管理文件,包括将它们从 iOS 设备下载和上传。
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
获取和提取应用程序
获取IPA文件
通过空中下载(OTA)分发链接: 通过OTA分发的应用程序可以使用ITMS服务资产下载工具进行下载,该工具通过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
提取应用程序二进制文件
- 从IPA文件中: 解压IPA文件以访问解密的应用程序二进制文件。
- 从越狱设备中: 安装应用程序并从内存中提取解密后的二进制文件。
解密过程
手动解密概述: iOS应用程序二进制文件由苹果使用FairPlay加密。要进行逆向工程,必须从内存中转储解密后的二进制文件。解密过程涉及检查PIE标志,调整内存标志,识别加密部分,然后转储并用解密后的形式替换此部分。
检查和修改PIE标志:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
识别加密部分并转储内存:
使用 otool
确定加密部分的起始和结束地址,并使用 gdb 从越狱设备转储内存。
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
覆盖加密部分:
用解密的转储数据替换原始应用程序二进制文件中的加密部分。
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在端口2222上通过本地主机连接,也可以直接通过设备的IP地址和端口连接。
可以使用以下命令列出设备上安装的应用程序:
$ python dump.py -l
要转储特定应用程序,如Telegram,使用以下命令:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
这个命令启动应用程序转储,导致在当前目录中创建一个Telegram.ipa
文件。这个过程适用于越狱设备,因为未签名或伪签名的应用可以使用像ios-deploy这样的工具重新安装。
flexdecrypt
flexdecrypt工具及其包装器flexdump允许从已安装的应用程序中提取IPA文件。在设备上安装flexdecrypt的安装命令包括下载和安装.deb
软件包。flexdump可用于列出和转储应用程序,如下所示的命令:
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的工具,需要越狱设备进行应用程序解密:
bagbak --raw Chrome
r2flutch
r2flutch利用radare和frida,用于应用程序解密和转储。更多信息可以在其GitHub页面找到。
安装应用程序
侧载指的是在官方App Store之外安装应用程序。这一过程由installd守护程序处理,并需要应用程序使用由苹果签发的证书进行签名。越狱设备可以通过AppSync绕过这一过程,从而可以安装伪签名的IPA包。
侧载工具
-
Cydia Impactor:用于在iOS上签名和安装IPA文件以及在Android上安装APK文件的工具。可以在yalujailbreak.net上找到指南和故障排除信息。
-
libimobiledevice:用于Linux和macOS的库,用于与iOS设备通信。提供了用于通过USB安装应用程序的ideviceinstaller的安装命令和使用示例。
-
ipainstaller:这个命令行工具允许直接在iOS设备上安装应用程序。
-
ios-deploy:对于macOS用户,ios-deploy可以通过命令行安装iOS应用程序。解压IPA并使用
-m
标志进行直接应用程序启动是该过程的一部分。 -
Xcode:利用Xcode通过导航到Window/Devices and Simulators并将应用程序添加到Installed Apps来安装应用程序。
允许在非iPad设备上安装应用程序
要在iPhone或iPod touch设备上安装专为iPad设计的应用程序,需要将Info.plist文件中的UIDeviceFamily值更改为1。然而,由于签名验证检查,这种修改需要重新签名IPA文件。
注意:如果应用程序要求具有较新iPad型号独有的功能,而使用较旧的iPhone或iPod touch,则此方法可能失败。
参考资料
- 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/
从零开始学习AWS黑客技术,成为专家 htARTE (HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 发现PEASS家族,我们独家的NFTs收藏品
- 加入 💬 Discord群 或 电报群 或在Twitter 🐦 @carlospolopm上关注我们。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。