下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
读书 > 移动开发 >IOS > iOS应用安全攻防实战

iOS应用安全攻防实战

综合评级:★★★★★

定价:79.00

作者:[美]Jonathan Zdziarski(约翰坦.斯的扎斯克) 著,肖梓航 李俱顺 译

出版社:电子工业出版社

出版日期:2015年7月

页数:384

字数:518000

ISBN:9787121260742

书籍介绍

数据被盗等安全问题已经不再是一件罕见的事情了。在这个信息化的时代里,数据就是价值,而且有越来越多的迹象表明,攻击者也正逐步将攻击目标转到移动端。如何保障自己的应用数据安全?《iOS应用安全攻防实战》将会提供一些用于防御常见攻击方法的方式。安全专家Jonathan Zdziarski 将演示攻击者用来窃取数据、操控软件的许多技术,并向开发者介绍如何避免在软件中犯下各类常见的错误,以及避免软件被轻易地攻击。

相关课程
目录

前言 .................................... xv

第1 章 你所知道的一切都是错的 ................................... 1

单一化方案的误解 ...............2

iOS 安全模型 ......................4

iOS 安全模型的组件 .....4

钥匙和锁存在一起 ...............7

密码等于弱安全 ..................8

数字取证击败加密 ...............9

外部数据同样也有风险 ......10

劫持流量 ............................10

数据可能很快就被偷走 ........................................ 11

谁都不要信,包括你的应用软件 ................................12

物理访问并非必需的 .........13

总结 ...................................14

第1 篇 攻击

第2 章 iOS 攻击基础 ......... 17

为什么要学习如何破解一台设备 ................................17

越狱解析 ............................18

开发者工具 .................18

终端用户越狱 ....................20

越狱一台iPhone .........21

DFU 模式 ....................22

不完美越狱和完美越狱 ........................................24

攻破设备并注入代码 .........24

构建定制代码 ..............25

分析你的二进制程序 .........27

测试你的二进制程序 .........29

代码守护化 .................31

以tar 归档包的形式部署恶意代码 .......................35

以RAM 磁盘形式部署恶意代码 ..........................36

练习 ...................................50

总结 ...................................50

第3 章 窃取文件系统 ......... 53

全盘加密 ............................53

固态NAND .................53

磁盘加密 .....................54

iOS 硬盘加密会让你在哪里失败 ..........................55

复制实时文件系统 .............56

DataTheft 载荷 ............56

定制launchd ................66

准备RAM 磁盘 ...........72

创建文件系统镜像 ......73

复制原始文件系统 .............75

RawTheft 载荷.............75

定制launchd ................80

准备RAM 磁盘 ...........81

创建文件系统镜像 ......82

练习 ...................................83

社会工程学的作用 .............83

无法正常使用的诱饵设备 ....................................84

未激活的诱饵设备 ......85

包含恶意代码的诱饵 ...86

密码工程学软件 ..........86

总结 ...................................87

第4 章 取证跟踪和数据泄露 ........................................ 89

提取照片的地理标签 .........90

被合并到一起的GPS 缓存 ...................................91

SQLite 数据库 ....................93

连接到一个数据库 ......93

SQLite 内建命令 .........94

执行SQL 查询 ............95

重要的数据库文件 ......95

联系人地址簿 ..............95

地址簿头像 .................97

Google 地图数据 .........99

日历事件 ................... 105

通话记录 ................... 105

电子邮件数据库 ........ 106

笔记 ........................... 107

照片元数据 ............... 108

短信 ........................... 108

Safari 书签 ................. 109

短信spotlight 缓存 .... 109

Safari Web 缓存 ......... 110

Web 应用缓存 ........... 110

WebKit 存储 .............. 110

语音邮件 ................... 110

对残余的数据库记录进行逆向 ................................. 111

短信草稿 .......................... 113

属性列表 .......................... 113

重要的属性列表文件 . 114

其他重要的文件 ............... 119

总结 ................................. 121

第5 章 对抗加密 .............. 123

Sogeti 数据保护工具 ........ 123

安装数据保护工具 .... 124

构建暴力破解器 ........ 125

构建需要的Python 库 ........................................ 126

提取加密密钥 .................. 126

KeyTheft 载荷 ........... 126

定制launchd .............. 127

准备RAM 磁盘 ......... 128

准备内核 ................... 129

执行暴力破解 ............ 130

解密钥匙链 ...................... 133

解密原始磁盘 .................. 135

解密iTunes 备份文件 ...... 137

通过间谍件对抗加密 ....... 137

SpyTheft 载荷............ 138

将spyd 守护化 .......... 143

定制launchd .............. 144

准备RAM 磁盘 ......... 145

执行载荷 ................... 145

练习 ................................. 146

总结 ................................. 146

第6 章 无法销毁的文件 ... 147

刮取HFS 日志 ................. 148

还原闲置空间 .................. 150

常被还原出来的数据 ....... 150

应用软件屏幕截图 .... 150

已删除的属性列表 .... 152

已删除的语音邮件和录音 .................................. 152

以删除的键盘缓存 .... 152

照片和其他个人信息 . 152

总结 ................................. 153

第7 章 操作运行时环境 ... 155

分析二进制软件 ............... 156

Mach-O 文件格式 ...... 156

class-dump-z 简介 ..... 160

符号表 ....................... 161

加密的二进制文件 ........... 163

计算偏移值 ............... 164

转储内存 ................... 165

将解密的代码复制回文件 .................................. 167

重置cryptid ............... 168

利用Cycript 操作运行时 . 170

安装Cycript .............. 171

使用Cycript .............. 171

破解简单的锁 ............ 173

替换方法 ................... 180

撒网搜寻数据 ............ 182

记录数据 ................... 185

更多严重的隐含问题 . 186

练习 ................................. 194

SpringBoard 动画 ...... 194

接听来电 ................... 195

屏幕截图 ................... 195

总结 ................................. 195

第8 章 操纵运行时库 ....... 197

Objective-C 程序解析 ...... 197

类实例变量 ............... 199

类方法 ....................... 200

类方法缓存 ............... 200

反汇编与调试 .................. 201

监视 ........................... 206

底层Objective-C 框架 ........................................ 208

Objective-C 接口 ....... 210

恶意代码注入 .................. 212

CodeTheft 载荷 ......... 212

使用调试器注入 ........ 213

使用动态连接攻击注入 .... 215

全设备感染 ............... 216

总结 ................................. 217

第9 章 劫持流量 .............. 219

APN 劫持 ......................... 219

交付载荷 ................... 222

清除 ........................... 224

简单的代理设置 ............... 225

攻击SSL .......................... 225

SSLStrip .................... 225

Paros Proxy ............... 227

浏览器警告 ............... 228

攻击应用软件级别的SSL 验证 ................................ 231

SSLTheft 载荷 ........... 233

劫持基础HTTP 类 ........... 238

POSTTheft 载荷 ........ 238

分析数据 .......................... 241

Driftnet ............................. 243

构建 ........................... 243

运行 ........................... 244

练习 ................................. 246

总结 ................................. 246

第2 篇 防护

第10 章 加密实现 ............ 249

密码强度 .......................... 249

当心随机密码生成器 . 252

Common Crypto 介绍 ....... 253

无状态操作 ............... 253

有状态加密 ............... 258

主密钥加密 ...................... 261

地理加密 .......................... 266

使用口令的地理加密 . 269

拆分服务器端密钥 ........... 271

安全内存 .......................... 273

清除内存 ................... 274

公钥加密体系 .................. 275

练习 ................................. 280

第11 章 反取证 ............... 281

安全的文件擦除 ............... 281

美国国防部 5220.22-M 标准擦除 ....................... 282

Objective-C ............... 284

擦除SQL 记录 ................. 286

键盘缓存 .......................... 292

随机化PIN 码 .................. 292

应用程序屏幕快照 ........... 294

第12 章 运行时库安全 ..... 297

篡改响应 .......................... 297

擦除用户数据 ............ 298

禁止网络访问 ............ 298

报告机制 ................... 299

启用日志记录 ............ 299

暗桩和自杀分支 ........ 299

进程调试检测 .................. 300

阻挡调试器 ...................... 302

运行时库类完整性检查 .... 304

检查内存地址空间 .... 304

内联函数 .......................... 316

反汇编复杂化 .................. 324

优化标记 ................... 324

去除符号 ................... 329

循环展开-funroll-loops ...................................... 336

练习 ................................. 339

第13 章 越狱检测 ............ 341

沙盒完整性检测 ............... 341

文件系统检测 .................. 343

越狱文件是否存在 .... 343

/etc/fstab 文件大小 .... 344

符号链接检测 ............ 345

分页执行检查 .................. 345

第14 章 下一步 ............... 347

像攻击者一样思考 ........... 347

其他逆向攻击 .................. 347

安全对抗代码管理 ........... 348

灵活的方式实现安全 ....... 349

其他不错的书籍 ............... 349

附录A 新的起点 ............... 351

前言
数据被盗了,这并不是一件罕见的事。在这个信息化的时代,窃取数据成为一件非常有利可图的事情。无论是钓鱼还是大规模的数据泄露,罪犯都可以从电子犯罪中大量获利,并且其收益远超因此承担的风险。当我说这件事并不罕见时,不是在表示不屑,而是在向你发出警告。你的企业中所使用的应用软件里存在可攻击漏洞的可能性非常高。恶意攻击者使用已有军火库中的一系列工具可以对应用软件进行逆向工程、跟踪和操纵,而这些是绝大部分程序员所没有意识到的,甚至许多加密实现都非常脆弱,一个训练有素的攻击者可以从这样或者那样的角度渗透进入,许多次都凸显出软件开发者对安全的错误认识。

攻击者可以采用已经被广泛所知的关于安全漏洞的知识,将其用于长期连接到公共网络的设备、用于可以从你口袋里窃取出来的设备、用于经常被遗忘在吧台上的设备。攻击者只需要花几分钟的时间就可以复制出设备中的文件,或者恶意地注入间谍件或rootkit,从而轻松地获得设备中的企业应用软件及其保护的数据——这一切甚至可以在你去别处喝了一杯返回吧台前完成。攻击者可以通过各种各样的方法窃取到移动平台的应用软件和数据,之后再悠闲地进行攻击,有时设备所有者压根就不会知道,甚至有时都不需要物理地接触到设备。

本书将演示黑帽子用来窃取数据、操纵软件的许多技术,以及向开发者介绍如何避免在软件中犯下各类常见的错误,避免软件被轻易地攻击。这些攻击并不仅限于从设备上窃取数据,还可能导致更多邪恶的攻击。本书中,你将看到一个示例说明如何攻破一些信用卡支付处理软件,这个问题不仅将存储在设备上的信用卡数据暴露给了攻击者,还可以通过操纵该软件将商户的巨额信用卡资金用于退还给其并没有实际进行过的交易,从而直接从该商户的账户上窃取资金。你还会看到其他许多示例,对这些漏洞进行利用不仅会导致那些移动应用软件的数据产生风险,还让使用这些软件的人陷入危机。读者还会了解到这些攻击是如何执行的,并看到许多示例和演示说明如何编写更安全的代码使应用软件不会受到这些攻击。

本书读者

本书适合给iOS 开发人员用于学习设计安全的应用软件,不仅针对政府或金融类软件,还包括所有开发者希望保护其中的数据或功能的软件。为了理解本书中的大部分内容,你需要对iOS 的Objective-C 开发有一定的基础。如果对C 或汇编语言有了解会更好,但并不是必需的。

虽然本书主要针对iOS,但许多材料都可以直接用于Mac OS X 计算机。因为这两个环境都是Objective-C 环境,并且有许多相同的工具,因此,从本书中你还会发现许多内容可以用于从Mac OS X 的软件中找到漏洞。

全书结构

本书分为两部分。第1 篇讨论iOS 和iOS 软件中存在的许多漏洞及其攻击方法,第2 篇介绍如何开发更安全的软件。

第1 章介绍移动安全的核心问题,并且列举出常见的误解,以及许多开发人员对安全的错误的思维方式。

第2 章向读者介绍许多攻击iOS 设备的技术,包括越狱。读者会学到如何构建一份定制的代码,并通过流行的越狱技术和定制RAM 磁盘将其注入到iOS 设备中。

第3 章介绍了如何在几分钟内窃取到iOS 设备的文件系统,以及为什么开发者不能仅仅依赖于设备厂商所提供的磁盘加密功能。你还会学到如何通过一些常见的社会工程学方法接触到一台设备而不让其所有者察觉。

第4 章介绍如何对操作系统中遗留的数据进行取证分析,以及攻击者可以从窃取到的设备中获得哪些信息。

第5 章介绍如何攻击iOS 的钥匙链加密和数据保护加密机制,以及这些机制的内在问题。

第6 章演示如何通过HFS 的日志系统获得已删除的文件,并给出如何安全地删除文件使其无法被恢复的示例。

第7 章介绍一些用于侦查和操纵运行时环境的工具,并演示攻击者可以如何操纵应用软件中的对象、变量和方法来绕过各类安全保护。

第8 章介绍许多工具和方法,可以用于反汇编和调试软件、注入恶意代码,以及开展其他底层攻击。

第9 章介绍用于劫持SSL 会话的一些工具,并说明如何防止自己的软件陷入这类攻击中。

第10 章详细介绍多种安全机制和方法,以及如何用恰当的加密技术来保护数据。

第11 章介绍如何将软件设计为残留更少的跟踪信息,从而避免数据被取证分析而泄露。

第12 章介绍用于让攻击软件变得更复杂和困难的许多实践方法。

第13 章给出了一些技术,软件可以用它们来检测是否运行在一台越狱后的设备中,以及是否存在一些流行的越狱工具。

第14 章总结全书,说明理解问题并制定战略的重要性。

本书约定

本书中使用下列字体约定:

斜体(Italic)

用于表示网址(URL)、邮箱地址、文件名和文件扩展名等。

楷体

用于表示新的术语。

等宽字体(Constant width)

用于列举代码,以及对变量名、函数名、数据库、数据类型、环境变量、声明语句、

关键词等代码元素的行内引用。

等宽加粗字体(Constant width bold)

用于显示要输入的命令,或者其他应该引起读者注意的文本。

等宽斜体(Constant width italic)

用于说明这部分文本应该由读者根据上下文提供新的值来替换。

这类标注通常是一个技巧、建议或者一般性标注。

这类标注用于警告或提醒。

热门图书
推荐新闻
技术文库
论坛推荐