姓名:李泽涛** 学号:20202132034 **
- 背景及意义
为了方便讲述,现在为以下几个名词提供一个便于理解的别称
监狱=iOS****操作系统
囚犯=iOS****系统应用
检察官**=**系统用户
监狱长=iOS****系统防盗版程序
这段参考知乎大佬并作了部分修改:iPhone 越狱(Jailbreak)是什么意思? - 知乎
写的是真的好,我下面也是用这种拟人的风格去解释各种协议和过程
有一所监狱(iOS操作系统):
为每个囚犯(App)提供了一间牢房(独立的存储、运行空间)
狱警、内勤若干(系统自带的插件,如「顶部状态栏」、「锁屏界面」)
少数永久性「高级」牢房关押终身监禁的要犯(系统自带的 App,不可删除),并得到特别关照(可以访问更多内部接口)
普通牢房收押经法院审判的犯人(通过 App Store 审核上架的 App) ,根据需要增减(用户自行安装、删除)
检察官(用户)可以:
查阅囚犯名单(浏览主屏)
提审囚犯(App 占据前台运行)——如果检察官愿意(在「系统设置」打开通知选项),当囚犯想起什么的时候会告诉他(通知)
收押合法犯人(安装 App)——监狱长(iOS操作系统)根据法院许可(App Store 密钥)判断犯人能否收押
流放犯人(卸载App)——检察官(用户)可以主动流放他自己收押的犯人(从AppStore安装的软件),但不能流放得到特别关照的犯人(内置应用)
什么是iOS系统越狱?
而越狱就等于——某个要犯(系统 App)在被提审时,借助另有所图的检察官(用户出于一定理由),打开了监狱内的某扇暗门(系统漏洞),闯入监狱长办公室(系统核心),拿到了典狱长手里的全部钥匙(获取 root 权限),又把钥匙交给原先逍遥法外的「黑帮」老大(Cydia或其他插件安装程序),请它来当监狱长。
然后呢,检察官(用户)便可以:
不经法院审判自行决定收监黑帮自己的犯人(在 Cydia 上安装 App Store 没有提供的 App,或是使用类似Filza这样的特殊工具安装自行下载的 IPA 包)。
虽然此时已经可以随意收监法院许可遭篡改甚至销毁的犯人(盗版 App),但黑道也有自己的规矩,至少在黑帮老大眼里这种行为是不受待见的(Cydia 原则上禁止盗版,越狱的目的也不是为了装盗版App)
管理狱警、内勤(安装第三方插件,比如 SBSettings)
查看监狱内部结构(系统所有目录)
为了获得全面掌控苹果设备的权限(在iOS软件许可协议中,用户只有使用权而没有所有权),也为了反对苹果的独裁行径(只能从AppStore按照苹果审核通过的应用),苹果越狱就此诞生
- 基于文献的现状梳理
进行重放攻击,降级到旧版本操作系统进行越狱
**苹果一般会在新版本操作系统中修复掉越狱漏洞(堵上监狱暗门,不给你拿到钥匙)**,用户可以选择不更新到最新版本的操作系统。但如果你玩脱了导致系统开不了机想重新刷机,苹果会使用手段,阻止你降级到可越狱的iOS版本
苹果设备在进行系统恢复操作时,有一个证书认证的环节,来确保你只能恢复到苹果想让你恢复的版本,形象化说明如下:
(恢复程序指修改后的官方刷机程序,现在一般为futurerestore)
恢复程序:我要刷入xx版本操作系统
CPU:请提供该版本的签名证书,你没有或者不对我就不给你刷
(恢复程序向苹果服务器请求对应版本的签名证书)
(如果苹果允许你恢复到当前版本,恢复程序拿到证书)
恢复程序:呐,xx版本的系统证书,给刷了吧?
CPU:我检查一下…证书有效,允许刷入!
(如果苹果不允许你恢复到当前版本,恢复程序拿不到证书)
恢复程序:(两手空空,但还是想刷)
CPU:没证书,省省吧(返回错误代码)
错误代码一般为3194,当然网络不好收不到证书,也会报3194
初版重放攻击非常简单,只需要在固件还能恢复的时候保存证书即可(我们回到拿不到证书那一步)
(如果苹果不允许你恢复到当前版本,恢复程序拿不到证书)
恢复程序(反手掏出了珍藏多年的证书):这是我刚拿到的证书,这个固件还能恢复!
CPU并没有怀疑,直接接过证书: 我检查一下…证书有效,允许刷入!
但苹果很快推出了初版解决方案:
设备每次开机时,会生成一个随机值,每次开机对应的随机值都不一样
根据不同的随机值,会生成不同的系统签名证书
只有系统证书和DRAM的随机值相对应,CPU才允许你刷入系统
这样子,如果直接进行上述重放攻击,会因为随机值对应不上造成拒绝刷入
**但是道高一尺魔高一丈,既然我动不了证书, **那我就固定随机值!
利用系统漏洞,把系统随机值固定为证书里的随机值(只需随机值那扇暗门,拿到随机值牢房的钥匙就行,并不用整个监狱的钥匙)
(我们回到拿不到证书那一步)
恢复程序(掏出了珍藏多年的证书,并假装成典狱长让随机值固定成证书里的随机值)
CPU接过了证书,提取了证书里的随机值,并检查DRAM里的随机值是否和证书里的一致,因为DRAM里的随机值被我们暗改过,所以肯定是一样的
CPU:你这个证书肯定是新的,允许刷入!
这便是改版后的重放攻击,但是他有个致命的缺点,就是需要漏洞去固定随机值,如果你没有办法固定随机值,就无法通过提前保存的证书欺骗CPU进行系统恢复
苹果很快推出了第二版解决方案
苹果推出Touch ID(指纹验证)和Face ID(面容验证)后,在设备内引入了一块名为SEP(Secure Enclave Processor)的安全芯片,专门负责处理生物验证数据,它的内容连CPU都无法访问
并且,苹果也为它专门开发了一款操作系统,同样,它也有随机值验证系统
因为其极高的安全性,目前没有任何手段去固定SEP里的随机值。
幸运的是,SEP可以同时兼容多个不同版本的操作系统,虽然我们只能刷入最新版本的SEP固件,但如果它兼容你要降级的操作系统,你也一样可以进行重放攻击降级
如果SEP不兼容,那没办法,目前没有任何手段进行SEP不兼容系统的降级,哪怕你能固定随机值并且有对应证书
现状:目前,我们只能固定操作系统的随机值,而基带(Baseband)、SEP(Secure Enclave Processor)和最新出的玫瑰协处理器(Rose Processor)里的随机值我们都无法固定,因此,如果用一句话概括:
通过重放攻击,我们只能降级到
能固定随机值
有对应系统的签名证书
最新的SEP、基带和玫瑰协处理器兼容
的操作系统上
这是利用重放攻击进行系统降级以便越狱的当前研究现状
利用不可进行软件修复的硬件漏洞进行越狱
在iOS系统的漏洞级别中,执行权限最高的为iBoot里的漏洞,即引导程序漏洞,它可以在系统引导阶段就对内核进行修改,获取更高权限
但还有更高一级漏洞的存在,那就是被固化在Bootrom里的硬件漏洞
(相当于永远有扇通往典狱长房间的暗门,但只凭折扇暗门无法拿到全部监狱钥匙,并且这扇暗门不可修复)
Bootrom是设备上电后执行的第一段程序,它被固化在芯片中,无法通过软件修改,只能烧录修改
Bootrom漏洞权限和iBoot权限一样,最大的区别就在于Bootrom漏洞是不可通过发布软件更新进行修复,而iBoot就可以通过软件更新修复
因此这种级别的硬件漏洞就弥足珍贵
目前,可供大众使用的硬件漏洞只有两个:
Checkm8(支持iPhone 5~iPhone X)
Limera1n(支持iPhone 3GS~iPhone 4)
通过硬件漏洞,我们可以做到
无视系统版本,对系统直接越狱
无视系统版本,直接固定系统随机值
然而对硬件漏洞的利用是有条件的,因为Bootrom是开机执行的第一段代码,因此必须通过电脑进行干预,才能使漏洞生效
使用这种方法进行越狱,又称半不完美越狱或不完美越狱
每次重启,如果想进入越狱状态,必须通过电脑引导启动,否则手机将无法开机(不完美越狱)或能开机,但越狱相关软件全部失效(半不完美越狱)
使用多个软件漏洞组合,达成完美越狱或半完美越狱
完美越狱是指,设备重启后,可以继续进入越狱状态,无需多余的引导启动
半完美越狱是指,设备重启后,进入的是非越狱状态,越狱插件全部失效。但只需要在手机上进行操作,即可进入越狱状态。和半不完美越狱的区别是,引导进入越狱状态这个过程不需要电脑参与。
iOS 9.1****之前,我们使用的都是完美越狱,就是把设备连接到电脑,点击一下越狱按钮,设备就会自动越狱,并且重启不失效
越狱流程简要说明如下:
参考CSDN大佬:iOS越狱原理详解_狮兄的博客-CSDN博客
破解Bootrom(Exploiting the Bootrom)
启动Ramdisk(Booting the Ramdisk)
越狱文件系统(Jailbreaking the Filesystem)
安装完美越狱破解(Installing the Untethering Exploit)
安装 AFC2服务(Installing the AFC2 Service)
安装基本程序库(Installing Base Utilities)
应用程序隐藏(Application Stashing)
安装程序包 (Bundle Installation)
安装后过程(Post-Installation Process)
执行内核Payloads并修改内核(Executing Kernel Payloads and Patches)
修复内核状态(Kernel State Reparation)
权限提升(Privilege Escalation)
修改内核(Kernel Patching)
清理并返回(Clean Return)
然而,iOS9.1后,苹果引入了新的防破解措施,使得以下这部分更为艰难:
安装完美越狱破解(Installing the Untethering Exploit)
现状:因此,iOS9.1到现在的越狱,我们只有半完美越狱,意思是,设备重启后,进入的是非越狱环境,我们在越狱后作的一切修改全部失效(非法犯人不能提审)。但经过手机上的软件破解后,系统便可以回归到越狱状态
通过系统缓解措施阻止漏洞利用(exploit mitigations)
系统缓解措施的意思是,通过各种方式阻止漏洞生效的一切手段。主要是干扰上述两个步骤:
破解Bootrom(Exploiting the Bootrom)
权限提升(Privilege Escalation)
下面列举对当前越狱阻碍最大的缓解措施:
**内核基址随机化(Kernel ASLR: **Kernel Address Space Layout Randomization)
对iOS的内核地址进行随机分配,主要干扰
权限提升(Privilege Escalation)这步骤。最大的功能是隐藏tfp0,防止精准地址注入
- 虚拟地址防护(PAN:Privileged access-never)
作用是防止内核空间访问用户空间可以访问的地址,意识是如果一个指针,用户空间可以访问,那么内核就不允许访问,防止用户空间构造假指针进行漏洞利用
- 页面保护层(KTRR:possibly Kernel Text Readonly Region)
保护内核完整性,对高安全性的页表进行防护,防止其被修改。现在的攻击方法是绕过受KTRR保护的内存,攻击未受保护的内存
- **指针验证防护(PAC: **Pointer Authentication Codes)
通过加密指针的高位存储值防止指针修改,有效打击了悬空指针攻击,在内核读/写和内核代码执行之间设置安全边界
- 对于iOS 15,系统引入了一个丧心病狂的缓解措施:
**SSV(system volume signed),**中文名只读系统宗卷
- 它把整个root目录挂载为一个快照,意味着每次重启,root目录都会被还原,我们所作的修改都会消失
- root目录将变得不可修改,一旦修改root目录,系统将拒绝启动,手机会变成一块板砖
- 因此,iOS15到现在都没有半完美越狱
- 总结体会
- 近些年来,苹果不断招安越狱社区的核心人员,如project zero和bazad,曾今的越狱主力pod2g,均已进入苹果安全团队。他们把曾经研究iOS漏洞的经验,转为防护iOS破解的优势,让越狱界雪上加霜
- 但这也不能怪他们,因为越狱界的开发者们都是为爱发电,不收钱的,只收捐款。而且他们也不能靠越狱挣钱。因为越狱一旦商业化,苹果就会把它们告上法庭;如果非商业化,可以靠技术无罪豁免
- iOS****越狱的初衷是获取对手机的全部掌控权限,让iOS更加开放,让iOS也能装主题,改字体,删掉没必要的内置应用。然而,很多人越狱的目的是按照破解软件,这已经严重背离了越狱的初衷
- 七八年前越狱的兴起,并且中国越狱装机量第一,是因为正版意识淡薄,盗版猖獗,买正版是人傻钱多的行为。这种思想也催生了PS4主机越狱的诞生。然而如今,正版已经逐渐深入人心,人们更愿意付费享受有保障的正版,而不会安装可能有病毒的盗版
- 前面也提到,iOS构建的核心是一座监狱。监狱里,只要你按规矩行事,那就绝对安全。但代价是牺牲自由。如果你愿意以安全为代价换取自由,越狱设备,获取root权限。但你又不会操作,root密码都不改,那么只要别的设备和你链接同一个WiFi,你有刚好打开了openSSH,别人便可以随时掌握你手机的最高权限。盲目越狱的代价是把自己暴露在危险中
- 最近,越狱界的老牌开发者luca todesco发布了一段演讲,名为:’Life and death of an iOS attacker’
意识是一名iOS越狱开发者的诞生和消逝,我看了他的演讲,心里一凉,但还是很不情愿的接受:iOS越狱的时代,可能真的要过去了
- 随着正版软件概念深入人心,人民生活水平的提高,iOS安全措施的慢慢加强,iOS个性化的内容越来越多,越狱变得越来越没有必要。然而,越狱商店之父saruik至今还在和苹果打官司,说AppStore一家独大,严重损害了开源自由的互联网精神,并且有垄断的嫌疑,他已经41岁,但仍在为了这个社区奋战
- 我以我所学,可能帮不了越狱社区什么。但以后我若是学有所成,真给我找到了对越狱社区有所贡献的漏洞,我一定毫不犹豫把它贡献进越狱的大家庭,为越狱社区带来新的血液
- 如果我做不到,我也会在心里,默默祝福每位为爱发电的开发者
参考文献:
- A survey of recent iOS kernel exploits --Posted by Brandon Azad, Project Zero
https://googleprojectzero.blogspot.com/2020/06/a-survey-of-recent-ios-kernel-exploits.html
- Life and death of an iOS attacker --by Luca Todesco
https://www.youtube.com/watch?v=8mQAYeozl5I
- New Kernel exploit for iOS 15 – iOS 15.1.1 / Latest vulnerabilities and Kernel mitigations on iOS 15.2 – iOS 15.5
https://pangu8.com/latest/new-kernel-exploit-for-ios-15-ios-15-1-1-jailbreak/
- iOS越狱原理详解
版权归原作者 L-Taufik 所有, 如有侵权,请联系我们删除。