跳过内容

MASTG-TECH-0052: 访问设备 Shell

测试应用程序时最常见的操作之一是访问设备 shell。在本节中,我们将了解如何通过有/无 USB 电缆从主机远程访问 iOS shell,以及如何从设备本身本地访问。

远程 Shell

与可以使用 adb 工具轻松访问设备 shell 的 Android 相比,在 iOS 上,您只能选择通过 SSH 访问远程 shell。 这也意味着您的 iOS 设备必须越狱才能从主机连接到它的 shell。 在本节中,我们假设您已正确越狱您的设备,并且已安装 Sileo 或 Zebra。 在本指南的其余部分,我们将参考 Sileo,但相同的包应该在 Zebra 中可用。

为了启用对 iOS 设备的 SSH 访问,您可以安装 OpenSSH 包。 安装后,请确保将两个设备连接到同一个 Wi-Fi 网络,并记下设备 IP 地址,您可以在设置 -> Wi-Fi 菜单中找到该地址,然后单击您连接到的网络的 info 图标。

您现在可以通过运行 ssh root@<device_ip_address> 访问远程设备的 shell,这将以 root 用户身份登录。

$ ssh [email protected]
[email protected]'s password:
iPhone:~ root#

按 Control + D 或键入 exit 退出。

通过 SSH 访问 iOS 设备时,请考虑以下事项:

  • 默认用户是 rootmobile
  • 两者的默认密码都是 alpine

请记住更改用户 rootmobile 的默认密码,因为同一网络上的任何人都可以在您的设备上找到 IP 地址,并通过众所周知的默认密码进行连接,这将使他们获得对您的设备的 root 访问权限。

如果您忘记了密码并想将其重置为默认密码 alpine

  1. 在越狱的 iOS 设备上编辑文件 /private/etc/master.password(使用如下所示的设备上 shell)
  2. 找到以下行
 root:xxxxxxxxx:0:0::0:0:System Administrator:/var/root:/bin/sh
 mobile:xxxxxxxxx:501:501::0:0:Mobile User:/var/mobile:/bin/sh
  1. xxxxxxxxx 更改为 /smx7MYTQIi2M(这是哈希密码 alpine
  2. 保存并退出

通过 USB 通过 SSH 连接到设备

在真正的黑盒测试中,可能无法获得可靠的 Wi-Fi 连接。 在这种情况下,您可以使用 Usbmuxd 通过 USB 连接到您设备的 SSH 服务器。

通过安装和启动 iproxy 将 macOS 连接到 iOS 设备

$ iproxy 2222 22
waiting for connection

上面的命令将 iOS 设备上的端口 22 映射到 localhost 上的端口 2222。 如果您不想在每次想通过 USB 进行 SSH 连接时都运行该二进制文件,您还可以使 iproxy 在后台自动运行

通过在新终端窗口中使用以下命令,您可以连接到设备

$ ssh -p 2222 mobile@localhost
mobile@localhost's password:
iPhone:~ mobile%

设备上 Shell 应用程序

虽然与远程 shell 相比,通常使用设备上 shell(终端模拟器)可能非常乏味,但在出现网络问题或检查某些配置的情况下,它可能会证明很方便。 例如,您可以为此目的通过 Sileo 安装 NewTerm 2(在撰写本文时,它支持 iOS 10.0 到 16.2)。

此外,一些越狱会出于安全原因明确禁用传入 SSH。 在这些情况下,拥有一个设备上 shell 应用程序非常方便,您可以使用它首先使用反向 shell 从设备 SSH 出去,然后从主机连接到它。

通过运行命令 ssh -R <remote_port>:localhost:22 <username>@<host_computer_ip> 可以通过 SSH 打开反向 shell。

在设备上 shell 应用程序上运行以下命令,并在询问时输入主机 mstg 用户的密码

ssh -R 2222:localhost:22 [email protected]

在您的主机上运行以下命令,并在询问时输入 iOS 设备 root 用户的密码

ssh -p 2222 root@localhost