iOS Basic Testing Operations

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

支持HackTricks的其他方式:

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 访问。重要的是要更改用户 rootmobile 的默认密码 (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文件。这涉及将现有哈希替换为rootmobile用户条目旁边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

提取应用程序二进制文件

  1. 从IPA文件中: 解压IPA文件以访问解密的应用程序二进制文件。

  2. 从越狱设备中: 安装应用程序并从内存中提取解密后的二进制文件。

解密过程

手动解密概述: 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,则此方法可能失败。

参考资料

从零开始学习AWS黑客技术,成为专家 htARTE (HackTricks AWS Red Team Expert)!

支持HackTricks的其他方式:

最后更新于