Android应用安全测试与防护
作者:何能强,阚志刚,马宏谋 著
出版时间: 2020年版
内容简介
《Android应用安全测试与防护》全面介绍了 Android 应用安全测试与防护技术,主要内容包括安全基础、测试工具、安全测试和安全防护四个部分。第一部分简要介绍了 Android 应用的安全基础,包括 Android 应用的生成和运行过程、Android 系统的安全模型;第二部分详细介绍了静态分析、动态分析、抓包分析、挂钩框架等常用的安全测试基本工具;第三部分重点介绍了 Android 应用安全测试内容,包括 Android 应用涉及的信息资产和安全测试框架,分别从程序代码、服务交互、本地数据、网络传输和鉴权认证 5 个方面介绍 App 的安全要求和测试方法;第四部分全面介绍了 Android 应用的安全防护技术,重点阐述静态防护和动态防护等应用安全加固涉及的多种技术原理。本书侧重从实际应用的角度来讲解如何运用安全技术开展应用安全测试与防护工作,适合有一定 Android 开发经验或安全基础的开发者、安全测试工程师、对 Android 应用安全测试感兴趣的业务人员、在校大学生等参考和阅读。
目录
第 1 章 Android App 的安全基础 1
1.1 Android App 的生成 1
1.2 Android App 的运行 4
1.3 Android 系统的安全模型 7
1.3.1 Android 用户管理 7
1.3.2 Android 系统沙箱 9
1.4 小结 10
第 2 章 安全测试工具 12
2.1 静态分析工具 13
2.1.1 Apktool 13
2.1.2 baksmali 15
2.1.3 smali 15
2.1.4 dex2jar+JD-GUI 15
2.1.5 JEB 17
2.2 动态分析工具 19
2.2.1 DDMS 19
2.2.2 gdb 22
2.2.3 IDA Pro 25
2.2.4 Drozer 28
2.3 抓包分析工具 30
2.3.1 组网环境 30
2.3.2 Fiddler 33
2.3.3 Wireshark 38
2.4 挂钩框架 39
2.4.1 Xposed 框架 40
2.4.2 Frida 43
2.4.3 inject 46
2.5 小结 47
第3 章 安全测试基础 48
3.1 信息资产 49
3.2 安全测试框架 51
3.3 小结 54
第4 章 程序代码安全测试 55
4.1 安全测试要求 56
4.1.1 运行环境 56
4.1.2 防反编译 58
4.1.3 防篡改 60
4.1.4 防调试 61
4.1.5 防注入 63
4.2 安全测试方法 64
4.2.1 运行环境 64
4.2.2 防反编译 68
4.2.3 防篡改 72
4.2.4 防调试 74
4.2.5 防注入 84
4.3 小结 84
第5 章 服务交互安全测试 85
5.1 安全测试要求 85
5.1.1 进程间交互 85
5.1.2 屏幕交互 86
5.1.3 WebView 交互 87
5.1.4 接口端口交互 88
5.2 安全测试方法 90
5.2.1 进程间交互 90
5.2.2 屏幕交互 91
5.2.3 WebView 交互 96
5.2.4 接口端口交互 100
5.3 小结 103
第6 章 本地数据安全测试 104
6.1 安全测试要求 106
6.1.1 数据创建 106
6.1.2 数据存储 107
6.1.3 数据处理 108
6.1.4 数据共享 109
6.1.5 数据备份 109
6.1.6 数据销毁 110
6.2 安全测试方法 110
6.2.1 数据创建 110
6.2.2 数据存储 119
6.2.3 数据处理 124
6.2.4 数据共享 126
6.2.5 数据备份 128
6.2.6 数据销毁 129
6.3 小结 131
第7 章 网络传输安全测试 132
7.1 安全测试要求 133
7.1.1 安全传输层 134
7.1.2 数据加密 136
7.1.3 中间人攻击 137
7.2 安全测试方法 138
7.2.1 安全传输层 138
7.2.2 数据加密 140
7.2.3 中间人攻击 142
7.3 小结 146
第8 章 鉴权认证安全测试 147
8.1 安全测试要求 150
8.1.1 注册过程 151
8.1.2 登录过程 152
8.1.3 会话过程 153
8.1.4 登出过程 157
8.1.5 注销过程 158
8.2 安全测试方法 158
8.2.1 注册过程 159
8.2.2 登录过程 163
8.2.3 会话过程 171
8.2.4 登出过程 173
8.2.5 注销过程 174
8.3 小结 175
第9 章 安全防护基础 176
9.1 App 加固技术简介 179
9.2 第 一代加固技术 181
9.3 第二代加固技术 183
9.4 第三代加固技术 184
9.5 第四代加固技术 185
9.6 小结 186
第 10 章 静态防护技术 188
10.1 源代码保护 188
10.1.1 控制流平坦化 189
10.1.2 不透明谓词 192
10.1.3 字符串加密 193
10.2 dex 文件加固 194
10.2.1 dex 文件整体加壳 195
10.2.2 程序方法抽取加固 197
10.2.3 VMP 加固 198
10.2.4 字符串加密 201
10.3 资源文件加固 204
10.4 so 文件加固 205
10.5 小结 209
第 11 章 动态防护技术 210
11.1 防调试 210
11.2 防日志输出 212
11.3 安全软键盘 214
11.4 防界面劫持 215
11.5 防篡改 216
11.6 防截屏/录屏 218
11.7 模拟器检测 218
11.8 应用多开检测 219
11.9 ROOT 环境检测 221
11.10 挂钩框架检测 222
11.11 小结 223
第 12 章 应用脱壳基础与实践 224
12.1 脱壳基础 225
12.1.1 加壳的基本思路 225
12.1.2 dex 文件格式解析 226
12.1.3 dex 文件加载原理 230
12.1.4 so 文件加载过程 253
12.1.5 脱壳思路 260
12.2 脱壳实践 261
12.2.1 环境搭建 261
12.2.2 编写脱壳代码 264
12.2.3 脱壳 266
12.3 结束语 268
附录A 安全测试项索引 269
附录B Dalvik 所有的操作码 275
附录C 安全测试工具参考 280