引言
在 iOS 逆向工程中经常会要通过 Mac 访问 iPhone 端数据,我们查资料得知 iPhone 默认使用22端口进行 SSH 通信,采用的是 TCP 协议之后,这事貌似就变得有据可依了。
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/1.png)
在 Mac 上安装 iFunBox 、PP助手电脑板软件,用于访问 iPhone 目录中的文件。
需要说明的是,在此之前需要先在越狱过的这台 iPhone 上的 Cydia 里安装几个插件:
1、Apple File Conduit“2"
- 软件源:http://apt.saurik.com;http://apt.25pp.com (须在 Cydia 里手动添加)
- 作用:可以在Mac端通过iFunBox查看iPhone端的目录结构
2、AppSync Unified
作用:可以绕过系统的验证,随意的安装、运行破解的ipa包
3、iFile
- 软件源:http://apt.thebigboss.org/repofiles/cydia
- 作用:在iPhone端可以随意查看手机的目录结构
4、PP 助手
5、OpenSSH
- 软件源:http://apt.saurik.com
- 作用:实现在Mac终端登录访问iPhone设备。
- 使用步骤:见“OpenSSH Access How-To”
6、Vi IMproved
作用:使用终端在iPhone中编辑文件内容。
【注意】
如果通过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 123456、passwd 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![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/3.png)
- 保持当前映射状态,不能关闭该命令窗口
- 登录指令:
ssh root@localhost -p 10010
SSH、Open SSH、SSL、Open SSL
SSH
- “安全外壳协议”(Secure Shell)
- SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
- <https://baike.baidu.com/item/ssh/10407?fr=aladdin
Open SSH**
- 是SSH协议的免费开源实现。这里就可以通过Open SSH的方式实现Mac远程登录iPhone。
- https://baike.baidu.com/item/OpenSSH/1137789?fr=aladdin
- Open SSH的数据加密就是通过Open SSL完成。
SSL
- “安全套接层”(Secure Sockets Layer)
- 是一种为网络通信提供安全及数据完整性的协议,作用在传输层。
- https://baike.baidu.com/item/ssl/320778?fr=aladdin
Open SSL
- 是SSL协议的免费开源实现。
- 绝大部分HTTPS请求等价于:HTTP+OpenSSL
- https://baike.baidu.com/item/openssl/5454803?fr=aladdin
慢镜头: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![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/11.png)
- 公钥:
- 将客户端公钥内容追加到服务器端
~/.ssh路经下的authorized_keys授权文件内【自动】![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/13.png)
- authorized_keys
- 或者【手动】将客户端公钥内容追加到服务器端
~/.ssh路经下的authorized_keys授权文件内- 将客户端
~/.ssh路经下的公钥文件id_rsa.pub跨平台拷贝到服务器端的~/.ssh路经下
- 将客户端
- 服务器端将验证信息发送给客户端
- 客户端使用自己 ~/.ssh 路经下的 id_rsa 私钥文件进行验证服务器端发送过来的信息。
- ……
- 客户端生成公钥、私钥文件:
- 目录结构
- 客户端
~/.ssh - 服务器端
~/.ssh
- 客户端
- 【提示】
- 如果发现配置了密钥登录后仍服务器需要验证密码,需要在服务器设置文件
chmod 755 ~chmod 755 ~/.sshchmod 644 ~/.ssh/authorized_keys
- 如果发现配置了密钥登录后仍服务器需要验证密码,需要在服务器设置文件
数据传输
一系列写入、查询操作。
参考文献:
第4章 iOS工具集-OpenSSH
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/2.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/4.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/5.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/6.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/7.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/8.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/9.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/10.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/12.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/14.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/15.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/16.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/17.png)
![[100][100]](/2018/05/11/Mac通过SSH连接iPhone/18.png)


