Mac远程登录到iPhone的原理

做iOS逆向的第一步,就是要建立Mac和iPhone之间的连接,这样才能通Mac在终端上输入命令来操作我们的iPhone手机。

注意!先搞清楚两个概念:因为我们是要将Mac远程登录到iPhone上,所以在这里,和平常在公司的项目开发中不太一样,此时客户端是Mac,远程服务器是iPhone

一、建立安全连接
在建立安全连接过程中,服务器会提供自己的身份证明。
安全连接是通过SSH来建立的,而SSH是基于TCP控制传输层协议的,所以连接默认是通过WIFI作为传递媒介,所以服务器和客户端需要保证在同一个WIFI环境。(文章最后面会提供另外一种连接方式,采用USB的形式进行连接,这是后话)

首先服务器端会采用RSA非对称加密在本地生成一对公私钥,保存在/tec/ssh/ssh_host_rsa_key.pub,可以通过iFunBox来查看,基本上长这样🔽

iFunBox截图.png

其中ssh_host_rsa_key.pub为公钥,服务器将公钥等信息发送给客户端。

建立连接操作.png

如果确认是想要连接的服务器(可通过核对SHA256数据来确定),在确认处输入yes,此时客户端会将该公钥保存到本地~/.ssh/known_hosts路径。如果不是自己想要连接的服务器,在确认处输入no,终止连接过程即可。

可以查看一下客户端~/.ssh/known_hosts路径保存的公钥信息,确认是否真的是从服务器传递过来的公钥。具体操作命令如下:

查看客户端本地保存的服务器公钥.png
查看远程服务器保存的公钥.png

对比一下,就可以发现,客户端~/.ssh/known_hosts路径保存的公钥信息确实是从远程服务器/tec/ssh/ssh_host_rsa_key.pub传递过来的。

以上操作,只在第一次和服务器建立连接的时候发生,因为客户端本地已经保存过服务器的公钥,所以后面再和该服务器建立连接的时候,终端不会再提示是否保存公钥信息。也很好理解,因为本地已经有了,所以不需要再保存。
当然如果你后面把这个本地公钥信息删除了,那肯定还是会有提示的。或者服务器身份信息发生了变化(比如遭受中间人攻击),那服务器发送过来的公钥信息肯定会发生变化,那客户端收到公钥后,和本地公钥对比发现不一样,那就会拒绝建立连接。此时的处理方法,看实际情况吧,如果不是中间人攻击,确认是自己想连接的服务器,那就需要先把客户端本地保存过的该服务器对应的公钥数据删除,然后重新建立连接,重复一次前面的步骤。
具体删除操作有两种方法:
方法1、ssh-keygen -R 192.168.1.111 此处192.168.1.111为我的服务器地址
方法2、用vim打开known_hosts,找到服务器地址(192.168.1.111)对应的那一行,用快捷键dd删除即可

二、客户端认证
通常输入正确密码以后,就能成功登录服务器。默认密码是alpine,后面可自己修改。这样连接就建立成功了,终端进入iPhone的root用户状态。

进入root.png

实际上,SSH-2提供了2种常用的客户端认证方式,默认会先尝试“密钥认证”,如果认证失败了,才会尝试“密码认证”。

1、基于密钥的客户端认证
免密码认证,是最安全的一种认证方式。想要使用这种方式的话,需要先搭建密钥认证的环境。
(1)首先,在客户端采用RSA非对称加密生成一对公私钥,放在默认保存的~/.ssh中就好。

//默认生成的是RSA密钥,可以通过-t参数指定密钥类型
ssh-keygen 
客户端生成公私钥.png

(2)将客户端的公钥内容~/.ssh/id_rsa.pub追加到服务器授权文件~/.ssh/authorized_keys的尾部,这样服务器就知道将来这个客户端要登录到我这里。因为将来可能很多客户端想要登录到这个服务器,所以授权文件中可能会保存很多客户端公钥信息,所以这里只能向授权文件尾部追加公钥内容,而不能直接覆盖授权文件。

//把客户端的公钥内容追加到服务器的授权文件(~/.ssh/authorized_keys)尾部
//其中192.168.1.111为服务器主机地址
ssh-copy-id root@192.168.1.111 
追加公钥到授权文件尾部.png

(3)接下来自动进入相应的登录认证,会有一系列的加密和解密操作,如果都成功的话,说明认证是成功的。

免密登录.png

可以查看一下服务器~/.ssh/authorized_keys路径尾部保存的公钥信息,确认是否真的是从客户端~/.ssh/id_rsa.pub传递过来的公钥。具体操作命令如下:

image.png

对比一下,就可以发现,服务器~/.ssh/authorized_keys路径尾部保存的公钥信息确实是从客户端~/.ssh/id_rsa.pub传递过来的。

2、基于密码的客户端认证
使用账号和密码即可认证,如上图"进入root.png"显示。

三、连接成功
至此,我们Mac远程登录到iPhone的操作就完成了。


备注:
声明一点,因为是在~文件夹下操作,所以上述操作都是在解决root用户的登录问题,并不会影响mobile用户。
如果配置了免密码登录后,再次登录还是需要输入密码,那就要考虑权限问题,可能是权限不足引起的,chmod修改一下linux系统权限应该就好了。

chmod 755 ~
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys

通过USB进行SSH登录
在前面的安全连接中有提到,通过USB的方式进行数据传输,下面就来好好解释一下。
iPhone进行SSH通信默认使用的是22端口(端口就是设备对外提供服务的窗口),采用的是TCP协议。简单理解就是,Mac通过SSH远程登录到iPhone的时候,其实登录的是iPhone的22端口。
默认情况下,由于SSH走的是TCP协议,Mac是通过网络连接的方式SSH登录到iPhone,要求iPhone和Mac连接在同一个WIFI下。但是在WiFi登录的情况下,如果网络不好的话,通过终端操作手机的时候,可能会很卡,所以建议采用USB连接的方式进行SSH登录,也就是在终端输入的指令通过USB的方式传输到手机上,这样可以加快传输速度。
Mac自带usbmuxd服务程序,会在开机时自动启动,通过这个usbmuxd就可以将Mac的数据通过USB传输到iPhone。usbmuxd的路径在/Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd下。

1、首先要让Mac通过SSH登录到自己本地的端口(比如登录到本地的10010端口,后续都以该端口为例),即Mac的数据会被传输到自己对应的端口。
这里先登录到Mac自己的11011端口,是因为如果直接登录到iPhone,默认就会通过WIFI直接登录到iPhone的22端口,无法采用USB的方式,所以只能先登录到自己的端口,再考虑通过端口传输出去。

2、再将端口的数据通过USB传输到iPhone的22端口,这个就会用到usbmuxd了,usbmuxd的作用就是将Mac端口上的数据传输到iPhone的端口上。
对于usbmuxd的使用,主要是用到里面的一个python脚本:tcprelay.py。小伙伴们可以通过tcprelay.py链接下载。

(1)将iPhone的22端口(SSH端口)映射到Mac本地的10010端口
python tcprelay.py 22:10010

端口映射.png

(2)新建一个终端窗口,前面的端口映射窗口不要关,建立连接
ssh root@localhost -p 10010

建立连接.png

如果你觉得每次连接都要做这两个操作步骤很麻烦的话,可以考虑写两个脚本文件,用到的时候就跑一下,也是很方便的。在此不多做赘述。

好了,到这里基本上就完成了,感谢小伙伴的耐心观看,建议动手试试,会加深印象。如果文中内容有问题,欢迎指出,一起学习进步,谢谢你😊

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容