前言

iPhone已经问世5年有余,人们大概都已经忘了当时的iPhone多么具有开创意义。那时候还没有现在这样的智能手机,很多手机也就是用来打打电话。有些手机中安装了Web浏览器,但并非全功能的,只能呈现最基本的网页,而且手机屏幕的分辨率非常低。好在,iPhone改变了这一切。

iPhone的显示屏几乎占据整个前面板,有着基于WebKit的Web浏览器,而且其操作系统可以由用户自行升级,不需要等着运营商来做这项工作。再加上存储照片、播放音乐和发送短信等功能,这才是人们真正想要拥有的手机(参见图1)。但是,iPhone并不完美。第一代iPhone数据传输速度非常慢,不支持第三方应用,而且安全性特别差,不过它却引领了智能手机和平板电脑的革命。

图1 众多消费者排队等待购买第一代iPhone

图片来源:Mark Kriegsman(http://www.flickr.com/photos/kriegsman/663122857/)。

随着第一代iPhone于2007年问世,一系列其他的苹果产品也随之而来,而它们都运行着iOS。当然,在第一代iPhone等设备问世时这个操作系统还不叫iOS。第一代iPhone使用的操作系统被苹果公司称为OS X,就像其桌面版的“兄长”那样。而在2008年第二代iPhone出现时,这个操作系统被称为iPhone OS。那时候它还不能拥有iOS这个称呼,因为思科公司为路由器设计的操作系统先占用了IOS这个名称。经过一番交易,苹果公司从2010年起正式将其移动操作系统命名为iOS。

紧随iPhone之后的iOS设备是iPod Touch。这种设备基本上就是个不能打电话不能发短信的iPhone。其他iOS设备包括第二代Apple TV和iPad。这些设备每推出新的一代,都是更快、更时髦、更多功能的产品(如图2所示)。

图2 iPhone 4(左)与iPhone 1(右)的对比

全书概览

不过,人们通常只注意这些设备光鲜的外表,很少会去了解它们的内部工作原理。数百万人每天随身携带存放着他们个人信息的这些小设备,但它们到底安全吗?在各种安全大会的演讲中,在越狱社区里,甚至在研究人员的个人日志中,我们都可以发现关于iOS运行安全的信息。本书就是要把这些有关iOS内部原理的知识汇总起来。只有让人们都能接触到这些信息,才能让个人和企业有效评估使用这些设备的风险,并了解如何最大限度地降低这种风险。本书甚至可以提供一些让设备本身更安全与让用户使用起来也更安全的思路。

本书内容

本书是按iOS安全功能主题划分章节的,读者可以用不同的方式来阅读本书。不熟悉这些主题或是不想错过任何内容的读者可以从头至尾阅读整本书。本书从相对基础的章节开始,由浅入深地慢慢过渡到后面较为复杂和深奥的章节。而那些已经对iOS的内部细节有所了解的读者可以跳过开头部分,直接阅读自己感兴趣的那些章节。每一章的内容基本上都是相对独立的。在提到其他章的主题时,我们都会指明出处。下面来看一下本书中各章的主要内容。

  • 第1章概述iOS设备和iOS安全架构。我们在此介绍本书其余部分所要讨论的大部分主题,最后讨论针对各版iOS发动的一些攻击,包括最早期的一些攻击和针对iOS 5安全架构的一些攻击。

  • 第2章讨论iOS在企业中的使用,涉及诸如企业管理和服务提供之类的主题。此外,这一章还讲述如何为企业设备开发应用,包括开发者证书和配置概要文件的工作原理。

  • 第3章包含与iOS处理加密敏感数据相关的信息。这一章概述如何为每台iOS设备得出加密密钥以及如何使用这些加密密钥、各种等级的加密以及每种等级下都有哪些文件,讨论开发人员如何利用Data Protection API保护应用中的敏感数据。最后,我们还将展示如何通过蛮力攻击破解密码,以及4位数字密码的脆弱性。

  • 第4章针对iOS深入介绍一种主要的安全机制——代码签名。我们将为读者呈现相关的源代码和逆向工程二进制文件,它们用于确保只有由受信任机构签名的代码才能在设备上运行。这一章还将重点介绍iOS代码签名机制中的新内容,它们为实现即时编译而允许未签名的代码以一种严格受控的方式运行。最后,我们介绍iOS 5的早期版本中出现的代码签名机制漏洞。

  • 第5章介绍iOS中涉及沙盒的机制。我们将展示iOS内核如何支持把钩子程序放置在关键区域,讨论沙盒具体用到的钩子,然后举例说明应用如何完成自己的沙盒处理,并讲述重要的iOS功能是如何执行沙盒处理的。最后,这一章将讨论沙盒描述文件、这些文件如何描述沙盒所许可的功能,以及如何从iOS二进制文件中提取这些文件以用于研究。

  • 第6章展示如何利用模糊测试技术从默认的iOS应用中找到漏洞。我们首先模糊测,接着展示如何对iOS中最大的受攻击面MobileSafari进行模糊测试。这一章重点介绍进行iOS模糊测试的几种不同方式,包括在Mac OS X、iOS模拟器以及iOS设备上进行模糊测试。最后,我们还将展示如何对台式机上没有的SMS解析器进行模糊测试。

  • 第7章讲述如何利用第6章介绍的技术找到漏洞,并将其转换为有效的漏洞攻击程序。我们将详细分析iOS的堆管理系统,并说明如何利用“堆风水”技术操控堆内存。然后,这一章讨论漏洞攻击程序开发中的一个主要障碍——地址空间布局随机化(ASLR)。

  • 第8章进一步向大家展示在控制进程后可以做些什么。在简要介绍iOS设备中使用的ARM架构后,我们就转而介绍面向返回的程序设计(ROP)。这里将向大家介绍如何手工创建和自动生成ROP有效载荷,还将给出一些ROP有效载荷的例子。

  • 第9章从用户空间转入内核。在介绍一些内核基础知识后,我们接着描述如何调试iOS内核从而监控其动态。这一章还将展示如何对内核进行漏洞审查以及如何利用找到的各种漏洞。

  • 第10章介绍越狱。首先,这一章讲述有关越狱工作原理的基础知识,接着详细描述不同类型的越狱工具,然后概述越狱工具所需的不同组成部分,包括对文件系统的修改、已安装的守护进程、激活,最后还将通览越狱利用的所有内核补丁。

  • 第11章介绍很多iOS设备中都有的另一个处理器——基带处理器。我们将展示如何设置与基带进行交互的工具,并介绍从过去到现在iOS设备的基带中都使用了哪些实时操作系统,然后说明如何对基带操作系统进行审计,还给出了一些漏洞示例。最后,这一章还将描述一些可以在基带操作系统上运行的有效载荷。

读者对象

本书是为所有希望了解iOS设备工作原理的人所写的。他们可以是希望融入越狱社区的人,也可以是试图了解如何以安全方式存储数据的应用开发人员,还可以是想要了解如何保障iOS设备安全的企业管理人员,或者尝试从iOS中寻找瑕疵的安全研究人员。

这些目标读者几乎都应该阅读和理解本书前面的章节。虽然后面的章节也都试着从基础知识开始介绍,但是理解这些内容至少能熟悉一些基本套路,比方说如何使用调试器和如何阅读代码清单等。

所需工具

如果大家只想对iOS的工作原理有个初步的了解,本书完全可以满足需要。不过,为了掌握本书的绝大部分内容,我们希望大家参照书中示例在自己的iOS设备上进行操作。这样的话,大家就至少需要一部iOS设备。为了真正掌握这些例子,大家需要为iOS设备越狱。此外,虽然有可能为其他平台凑齐一套能起作用的工具,但是为了使用Xcode编译示例程序,大家最好有一台运行Mac OS X的计算机。

配套网站

本书配套网站www.wiley.com/go/ioshackershandbook中有本书的所有代码1,因此大家不需要自己一行一行敲代码。此外,对于书中提到的iOS特有的工具,只要有可能我们就都会收录在该网站上。本书勘误也可在本网站上查询,如果大家发现本书的错漏之处,还望不吝赐教。

1.本书源代码也可在图灵社区本书网页(http://www.ituring.com.cn/book/1068)免费注册下载。——编者注

祝贺大家

我们喜爱自己的iOS设备,我们都是果粉。不过,要是攻击者不能从中窃取个人信息的话,我们会更喜欢这些设备。尽管阅读本书这样的书籍没法让大家阻止所有针对iOS的攻击,但只有越来越多的人了解iOS的安全性及其工作原理,iOS才可能成为一个更安全的平台。请大家准备好,我们马上就要探索iOS安全了,而且要努力让它变得更安全。毕竟,有所了解就等于成功了一半。

目录

  • 版权声明
  • 关于作者
  • 前言
  • 致谢
  • 第1章 iOS安全基础知识
  • 第2章 企业中的iOS
  • 第3章 加密
  • 第4章 代码签名和内存保护
  • 第5章 沙盒
  • 第6章 对iOS应用进行模糊测试
  • 第7章 漏洞攻击
  • 第8章 面向返回的程序设计
  • 第9章 内核的调试与漏洞攻击
  • 第10章 越狱
  • 第11章 基带攻击
  • 附录 参考资料