提到越狱,很多人第一反应大概是免费的游戏和 app。

作为软件从业人员,深知中国的大环境的特殊性。内有用户想吃免费午餐的不良付费习惯,外有行业内大头诸如某讯对创新的绞杀。大家对越狱是为了免费、盗版软件的认识,也就不奇怪了。

还有另一派人。越狱对他们来说,意味着开放。个人认为这也是 Hack 精神的精髓之一。事实上,iOS 越狱也有自己的生态圈:Cydia 就是越狱设备上 App Store。

越狱的合法性

数字千年版权法对 iphone 的越狱进行了特赦,直到 2015 年,对 iPhone、iPod touch 的越狱依然有效。但注意,iPad 就没这么幸运了。

详情参见博文《Unlocking A New iPhone Is Now Illegal, But Jailbreaking Is Still Safe — What It All Means For You》

iOS 安全性

由于 iOS 没有开源,学术界和工业界对它的安全机制的论述资料很少。我在网上找到了上交一位学长对 ios 安全机制的分析文章,是他的硕士学位论文。作为参考,我整理了一些关键知识点。

基于信任链的启动

iOS 的信任机制从系统启动那一刻起已经开始。
系统可信启动 trustedboot:启动每一步都会检测签名,构成整个信任链。

还有另一种启动方式,是设备固件升级方式(DFU,Device Firmware Update),也是由签名构建信任链。

程序签名

iOS 应用的 ipa 压缩包中包含可执行文件和数据文件。可执行文件只有在已签名的前提下才能运行。确保应用经过苹果认证。

越狱提升运行权限到 root,修改引用加载策略,接受任意签名的应用。
“通过软件保证软件安全是不可能的”,iOS 使用了硬件来做保护,但硬件部分也遭到了越狱的破解。

沙盒技术

iOS 用沙盒技术实现访问控制
trustedBSD :http://www.trustedbsd.org/
http://www.freebsd.org/doc/zh_CN/books/arch-handbook/mac-synopsis.html

ASLR 和 PIE

使用地址空间布局随机化(ASLR, address space layout randomization)和位置无关可执行代码(PIE,position independent executable)编译用来防止经典的缓冲区溢出攻击。

数据保护机制:

  • 硬件加密:AES 协处理器,存储着 UID,GID
  • 软件加密:系统中每个文件、数据都用一个唯一的秘钥来加密。秘钥是有 UID、GID 一起产生的,存在 keybag 中,keybag 通过用户的 4 位密码来保护。

越狱

越狱主要就是在信任链的根 bootrom 阶段攻击。由于系统不断升级,攻击的方式也在不断演进,这个链接介绍了其中的一种情况。

越狱后注意

总的来说,越狱打破了 iOS 封闭的生态环境,也打破了它特有的保护壳。手机获得了 root 权限,恶意代码有了可趁之机。不要轻易的使用来源不明的应用和插件。

  • 非越狱手机:仅允许用户访问照片、视频数据;通过备份,可在 pc 端获取所有数据
  • 越狱手机:拥有 root 权限。可以通过许多渠道如 ssh,ftp 获取系统数据。

更多细节参见
* 《浅谈 iOS 越狱前后的安全问题以及安全风险》
* 《iPad 越狱不安全!安装应用/插件需谨慎》
* 《iOS 完美越狱 - 福利还是阴谋?》

SHSH

iPhone 3GS 出来时候,苹果为加强对 iPhone OS 的控制对恢复(Restore)固件(Firmware)采用了验证过程,每次 iTunes 要恢复固件的时候都要连接苹果的服务器验证。手机的 ECID 和所刷系统版本号一起签名出一个 SHSH 文件,发送给服务器,服务器检测 SHSH 是否为新版本的系统所产生,如果是,则允许继续进行刷机,否则传回组织继续的信号。

SHSH 是存储在苹果公司的服务器上的,用户需要通过备份原来的 SHSH,并伪装一台苹果服务器来协助验证。  

网络上 SHSH 备份方法的介绍很多,不了解的朋友自行 Google 吧。

附录

对于想开发 iOS 应用而又没有开发者账号的朋友,可以参考这篇文章《Xcode 4.1~4.6 + iOS 5、iOS 6 免证书(iDP)开发+真机调试+生成 IPA 全攻略》,Xcode4.6 iOS6.0 亲测有效。

 原文地址:http://biaobiaoqi.github.com/blog/2013/05/17/jail-break-your-ios/
 版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0

iOS的安全性和越狱的更多相关文章

  1. iOS——数据安全性问题小结

    在移动互联网快速发展的今天,iOS应用直接运行在用户的手机上,与运行在服务器后台服务相比,更有可能被黑客攻击. a.网络安全: 1.1 安全地传输用户密码 事先生成一对用于加密的公私钥,客户端登录的时 ...

  2. iOS安全攻防之越狱设备检测

    iOS 越狱(iOS Jailbreaking),是用于获取苹果公司便携装置操作系统iOS最高权限的一种技术手段,用户使用这种技术及软件可以获取到 iOS 的最高权限,甚至可能可以进一步解开运营商对手 ...

  3. IOS 手机助手及越狱助手推荐

    快装系列 1 快装助手(PC版) http://pc.kuaiapp.cn/ 2 快装越狱助手(PC版)http://www.kuaiapp.cn 3 快装商店(手机版)http://yueyu.ku ...

  4. iOS 判断设备是否越狱

    我们在开发过程中,需要知道设备是否越狱,在网上查看很多资料,为此封装一些判断的方法. 上代码,不解释: .h文件 #import <Foundation/Foundation.h> @in ...

  5. iOS 判断设备是否越狱了

    #import "PrisonBreakCheck.h" @implementation PrisonBreakCheck /** * 判断iPhone是否越狱了 */ +(BOO ...

  6. iOS设备的越狱方法

    最近公司的事情很忙,在开发一个类似于微信的App,经常加班,所以也没有时间去更新微信公众账号的内容了.iOSJailbreak, 申请这个账号大概有一个多月了吧,发布的内容不多,更多是针对开发者的内容 ...

  7. iOS不越狱装收费App——注册iOS设备为开发者工具

    额,这篇教程主要是我写下来用于总结注册iOS设备和用iResign安装App的过程,想要不越狱安装App当然有办法,但是有几个前提--你是一个Apple开发者,或者你有个朋友是App的开发者.如果没有 ...

  8. 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统!不用证书、不用越狱、永久可用

    不用签名将网页封装成苹果APP,无需苹果企业签名,IPA签名,ios签名,免越狱安装 (本方法只支持网站封装app,原生的用不了,详细请咨询客服) 近期很多朋友问我把网站变成app的方法,原因很多种, ...

  9. iOS 11.4.1 正式版越狱

    在 2018 年 Electra 最新能支持到 11.3.1 越狱,很长的一段时间 11.4 只能支持 Beta 版本,临近春节给了我们一个大礼物,终于支持 iOS 11.4-11.4.1,目前 iO ...

随机推荐

  1. 【Codeforces Round #433 (Div. 2) B】Maxim Buys an Apartment

    [链接]h在这里写链接 [题意] 你有n个位置,然后其中有k个地方是已经被人占据了的. 一个"好的位置"的定义是指,这个位置相邻的地方其中至少有一个被人占据了. k个被人占据的位置 ...

  2. ExtJs4学习(七)MVC中的Store

    Ext.data.Store是extjs中用来进行数据交换和数据交互的标准中间件,不管是Grid还是ComboBox,都是通过它 实现数据读取.类型转换.排序分页和搜索等操作的. Ext.define ...

  3. MySQL字符编码问题,Incorrect string value

    MySQL上插入汉字时报错例如以下.详细见后面分析. Incorrect string value: '\xD0\xC2\xC8A\xBEW' for column 'ctnr' at row 1 M ...

  4. 自定义npm包的创建、发布、更新和撤销

    大纲 1.准备2.自定义npm包3.发布自定义npm包4.引用npm包5.更新npm包6.撤销发布的npm包 简书原文 https://www.jianshu.com/p/d737bc5df5b7 1 ...

  5. 文本超出显示省略号CSS

    单行超出显示省略号 display: block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; 多行超出显示省略号 1.普 ...

  6. 4、基于JZ2440之编写测试代码处理(处理图片识别人脸)

    1.代码如下: void detectAndDisplay(Mat image) { CascadeClassifier ccf; //创建脸部对象 //ccf.load(xmlPath); //导入 ...

  7. 对照jQuery和AngularJS的不同思维模

    对照jQuery和AngularJS的不同思维模 Question 如果我已经熟悉了怎样使用jQuery来开发client应用.我如今打算使用AngularJS.请描写叙述一下有那些思维模式方面的东西 ...

  8. 【u122】迎接仪式

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路 ...

  9. WordPress通过插件发送邮件

    原文发表自我的个人站点,欢迎大家訪问~转载请保留本段,或注明原文链接:http://www.hainter.com/wordpress-send-email-via-plugins WordPress ...

  10. 怎样把ul li 前面的点去掉

    在li 属性框里 放入 <li style="list-style-type:none;">...<li> 就可以了