《iOS底层原理文章汇总》
上一篇文章《iOS-逆向20-微信抢红包界面项目和越狱》介绍了微信项目(自动抢红包)和越狱,本文介绍越狱和OpenSSH。
1.源
蜜蜂源:apt.cydiami.com
雷锋源:apt.abcydia.com
Bingner:apt.bingner.com
2.安装OpenSSH是为了让电脑能登录手机,手机服务端,电脑客户端
连接手机
通过插件使用Wifi连接手机:ssh 用户名@手机IP地址
$ssh root@192.168.31.231
默认密码:alpine
首次连接会提示
image
iOS 下两个用户:Root、mobile
Root用户:最高权限用户,可以访问任意文件
Mobile用户:普通用户,只能访问改用户目录下文件/var/Mobile
image
image
ps -A查看当前进程
查看微信进程
ps -A |grep WeChat
image
以上登录的是root用户,下面登录mobile用户
image
image
iFunBox只能访问mobile用户的Media文件夹
图片.png
修改账户登录密码
ROOT用户可以修改所有用户的密码
passwd 用户名
输入两次新密码,确认修改,因为是登录状态所以不用输入原始密码。
3.SSH协议
SSH
SSH是一种网络协议,用于计算机之间的加密登录。
1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
OpenSSH
它是一款软件,应用非常广泛。
中间人攻击(Man-in-the-middle attack)
存在一种隐患.如果有人冒充服务器.将生成的虚假公钥 发给客户端.那么它将获得 客户端连接服务器的 密码
image
image
为了防止中间人攻击,Mac在向iPhone首次发起连接请求时,会收到一个iPhone作为服务端生成的公钥Rsa(1024位)的哈希值,Mac拿到这个哈希值后,和服务端官网上贴出的哈希值对比,是否一致,第一次登录的时候用肉眼匹配下,哈希值是否一致,故可以有效避免中间人冒充服务器进行攻击
保存公钥时对比哈希值,为了避免每次都去比对,在本地RSA的key和iP地址进行了绑定保存,将来每次登录时对比下公钥是不是一个,若不是会提醒可能是中间人攻击了,iP地址或RSAkey变了都会有警告提醒
image
image
image
iP地址和RAS的key保存在/Users/cloud/.ssh/known_hosts文件中,再次登录时不会再有保存提示
image
iPhone中也会有这个key,在/etc/ssh/ssh_host_rsa_key.pub文件中
image
同样的iP地址,key发生变化,就是中间人攻击
4.免密码登录&公钥登录
1、用户将自己的公钥存储在服务器iPhone上
2、登录的时候服务器iPhone发送一个随机的字符串
3、Mac电脑通过私钥加密字符串
4、iPhone手机利用客户端的公钥解密字符串
ssh-keygen
image
拷贝到iPhone:ssh-copy-id root@192.168.11.64
ssh root@192.168.11.64免密登录成功
拷贝到手机里面的公钥存储在手机的~/.ssh/authorized_key文件中
image
拷贝进手机的公钥和Mac上生产的id_rsa.pub是同一个key
图片.png
image
5.配置快速连接手机
I.在/Users/cloud/.ssh目录下的config文件中配置快速连接手机
image
image
ssh连接的默认端口是22号端口
6.USB连接
Xcode为什么可以用USB进行连接手机调试,因为System/Library/PrivateFrameworks/MobileDevice.framework/Resources目录下有一个usbmuxd文件,提供了USB接口登录
ssh默认发送请求是22号端口
I.先将ssh默认发送请求的端口22和本地端口12345进行映射
image
图片.png
拔线连接会断开
图片.png
重新USB连接8P手机
ssh -p 12345 root@localhost会提示中间人攻击,为什么呢?
image
中间人攻击是Mac电脑发出的警告,Mac中的.ssh目录下的know_hosts文件中会记录iP地址(端口号)和服务端iPhone返回的公钥,iP地址不变的情况下,都是localhost,换了一个RSA,中间人攻击了。
图片.png
若想登录成功,则干掉know_hosts中的localhost这一条,方能登录成功,登录成功后know_hosts会重新添加一条localhost的绑定
image
7.USB使用shell脚本快捷登录
I.配置端口映射,/Users/cloud/CloudShell目录下新建usbConnect.sh文件,配置
imagepython /Users/cloud/CloudShell/python-client/tcprelay.py -t 22:12345
,执行source ~/.zshrc
II.配置USB快速登录,localhost只能绑定一台手机ssh -p 12345 root@localhost
,另一台手机不能再绑定localhost进行登录,但可用127.0.0.1进行登录
ssh -p 12345 root@127.0.0.1
127.0.0.1 ----> iPhone6 --> ssh -p 12345 root@127.0.0.1
localhost ----> iPhone8p --> ssh -p 12345 root@localhost
在/Users/cloud/CloudShell目录下新建6.sh和8p.sh分别配置ssh -p 12345 root@127.0.0.1和ssh -p 12345 root@localhost
image
III.快速通过USB连接手机,两台手机通过脚本快速登录,三个以上用WiFi登录
A.执行sh usbConnect.sh端口映射
image
B.sh 6.sh/sh 8p.sh
image
8.端口映射工具libimobiledevice
I.安装 brew install libimobiledevice
图片.png
II.端口映射iproxy 12345 22,和python脚本进行端口映射相反,左边表示客户端Mac的端口,右边22表示ssh默认发送请求的端口号
image
python脚本中是用了Mac自带工具usbmuxd文件,进行socket连接
III.执行终端命令或脚本进行连接
图片.png
网友评论