hacktricks/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md

11 KiB
Raw Blame History

iOS基本测试操作

从零开始学习AWS黑客技术成为专家 htARTEHackTricks 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的其他方式