1逆向 - 环境准备
Tue, May 1, 2018
Cydia
越狱之后的苹果商店
作者:Jay Freeman - 免费版周杰伦...(阿婆主ID: saurik)
上一张照片膜拜下...越狱开发的领袖人物
Cydia上软件的作者是他的,都可以放心食用~
Cydia安装东西
一般是用来安装插件和主题的,安装的软件格式是deb格式
deb包是用apt进行管理的
安装东西方法:
- 添加软件源
- 进入软件源,找到对应的软件开始安装
SpringBoard
就是iOS操作系统的桌面
常用工具安装
Apple File Conduit "2"
保证可以访问iOS设备的文件系统
AppSync Unified
绕过系统验证,随便安装破解的ipa包
iFile
在iPhone上访问文件系统
Cydia安装失败
使用离线安装
- 下载deb格式安装包
- 把相关的deb包拖到 iPhone中,路径:/var/root/Media/Cydia/AutoInstall
- 重启手机
判断当前设备是否越狱
思路:判断当前设备有木有安装Cydia
Cydia路径:
BOOL isJailBreak = [[NSFileManager defaultMananger] fileExistsAtPath@"/Applications/Cydia.app"]; |
逆向环境搭建
效率工具安装
Alfred
基本用法: find 文件名 (功能与spolight相似)
WorkFlow文档:https://www.alfredapp.com/help/workflows/
XtraFinder
iTerm2
Go2Shell
SSH连接iPhone
目的: 通过ssh连接到iPhone
基本概念
SSH
安全外壳协议 - 仅仅是一个协议,木有实现
作用:防止网络嗅探,防止DNS欺骗
- Client: mac
- Server: iPhone
说明:使用TCP协议通讯,需要确保iPhone和Mac在同一个局域网下... 其实有方案可以远程登录,需要用到域名解析参考
SSH配置文件
路径: etc/ssh
客户端配置文件: ssh_config
服务端配置文件: sshd_config
SSH通讯过程
- 建立安全连接(验证连接是安全的)
- 验证服务器是想要连接的(防止通过伪造ip地址的方式冒充服务器进行攻击) - 服务器告诉客户端他是谁
- 服务端提供自己的身份证明
- 服务端(iPhone)公钥和私钥
- 公钥: /etc/ssh/ssh_host_rsa_key.pub
- 私钥: /etc/ssh/ssh_host_rsa_key
- 服务器发送公钥给客户端
- 客户端(初次登录)拿到公钥,存到~/.ssh/know_hosts中
- 这串东东是客户端根据服务端传过来的公钥计算出来的
- 如果这串东东和服务端的公钥匹配,yes即可
- 服务端的公钥信息: 可以从服务端的/etc/ssh/ssh_host_rsa_key.pub中看到
- yes之后,公钥就存储到client中,know_hosts会更新
- 这串和服务端中看到的一致,说明公钥是正确的,服务端是我们的服务端
- 客户端第二次连接
- 如果公钥不一样
- 提醒可能遭遇了中间人攻击
- 其他情况: 如果本地有两台服务器,IP一样,但是公钥不一样...
- 方案一: 删掉know_hosts中之前的记录
- 方案二: ssh-keygen -R IP地址
- 如果公钥一致,就会直接连接
- 如果公钥不一样
- 服务端(iPhone)公钥和私钥
- 服务端提供自己的身份证明
- 验证服务器是想要连接的(防止通过伪造ip地址的方式冒充服务器进行攻击) - 服务器告诉客户端他是谁
- 客户端认证
- 两种常用的客户端认证方式
- 基于密码的客户端认证
- 认证成功则登录成功
- 弊端:
- 麻烦
- 不太安全
- 基于密钥的客户端认证(默认的认证方式)
- 特点:
- 安全
- 方便
- 环境搭建
- 客户端把公钥存到服务端
- 登录认证
- 通过公私钥对信息进行加解密,以进行身份认证
- 客户端把公钥存到服务端
- 实现
- 客户端生成密钥对
- 命令:ssh-keygen
- 结果:生成了id_rsa私钥和id_rsa.pub公钥
- 将公钥追加到授权文件的尾部
- 命令:ssh-copy-id root@服务端IP地址
- 服务端文件权限配置
- 命令:
- chmod 755 ~/.ssh
- chome 644 ~/.ssh/authorized_keys
- 命令:
- 客户端生成密钥对
- 特点:
- 基于密码的客户端认证
- 两种常用的客户端认证方式
- 数据传输
- 文件拷贝: scp 本地路径 服务端IP:路径
22端口
21:FTP
80:HTTP
22:SSH/TCP
mac通过ssh连接,默认连接到了iPhone的22端口
USB-SSH连接
SSH默认通过TCP连接两端的22端口
可以通过mac的usbmuxd这个服务程序,将mac的数据通过USB传输到iPhone
- 路径/System/Library/PrivateFrameworks/MobileDevice.framework/Resources
- 此服务开机自启动
方案
- 让SSH端口连接到本机的某个端口(如: 38438端口)
- 438端口通过usbmuxd映射到iPhone22端口
实现
- 端口映射:python tcprelay.py -t 22:38438 (脚本文件见下方压缩包)
- 脚本参数用法 手机端口号:要连接到的mac端口号
- 上面一句的意思:把mac的38438和iPhone的22端口连接起来,之后所有发给mac 38438的数据,都会通过usbmuxd转发给手机线上连接的另一台设备的22端口
- 注: 需要使用Python2.7运行
- ssh到本地38438:ssh root@localhost -p 38438
- 直接在.ssh/config中写好配置,使用 ssh 别名 连接到手机
Host yoe # 对,这个就是我的iPhone的别名... HostName localhost IdentityFile ~/.ssh/yoe_id_rsa Port 38438 User root |
OpenSSH
SSH的开源实现
SSL
Secure Sockets Layer - 为网络数据在传输层进行加密,是一种安全协议
OpenSSL
SSL的开源实现
OpenSSH的数据加密就是使用OpenSSL完成的
SSH和SSL的关系
连接方法
- iPhone安装OpenSSH
- ssh root@iPhoneIP地址
- 默认密码:alpine
iOS账号系统
root
- 最高权限账户 - root#
- $HOME(用户文件夹)地址 /var/root
mobil
- 普通权限账户 - mobil$
- 不能操作系统级别文件(无法在根路径下创建文件)
- $HOME /var/mobile
注意:修改账户密码
其他注意
iOS下,terminal默认不支持中文输入
方案: 新建一个~/.inputrc文件,文件内容是
# 不将中文字符转化为转义序列 set convert-meta off # 允许向终端输出中文 set output-meta on # 允许向终端输入中文 set meta-flag on set input-meta on |