iOS 逆向(一)环境搭建

2,192 阅读6分钟

这个系列,是很早听 MJ 课程时的整理,现在分享出来。 其中一些参考资料有些有引用,有些可能忘记添加了,如果有引用部分资料,可以联系我。

iOS 逆向(一)环境搭建
iOS 逆向(二)Cycript
iOS 逆向(三)逆向工具
iOS 逆向(四)脱壳
iOS 逆向(五)Theos工具 iOS 逆向(六)动态调试
iOS 逆向(七)重签名

一、越狱

iOS Jailbreak(iOS越狱),利用iOS系统的漏洞,获取iOS系统的最高权限(Root),解开之前的各种限制(合法行为)

  • 完美越狱

越狱后的iPhone可以正常关机和重启

  • 不完美越狱

iPhone一旦关机后再开机时,屏幕就会一直停留在启动画面,也就是“白苹果”状态,或者能正常开机,但已经安装的破解软件都无法正常使用,需要将设备与PC连接后,使用软件进行引导才能使用。

二、软硬件准备

2.1 设备与系统

设备系统
iPhone5s以后,支持64位8.0-8.4
9.0-9.1完美越狱

检查手机是否可以越狱:jailbreak.25pp.com/ios

2.2 越狱软件

2.2.1 手机端

  • PP助手:越狱
  • 爱思助手:越狱
  • Cydia:越狱后的App Store

2.2.2 Mac软件

  • PP助手:下载APP资源
  • iFunBox:安装ipa、查看系统文件

2.3 Cydia

越狱之后,为了搭建开发环境,依次进行下面操作。

2.3.1 添加软件源

PP助手软件源:apt.25pp.com

  • 一般在Cydia中安装完软件之后,会自动重启SpringBoard,即重启iOS桌面。

2.3.2 安装软件

!!!建议遵循安装顺序,否则环境配置可能配置不正确。

顺序软件作用软件源
1Apple File Conduit "2"可以访问整个iOS设备的文件系统

| Cydia apt.saurik.com | | 2 | AppSync Unified | 可以绕过系统验证,随意安装、运行破解的ipa安装包

| PP助手 apt.25pp.com | | 3 | iFile | 在iOS上访问系统文件路径

iFile没法通过Cydia安装:

如果通过Cydia源安装deb失败,则可以通过下面方式安装:

  1. 先从网上下载deb格式的安装包,iFile安装包
  2. 将deb安装包放到/var/root/Media/Cydia/AutoInstall
  3. 重启手机,Cydia就会自动安装deb; | Bigboss apt.thebigboss.org/repofiles/c… | | 4 | OpenSSH | 远程登录,Mac电脑登录iPhone,需要在iPhone上安装OpenSSH | |

三、SSH登录

SSH,是Secure Shell的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议。使用SSH,可以把所有传输的数据进行加密,“中间人”攻击方式就不可能实现,能防止DNS欺骗和IP欺骗。

Mac要能通过SSH远程登录到iPhone,先必须满足以下条件:

  • iPhone必须先支持SSH,即遵循上面安装OpenSSH。

    • OpenSSH,是SSH协议的免费开源实现;
  • SSH是通过TCP协议通信,所以要确保Mac和iPhone在同一局域网下,比如连接着同一个WiFi。

SSH的通信过程可以分为3大主要阶段:

  • 建立安全连接
  • 客户端认证
  • 数据传输

3.1 Wifi连接登录

3.1.1 密码登录

使用账号和密码即可认证

在Mac的终端输入

ssh  账户名@服务器主机地址(这里的服务器是手机)

比如ssh root@192.168.1.11

初始密码alpine

退出登录命令是exit

3.1.2 手机账户

iOS下有2个常用账户:root、mobile

  • root:最高权限账户,$HOME/var/root
  • mobile:普通权限账户,只能操作一些普通文件,不能操作系统级别的文件,$HOME/var/mobile

登录mobile用户,则使用:

ssh mobile@服务器主机地址

root和mobile用户的初始登录密码都是alpine

$ ssh root@192.168.1.11                                                               
    The authenticity of host '192.168.1.11 (192.168.1.11)' can't be established.
    RSA key fingerprint is SHA256:/VKCM1drq2VtMPyWihuo40ZHNuGnR7XeASapaaGHEg4.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.1.11' (RSA) to the list of known hosts.
    root@192.168.1.11's password:
ho:~ root# exit
    logout
    Connection to 192.168.1.11 closed.
......

3.1.3 修改密码

最好修改一下root和mobile用户的登录密码(登录root账户后,分别通过passwd、passwd mobile完成)

ho:~ root# passwd
Changing password for root.
New password:
Retype new password:

3.1.4 密钥登录

免密码认证,最安全的一种认证方式

SSH-2默认会优先尝试“密钥认证”,如果认证失败,才会尝试“密码认证”。

//-f 强制更新,生成密钥对,私钥存在Mac,公钥将要放在手机
$ ssh-keygen -f ~/.ssh/id_ho_rsa
//将公钥拷贝到手机
$ ssh-copy-id -i ~/.ssh/id_ho_rsa.pub root@192.168.1.11

或者

// scp ~/.ssh/id_ho_rsa.pub root@服务器主机地址:路径
$ scp ~/.ssh/id_ho_rsa.pub root@192.168.1.11:~
$ mkdir .ssh
$ cat ~/id_ho_rsa.pub >> ~/.ssh/authorized_keys
$ rm ~/id_ho_rsa.pub

假如还是无法访问,则注意修改文件权限

//登录到iPhone
ho:~ root# chmod go-w ~
ho:~ root# chmod 700 ~/.ssh
ho:~ root# chmod 600 ~/.ssh/authorized_keys

在iPhone作为服务端时,其ssh配置路径为:/etc/ssh/sshd_config,默认不作修改。

#禁用root账户登录,如果是用root用户登录请开启
PermitRootLogin yes

# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no

# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

# 有了证书登录了,就禁用密码登录。
PasswordAuthentication no

3.2 USB连接登录

通过WiFi传输,一个是不稳定,一个是传输速度慢,所以,我们可以通过USB进行连接。

手机的USB端口号是22,所以我们需要将Mac连接到手机,并且通过22端口号进行数据传输。

$ brew install usbmuxd
//将本地主机的10010端口映射到22端口
$ iproxy 10010 22

或者通过下面方式:

//下载 https://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz
//找到对应的tcprelay.py
$ python tcprelay.py -t 22:10010

注意新开窗口:

//登录到iPhone,-p 指定Mac端口
$ ssh root@localhost -p 10010

注意当通过USB连接时,scp指定端口需要用-P指定:

$ scp -P 10010 ~/.ssh/id_rsa.pub root@localhost:~/.ssh/

3.3 脚本登录

脚本放在这儿

3.3.1 监听端口脚本

bfios-usb.sh

echo 'Begin to connecting to iPhone USB port 22' 
echo 'After conneted, login in 10010 port by ssh' 
iproxy 10010 22

3.3.2 登录脚本

bfios-login.sh

echo 'Login iPhone by ssh'
ssh root@localhost -p 10010

3.3.3 环境变量

将以上脚本权限更改为可执行文件,并参考放入到环境变量Path中。

$ chmod +x ios-usb.sh
$ chmod +x ios-login.sh

3.3.4 利用脚本登录

更流畅的操作

连接:

新开窗口,登录:

四、Vim

Vim是类Unix系统无处不在的一个文本编辑器,iPhone也支持。但是需要做一些额外的配置。

4.1 安装

通过Cydia安装。

4.2 方向键错误

方向键错误,按方向键显示ABCD

//方向键无效
$ echo "set nocp" >> ~/.vimrc

//如果删除键无效
$ echo "set backspace=2" >> ~/.vimrc
$ source ~/.vimrc

4.3 乱码

iOS终端的中文乱码问题

解决方案:新建一个~/.inputrc文件,文件内容是,注意把注释删除:

不将中文字符转化为转义序列
set convert-meta off 

允许向终端输出中文
set output-meta on

允许向终端输入中文
set meta-flag on 
set input-meta on

五、投屏

5.1 VNC连接

  1. Veency插件
  2. 在设置里面,找到Veency,设置VNC连接密码;
  3. 确保Mac与iPhone在同一个无线网络中;
  4. 在Mac电脑上利用VNC客户端,进行连接。
    • Finder支持VNC协议,打开Finder,连接服务器。输入vnc://手机IP
    • 利用其它VNC客户端进行连接也可,

Tips:

VNC客户端推荐:Remotix

5.2 Airserver

  1. 下载Mac端、iPhone端;
  2. 打开Mac端,打开iPhone端,扫描电脑的二维码;
  3. 在iPhone端打开控制中心,选择AirPlay,选择电脑。

Reflector 3 软件类似。

六、越狱问题

6.1 白苹果问题

当Cydia安装插件或者系统出错后,重启手机后,手机会一直停留在苹果页面。可以尝试下面方案:

6.1.1 方案一

  1. 在白苹果的时候,按住开关+home键,黑屏就放手,此后机器处于关机状态,注:iPhone一次成功,iPad air请多尝试几次。
  2. 再按POWER开机,等一下,这时候还是白苹果
  3. 松开power,然后按音量加和减,可以两个分别点一下,然后两个一起长按。

到这里就行了,长按之后,屏幕就会变暗,正常进入系统,并不是安全模式,但是所有插件也没有用,然后进入cydia删掉冲突插件,重启手机之后进入系统就正常了!

原理就是手机越狱后,安装cydia的时候一般会自动安上MobileSubstrate这个插件,开机启动的时候,按住音量键的“+”,会进入不加载MobileSubstrate的状态,你可以认为这是一种不加载MobileSubstrate的伪安全状态(Mobile Substrate必须要更新到0.9.3997以上的最新版本哦)。

Cydia里安装的软件大多要依赖这个插件的,不加载MobileSubstrate,就等于停用了大部分的插件,你就可以删掉导致白苹果的软件了。

6.1.2 方案二

白苹果的时候

  1. 按住开机+home可以强制关机
  2. 按开机和“+”号键开机,这是默认不加载所有cydia的插件,
  3. 顺利开机进入系统后,等待,很长时间的等待,十分钟吧!
  4. 直接去cydia里删除冲突插件就可以啦!

6.1.3 方案三

如果还不行,那就刷官方固件吧,越狱就这样没了。

参考

  1. PP助手越狱系统查询
  2. MJ 课程