iOS逆向工程(二):Mac远程登录iPhone
2020-10-16 本文已影响0人
冰雨9527
Mac远程登录iPhone
一、如何远程登录iPhone呢?
- 在逆向的过程中,我们经常需要用命令行来操纵iPhone,所以我们需要Mac与iPhone之间建立连接。
- 为了保证Mac和iPhone之间连接的安全,我们用到了
SSH
,SSH
全称是Secure Shell
,意思是”安全外壳协议“,这是一种为远程登录提供安全保障的协议。
- 为了保证Mac和iPhone之间连接的安全,我们用到了
-
使用SSH,可以把所有传输的数据进行加密,可以防止DNS欺骗和IP欺骗,相当于为我们的传输套上了一层外壳,保障我们的数据传输安全,如下图所示
SSH为传输套了一层壳,保障传输安全
-
-
SSH
只是一种协议,我们并不能直接用,想用的话,得用OpenSSH
工具,OpenSSH
是基于SSH协议的免费开源实现,我们可以通过在手机上安装OpenSSH
工具,来用Mac远程登录到iPhone上
-
- 在越狱手机的
Cydia
应用中,搜索OpenSSH
,就可以下载安装了
- 在越狱手机的
二、如何使用OpenSSH
- 保证Mac和iPhone连着同一个WiFi(因为SSH是通过TCP协议通讯的,所以要Mac和iPhone在同一个局域网下)
- 保证手机上安装好了
OpenSSH工具
(在越狱手机的Cydia
应用中,搜索OpenSSH
就可以下载安装了)
- 保证手机上安装好了
- 在Mac的终端里,输入
ssh 账户名@服务器IP地址
,就可以登录了,如下图所示,登录成功后,就可以使用命令操纵iPhone了。(这里的服务器就是指手机)
ssh root@手机IP地址
- 在Mac的终端里,输入
-
- 要注意的几个问题:
-
(1). iOS下有两个默认账户:
root和mobile
,root是最高权限用户,mobile是普通权限用户,一般我们使用root账户
,两个账户的默认密码都是alpine
-
(2). 第一次登录的时候,会让你保存公钥,输入
yes
保存即可 -
(3). 默认密码是
在root账户下,修改密码alpine
,我们也可以通过passwd
命令,修改密码,如下所示,在root账户下,输入passwd
和新密码,就修改了root账户的密码了。
-
(4). 退出命令是
exit
,登录到iPhone后,想退出登录就可用exit命令 -
(5). 手机的IP地址,可以在设置->无线局域网->点击已连WiFI的后面的感叹号->IP地址中查看
三、使用SSH密钥登录,就可以免密码登录啦
- SSH的登录方式分为:
基于密码的客户端认证
(就是使用账号密码登录)、基于密钥的客户端认证
(就是使用密钥登录,不需要账号密码,最安全的一种方式)
- SSH的登录方式分为:
- 密钥登录,其实就是在客户端的
~/.ssh
目录生成一个公钥和私钥
,然后把客户端的公钥追加到服务器端~/.ssh/authorized_keys
文件的最后就可以了,如下图所示
- 密钥登录,其实就是在客户端的
- 在Mac的终端依次输入以下三条命令,就可以免密码登录了
cd ~/.ssh 首先cd到.ssh目录下
ssh-keygen 然后用这条命令,一路敲回车,就可以自动生成RSA的公钥和私钥
ssh-copy-id root@服务器IP地址 最后将客户端的公钥追加到~/.ssh/authorized_keys文件最后就可以了
- 如果配置了免密码登录,还是需要输入密码,可能是服务器端文件权限的问题,依次输入以下命令,设置文件权限即可
chmod 755 ~
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
四、为了加快传输速度,也可以用USB的方式登录到iPhone
- SSH的数据传输方式有两种,一种是WiFi传输,另一种是USB传输。默认走的时候TCP协议,也就是WiFi传输数据,为了加快传输速度,我们可以使用USB的方式来传输。
- iPhone默认是使用22端口进行SSH通讯,以前我们都是使用WiFi把数据传输到iPhone22端口的。
-
Mac上有个服务程序usbmuxd(它会开机自启动的),用它可以将Mac的数据通过USB传输到iPhone,如下图所示:
-
- USB登录的整个流程是这样的:
- (1). 将Mac的10010端口与iPhone的22端口绑定,这一步,需要用到一个Python脚本,下载地址在这里,下载好以后,使用下面的命令。(想要保持端口映射状态,不能关闭此命令行,想要执行其他命令,需要重新开一个命令行,快捷键Command+T)
cd 下载好的文件目录/usbmuxd-1.0.8/python-client
python tcprelay.py -t 22:10010
- (2). 端口映射完毕后,想要跟iPhone的22端口通讯,就直接跟Mac本地的10010端口通信就可以了,新开一个命令行后,SSH登录到Mac本地的10010端口,命令如下
ssh -p 10010 root@localhost
- 如果想要远程拷贝文件,可以用
scp -P 本地端口号 本地文件路径 root@localhost:服务器文件地址
命令,例如:scp -P 10010 ~/Desktop/1.txt root@localhost:~/TXT
,注意scp的端口号参数是大写的P
- 如果想要远程拷贝文件,可以用
五、用Shell脚本,将常用命令脚本化
- 使用SSH的USB方式登录手机时,每次都要输入以下相同的命令,非常麻烦
cd 下载好的文件目录/usbmuxd-1.0.8/python-client
python tcprelay.py -t 22:10010
新开一个命令行窗口,输入下面的命令
ssh -p 10010 root@localhost
- 我们可以将上述命令写到两个Shell脚本中,例如写到
usb.sh和login.sh脚本
中,以后每次调用Shell脚本就可以了,如下所示,是不是非常方便呢
- 我们可以将上述命令写到两个Shell脚本中,例如写到
sh usb.sh
新开一个命令行
sh login.sh
-
usb.sh
脚本的编写方式如下:
-
1.打开命令行
2.vim usb.sh
3.按i进入插入模式,将下面两条命令,复制进去
cd 下载好的文件目录/usbmuxd-1.0.8/python-client
python tcprelay.py -t 22:10010
4.按esc,输入:wq,保存并退出
-
login.sh
脚本的编写方式如下:
-
1.新开一个命令行
2.vim login.sh
3.按i进入插入模式,将下面的命令,复制进去
ssh -p 10010 root@localhost
4.按esc,输入:wq,保存并退出
- 以后每次需要以USB的方式SSH到iPhone,就可以使用
usb.sh和login.sh
脚本了,命令都不用记忆了,非常方便
- 以后每次需要以USB的方式SSH到iPhone,就可以使用
❌,
登录是出现如下提示:
ssh root@192.168.***.**
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
76:fb:b3:70:14:48:19:d6:29:f9:ba:42:46:be:fb:77.
Please contact your system administrator.
Add correct host key in /home/fante/.ssh/known_hosts to get rid of this
message.
Offending key in /home/fante/.ssh/known_hosts:68
RSA host key for 192.168.***.** has changed and you have requested strict checking.
Host key verification failed.
server端密码或是其他发生改变的时候。
解决方法->一般就需要删除~/.ssh/known_hosts的东西,然后再登录即可。
❌,错误提示信息`Failure: Address already in use `
(背景:启动项目,发现地址已经被使用)
1.查看端口被哪个程序占用
sudo lsof -i tcp:port
如: sudo lsof -i tcp:端口号
2.看到进程的PID,可以将进程杀死。
kill PID(此处是pid号)
如:kill 30118
❌,没安OpenSSH会报
gndeMacBook-Pro:.ssh gn$ ssh -p 10010 root@127.0.0.1
kex_exchange_identification: read: Connection reset by peer
解决方法->手机端安装OpenSSH
❌,越狱掉了会报
gndeMacBook-Pro:.ssh gn$ ssh -p 10010 root@127.0.0.1
`kex_exchange_identification: Connection closed by remote host`
解决方法->[重新越狱](https://www.i4.cn/news_detail_37413.html)