Mac通过SSH连接iPhone

引言

在 iOS 逆向工程中经常会要通过 Mac 访问 iPhone 端数据,我们查资料得知 iPhone 默认使用22端口进行 SSH 通信,采用的是 TCP 协议之后,这事貌似就变得有据可依了。

在 Mac 上安装 iFunBox 、PP助手电脑板软件,用于访问 iPhone 目录中的文件。

需要说明的是,在此之前需要先在越狱过的这台 iPhone 上的 Cydia 里安装几个插件:

1、Apple File Conduit“2"

2、AppSync Unified

  • 软件源:http://apt.25pp.com

  • 作用:可以绕过系统的验证,随意的安装、运行破解的ipa包

3、iFile

4、PP 助手

5、OpenSSH

  • 软件源:http://apt.saurik.com
  • 作用:实现在Mac终端登录访问iPhone设备。
  • 使用步骤:见“OpenSSH Access How-To”

6、Vi IMproved

【注意】

  • 如果通过Cydia安装deb源失败,可以通过网上直接下载相应的deb包,将其放到/var/root/Media/Cydia/AutoInstall(可手动创建目录结构),重启手机。

    • 例如通过导入一下文件安装 iFile。
  • 默认情况下,iOS终端不支持中文输入和显示

    • 新建 ~/.inputrc 文件,文件内容为
      • set convert-meta off:不把中文字符转化为转义序列
      • set output-meta on:允许向终端输出中文字符
      • set meta-flag on :允许向终端输入中文字符
      • set input-meta on

访问方式一:WiFi

  • Mac 通过 Wi-Fi 访问 iPhone 的 22端口。
  • 登录指令:ssh root@10.0.132.44
    • 初始密码:alpine
    • 修改初始密码指令:passwd 123456passwd mobile 123456
  • 退出指令:exit

访问方式二:USB

  • Mac 通过 USB 访问 iPhone 的 22端口。
  • Mac 上自带一个 usbmuxd 服务程序,作用是将数据通过Mac的端口由USB传输到iPhone对应的端口号。
    • usbmuxd 路经:/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd
  • 下载 usbmuxd 工具包: https://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz
  • 运行 tcprelay.py 程序将iPhone的22端口映射到Mac本地的10010端口: python tcprelay.py -t 22: 10010
    • 保持当前映射状态,不能关闭该命令窗口
  • 登录指令:ssh root@localhost -p 10010

SSH、Open SSH、SSL、Open SSL

SSH

Open SSH**

SSL

Open SSL

慢镜头:SSH 通信过程

建立安全连接

  • 客户端发送登录请求到服务器

  • 服务器端发送公钥等信息给客户端

  • 客户端拿到服务器发送过来的公钥后,比对自己 ~/.ssh 路经下的 known_hosts 文件。

    • 首次登录会要求客户端保存公钥等信息。
    • 连接前:
    • 连接后:
    • 我们来到服务器端(iPhone)/etc/ssh 路经下的 ssh_host_rsa_key.pub 文件验证公钥内容
  • 【注意】

    • 如果服务器身份信息发生了变更,而客户端仍需要连接时,可以选择删除之前记录下来的公钥等信息。
      • vim的“dd”指令:删除 known_hosts 文件中的指定记录值。
      • ssh-keygen -R 10.0.132.44 指令:删除 known_hosts 文件中指定ip对应的记录值。
    • 目录结构
      • 客户端 ~/.ssh
      • 服务器端 /etc/ssh

客户端认证

  • 方式一:基于密码的客户端认证
  • 方式二:基于密钥的客户端认证【SSH-2默认】
    • 客户端生成公钥、私钥文件:~/.ssh
      • 公钥:
    • 将客户端公钥内容追加到服务器端 ~/.ssh 路经下的 authorized_keys 授权文件内【自动】
      • authorized_keys
    • 或者【手动】将客户端公钥内容追加到服务器端 ~/.ssh 路经下的 authorized_keys 授权文件内
      • 将客户端 ~/.ssh 路经下的公钥文件 id_rsa.pub 跨平台拷贝到服务器端的 ~/.ssh路经下
    • 服务器端将验证信息发送给客户端
    • 客户端使用自己 ~/.ssh 路经下的 id_rsa 私钥文件进行验证服务器端发送过来的信息。
    • ……
  • 目录结构
    • 客户端 ~/.ssh
    • 服务器端 ~/.ssh
  • 【提示】
    • 如果发现配置了密钥登录后仍服务器需要验证密码,需要在服务器设置文件
      • chmod 755 ~
      • chmod 755 ~/.ssh
      • chmod 644 ~/.ssh/authorized_keys

数据传输

一系列写入、查询操作。

参考文献:

第4章 iOS工具集-OpenSSH

iOS应用逆向工程 第二版沙梓社 吴航(著)