mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
410 lines
24 KiB
Markdown
410 lines
24 KiB
Markdown
# iOS基本测试操作
|
||
|
||
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
* 你在一家**网络安全公司**工作吗?你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||
* 发现我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
|
||
|
||
</details>
|
||
|
||
## 获取iOS设备的UDID
|
||
|
||
{% hint style="info" %}
|
||
在执行这些操作之前,**通过USB将设备连接到计算机**并**解锁**设备。
|
||
{% endhint %}
|
||
|
||
UDID是一个40位数字和字母的唯一序列,用于标识iOS设备。您可以在macOS Catalina及更高版本的**Finder应用程序**中找到iOS设备的UDID,因为Catalina中不再提供iTunes。只需在Finder中选择连接的iOS设备,然后**单击iOS设备名称下的信息**以遍历它。除了UDID,您还可以找到序列号、IMEI和其他有用的信息。
|
||
|
||
![](<../../.gitbook/assets/image (471).png>)
|
||
|
||
如果您使用的是Catalina之前的macOS版本,您可以通过iTunes找到您的iOS设备的[UDID](http://www.iclarified.com/52179/how-to-find-your-iphones-udid),选择您的设备,然后在摘要选项卡中点击“序列号”。点击后,您将遍历iOS设备的不同元数据,包括其UDID。
|
||
|
||
还可以在macOS上使用各种命令行工具获取设备连接的UDID:
|
||
|
||
* 使用[I/O Registry Explorer](https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/TheRegistry/TheRegistry.html)工具`ioreg`:
|
||
|
||
```bash
|
||
$ ioreg -p IOUSB -l | grep "USB Serial"
|
||
| "USB Serial Number" = "9e8ada44246cee813e2f8c1407520bf2f84849ec"
|
||
```
|
||
* 使用[ideviceinstaller](https://github.com/libimobiledevice/ideviceinstaller)(也可在Linux上使用):
|
||
|
||
```bash
|
||
$ brew install ideviceinstaller
|
||
$ idevice_id -l
|
||
316f01bd160932d2bf2f95f1f142bc29b1c62dbc
|
||
```
|
||
* 使用system\_profiler:
|
||
|
||
```bash
|
||
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
|
||
2019-09-08 10:18:03.920 system_profiler[13251:1050356] SPUSBDevice: IOCreatePlugInInterfaceForService failed 0xe00002be
|
||
Serial Number: 64655621de6ef5e56a874d63f1e1bdd14f7103b1
|
||
```
|
||
* 使用instruments:
|
||
|
||
```bash
|
||
$ instruments -s devices
|
||
```
|
||
|
||
## 访问设备Shell
|
||
|
||
越狱设备后,您应该安装了一些新的应用程序管理器,如**Cydia**。
|
||
|
||
### SSH
|
||
|
||
为了启用对iOS设备的SSH访问,您可以安装**OpenSSH** **包**。安装完成后,您可以通过运行`ssh root@<device_ip_address>`访问您的设备,这将以root用户身份登录您的设备:
|
||
```bash
|
||
$ ssh root@192.168.197.234
|
||
root@192.168.197.234's password:
|
||
iPhone:~ root#
|
||
```
|
||
当通过SSH访问您的iOS设备时,请考虑以下事项:
|
||
|
||
* **默认用户是`root`和`mobile`**。
|
||
* 两者的默认**密码**都是**`alpine`**。
|
||
|
||
> 请记住,要更改`root`和`mobile`用户的默认密码,因为在同一网络上的任何人都可以找到您设备的IP地址并使用众所周知的默认密码连接,这将使他们获得对您设备的root访问权限。
|
||
|
||
### **通过USB连接到设备的SSH**
|
||
|
||
在真实的黑盒测试中,可靠的Wi-Fi连接可能不可用。在这种情况下,您可以使用usbmuxd通过USB连接到设备的SSH服务器。
|
||
|
||
通过安装和启动iproxy将macOS连接到iOS设备:
|
||
```bash
|
||
$ brew install libimobiledevice
|
||
$ iproxy 2222 22
|
||
waiting for connection
|
||
```
|
||
上述命令将iOS设备上的端口`22`映射到本地主机上的端口`2222`。如果您不想每次都运行二进制文件来通过USB进行SSH连接,您还可以[使iproxy在后台自动运行](https://iphonedevwiki.net/index.php/SSH\_Over\_USB)。
|
||
|
||
使用以下命令在新的终端窗口中,您可以连接到设备:
|
||
```bash
|
||
$ ssh -p 2222 root@localhost
|
||
root@localhost's password:
|
||
iPhone:~ root#
|
||
```
|
||
> 关于iDevice的USB的小提示:在iOS设备上,如果处于锁定状态超过1小时,除非再次解锁,否则无法进行数据连接,这是由iOS 11.4.1引入的USB受限模式导致的。
|
||
|
||
### 设备上的Shell应用程序
|
||
|
||
通常情况下,使用设备上的shell(终端模拟器)可能比远程shell更加繁琐,但在调试网络问题或检查某些配置时,它可能非常方便。例如,您可以通过Cydia安装[NewTerm 2](https://repo.chariz.io/package/ws.hbang.newterm2/)来实现此目的(在撰写本文时,它支持iOS 6.0至12.1.2)。
|
||
|
||
此外,有一些越狱工具明确禁用了传入的SSH连接,出于安全原因。在这些情况下,拥有一个设备上的shell应用程序非常方便,您可以使用它首先通过反向shell从设备中SSH出去,然后从主机计算机连接到它。
|
||
|
||
通过运行以下命令可以打开一个SSH反向shell:`ssh -R <remote_port>:localhost:22 <username>@<host_computer_ip>`。
|
||
|
||
在设备上的shell应用程序中运行以下命令,并在提示时输入主机计算机的`mstg`用户密码:
|
||
```bash
|
||
ssh -R 2222:localhost:22 mstg@192.168.197.235
|
||
```
|
||
在您的主机计算机上运行以下命令,并在要求时输入iOS设备的`root`用户密码:
|
||
```bash
|
||
$ ssh -p 2222 root@localhost
|
||
```
|
||
### **忘记密码**
|
||
|
||
如果你忘记了密码并想要将其重置为默认的 **`alpine`**:
|
||
|
||
1. 使用设备上的终端或使用诸如 **Filza** 或 **iFile** 的应用程序编辑你的越狱 iOS 设备上的文件 `/private/etc/master.passwd`
|
||
2. 找到以下行:
|
||
|
||
```bash
|
||
root:xxxxxxxxx:0:0::0:0:System Administrator:/var/root:/bin/sh
|
||
mobile:xxxxxxxxx:501:501::0:0:Mobile User:/var/mobile:/bin/sh
|
||
```
|
||
3. 将 `xxxxxxxxx` 更改为 `/smx7MYTQIi2M`(这是密码 `alpine` 的哈希值)
|
||
4. 保存并退出
|
||
|
||
## 数据传输
|
||
|
||
### 通过 SSH 和 SCP 复制应用数据文件
|
||
|
||
现在我们知道,我们的应用文件存储在 Data 目录中。你现在可以使用 `tar` 将 Data 目录打包,并使用 `scp` 从设备中拉取它:
|
||
```bash
|
||
iPhone:~ root# tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
|
||
iPhone:~ root# exit
|
||
$ scp -P 2222 root@localhost:/tmp/data.tgz .
|
||
```
|
||
### 使用iFunbox
|
||
|
||
[**iFunbox**](https://www.i-funbox.com/en/page-download.html) 是一个图形用户界面应用程序,可用于多种用途(包括上传/下载文件)。\
|
||
另一个用于此目的的图形用户界面工具是 [**iExplorer**](https://macroplant.com/iexplorer)。
|
||
|
||
{% hint style="info" %}
|
||
从iOS 8.4版本开始,苹果限制了第三方管理器对应用程序沙盒的访问权限,因此如果设备没有越狱,像iFunbox和iExplorer这样的工具将无法显示/检索设备上安装的应用程序的文件。
|
||
{% endhint %}
|
||
|
||
### 使用Objection
|
||
|
||
当您启动objection(`objection --gadget com.apple.mobilesafari explorer`)时,您将在Bundle目录中找到提示符。
|
||
```bash
|
||
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # pwd print
|
||
Current directory: /var/containers/Bundle/Application/DABF849D-493E-464C-B66B-B8B6C53A4E76/org.owasp.MSTG.app
|
||
```
|
||
使用`env`命令获取应用程序的目录,并导航到Documents目录。
|
||
```bash
|
||
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
|
||
/var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
|
||
```
|
||
使用命令 `file download <文件名>` 可以将文件从iOS设备下载到您的主机计算机,并可以随后进行分析。
|
||
```bash
|
||
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # file download .com.apple.mobile_container_manager.metadata.plist
|
||
Downloading /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/.com.apple.mobile_container_manager.metadata.plist to .com.apple.mobile_container_manager.metadata.plist
|
||
Streaming file from device...
|
||
Writing bytes to destination...
|
||
Successfully downloaded /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/.com.apple.mobile_container_manager.metadata.plist to .com.apple.mobile_container_manager.metadata.plist
|
||
```
|
||
您还可以使用`file upload <local_file_path>`将文件上传到iOS设备。
|
||
|
||
## 获取和提取应用程序
|
||
|
||
### 从OTA分发链接获取IPA文件
|
||
|
||
在开发过程中,有时会通过OTA分发将应用程序提供给测试人员。在这种情况下,您将收到一个itms-services链接,例如:
|
||
```
|
||
itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist
|
||
```
|
||
您可以使用[ITMS服务资产下载器](https://www.npmjs.com/package/itms-services)工具从OTA分发URL下载IPA文件。通过npm安装它:
|
||
```bash
|
||
$ npm install -g itms-services
|
||
```
|
||
使用以下命令将IPA文件保存在本地:
|
||
```bash
|
||
# 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文件(可能包含已解密的应用程序二进制文件),解压缩它并准备好开始。应用程序二进制文件位于主要捆绑目录(.app)中,例如`Payload/Telegram X.app/Telegram X`。有关属性列表提取的详细信息,请参见下一小节。
|
||
|
||
> 在macOS的Finder中,可以通过右键单击.app目录并选择“显示包内容”来打开。在终端中,您可以直接使用`cd`命令进入目录。
|
||
|
||
2. **从越狱设备获取**:
|
||
|
||
如果您没有原始的IPA文件,则需要一个越狱设备,在该设备上**安装该应用程序**(例如通过App Store)。安装完成后,您需要**从内存中提取应用程序二进制文件并重新构建IPA文件**。由于数字版权管理(DRM)的原因,应用程序二进制文件在存储在iOS设备上时是加密的,因此仅仅从捆绑包中提取它(无论是通过SSH还是Objection)是不足以进行逆向工程的(请阅读下一节)。
|
||
|
||
### 解密(手动)
|
||
|
||
与Android应用程序不同,iOS应用程序的二进制文件**只能被反汇编**而不能被反编译。\
|
||
当应用程序提交到应用商店时,苹果首先验证应用程序的行为,然后使用[**FairPlay**](https://developer.apple.com/streaming/fps/)对二进制文件进行加密,然后才将其发布到应用商店。因此,从应用商店下载的二进制文件是加密的,这增加了逆向工程的复杂性。
|
||
|
||
然而,请注意还有其他**第三方软件可以用于混淆**生成的二进制文件。
|
||
|
||
为了运行加密的二进制文件,设备需要在内存中对其进行解密。然后,可以**从内存中转储解密后的二进制文件**。
|
||
|
||
首先,检查二进制文件是否使用了PIE(位置无关代码)标志:
|
||
```bash
|
||
otool -Vh Original_App #Check the last word of the last line of this code
|
||
Home:
|
||
Mach header
|
||
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
|
||
MH_MAGIC_64 X86_64 ALL 0x00 EXECUTE 47 6080 NOUNDEFS DYLDLINK TWOLEVEL PIE
|
||
```
|
||
如果已经设置,您可以使用脚本[`change_macho_flags.py`](https://chromium.googlesource.com/chromium/src/+/49.0.2623.110/build/mac/change\_mach\_o\_flags.py)来使用python2移除它:
|
||
```bash
|
||
python change_mach_o_flags.py --no-pie Original_App
|
||
otool -Vh Hello_World
|
||
Hello_World:
|
||
Mach header
|
||
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
|
||
MH_MAGIC ARM V7 0x00 EXECUTE 22 2356 NOUNDEFS DYLDLINK TWOLEVEL MH_NO_HEAP_EXECUTION
|
||
```
|
||
现在,由于未设置PIE标志,操作系统将每次在**固定的起始位置**加载程序。为了找到这个**位置**,您可以使用:
|
||
```bash
|
||
otool -l Original_App | grep -A 3 LC_SEGMENT | grep -A 1 __TEXT
|
||
segname __TEXT
|
||
vmaddr 0x00004000
|
||
```
|
||
然后,需要提取需要转储的内存范围:
|
||
```bash
|
||
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
|
||
cmd LC_ENCRYPTION_INFO
|
||
cmdsize 20
|
||
cryptoff 16384
|
||
cryptsize 17416192
|
||
cryptid 0
|
||
```
|
||
**`cryptoff`**的值表示加密内容的起始地址,而**`cryptsize`**表示加密内容的大小。
|
||
|
||
因此,要转储的`起始地址`将是`vmaddr + cryptoff`,而`结束地址`将是`起始地址 + cryptsize`\
|
||
在这种情况下:`起始地址 = 0x4000 + 0x4000 = 0x8000`,而`结束地址 = 0x8000 + 0x109c000 = 0x10a4000`
|
||
|
||
有了这些信息,只需要在越狱设备上运行应用程序,使用gdb(`gdb -p <pid>`)附加到进程并转储内存即可:
|
||
```bash
|
||
dump memory dump.bin 0x8000 0x10a4000
|
||
```
|
||
恭喜!你已经解密了dump.bin中的加密部分。现在**将这个dump传输到你的电脑上,并用解密后的内容覆盖掉加密部分**:
|
||
```bash
|
||
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
|
||
```
|
||
还有一步要完成。应用程序在其元数据中仍然**指示**它是**加密的**,但实际上**并不是**。然后,当执行时,设备将尝试解密已经解密的部分,但会失败。
|
||
|
||
然而,你可以使用像[MachOView](https://sourceforge.net/projects/machoview/)这样的工具来更改这些信息。只需打开二进制文件并将**cryptid**设置为0:
|
||
|
||
![](<../../.gitbook/assets/image (470).png>)
|
||
|
||
### 解密(自动)
|
||
|
||
#### frida-ios-dump
|
||
|
||
你可以使用像[frida-ios-dump](https://github.com/AloneMonkey/frida-ios-dump)这样的工具来**自动去除应用程序的加密**。
|
||
|
||
首先,确保在**Frida-ios-dump**的`dump.py`配置中,当使用**iproxy**时,将其设置为本地主机和端口2222,或者设置为要从中转储二进制文件的设备的实际IP地址和端口。
|
||
|
||
现在,你可以安全地使用该工具来**枚举已安装的应用程序**:
|
||
```bash
|
||
$ python dump.py -l
|
||
PID Name Identifier
|
||
---- --------------- -------------------------------------
|
||
860 Cydia com.saurik.Cydia
|
||
1130 Settings com.apple.Preferences
|
||
685 Mail com.apple.mobilemail
|
||
834 Telegram ph.telegra.Telegraph
|
||
- Stocks com.apple.stocks
|
||
...
|
||
```
|
||
你可以**转储**列出的二进制文件之一:
|
||
```bash
|
||
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
|
||
|
||
Start the target app ph.telegra.Telegraph
|
||
Dumping Telegram to /var/folders/qw/gz47_8_n6xx1c_lwq7pq5k040000gn/T
|
||
[frida-ios-dump]: HockeySDK.framework has been loaded.
|
||
[frida-ios-dump]: Load Postbox.framework success.
|
||
[frida-ios-dump]: libswiftContacts.dylib has been dlopen.
|
||
...
|
||
start dump /private/var/containers/Bundle/Application/14002D30-B113-4FDF-BD25-1BF740383149/Telegram.app/Frameworks/libswiftsimd.dylib
|
||
libswiftsimd.dylib.fid: 100%|██████████| 343k/343k [00:00<00:00, 1.54MB/s]
|
||
start dump /private/var/containers/Bundle/Application/14002D30-B113-4FDF-BD25-1BF740383149/Telegram.app/Frameworks/libswiftCoreData.dylib
|
||
libswiftCoreData.dylib.fid: 100%|██████████| 82.5k/82.5k [00:00<00:00, 477kB/s]
|
||
5.m4a: 80.9MB [00:14, 5.85MB/s]
|
||
0.00B [00:00, ?B/s]Generating "Telegram.ipa"
|
||
```
|
||
完成后,`Telegram.ipa` 文件将在当前目录中创建。您可以通过删除应用程序并重新安装它(例如使用 [**ios-deploy**](https://github.com/ios-control/ios-deploy) `ios-deploy -b Telegram.ipa`)来验证转储的成功。请注意,这仅适用于越狱设备,否则签名将无效。
|
||
|
||
#### flexdecrypt
|
||
|
||
为了从已安装的应用程序中**获取ipa文件**,您还可以使用工具 [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt) 或该工具的包装器 [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac)**。**\
|
||
无论哪种情况,您都需要在设备上**安装flexdecrypt**,可以运行以下命令:
|
||
```markup
|
||
wget https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb
|
||
dpkg -i flexdecrypt.deb
|
||
rm flexdecrypt.deb
|
||
```
|
||
为了使用**flexdump**:
|
||
```bash
|
||
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 #List apps
|
||
flexdump dump Twitter.app #Create .ipa file from app
|
||
```
|
||
#### bagbak
|
||
|
||
又一个基于Frida的应用程序解密工具。需要越狱的iOS设备和[frida.re](https://www.frida.re/)。
|
||
```bash
|
||
bagbak --raw Chrome
|
||
```
|
||
#### r2flutch
|
||
|
||
[**r2flutch**](https://github.com/as0ler/r2flutch) 是一个使用 **radare** 和 **frida** 来 **解密** 和 **转储 iOS 应用程序** 的工具。
|
||
|
||
更多信息请参阅 **github**。
|
||
|
||
## 安装应用程序
|
||
|
||
当您在不使用苹果的应用商店的情况下安装应用程序时,这被称为 **侧载**。有多种侧载的方式,下面将对其进行描述。在 iOS 设备上,实际的安装过程由 **installd 守护进程** 处理,该进程将解压并安装应用程序。为了集成应用程序服务或在 iOS 设备上安装应用程序,所有的 **应用程序必须使用由 Apple 颁发的证书进行签名**。这意味着只有在成功进行代码签名验证后,应用程序才能被安装。然而,在越狱手机上,您可以通过 [**AppSync**](http://repo.hackyouriphone.org/appsyncunified) 来 **绕过这个安全功能**,AppSync 是 Cydia 商店中提供的一个软件包,它包含了许多利用越狱提供的 root 权限执行高级功能的有用应用程序。**AppSync 是一个修补 installd 的插件**,允许安装伪签名的 IPA 包。
|
||
|
||
有不同的方法可以将 IPA 包安装到 iOS 设备上,下面将详细描述这些方法。
|
||
|
||
> 请注意,iTunes 在 macOS Catalina 中不再可用。如果您使用的是较旧版本的 macOS,则仍然可以使用 iTunes,但自 iTunes 12.7 以来,无法安装应用程序。
|
||
|
||
#### Cydia Impactor
|
||
|
||
[Cydia Impactor](http://www.cydiaimpactor.com) 最初是用于越狱 iPhone 的,但已经被重新编写为通过侧载方式对 iOS 设备进行 IPA 包的签名和安装(甚至可以对 Android 设备进行 APK 文件的签名和安装)。Cydia Impactor 可在 Windows、macOS 和 Linux 上使用。[yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/) 上提供了一份逐步指南和故障排除步骤。
|
||
|
||
#### libimobiledevice
|
||
|
||
在 Linux 和 macOS 上,您还可以使用 [libimobiledevice](https://www.libimobiledevice.org),这是一个跨平台的软件协议库和一组用于与 iOS 设备进行本地通信的工具。这使您可以通过执行 ideviceinstaller 来通过 USB 连接安装应用程序。连接是通过 USB 多路复用守护进程 [usbmuxd](https://www.theiphonewiki.com/wiki/Usbmux) 实现的,它在 USB 上提供了一个 TCP 隧道。
|
||
|
||
libimobiledevice 的软件包将在您的 Linux 软件包管理器中提供。在 macOS 上,您可以通过 brew 安装 libimobiledevice:
|
||
```bash
|
||
$ brew install libimobiledevice
|
||
$ brew install ideviceinstaller
|
||
```
|
||
安装完成后,您将获得几个新的命令行工具,例如`ideviceinfo`,`ideviceinstaller`或`idevicedebug`。
|
||
```bash
|
||
# The following command will show detailed information about the iOS device connected via USB.
|
||
$ ideviceinfo
|
||
# The following command will install the IPA to your iOS device.
|
||
$ ideviceinstaller -i iGoat-Swift_v1.0-frida-codesigned.ipa
|
||
...
|
||
Install: Complete
|
||
# The following command will start the app in debug mode, by providing the bundle name. The bundle name can be found in the previous command after "Installing".
|
||
$ idevicedebug -d run OWASP.iGoat-Swift
|
||
```
|
||
#### ipainstaller
|
||
|
||
可以使用[ipainstaller](https://github.com/autopear/ipainstaller)命令行直接在iOS设备上安装IPA文件。将文件通过scp等方式复制到设备上后,可以使用ipainstaller执行IPA文件的文件名:
|
||
```bash
|
||
$ ipainstaller App_name.ipa
|
||
```
|
||
#### ios-deploy
|
||
|
||
在 macOS 上,您还可以使用 **ios-deploy** 工具通过命令行安装 iOS 应用程序。您需要解压缩您的 IPA 文件,因为 ios-deploy 使用应用程序包来安装应用程序。
|
||
```bash
|
||
$ unzip Name.ipa
|
||
$ ios-deploy --bundle 'Payload/Name.app' -W -d -v
|
||
```
|
||
在iOS设备上安装应用程序后,您可以通过添加`-m`标志来直接启动调试,而无需再次安装应用程序。
|
||
```bash
|
||
$ ios-deploy --bundle 'Payload/Name.app' -W -d -v -m
|
||
```
|
||
#### Xcode
|
||
|
||
也可以使用Xcode集成开发环境来安装iOS应用程序,具体步骤如下:
|
||
|
||
1. 启动Xcode
|
||
2. 选择**窗口/设备和模拟器**
|
||
3. 选择连接的iOS设备,然后点击**已安装的应用**中的**+**号。
|
||
|
||
#### 允许在非iPad设备上安装应用程序
|
||
|
||
有时候某个应用程序可能要求在iPad设备上使用。如果你只有iPhone或iPod touch设备,你可以通过将**Info.plist**文件中的**UIDeviceFamily**属性的值更改为**1**来强制应用程序接受在这些设备上安装和使用。
|
||
```markup
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||
<plist version="1.0">
|
||
<dict>
|
||
|
||
<key>UIDeviceFamily</key>
|
||
<array>
|
||
<integer>1</integer>
|
||
</array>
|
||
|
||
</dict>
|
||
</plist>
|
||
```
|
||
需要注意的是,更改此值将破坏IPA文件的原始签名,因此您需要在更新后重新签名IPA,以便在未禁用签名验证的设备上安装它。
|
||
|
||
如果应用程序需要与现代iPad特定的功能,而您的iPhone或iPod较旧,则此绕过可能无效。
|
||
|
||
可以在Apple开发者文档中找到属性[UIDeviceFamily](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple\_ref/doc/uid/TP40009252-SW11)的可能值。
|
||
|
||
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
* 您在**网络安全公司**工作吗?您想在HackTricks中看到您的**公司广告**吗?或者您想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||
* 发现我们的独家[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
||
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
||
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
||
|
||
</details>
|