iOS逆向之SSH:Mac远程登录iPhone

2021-02-25  本文已影响0人  张聪_2048

前言

我们经常在Mac的终端上,通过敲一些命令行来完成一些操作,iOS和Mac OS X都是基于Darwin(苹果的一个基于Unix的开源系统内核),所以iOS中同样支持终端的命令行操作,在逆向工程中,我们经常会通过命令行来操纵iPhone。为了能够让Mac终端中的命令行能作用在iPhone上,我们得让Mac和iPhone建立连接,通过Mac远程登录到iPhone的方式建立连接

1、Mac远程登录到iPhone.png

一、SSH和OpenSSH

SSH

SSH:Secure Shell的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议。使用SSH,可以把所有传输的数据进行加密,“中间人”攻击方式就不可能实现,能防止DNS欺骗和IP欺骗。

2、SSH介绍.png

OpenSSH

OpenSSH 是SSH协议的免费开源实现,可以通过OpenSSH的方式让Mac远程登录到iPhone

二、通过Wi-Fi建立连接

1、连接步骤

在iPhone上通过Cydia安装OpenSSH工具(软件源http://apt.saurik.com) 。OpenSSH的具体使用步骤可以查看Description中的描述。

3、通过Cydia安装OpenSSH工具.png 4、实际效果.png

登录成功后就可以使用终端命令行操作iPhone,退出登录命令是exit

2、root、mobile账户

iOS下有2个常用账户:root、mobile

最好修改一下root和mobile用户的登录密码(登录root账户后,分别通过passwdpasswd mobile完成)

5、示意图.png

3、SSL和OpenSSL

很多人会将SSH、OpenSSH、SSL、OpenSSL搞混

4、SSH的版本

SSH协议一共2个版本:SSH-1、SSH-2。现在用的比较多的是SSH-2,客户端和服务端版本要保持一致才能通信

查看SSH版本(查看配置文件的Protocol字段)

三、SSH的通信过程

SSH的通信过程可以分为3大主要阶段:

1、建立安全连接

在建立安全连接过程中,服务器会提供自己的身份证明

6、服务器发送公钥等信息给客户端.png

如果客户端并无服务器端的公钥信息,就会询问是否连接此服务器

7、询问连接服务器.png

2、服务器身份信息变更

在建立安全连接过程中,可能会遇到以下错误信息:提醒服务器的身份信息发生了变更

8、服务器身份信息变更.png

如果确定要连接此服务器,删除掉之前服务器的公钥信息就行

ssh-keygen -R 服务器IP地址

或者直接打开known_hosts文件删除服务器的公钥信息就行

vim ~/.ssh/known_hosts

3、SSH的客户端认证方式

4、SSH - 基于密钥的客户端认证

9、SSH - 基于密钥的客户端认证.png 10、生成公私钥.png

注意:由于是在~文件夹下操作,所以上述操作仅仅是解决了root用户的登录问题(不会影响mobile用户)。之后再次登录就无需再次输入密码了

11、客户端的公钥内容追加到服务器的授权文件.png

四、通过USB建立连接

1、22端口

端口就是设备对外提供服务的窗口,每个端口都有个端口号(范围是0~65535,共2^16个)。有些端口号是保留的,已经规定了用途,比如:

iPhone默认是使用22端口进行SSH通信,采用的是TCP协议

12、使用22端口号进行SSH通信.png

2、通过USB进行SSH登录

默认情况下,由于SSH走的是TCP协议,Mac是通过网络连接的方式SSH登录到iPhone,要求iPhone连接WiFi。为了加快传输速度,也可以通过USB连接的方式进行SSH登录。

Mac上有个服务程序usbmuxd(它会开机自动启动),可以将Mac的数据通过USB传输到iPhone
/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd

13、通过USB进行SSH登录.png

1)下载usbmuxd工具包(下载v1.0.8版本,主要用到里面的一个python脚本:tcprelay.py
https://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz

2)将iPhone的22端口(SSH端口)映射到Mac本地的10010端口。不一定非要10010端口,只要不是保留端口就行.

14、将iPhone的端口映射到mac端口.png

3)端口映射完毕后,以后如果想跟iPhone的22端口通信,直接跟Mac本地的10010端口通信就可以了

15、连接本地端口.png

可能出现的问题:kex_exchange_identification: read: Connection reset by peer
我这是因为USB连接手机没连接上导致的

4)usbmuxd会将Mac本地10010端口的TCP协议数据,通过USB连接转发到iPhone的22端口

5)远程拷贝文件也可以直接跟Mac本地的10010端口通信

3、sh脚本文件

我们可以将经常执行的一系列终端命令行放到sh脚本文件中(shell),然后执行脚本文件。
如开启USB连接,可编写如下的脚本文件:

16、脚本执行.png

sh、bash、source命令更多介绍

上一篇 下一篇

猜你喜欢

热点阅读