iOS逆向之OpenSSH登录iPhone
前言
上篇文章介绍了iOS逆向中常用的一些软件,其中就介绍了OpenSSH可以帮助我们在Mac或windows上以SSH的方式安全登录iPhone设备。
OpenSSH介绍
说到OpenSSH需要先介绍SSH。SSH(Secure Shell)是建立在应用层基础基础上的安全协议。用于计算机之间的加密登录,可以在不安全的网络中为网络服务器提供安全的传输环境。SSH最初是UNIX系统上的程序,后来迅速扩展到其他操作系统平台。OpenSSH是对SSH协议的开源实现。笔者系统时iOS13.5,在Cydia中搜索并安装OpenSSH即可。
SSH协议一共2个版本SSH-1、SSH-2 现在用的比较多的是SSH-2,客户端和服务端版本要保持一致才能通信 查看SSH版本(查看配置文件的Protocol字段) 客户端:/etc/ssh/ssh_config 服务端:/etc/ssh/sshd_config
SSH是通过TCP协议通信,所以要确保Mac和iPhone在同一局域网下,比如连接着同一个WiFi。使用SSH登录成功后就可以使用终端命令行操作iPhone。使用exit命令退出登录。下面先来介绍下如何通过SSH登录iPhone。
SSH登录iPhone
1.iOS下有2个常用账户:root、mobile。root是最高权限账户可以操作任意文件;mobile是普通权限账户,只能操作一些普通文件,不能操作系统级别的文件。root下,HOME指向/var/root。mobile下,HOME指向/var/mobile。App Store下载的App存放在/var/mobile/containers/Bundle/Appication目录下,就是以mobile身份运行的。root和mobile用户的初始登录密码都是alpine。
# 登录root用户
$ ssh root@iPhone的IP地址
# 登录mobile用户
$ ssh mobile@iPhone的IP地址
通过WIFI登录
1.确保iPhone 和 电脑在同一个WIFI网络下 2.在【设置】的网络中找到iPhone的IP地址(例如192.168.111.11) 3.macOS终端使用命令行连接iPhone
$ ssh root@192.168.111.11
4.按【Enter】键然后输入密码(默认为"alpine")输入后按下【Enter】键顺利登录(注意这里输入密码后是无任何显示的)
免密登录
频繁的登录越狱设备时每次都要输入密码可能会有些让人烦,所以我们可以通过上传公钥来免密登录(让人联想到git以ssh方式访问代码仓库)。 1.生成密钥对(和git生成ssh密钥对的方式一样的,只是git需要email地址)
$ ssh-keygen -t rsa
2.将公钥上传到iPhone(把mac上的id_rsa.pub拷贝到iPhone的/var/root/.ssh/authorized_keys下)以下命令会自动将mac上的id_rsa.pub追加到iOS越狱设备的授权文件authorized_keys尾部。因为该操作是在越狱设备的~文件夹下,所以该操作仅仅解决了root账户的免密登录问题,不会影响mobile的登录。
# 该操作需要输入root的登录密码
$ scp ~/.ssh/id_rsa.pub root@192.169.111.11:/var/root/.ssh/authorized_keys
如果iOS设备上不存在/var/root/.ssh/目录,则需要先登录设备创建目录:
$ ssh root@192.168.111.11
$ cd /var/root/
$ mkdir .ssh
通过USB登录
通过WIFI的方式连接设备严重依赖网络流畅度,尤其动态调试设备程序的时候会很卡顿。所以建议使用USB的方式连接iOS设备。
注意
:确保iOS设备已经和macOS通过USB数据线建立连接
1.下载usbmuxd工具包(下载v1.0.8版本,主要用到里面的一个python脚本:tcprelay.py)
2.端口映射(把mac的2222端口映射到iPhone的22端口)
cd ~/Documents/usbmuxd-1.0.8/python-client
chomd 777 tcprelay.py
sudo python tcprelay.py -t 22:2222
3.远程登录iOS设备密码是"alpine"
ssh root@localhost -p 2222
4.至此,已经通过USB登录了iOS设备
修改默认密码
越狱后iOS设备就拥有了最高权限,但root默认密码(“alpine”)是众所周知的,如果开启了SSH而不修改默认密码,一旦iOS越狱设备暴露在网络中就很容易被入侵,所以需要修改密码。如下分别是修改root用户和mobile用户默认密码的命令:
# 修改root用户的默认密码
iPhone: ~ root# passwd
# 修改mobile用户的默认密码
iPhone: ~ mobile# passwd mobile
image.png
使用scp传输文件
配置好OpenSSH后,可以使用scp(secure copy)工具在iOS设备和计算机之间互相传输文件。macOS自带了scp。
将Mac上的/Desktop/1.txt文件,拷贝到iPhone上的/test路径
scp -P 2222 ~/Desktop/1.txt root@localhost:~/test
参考
《iOS应用逆向与安全之道》
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- android studio 3.6.0 绑定视图新特性的方法
- Android ListView UI组件使用说明
- 解决laravel 出现ajax请求419(unknown status)的问题
- php求斐波那契数的两种实现方式【递归与递推】
- Android 自定义日期段选择控件功能(开始时间-结束时间)
- Yii框架日志操作图文与实例详解
- Flutter 实现虎牙/斗鱼 弹幕功能
- Yii框架中用response保存cookie,用request读取cookie的原理解析
- Yii框架操作cookie与session的方法实例详解
- php中钩子(hook)的原理与简单应用demo示例
- flutter仿微信底部图标渐变功能的实现代码
- Flutter 插件url_launcher简介
- Laravel框架查询构造器 CURD操作示例
- androidx下的fragment的lazy懒加载问题详解
- Thinkphp5框架简单实现钩子(Hook)行为的方法示例