- 如何通过OpenSSH远程登录到手机
- 如何通过USB登录到手机
- OpenSSH通信原理与USB登录本质
我们经常在Mac的终端上,通过敲一些命令来完成一些操作,iOS和Max OS X都是基于Darwin(苹果的一个基于Unix的开源系统内核)所以iOS中同样支持终端的命令操作,在逆向工程中,我们经常会通过命令来操纵iPhone,为了能够让Mac终端命令行能够作用在iPhone上,我们需要Mac和iPhone建立连接,接下来我们看一下如何去建立连接。
一 如何通过OpenSSH远程登录到手机
步骤一 安装OpenSSH
通过Cydia搜索OpenSSH,然后点击安装(Cydia作者Jay Freeman 写的一个工具)。
步骤二 打开Mac上的终端输入:
ssh [email protected]
192.168.1.5是你手机IP地址,注意你的iPhone要和Mac在同一个局域网内。
输入密码 :alpine
初始密码是固定的登录到手机上来了
看applede-iPhone,就带表登录到手机上了
OK OpenSSH就这简单的三步骤,有些时候,可能会遇到一些问题
ssh: connect to host 192.168.1.5 port 22: Connection refused
出现这个问题去网上搜索吧,我遇到的问题是一值卡在那不动,好长时间返回time out,网上搜说iOS10.0以上本地自带USB连接,不需要Wi-Fi连接,我的机器是iOS10.2,用USB连接是好的。这个Wi-Fi连接不上还是不知道具体原因。
二 如何通过USB登录到手机
因为通过Wi-Fi登录iPhone网络不好的情况下,输入一些终端命令会比较卡,逆向中我们经常用的是USB登录到远程手机,下面我们来了解下该怎么做
步骤一 下载usbmuxd工具包
usbmuxd下载地址:https://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz
步骤二 端口映射
将iPhone的22端口映射到Mac本地的10001(只要不是常用端口,这个可以随便写)端口
xmldeMacBook-Pro:~ xml$ cd /Users/xml/Downloads/usbmuxd-1.0.8\ 2/python-client/
xmldeMacBook-Pro:python-client xml$ python tcprelay.py -t 22:10001
步骤三 登录到手机
xmldeMacBook-Pro:~ xml$ ssh root@localhost -p 10001
到此USB登录就这简单的三部,以后每次我们登录手机,只要执行后两部就可以了。因为命令比较长,又经常用,我们可以封装成一个简单的脚本,方便使用。
1 新建一个usbconnect.sh文件,文件内容就是python-client xml$ python tcprelay.py -t 22:10001
2 新建一个 sshlogin.sh, 文件内容就是步骤三的命令。
3 把这两个文件放到用户根目录下
4 每次登录你先执行 sh usbconnect.sh,在执行是sh sshlogin.sh就可以了
好了,如果你是急于上手开发,那么了解上面的内容就已经足够了,如果还想进一步了解它们的原理细节,那么就请接着往下看。
三 OpenSSH通信原理与USB登录本质
3.1什么是SSH,OpenSSH,SSL,OpenSSL?
1 SSH Secure Shell的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议,使用SSH,可以把所有传输的数据进行加密,"中间人攻击“的方式就不可能实现,能防止DNS欺骗和IP欺骗
2 OpenSSH是SSH协议的免费开源实现,可以通过OpenSSH的方式让Mac远程登录到iPhone
3 SSL Secure Sockets Layer的缩写,是为网络提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密
4 OpenSSH SSL的开源实现,绝大部分HTTPS请求等价于:HTTP+OpenSSL,OpenSSH的加密就是通过OpenSSL完成的。
3.2 SSH的版本
SSH协议一共有两个版本:SSH-1,SSH-2,现在用的比较多的是SSH-2,客户端和服务端本要保持一致才能通信,
查看Mac端SSH版本
xmldeMacBook-Pro:~ xml$ cd /etc/ssh
xmldeMacBook-Pro:ssh xml$ cat ssh_config
查看iPhone手机端SSH版本
applede-iPhone:~ root# cd /etc/ssh
applede-iPhone:/etc/ssh root# ls
moduli ssh_config sshd_config
applede-iPhone:/etc/ssh root# cat ssh_config
3.3 SSH 通信的过程
分为三步
1 建立安全连接
在建立安全连接过程中,服务器会提供自己的身份证明
2 客户端认证
1 密码登录验证
xmldeMacBook-Pro:~ xml$ sh login.sh
root@localhost's password:
2 基于密钥的客户端认证,它是一种免密认证,是最安全的一种认证方式。SSH-2会先尝试这种方式的认证,如果失败,才会采用第一种密码认证的方式,我们来看看怎么做这个免密认证。
1 客户端(Mac)生成公钥和私钥文件~/.ssh/id_rsa.pub ** ** ~/.ssh/id_rsa
xmldeMacBook-Pro:.ssh xml$ cd ~/.ssh
xmldeMacBook-Pro:.ssh xml$ ssh-keygen
xmldeMacBook-Pro:.ssh xml$ ls -l
total 56
-rw-r--r--@ 1 xml staff 230 3 10 2018 config
-rw------- 1 xml staff 1675 2 16 22:38 id_rsa
-rw-r--r-- 1 xml staff 408 2 16 22:38 id_rsa.pub
-rw------- 1 xml staff 1084 2 16 22:10 known_hosts
-rw-r--r-- 1 xml staff 1255 2 16 15:33 known_hosts.old
-rw------- 1 xml staff 3326 3 10 2018 lerpo-GitHub
-rw-r--r-- 1 xml staff 775 3 10 2018 lerpo-GitHub.pub
2 客户端将公钥内容追加到服务器端(iPhone)授权文件(~/.ssh/authorized_keys)的尾部
3 服务器端进行登录认证
mldeMacBook-Pro:.ssh xml$ ssh-copy-id root@localhost -p 10001
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/xml/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@localhost's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '10001' 'root@localhost'"
and check to make sure that only the key(s) you wanted were added.
再登录就不需要密码了
xmldeMacBook-Pro:~ xml$ ssh root@localhost -p 10001
applede-iPhone:~ root#
查看是否加入到了服务器验证文件尾部我们看到下面~/.ssh/authorized_keys与 ~/.ssh/id_rsa.pub内容是一样的
xmldeMacBook-Pro:~ xml$ ssh root@localhost -p 10001
applede-iPhone:~ root# cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChUWSIe2E7w6t7yLQ2ery10mYHPoLdPbEgjC9X7lVaiIT+7YWMz2E50UoI+kcd+Ctr7ScKsPFiKqR24no4neznv3AHFbTOTsRuP3DE7EkrU33+OPWSOSK/dT8W9HcwAlBkxHOBlMc7fAoTLvAFBcL8nvG5AE0GIRqzLKJ5ZMEcAJPB5Mg0PwmNH6oX2/34BZ0BZeYDmINtgkCunmeXRyhIEhpFY/1GtJmUU1oyVO8bDbOYGmNll6lcjWaqS2ou4U7Obr8k84snfO6cXVZ6xz6mkP8keI7rLiq2x2Bjt40Kvht9km4eNOuvL0qobKhzEM1XQXzudY/5m4B38xr7Fi5p [email protected]
applede-iPhone:~ root# exit
logout
Connection to localhost closed.
xmldeMacBook-Pro:~ xml$ cat ~/.ssh/
config id_rsa.pub known_hosts.old lerpo-GitHub.pub
id_rsa known_hosts lerpo-GitHub
xmldeMacBook-Pro:~ xml$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChUWSIe2E7w6t7yLQ2ery10mYHPoLdPbEgjC9X7lVaiIT+7YWMz2E50UoI+kcd+Ctr7ScKsPFiKqR24no4neznv3AHFbTOTsRuP3DE7EkrU33+OPWSOSK/dT8W9HcwAlBkxHOBlMc7fAoTLvAFBcL8nvG5AE0GIRqzLKJ5ZMEcAJPB5Mg0PwmNH6oX2/34BZ0BZeYDmINtgkCunmeXRyhIEhpFY/1GtJmUU1oyVO8bDbOYGmNll6lcjWaqS2ou4U7Obr8k84snfO6cXVZ6xz6mkP8keI7rLiq2x2Bjt40Kvht9km4eNOuvL0qobKhzEM1XQXzudY/5m4B38xr7Fi5p [email protected]
xmldeMacBook-Pro:~ xml$
如果上面操作完成后还是需要密码登录可能是权限不足,需要这样操作。
chmod 755 ~
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized.keys
3 数据传输
3.4 usb登录本质
Mac上有个服务程序usbmuxd,可以将mac的数据通过usb传输到iPhone上去
首先通过SSH登录到我们本地自定义的一个端口,然后在通过usbmuxd通过usb将数据转发到iPhone 22端口上去,那么如何让SSH登录到我们自定义的端口上呢,那就是通过我们上面讲的usbmuxd工具包,这个python工具,虽然我们数据是通过usb传输的,但是我们还是通过SSH协议来进行的,所以哪些SSH连接验证等操作根Wi-Fi连接方式是一样的。