iOS逆向工程(二):Mac远程登录iPhone

Mac远程登录iPhone

一、如何远程登录iPhone呢?
    1. 在逆向的过程中,我们经常需要用命令行来操纵iPhone,所以我们需要Mac与iPhone之间建立连接。
    1. 为了保证Mac和iPhone之间连接的安全,我们用到了SSHSSH全称是Secure Shell,意思是”安全外壳协议“,这是一种为远程登录提供安全保障的协议。
    1. 使用SSH,可以把所有传输的数据进行加密,可以防止DNS欺骗和IP欺骗,相当于为我们的传输套上了一层外壳,保障我们的数据传输安全,如下图所示


      SSH为传输套了一层壳,保障传输安全
    1. SSH只是一种协议,我们并不能直接用,想用的话,得用OpenSSH工具,OpenSSH是基于SSH协议的免费开源实现,我们可以通过在手机上安装OpenSSH工具,来用Mac远程登录到iPhone上
    1. 在越狱手机的Cydia应用中,搜索OpenSSH,就可以下载安装了
二、如何使用OpenSSH
    1. 保证Mac和iPhone连着同一个WiFi(因为SSH是通过TCP协议通讯的,所以要Mac和iPhone在同一个局域网下)
    1. 保证手机上安装好了OpenSSH工具(在越狱手机的Cydia应用中,搜索OpenSSH就可以下载安装了)
    1. 在Mac的终端里,输入ssh 账户名@服务器IP地址,就可以登录了,如下图所示,登录成功后,就可以使用命令操纵iPhone了。(这里的服务器就是指手机)
      ssh root@手机IP地址
    1. 要注意的几个问题:
    • (1). iOS下有两个默认账户:root和mobile,root是最高权限用户,mobile是普通权限用户,一般我们使用root账户,两个账户的默认密码都是alpine

    • (2). 第一次登录的时候,会让你保存公钥,输入yes保存即可

    • (3). 默认密码是alpine,我们也可以通过passwd命令,修改密码,如下所示,在root账户下,输入passwd和新密码,就修改了root账户的密码了。

      在root账户下,修改密码

    • (4). 退出命令是exit,登录到iPhone后,想退出登录就可用exit命令

    • (5). 手机的IP地址,可以在设置->无线局域网->点击已连WiFI的后面的感叹号->IP地址中查看

三、使用SSH密钥登录,就可以免密码登录啦
    1. SSH的登录方式分为:基于密码的客户端认证(就是使用账号密码登录)、基于密钥的客户端认证(就是使用密钥登录,不需要账号密码,最安全的一种方式)
    1. 密钥登录,其实就是在客户端的~/.ssh目录生成一个公钥和私钥,然后把客户端的公钥追加到服务器端~/.ssh/authorized_keys文件的最后就可以了,如下图所示
    1. 在Mac的终端依次输入以下三条命令,就可以免密码登录了
cd ~/.ssh          首先cd到.ssh目录下
ssh-keygen         然后用这条命令,一路敲回车,就可以自动生成RSA的公钥和私钥
ssh-copy-id root@服务器IP地址  最后将客户端的公钥追加到~/.ssh/authorized_keys文件最后就可以了
    1. 如果配置了免密码登录,还是需要输入密码,可能是服务器端文件权限的问题,依次输入以下命令,设置文件权限即可
chmod 755 ~
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
四、为了加快传输速度,也可以用USB的方式登录到iPhone
    1. SSH的数据传输方式有两种,一种是WiFi传输,另一种是USB传输。默认走的时候TCP协议,也就是WiFi传输数据,为了加快传输速度,我们可以使用USB的方式来传输。
    1. iPhone默认是使用22端口进行SSH通讯,以前我们都是使用WiFi把数据传输到iPhone22端口的。
    1. Mac上有个服务程序usbmuxd(它会开机自启动的),用它可以将Mac的数据通过USB传输到iPhone,如下图所示:


    1. 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
    1. 如果想要远程拷贝文件,可以用scp -P 本地端口号 本地文件路径 root@localhost:服务器文件地址命令,例如:scp -P 10010 ~/Desktop/1.txt root@localhost:~/TXT,注意scp的端口号参数是大写的P
五、用Shell脚本,将常用命令脚本化
    1. 使用SSH的USB方式登录手机时,每次都要输入以下相同的命令,非常麻烦
cd 下载好的文件目录/usbmuxd-1.0.8/python-client 
python tcprelay.py -t 22:10010 
新开一个命令行窗口,输入下面的命令
ssh -p 10010 root@localhost
    1. 我们可以将上述命令写到两个Shell脚本中,例如写到usb.sh和login.sh脚本中,以后每次调用Shell脚本就可以了,如下所示,是不是非常方便呢
sh usb.sh
新开一个命令行
sh login.sh
    1. 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,保存并退出
    1. login.sh脚本的编写方式如下:
1.新开一个命令行
2.vim login.sh
3.按i进入插入模式,将下面的命令,复制进去
ssh -p 10010 root@localhost
4.按esc,输入:wq,保存并退出
    1. 以后每次需要以USB的方式SSH到iPhone,就可以使用usb.sh和login.sh脚本了,命令都不用记忆了,非常方便

❌,

登录是出现如下提示:

ssh [email protected].***.**

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ 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 [email protected]
kex_exchange_identification: read: Connection reset by peer

解决方法->手机端安装OpenSSH

❌,越狱掉了会报
gndeMacBook-Pro:.ssh gn$ ssh -p 10010 [email protected]
`kex_exchange_identification: Connection closed by remote host`
解决方法->[重新越狱](https://www.i4.cn/news_detail_37413.html)

你可能感兴趣的:(iOS逆向工程(二):Mac远程登录iPhone)