iOS逆向需要了解的OpenSSH-手机登录
二、 连接手机
2.1 wifi
登录查看手机
通过 OpenSSH
插件使用 WIFI
链接手机, 在 mac 终端输入格式为: ssh 用户名@手机IP
ssh root@192.168.2.186复制代码
在这里 手机是服务端, 电脑是客户端
OpenSSH
是让手机开启SSH
登录服务。
默认密码:
alpine
首次提示会出现保存提示, 需要输入 yes
保存后继续
➜ ~ ssh root@192.168.2.186 The authenticity of host '192.168.2.186 (192.168.2.186)' can't be established. RSA key fingerprint is SHA256:Ae5Y7TUos3lIHFOyPSy4/HcQmYmcjeN4oxYI4goC7NBWqaf. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes复制代码
ps: 这里其实是提示公钥key 的hash值让验证有没有被篡改的。
输入密码: alpine
(默认的) , 输入之后就登录成功了:
root@192.168.2.186's password: iPhone-XS-Max:~ root#复制代码
这样就进入手机的 root
环境了, 手机还还有个 mobile
用户, 这个权限有限, sh mobile
就切换成了, (还是在 root
权限下操作的吧)
2.2 查看文件目录
在 root
目录下可以看到系统文件如下, 还可以通过 cd /
进入根目录:
iPhone-XS-Max:~ root# ls Library/ Media/ iPhone-XS-Max:~ root# cd / iPhone-XS-Max:/ root# ls Applications/ Developer/ Library/ System/ User@ bin/ boot/ cores/ dev/ etc@ lib/ mnt/ private/ sbin/ tmp@ usr/ var@ iPhone-XS-Max:/ root#复制代码
还可以查看手机的应用列表"
iPhone-XS-Max:/ root# cd Applications/ iPhone-XS-Max:/Applications root# ls AXUIViewService.app/ FieldTest.app/ SLGoogleAuth.app/ AccountAuthenticationDialog.app/ FindMy.app/ SLYahooAuth.app/ ActivityMessagesApp.app/ FindMyiPhone.app/ SMS\ Filter.app/复制代码
通过 ps -A
查看手机当前的进程,
你想查看手机上某个 app
的安装目录(以微信为例: 需要先把微信运行在前台): ps -A | grep WeChat
iPhone-XS-Max:/Applications root# ps -A PID TTY TIME CMD 1 ?? 5:33.67 /sbin/launchd 299 ?? 1:46.48 /usr/libexec/substituted 300 ?? 0:00.00 (amfid) 376 ?? 0:00.00 /usr/libexec/amfid 387 ?? 0:00.30 /System/Library/PrivateFrameworks/AppleCredentialManager.framework/AppleCredentialManagerDaemon ---此处省略若干--- 33511 ?? 0:00.08 /usr/libexec/gpsd 33514 ?? 0:00.17 /System/Library/PrivateFrameworks/MobileBackup.framework/backupd 33030 ttys000 0:00.07 -sh 33521 ttys000 0:00.02 ps -A ---这里分行看的更清除--- iPhone-XS-Max:/Applications root# ps -A | grep WeChat 815 ?? 2560:27.65 /var/containers/Bundle/Application/0FBC53D3-FEDF-464D-A855-7A32CC595764/WeChat.app/WeChat 33506 ?? 0:03.75 /var/containers/Bundle/Application/0FBC53D3-FEDF-464D-A855-7A32CC595764/WeChat.app/WeChat 33525 ttys000 0:00.02 grep WeChat iPhone-XS-Max:/Applications root#复制代码
这个时候 MachO
文件路径就找到了。
2.3 退出手机查看
control
+d
或者 exit
就可以退出登录了
iPhone-XS-Max:/Applications root# exit logout Connection to 192.168.2.186 closed.复制代码
2.4 用户
iOS
系统下有两个用户:root
、mobile
。
root
:最高权限用户,可以访问任意文件.mobile
:普通用户,只能访问改用户目录下文件/var/Mobile
mobile
用户在自己的目录下可以创建文件,在根目录下没有权限:
root
用户就可以的, 就测试了
2.5 修改用户密码
root
用户可以修改所有用户的密码。passwd
命令修改密码:passwd 用户名
输入两次新密码,确认修改。因为是登录状态所以不用输入原始密码。
ps: root
用户修改 mobile
用户密码:
~ ssh iPhone-XS-Max:~ root# passwd mobile Changing password for mobile. New password: Retype new password: iPhone-XS-Max:~ root#复制代码
一般不推荐修改密码,直接配置免密登录就好了。如果修改密码后忘记了那么重新安装就好了。
2.6 密钥保存验证
通过 1.3 SSH
登录过程我们知道在首次登录的时候会提示验证公钥的 hash
值,并且保存公钥到 ~/.ssh
目录下的 known_hosts
中,那么公私钥手机中也应该是有的。
进入手机 cd /etc/ssh
目录:
iPhone-XS-Max:~ root# cd /etc/ssh iPhone-XS-Max:/etc/ssh root# ls moduli ssh_host_dsa_key ssh_host_rsa_key sshd_config ssh_config ssh_host_dsa_key.pub ssh_host_rsa_key.pub iPhone-XS-Max:/etc/ssh root#复制代码
可以看到 ssh_host_rsa_key
的公私钥。这也就验证了上面的登录过程。
对比可以看到. 如果 IP地址
改变了就无法进行访问了, 就会出现中间人攻击的提示了
2.7 免密登陆(公钥登录)
2.5.1 免密登录原理
免密码登录也称公钥登录
,原理就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的直接允许登录不再要求密码。
2.5.2 免密登录配置
.客户端在
~/.ssh/
目录下生成公私钥ssh-keygen:
一路回车不设置密码(如果设置密码虽然免密登录了,但是每次都要输rsa的密码)。
拷贝公钥给
SSH
服务器:ssh-copy-id 用户名@服务器IP
, 拷贝的时候需要输入root
账户的密码
这个时候再登录就不需要输入密码了:
~ ssh root@192.168.2.186 iPhone-XS-Max:~ root#复制代码
ssh-copy-id
可以通过 -i
指定文件。某些系统通过指定 -i
会无效。(虽然拷贝成功,但是验证的是 ssh-copy-id
自己生成的 key
)。
3.拷贝的公钥在服务器 ~/.ssh/authorized_keys
中:
在某些版本中 ssh-copy-id
不需要我们生成公钥,该命令会自己生成公私钥进行拷贝。如果遇见自己生成的 公钥 key 和和拷贝到authorized_keys
中的对不上那么很可能是这个问题。
2.8 配置快捷登录
加入我们有多台手机,或者并不想输入ip那么麻烦的去登录。在 ~/.ssh
下创建一个 config
文件,对 ssh
登录配置别名:
Host iPhone7 Hostname 172.20.10.11 User root Port 22复制代码
使用:
~ ssh iPhoneXsMax iPhone-XS-Max:~ root#复制代码
2.9 SSH其它操作
删除保存的服务器地址的key:ssh-keygen –R 服务器IP地址(当SSH登录手机,手机就是服务器)
know_hosts
文件:用于保存SSH
登录服务器所接受的key
,在系统~/.ssh
目录ssh_host_rsa_key.pub
文件:作为SSH
服务器发送给连接者的key
,在系统/etc/ssh
目录中config
文件:在~/.ssh
目录下创建一个config
文件。内部可以配置ssh
登录的别名。
作者:Keya
链接:https://juejin.cn/post/7023660093996531720