作 者:(美)David Thiel(戴维·希尔) 著 程伟 译
定 价:69
出 版 社:电子工业出版社
出版日期:2017年01月01日
页 数:292
装 帧:简装
ISBN:9787121306068
●目录
推荐序 ......................................................................................................................... V
译者序 ....................................................................................................................... VII
作者简介 ..................................................................................................................... IX
前言 ............................................................................................................................ XI
致谢 ......................................................................................................................... XXI
部分 iOS 基础
章 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 监控程序 ............................................................................................. 58
激活工具 ................................................................................................................. 59
用Watchdog 监视系统活动 ................................................................................... 61
小结 ................................................................................................................................ 62
第5 章 使用lldb 和其他工具进行调试 ..................................................................... 63
lldb 中有用的特性 ..........................................................................................................
操作断点 .................................................................................................................
查看帧和变量 ......................................................................................................... 66
XXVI iOS应用安全指南
可视化查看对象...................................................................................................... 70
操作变量和属性...................................................................................................... 71
断点行为 ................................................................................................................. 73
使用lldb 进行安全分析 ................................................................................................. 75
错误注入 ................................................................................................................. 75
追踪数据 ................................................................................................................. 77
查看核心框架 ......................................................................................................... 77
小结 ................................................................................................................................ 78
第6 章 黑盒测试 ..................................................................................................... 79
安装第三方应用程序 ...................................................................................................... 80
使用.app 目录安装 .................................................................................................. 80
使用.ipa 程序包安装 ............................................................................................... 82
解密二进制文件 .............................................................................................................. 82
启动设备上的debugserver ..................................................................................... 83
定位加密字段 ......................................................................................................... 86
转储应用程序内存 .................................................................................................. 90
逆向解密后的二进制文件 .............................................................................................. 93
使用otool 检查二进制文件 ................................................................................... 93
使用class-dump 获得类信息 ................................................................................. 95
使用Cycript 从运行程序中提取数据 .................................................................... 96
使用Hopper 反汇编 ................................................................................................ 97
绕过证书锁定 .................................................................................................................. 99
使用Cydia Substrate 工具 ............................................................................................ 100
使用Introspy 自动拦截 ................................................................................................ 104
小结 ............................................................................................................................... 107
目录 XXVII
第三部分 Cocoa API 的安全怪癖
第7 章 iOS 网络通信 ............................................................................................ 110
使用iOS 自带的URL 加载系统 ................................................................................. 110
正确使用传输层安全协议 .................................................................................... 111
NSURLConnection 的基本身份验证策略 ........................................................... 113
在NSURLConnection 中实现TLS 认证 ............................................................. 115
修改重定向行为.................................................................................................... 117
TLS 证书锁定 ....................................................................................................... 117
使用NSURLSession ..................................................................................................... 120
NSURLSession 配置 ............................................................................................. 120
执行NSURLSession 任务 .................................................................................... 121
如何绕过NSURLSession 的TLS 验证 ............................................................... 122
NSURLSession 中的基本身份验证 ..................................................................... 123
管理已存储的URL 凭证 ...................................................................................... 125
使用第三方网络API 的风险 ....................................................................................... 126
如何正确使用AFNetworking .............................................................................. 126
ASIHTTPRequest 的错误使用方式 .................................................................... 128
多点连接 ....................................................................................................................... 129
使用NSStream 操作底层网络 ..................................................................................... 131
使用CFStream 操作更加底层的网络 .......................................................................... 133
小结 ............................................................................................................................... 134
第8 章 进程间通信 ............................................................................................... 135
URL scheme 和openURL 方法 .................................................................................... 135
定义URL scheme .................................................................................................. 136
发送和接收URL/IPC 请求 .................................................................................. 137
验证URL 和发送者 .............................................................................................. 138
劫持URL scheme .................................................................................................. 140
XXVIII iOS应用安全指南
通用链接 ....................................................................................................................... 141
使用UIActivity 共享数据 ............................................................................................ 143
应用程序扩展 ................................................................................................................ 145
检查应用程序是否实现了扩展 ............................................................................ 146
和验证可共享的数据 .................................................................................... 147
禁止应用和扩展交互 ............................................................................................ 148
失败的IPC 技巧:剪贴板 ........................................................................................... 149
小结 ............................................................................................................................... 150
第9 章 适用于iOS 的Web 应用 ........................................................................... 151
使用(并滥用)UIWebView ........................................................................................ 151
UIWebView 的使用方式 ....................................................................................... 152
在UIWebView 中执行 代码 ............................................................... 153
桥接-Cocoa 的收益和风险 .......................................................................... 154
应用与Core 交互 ................................................................................. 155
使用Cordova 执行 代码 ..................................................................... 159
使用WKWebView ........................................................................................................ 163
WKWebView 的使用方式 .................................................................................... 163
WKWebViews 的安全性优势 ............................................................................... 1
小结 ............................................................................................................................... 166
0 章 数据泄漏 ................................................................................................. 167
揭秘NSLog 和苹果系统日志 ...................................................................................... 167
在发布版本中禁用NSLog ................................................................................... 169
使用断点行为来记录日志 .................................................................................... 170
敏感数据如何通过剪贴板泄漏 .................................................................................... 171
不受的系统剪贴板 ........................................................................................ 171
命名剪贴板的风险 ................................................................................................ 172
剪贴板数据保护策略 ............................................................................................ 174
查找并修复HTTP 缓存泄漏 ........................................................................................ 176
缓存管理 ............................................................................................................... 177
如何删除缓存数据 ................................................................................................ 179
HTTP 本地存储和数据库中的数据泄漏 ............................................................. 182
按键记录及自动纠错数据库 ........................................................................................ 183
用户偏好设置的错误用法 ............................................................................................ 185
处理截屏中的敏感数据 ................................................................................................ 186
屏幕遮挡策略 ....................................................................................................... 187
遮挡原理解析 ....................................................................................................... 190
隐藏视图的常见问题 ............................................................................................ 191
阻止应用挂起,从而避免截屏 ............................................................................ 191
状态保存导致的泄漏 .................................................................................................... 192
安全的状态保存 ............................................................................................................ 194
远离iCloud .................................................................................................................... 196
小结 ............................................................................................................................... 197
1 章 C 语言的遗留问题 ................................................................................... 198
格式化字符串 ................................................................................................................ 199
预防传统的C 格式化字符串攻击 ....................................................................... 200
预防Objective-C 格式化字符串攻击 .................................................................. 201
缓冲区溢出及栈空间 .................................................................................................... 202
strcpy 缓冲区溢出 ................................................................................................. 203
预防缓冲区溢出.................................................................................................... 204
整数溢出和堆 ................................................................................................................ 206
malloc 引发的整数溢出 ........................................................................................ 206
预防整数溢出 ....................................................................................................... 208
小结 ............................................................................................................................... 208
2 章 注入攻击 ................................................................................................. 209
客户端的跨站脚本攻击 ................................................................................................ 209
输入审查 ............................................................................................................... 210
XXOS应用安全指南
输出编码 ............................................................................................................... 212
SQL 注入攻击 ............................................................................................................... 213
断言注入攻击 ................................................................................................................ 214
XML 注入攻击 .............................................................................................................. 216
通过XML 外部实体实现注入攻击 ..................................................................... 216
第三方XML 库的问题 ......................................................................................... 217
小结 ............................................................................................................................... 218
第四部分 保证数据安全
3 章 加密与认证 ............................................................................................. 220
使用钥匙串.................................................................................................................... 220
用户备份中的钥匙串 ............................................................................................ 221
钥匙串保护属性.................................................................................................... 221
钥匙串基础用法.................................................................................................... 223
封装钥匙串 ........................................................................................................... 226
共享钥匙串 ........................................................................................................... 227
iCloud 同步 ............................................................................................................ 228
数据保护API ................................................................................................................ 228
保护等级 ............................................................................................................... 229
DataProtectionClass 权限 ...................................................................................... 232
检查保护数据是否可用 ........................................................................................ 233
使用CommonCrypto 加密 ............................................................................................ 235
避免弱算法 ........................................................................................................... 236
正确使用初始化向量 ............................................................................................ 236
破碎的熵 ............................................................................................................... 237
弱密钥 ................................................................................................................... 237
执行散列操作 ................................................................................................................ 238
使用HMAC 确保消息的可靠性 .................................................................................. 239
使用RNCryptor 封装CommonCrypto ......................................................................... 240
使用TouchID 进行本地验证........................................................................................ 241
指纹是否足够安全 ................................................................................................ 242
小结 ............................................................................................................................... 242
4 章 移动端隐私问题 ...................................................................................... 243
设备标识符隐患 .................................................................................................... 243
官方解决方案 ....................................................................................................... 244
使用标识符的规则 ........................................................................................ 246
移动端Safari 及请勿追踪header 标签 ........................................................................ 246
Cookie 接受策略 ........................................................................................................... 247
位置和行动监控 ............................................................................................................ 249
地理位置定位的工作原理 .................................................................................... 249
存储位置数据的风险 ............................................................................................ 250
定位精度 ....................................................................................................... 250
请求位置数据 ....................................................................................................... 251
健康与运动信息管理 .................................................................................................... 252
通过HealthKit 读写数据 ...................................................................................... 252
M7 协处理器 ......................................................................................................... 254
申请收集数据 ................................................................................................................ 254
使用iBeacon 追踪距离................................................................................................. 255
iBeacon 监测功能 ................................................................................................. 256
将iOS 设备变为iBeacon ..................................................................................... 258
iBeacon 注意事项 ................................................................................................. 259
建立隐私策略 ................................................................................................................ 259
小结 ............................................................................................................................... 260
对于所有希望保护用户免受恶意攻击的开发者来说,消除iOS 应用当中的安全漏洞至关重要。在本书中,移动端安全专家David Thiel 向你揭示了那些会导致严重安全问题的常见iOS 编码漏洞,并阐述了找到并修复这些漏洞的方法。避免在应用的安全漏洞方面出现重大纰漏很重要。无论是需要加强应用的防御能力,还是要在他人的代码当中寻找安全漏洞,本书都能帮助你很好地完成工作。本书适合有一定经验、正致力于探究iOS 应用漏洞的开发者,也适合对渗透测试感兴趣的读者。
(美)David Thiel(戴维·希尔) 著 程伟 译
戴维·希尔在计算机安全领域有近20年的经验,他的研究成果和著作MobileApplicationSecurity(麦格劳-希尔出版公司)促进了iOS应用安全领域的诞生,他还多次在安全大会(比如BlackHat和DEFCON)上进行演讲。希尔曾在iSEC担任多年应用安全顾问,目前就职于Internet.org的Connectivity实验室。
程伟,SwiftGG翻译组核心成员,曾做过路由器、防火墙等安全硬件产品的firmware研发工作,对iOS开发也颇有研究,自Swift发布以来一直关注着它的发展,并保持有对新技术的热忱。目前就职于某国企负责项目管理工作,业余时间喜欢看书、跑步、烧菜等