描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121306068
√ iOS 安全模型及其内置保护模式的局限
√ 无数种会导致敏感数据泄漏的方式,例如剪贴板导致的泄漏
√ 如何使用钥匙串、数据保护 API 及 CommonCrypto 实现加密
√ 由于 C 语言本身所遗留的缺陷,从而导致 iOS 应用如今会遇到的一些问题
√ 收集用户数据所带来的隐私问题,以及如何避免在收集过程中会遇到的潜在陷阱
推荐序 …………………………………………………………………………………………………………. V
译者序 ……………………………………………………………………………………………………….. VII
作者简介 ……………………………………………………………………………………………………… IX
前言 ……………………………………………………………………………………………………………. XI
致谢 …………………………………………………………………………………………………………. XXI
部分 iOS 基础
第1 章 iOS 安全模型 …………………………………………………………………………………… 2
安全启动 …………………………………………………………………………………………………………… 3
沙盒机制 …………………………………………………………………………………………………………… 3
数据保护和全盘加密 ………………………………………………………………………………………….. 4
加密密钥的层级………………………………………………………………………………………….. 5
钥匙串API …………………………………………………………………………………………………. 7
数据保护API ……………………………………………………………………………………………… 7
防御代码漏洞:ASLR、XN 和其他机制 …………………………………………………………….. 8
越狱检测 …………………………………………………………………………………………………………… 9
苹果商店的审查是否有用 …………………………………………………………………………………. 10
WebKit 桥接 ……………………………………………………………………………………………… 11
XXIV iOS应用安全权威指南
动态修复 ………………………………………………………………………………………………….. 11
故意植入不安全的代码 ……………………………………………………………………………… 12
内嵌解释器 ………………………………………………………………………………………………. 12
小结 ……………………………………………………………………………………………………………….. 12
第2 章 Objective-C 简明教程………………………………………………………………………. 13
关键的iOS 编程技术 ……………………………………………………………………………………….. 14
消息传递 …………………………………………………………………………………………………………. 14
剖析Objective-C 程序 ………………………………………………………………………………………. 15
声明一个接口 …………………………………………………………………………………………… 15
具体实现 ………………………………………………………………………………………………….. 16
使用block 指定回调 …………………………………………………………………………………………. 18
Objective-C 如何管理内存 ………………………………………………………………………………… 19
自动引用计数 …………………………………………………………………………………………………… 19
委托和协议………………………………………………………………………………………………………. 20
should 消息 ……………………………………………………………………………………………….. 20
will 消息 …………………………………………………………………………………………………… 21
did 消息 ……………………………………………………………………………………………………. 21
声明并遵守协议………………………………………………………………………………………… 21
category 的潜在问题 …………………………………………………………………………………………. 23
方法swizzling ………………………………………………………………………………………………….. 24
小结 ……………………………………………………………………………………………………………….. 26
第3 章 iOS 应用剖析 …………………………………………………………………………………. 27
对plist 文件进行处理 ……………………………………………………………………………………….. 29
设备目录 …………………………………………………………………………………………………………. 32
Bundle 目录 ……………………………………………………………………………………………………… 34
Data 目录 …………………………………………………………………………………………………………. 35
Documents 和Inbox 目录 …………………………………………………………………………… 35
Library 目录 ……………………………………………………………………………………………… 36
tmp 目录 …………………………………………………………………………………………………… 38
Shared 目录 ……………………………………………………………………………………………………… 38
小结 ……………………………………………………………………………………………………………….. 39
第二部分 安全性测试
第4 章 构建测试平台 …………………………………………………………………………………. 42
拆掉辅助轮………………………………………………………………………………………………………. 42
推荐几个测试设备 ……………………………………………………………………………………………. 43
使用设备测试与使用模拟器测试 ………………………………………………………………………. 44
网络和代理设置 ……………………………………………………………………………………………….. 45
绕过TLS 验证 ………………………………………………………………………………………….. 45
用stunnel 绕过SSL …………………………………………………………………………………… 47
设备上的证书管理 …………………………………………………………………………………….. 49
在设备上设置代理 …………………………………………………………………………………….. 50
Xcode 和构建设置 ……………………………………………………………………………………………. 53
为生活增加点挑战 …………………………………………………………………………………….. 53
启用完整的ASLR …………………………………………………………………………………….. 55
Clang 和静态分析 ……………………………………………………………………………………… 56
Address Sanitizer 和动态分析 …………………………………………………………………….. 57
使用Instruments 监控程序 ………………………………………………
推荐序
在数字浪潮席卷全球之前,人们出门时并不会随身携带装满私人敏感信息的电子设备。而现在,几乎每个人都会随身携带一部手机,里面装满了各种私人信息。
智能手机给我们带来的不只是便利。它包含如此多的信息,对许多美国人来说,它就是“生活隐私”的载体。技术的进步让信息无处不在,但是这并不会降低信息的重要性,我们需要为了保护信息不断奋斗,就像国父们一样。
——首席大法官John Roberts,出自莱利诉加利福尼亚案(2014)
大多数人都承认,智能手机是21 世纪影响力的发明。自 2007 年代iPhone 问世以来,智能手机的用户量暴增。到2015 年年末写这本书时,全球已有近34 亿手机用户,大概占世界人口的一半(全世界有超过73 亿人)。在全球范围内,智能手机已经超过了电脑,成为访问互联网的主力。智能手机的普及对人类文明的影响完全能写一本书。手机正在改变世界,无数人通过手
机访问互联网上的教育和娱乐资源,到处都是金矿。在某些国家,移动互联网和社交网络甚至能让专制政权垮台,能推动社会变革。
即使是美国法院的七旬老人也已经意识到现代移动设备的威力,并做出了新的判例。就像上面莱利诉加利福尼亚案所提到的,智能手机不仅是一部电子设备——它是人民隐私的入口。
和所有的技术革命一样,移动技术的普及也会产生一些负面影响。我们有能力与世界各地的人建立联系,但这并不能提升面对面的沟通能力,而且移动技术也无法消除世界上长久以来的贫富差距。与此同时,和企业云计算、个人计算机及网络革命一样,智能手机也会引入新的安全漏洞,同时需要面对现有的各种安全问题。
2007 年发布的智能手机确实有一些重要的技术创新,但是真正吸引第三方开发者的是之后发布的SDK 和开放应用商店。由此也诞生了一批新时代的开发者,他们需要从过去的安全教训中汲取经验,适应未来全新的、不确定的环境。
我和David Thiel 已经相识10 年之久,他对新技术的热情给我留下了深刻的印象。一旦出现新技术,David 就会马上通过检查、反编译、破解来掌握它,并用新知识来增强其他技术的安全性。David 很早就意识到iPhone 会出现新的安全问题,因此从iPhone 操作系统SDK 发布的天起,他就已经开始研究应用开发者可能会犯的错误,以及如何越过平台限制开发安全的应用。
本书是迄今为止对iOS 安全介绍为全面的书籍。每一位心系用户的开发者都应该遵循本书的指导来设计自身的产品、组织结构和技术决策。David 把多年来踩过的坑和解决方案都写了下来,希望你能认真学习。
智能手机潜力巨大,但要让它真正发挥作用,我们必须尽努力让设备安全可信,保护用户隐私不被泄露。
Alex Stamos
Facebook 首席安全官
译者序
随着2007 年代iPhone 的诞生,一个崭新的移动互联网时代拉开了序幕。截至iPhone 7 上市,苹果的Apple Store 应用累积下载1400 亿次,巨大的商机令全球的开发者们纷至沓来。截至2015 年,仅中国的开发者就突破了100万,稳居世界。
随着硬件机能的日新月异,iOS——这一具有划时代意义的操作系统也迎来了它的10 岁生日。在每年的WWDC 上,苹果总是不遗余力地向全世界的开发者们展示的操作系统,介绍新的特性、新的API,甚至是编程实践。
然而正所谓树大招风,iPhone 用户也是黑产们眼中高质量的攻击目标。虽然苹果独特的沙盒机制已经限度地保护了用户的隐私安全,但目前针对iOS 的黑色产业链已涉及方方面面。2015 年9 月中国大陆地区出现了XcodeGhost 病毒感染开发工具Xcode 的风波,给所有iOS 开发的从业者敲响了警钟,就连微信这种国民级App 都未能幸免,这进一步说明了提升国内iOS开发者安全意识的紧迫性。
每次iOS 版本更新时,市面上都会出版大量与iOS 开发相关的书籍,但绝大部分的书都是教你如何使用iOS SDK 提供的API 来开发一个App。大多数情况下,能熟练运用这些API 就足够了,但如果想立志成为一名进阶的iOS 开发者,使编写出来的代码更加稳定和安全,就要对iOS 系统的底层细节和安全机制有所了解。可惜的是,市面上关于iOS 系统安全机制和底层研究的书凤毛
麟角。
Swift.GG 作为国内走心的翻译组之一,通过一次偶然的机会得知电子工业出版社正在寻找《iOS 应用安全权威指南》一书的译者。双方一拍即合,决定为中国的开发者们带来一本关于iOS 安全机制与底层细节的书籍,从而补上iOS 开发“安全”这后一块拼图。
本书的作者David Thiel,自2008 年初代iPhone 诞生后的年起,就开始对iOS 应用进行各种安全检测和渗透实验,时至今日,已经积攒了大量的经验。
无论你是刚入门的小菜鸟,还是已经摸爬滚打多年的老司机,本书都会循序渐进地带你重温iOS 基础的基本结构、安全背景;再更进一步地手把手教你搭建一个安全测试环境,进行代码分析、逆向工程;之后本书将iOS 薄弱、易受攻击的软肋一一列举,并告诉开发者如何避开这些陷阱;后一部分,将会为我们演示如何利用加密手段限度地保护用户的数据和隐私。
本书在翻译过程中,得到了阿里巴巴安全大神蒸米同学的悉心指导;在本书的校对过程中,SwiftGG 的创始人梁杰同学提出了很高的要求,并投入了极大的精力,在此对二位提出特别感谢。参与翻译的李俊阳、马超同学,以及后期参与校对的SwiftGG 小伙伴们,虽然大家身处异地,但从翻译到校对的整个过程都配合得行云流水,体现出了整个团队的高效与专业,无愧于国内“走心
翻译组”这一称号,再次感谢大家。后感谢电子工业出版社给了我们这次机会,感谢编辑们和审稿专家的细心检查。译者水平有限,bug 在所难免,还请读者批评指正。
程伟
前言
目前市面上有许多与iOS 安全有关的文章,主要涉及iOS 的安全模型、越狱、查找代码执行漏洞以及其他一些安全相关的特性。此外,还有一些文章从取证学角度来介绍,比如在犯罪调查中如何从物理设备或备份中提取数据。这些信息非常有用,但市面上主流的iOS 书籍都在介绍应用开发,而本书的目标是要填补一个更大的空白。
在真实世界中,人们的注意力并没有聚焦在如何开发安全的iOS 应用或对iOS 应用进行安全评估上。由此产生的后果,就是在iOS 应用中存在着一些令人尴尬的安全漏洞,这些漏洞会曝光用户的敏感数据、规避认证机制,甚至滥用用户隐私(无论是有意还是无意的)。随着iPhone 等智能设备的普及,人们越来越多地使用iOS 来处理一些关键任务,并委托这些应用来处理与之相关的
大量敏感信息,所以iOS 应用的安全性需要被充分考虑到。
我编写本书的目的,就是尽可能地为读者介绍真实环境中是如何安全地开发iOS 应用程序的。iOS 是一个快速更迭的系统,但是我会尽可能讲解一些不变的知识,并教你使用一些工具来剖析iOS 系统,让你能适应未来API 的变化(万变不离其宗)。
不同版本的iOS 存在不同的安全漏洞。虽然苹果已经终结了某些设备的寿命(停产),但是开发者仍然希望他们的应用能够运行在这些老旧设备上(比如代iPad)。本书所要展示的漏洞覆盖了(本书完稿之时)从iOS 5.x 到9.0 的系统,针对每一个版本,我都会讨论相应的风险与应对措施。
本书的目标读者首先,这是一本关于安全的书。如果你是一个开发者或者安全专家,并且
正在研究iOS 应用存在的漏洞(以及对应的修复方法),那么恭喜你,看这本书就对了!
如果你有一些iOS 开发经验或者熟悉iOS 应用的底层工作机制,那么你将从本书中学到大量的干货。不过,即使没有这些知识,只要你是一个有经验的程序员或渗透测试人员,必要时有钻研苹果官方文档的勇气,那就完全可以畅读本书。我会在第2 章带你快速预览一遍Objective-C 和一些常用的API,顺便熟悉一下Cocoa Touch。如果需要强化一下语言方面的基础知识(或者想复习
一下),可以从第2 章开始。
本书的内容
大概从2008 年开始,我就一直在进行各种各样的iOS 应用安全检测和渗透实验,从中收集了大量的陷阱和错误,这些都是开发者在实际开发iOS 应用程序时会碰到的。如果你正在寻求更安全的应用开发实践,又或者是作为一个安全专家想要学习如何定位iOS 的安全问题,那么你一定不能错过本书总结的知识点。
本书的结构
部分:iOS 基础,你将深入了解iOS 的背景,熟悉它的安全历史及其应用程序的基本结构。
? 第1 章:iOS 安全模型,简要分析iOS 的安全模型,介绍该平台的基础防范措施,展示它能做什么、不能做什么。
? 第2 章:Objective-C 简明教程,解释了Objective-C 与其他编程语言的不同之处,简要介绍了一些专业术语和设计模式。对于经验丰富的Objective-C 程序员来说,这可能并不算什么新的内容,但是对于初学者和初次涉猎iOS 的开发者来说很有价值。
? 第3 章:iOS 应用剖析,概述了iOS 应用程序的结构和打包方式,研究了本地的存储机制以及泄露敏感信息的方式。
第二部分:安全性测试,你将学习如何在开发或渗透测试中建立安全的测试环境,我也会分享一些配置Xcode 的小技巧,从而化地利用现有的安全机制。
? 第4 章:构建测试平台,工欲善其事必先利其器,本章将介绍所有用到的工具软件,并学习如何配置这些软件,让它们帮助我们来检查和测试iOS 应用。具体来说,本章将会介绍模拟器、配置代理、绕过TLS 验证以及分析应用的特征行为。
? 第5 章:使用lldb 和其他工具进行调试,你可以使用lldb 和Xcode 的内建工具来更加深入地监控应用程序的行为,这些工具将帮助你分析代码中的复杂问题,还能帮你实现错误注入这样的功能。
? 第6 章:黑盒测试,深入
评论
还没有评论。