无根越狱 vs 有根越狱

iOS越狱和Android root都是利用系统/硬件的漏洞进行提权,获取root权限的操作。在iOS中越狱主要分为无根越狱(rootless)有根越狱(rootful),这里的“根”指的就是根文件系统(”/“, rootfs),默认情况下挂载为只读模式,无法进行写入等操作。有根越狱利用漏洞重新将根文件系统挂载为可读可写的模式,并取得root权限执行原本受限的操作,就和Linux上用root身份基本是一样的。;无根越狱则不会重新挂载根文件系统,而是利用沙盒逃逸漏洞、用户级漏洞等系统层面的漏洞实现对操作系统中某些限制的绕过,取得一个受限的、不完整的root权限(比普通用户高,比完整root低)。即便rootless得到的是一个削弱的root,但是仍然可以执行很多特权操作,比如杀进程、改网络和运行daemon等等。

在iOS15之前,几乎采用有根越狱的方式,越狱工具利用漏洞获取完整的root权限,并且重新挂载整个根文件系统为可写模式,这样一来,用户可以获得完整的root体验,可以修改系统的一些资源、进行一些系统操作。但是,如果操作不当,iPhone很有可能变砖,而且由于苹果的一些机制,导致救砖的难度非常大,不像Android还有回旋的余地。

在iOS15及之后,苹果引入了SSV(Signed System Volume,签名过的系统卷)机制,导致没有办法对原来的文件系统进行修改,自然也就没办法将根文件系统挂载为可写模式基本采用无根越狱的方式获取一定的root权限,所以现在基本上都是采用rootless的方式授予root权限。无根越狱工具利用系统漏洞取得一定权限之后,在iOS中的/private/preboot目录中模拟根文件系统(/private/preboot/<hash>/<jailbreak-随机字符串>),随后创建/var/jb作为快捷入口(这两个目录在iOS中本身具有可写入权限,所以能够成功)。配合路径重定向的方式让所有的越狱文件都在这个虚拟的根文件系统中与系统进行交互。

特殊情况,A5A11(iPhone5iPhoneX)芯片中存在checkm8漏洞,Palera1n利用这个漏洞可以实现对iOS有根越狱和无根越狱(checkm8漏洞(SecureROM(漏洞点) ==> iBoot(SSV验证) ==> iOS内核加载 ==> 用户空间)。

Palera1n越狱iOS16

环境

  1. 电脑:Win10、AMD
  2. 越狱工具:Palen1x-v1.2.1(MacOS和Linux发行版有官方编译可执行文件,windows上需要将.iso文件烧录成可启动镜像)
  3. U盘镜像烧录工具:Rufus
  4. 手机:iPhoneX
  5. 操作系统:iOS16.7.10

越狱

  1. 手机推出AppleID、取消锁屏密码、关闭人脸认证、恢复出厂设置,一定要恢复出厂设置!!!

  2. 电脑重启进入Palera1n系统

    648b82917750e854e44fce772a11380d

  3. 手机信任电脑

    fc2972ae4aa9ff06ac4ac5a180ada2a8

  4. 进入Palera1n模式

    b7d3b6ece9d39673b0958f8b04723a3c

  5. 直接开始无根越狱

    14659fe717396ae4fa7d867a2b373e8d

    6f81d905ad77d704baf92b300940b993

  6. 手机自动进入REC模式,然后根据提示进入DFU模式

    9e1bb52c96ad97906ec6904a2cebc575

    d0cde03e2d1da9ec4b9508dcf8926243

  7. 进入DFU之后,自动刷写,不用干预

    4cd776521bb4c9e51ef5c6045395329c

    0c7ff7f921a80e5c29a16bc0759c602c

    6a1146b2d01f600b303a435b417f49a7

    image-20260113155755997

    image-20260113155927785

  8. Palera1n提示配置密码,这个密码就是mobile用户的密码

  9. 建议使用包管理工具安装openssh,用ssh对iPhone进行管理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ssh mobile@192.168.1.123
    密码:刚才配置的密码

    --- 进入ssh,修改root密码 ---
    sudo passwd root
    su root

    --- root登录ssh ---
    ssh root@192.168.1.123
    密码:刚才为root用户配置的密码
  10. 手机重启之后,越狱环境会暂时消失,按照上述的流程走一遍,可恢复出来(一般来说,下载过的插件不会被清除)

参考资料

  1. iOS逆向工程 - 有根越狱和无根越狱详细解读本文将带你深入了解这有根越狱和无根越狱两种越狱方式的演变、技术原理的核心差 - 掘金
  2. iOS 有根越狱和无根越狱的区别是什么?Rootful 与 Rootless 深度解析