一本物有超值的实用好书!集思想与实践于一体!
唐巧说“看过本书的朋友,能将自己的iOS应用在安全方面的得分,从不及格提升到80分”。
《iOS应用安全攻防实战》的特色在于:结合攻击和防御(反攻击)的双向思路,从iOS应用安全的实例出发,演示了多重iOS攻击方式,以及黑客常用的工具和技术,帮助读者从思路和具体实践上全面提升自己的iOS应用安全水平。
《iOS应用安全攻防实战》提供了一个全面了解和学习安全攻防的体系。了解攻-防的思路,可以帮助读者以不变应万变,超出iOS版本的限制,并且更清晰地从版本更迭中了解系统的变化和新特性,从而不断提升自己分析和解决问题的能力。
为了帮助读者更好地理解书中思想,译者在书末增加了附录详细介绍iOS系统的变化及其影响。
数据被盗等安全问题已经不再是一件罕见的事情了。在这个信息化的时代里,数据就是价值,而且有越来越多的迹象表明,攻击者也正逐步将攻击目标转到移动端。如何保障自己的应用数据安全?《iOS应用安全攻防实战》将会提供一些用于防御常见攻击方法的方式。安全专家Jonathan Zdziarski将演示攻击者用来窃取数据、操控软件的许多技术,并向开发者介绍如何避免在件中犯下各类常见的错误,以及避免软件被轻易地受到攻击。
前言 xv
第1章你所知道的一切都是错的 1
单一化方案的误解 2
iOS安全模型 4
iOS安全模型的组件 4
钥匙和锁存在一起 7
密码等于弱安全 8
数字取证击败加密 9
外部数据同样也有风险 10
劫持流量 10
数据可能很快就被偷走 11
谁都不要信,包括你的应用软件 12
物理访问并非必需的 13
总结 14
第1篇攻击
第2章 iOS攻击基础 17
为什么要学习如何破解一台设备 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
美国国防部 522022-M标准擦除 282
Objective-C 284
擦除SQL记录 286
键盘缓存 292
随机化PIN码 292
应用程序屏幕快照 294
第12章运行时库安全 297
篡改响应 297
擦除用户数据298
禁止网络访问 298
报告机制 299
启用日志记录 299
第2篇防护
第10章加密实现 249
密码强度 249
当心随机密码生成器 252
Common Crypto介绍 253
状态操作 253
有状态加密 258
主密钥加密 261
地理加密 266
使用口令的地理加密 269
拆分服务器端密钥 271
安全内存 273
清除内存 274
公钥加密体系 275
练习 280
第11章反取证 281
安全的文件擦除 281
美国国防部 522022-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