iOS逆向学习-010如何手机越狱及砸壳

3,319 阅读5分钟

备份

写在最前面,如果你的手机内容比较重要的话,越狱前一定要备份。

越狱概念

苹果的越狱指的是通过iOS系统安全启动链漏洞,从而禁止掉信任链中负责验证的组件,拿到iOS系统最大权限ROOT权限。

当启动一台iOS设备时,系统首先会从只读的ROM中读取初始化指令,也就是系统的引导程序(事实上所有的操作系统启动时都要经过这一步,只是过程略有不同)。这个引导ROM包含苹果官方权威认证的公钥,他会验证底层启动加载器(LLB)的签名,一旦通过验证后就启动系统。LLB会做一些基础工作,然后验证第二级引导程序iBoot。iBoot启动后,设备就可以进入恢复模式或启动内核。在iBoot验证完内核签名的合法性之后,整个启动程序开始步入正轨:加载驱动程序、检测设备、启动系统守护进程。这个信任链会确保所有的系统组件都有苹果官方写入、签名、分发,不能来自第三方机构,

image.png

越狱的工作原理正是攻击这一信任链。所有的越狱工具的作者都需要找到这一信任链上的漏洞,从而禁止掉信任链中负责验证的组件。拿到iOS系统最大权限ROOT权限.

根据越狱的情况不同可以分为如下两种越狱:

  • 完美越狱 所谓完美越狱就是破解iOS系统漏洞之后,每次系统重启都能自动调用注入的恶意代码,达到破坏安全验证,再次获得ROOT权限。

  • 非完美越狱 所谓非完美越狱是指,越狱系统后,并没有完全破解安全链,有部分信息或功能应用不佳;比如;关机以后必须去连接越狱软件来引导开机;或者重启会导致越狱的失效;这样的越狱称为“不完美越狱”。

越狱工具

一共推荐3个越狱工具

  • checkra1n越狱,他可以越狱A9处理器版本之前的设备,有个坑注意下,手机连接电脑的线不能用type-c口子的,因为新电脑都只有type-c了,所以有条件的用的转换器转成普通usb

  • unc0ver越狱,这个工具比较常见,他是一个IPA包,需要重新签名装在手机上,不建议用Monkey工具,Monkey帮我们注入了很多库,可能会导致越狱失败

  • Odyssey越狱,这个工具我没用过,不是特别清楚

checkra1nunc0ver越狱成功后会出现Cydia越狱商店APP,Odyssey成功后会出现Sileo商店APP

如何远程连接手机

  • 先在Cydia中安装OpenSSH插件
  • 让电脑和越狱手机在同一个Wifi网中
  • 利用ssh协议登录越狱手机,格式是:
# 用户有两种:Root用户:最高权限用户,可以访问任意文件
#           Mobile用户:普通用户,只能访问改用户目录下文件/var/Mobile

ssh 用户名@手机IP地址
#比如
ssh root@192.168.31.231
#然后会让你输入密码,默认密码是alpine

免密登录:

  • 先自己生成一对秘钥:ssh-keygen
  • 把刚生成的公钥拷贝给手机:ssh-copy-id root@192.168.3.82
  • 然后就可以不输密码登录了

每次登录写IP写很烦,可以写成脚本,或者在ssh的目录下建立config文件,然后起别名

用IP登录手机很容易受网络的影响,而且响应也不及时,所以我们可以通过映射USB连接来登录。我们原来ssh登录默认端口是22,你可以这样登录:ssh -p 22 root@192.168.31.231。所以我们需要把

有两种方法可以实现:

  • usbmuxd这个自己网上搜,我用的不是这个方法
  • iproxy:比如说想映射成本地的2222端口,那么这么写iproxy 2222 22,如果命令不存在,你可能需要先安装下:brew install libimobiledevice

终极总结命令:

#生成密钥对
ssh-keygen -t rsa -P

#拷贝公钥去手机~/.ssh/authorized_keys文件中,输入默认密码alpine
ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@192.168.31.139

#测试下是否免密码登录
ssh root@192.168.31.139


# usb映射链接2222端口(端口号建议大一点,10000以上)
iproxy 2222 22
# 如果显示command not found,那么先安装工具
brew install libimobiledevice

# 新开一个终端窗口登录手机
ssh root@localhost -p 2222


# 配置ssh的配置文件,新建$HOME/.ssh/config文件(有了就不用建了)
Host ip5s
Hostname localhost
User root
Port 2222
# 把上面内容新增进config文件后保存,然后快速登录
ssh ip5s

#搞定

如何砸壳

提交给Appstore发布的App,都经过官方保护而加密,这样可以保证机器上跑的应用是苹果审核过的,也可以管理软件授权。经过App Store加密的应用,我们无法通过Hopper等反编译静态分析,也无法Class-Dump,在逆向分析过程中需要对加密的二进制文件进行解密才可以进行静态分析,这一过程就是大家熟知的砸壳(脱壳)

  • 静态砸壳:静态砸壳就是在已经掌握和了解到了壳应用的加密算法和逻辑后在不运行壳应用程序的前提下将壳应用程序进行解密处理。静态脱壳的方法难度大,而且加密方发现应用被破解后就可能会改用更加高级和复杂的加密技术

  • 动态砸壳: 动态砸壳就是从运行在进程内存空间中的可执行程序映像(image)入手,来将内存中的内容进行转储(dump)处理来实现脱壳处理。这种方法实现起来相对简单,且不必关心使用的是何种加密技术。

从难度来说,我们都采用动态砸壳。目前来说,一共有3种砸壳工具,其中两种比较老,现在不怎么用了,分别是Clutchdumpdecrypted,用法自己百度,这边就不详细写了。

现在比较推荐的一种就是frida-ios-dump,用法参考:越狱砸壳工具 frida-ios-dump 使用小记