• iOS的安全性和越狱


    alt jailbreak

    提到越狱,很多人第一反应大概是免费的游戏和 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 亲测有效。

  • 相关阅读:
    Linux安装Oracle 10g
    Linux安装Oracle 10g
    如何利用BI实现人力资源可视化管理
    mongdb修改密码
    如何利用BI实现人力资源可视化管理
    jquery获取浏览器和屏幕的高度和宽度
    perl概述
    'CheckLicensesAndNotify' has encountered a problem.
    Caused by: java.sql.SQLException: The MySQL server is running with the --read-only option so it cann
    Caused by: java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Tim
  • 原文地址:https://www.cnblogs.com/biaobiaoqi/p/3288788.html
Copyright © 2020-2023  润新知