在逆向工程中,我们经常需要通过Mac来操作iPhone。在Mac上,我们经常在终端通过敲一些命令行来完成一些操作,而由于iOS和Mac OS X都是基于Darwin(苹果的一个基于Unix的开源系统内核),所以iOS中同样支持终端的命令行操作,因此,我们可以在Mac上使用终端来操作iPhone。
为了实现上述的功能,我们得让Mac和iPhone建立连接,一般可以通过Mac远程登录到iPhone的方式建立连接,我们通常使用OpenSSH方式来实现这种远程登录。
什么是OpenSSH呢
OpenSSH是SSH协议的免费开源实现。
什么是SSH
SSH是Secure Shell的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议。使用SSH,可以把所有传输的数据进行加密,“中间人”攻击方式就不可能实现,能防止DNS欺骗和IP欺骗。
SSH协议一共2个版本,SSH-1和SSH-2,现在用的比较多的是SSH-2,客户端和服务端版本要保持一致才能通信。
我们可以查看SSH版本,只要查看配置文件的Protocol字段值就可以。客户端的配置文件在/etc/ssh/ssh_config路径下,服务端端的配置文件在/etc/ssh/sshd_conf路径下。
由于我们此处Mac是客户端,iPhone 是服务器,所以Mac查看/etc/ssh/ssh_config文件的Protocol字段值,iPhone需要查看/etc/ssh/sshd_conf文件的Protocol字段值。
SSH的通信过程
SSH的通信过程可以分为3大主要阶段
-
建立安全连接
在建立安全连接过程中,服务器会提供自己的身份证明。例如服务器发送公钥等信息给客户端,如果客户端并无服务器端的公钥信息,就会询问是否连接此服务器。此时需要客户端作出相应的回应,当然我们这里都是选择yes。
在建立安全连接过程中,可能会遇到错误信息提醒服务器的身份信息发生了变更。如果确定要连接此服务器,使用命令(ssh-keygen -R 服务器IP地址
)