第1章 实验环境搭建 1
1.1 安装工具 1
1.2 Android Studio 4
1.3 安装安卓虚拟机 13
1.3.1 真实设备 15
1.3.2 Apktool 16
1.3.3 Dex2jar/JD-GUI 17
1.3.4 Burp Suite 18
1.4 配置安卓虚拟机 19
1.4.1 Drozer 20
1.4.2 QARK(不支持Windows) 24
1.4.3 Chrome浏览器的Advanced REST Client扩展程序 25
1.4.4 Droid Explorer 26
1.4.5 Cydia Substrate和Introspy 27
1.4.6 SQLite browser 28
1.4.7 Frida 30
1.4.8 易受攻击的应用 32
1.4.9 Kali Linux 33
1.5 adb入门 33
1.5.1 检查已连接的设备 33
1.5.2 启动shell 34
1.5.3 列出软件包 34
1.5.4 推送文件到设备 35
1.5.5 从设备中拉取文件 35
1.5.6 通过adb安装应用 35
1.5.7 adb连接故障排除 36
1.6 小结 36
第2章 安卓ROOT 37
2.1 什么是ROOT 37
2.1.1 为什么要ROOT设备 38
2.1.2 ROOT的好处 38
2.1.3 ROOT的坏处 39
2.2 锁定的和已解锁的boot loader 41
2.2.1 确定索尼设备是否已解锁boot loader 41
2.2.2 按照供应商提供的方法解锁索尼设备的boot loader 43
2.2.3 ROOT已解锁boot loader的三星设备 46
2.3 官方recovery和第三方recovery 46
2.4 ROOT流程和安装第三方ROM 49
2.5 ROOT三星Note 2手机 53
2.6 向手机刷入第三方ROM 55
2.7 小结 60
第3章 安卓应用的基本构造 61
3.1 安卓应用的基础知识 61
3.1.1 安卓应用的结构 61
3.1.2 APK文件的存储位置 63
3.2 安卓应用的组件 67
3.2.1 activity 67
3.2.2 服务 68
3.2.3 广播接收器 69
3.2.4 内容提供程序 69
3.2.5 安卓应用的构建过程 69
3.3 从命令行编译DEX文件 72
3.4 应用运行时发生了什么 74
3.5 理解应用沙盒 75
3.5.1 一个应用对应一个UID 75
3.5.2 应用沙盒 78
3.5.3 是否有方法打破沙盒限制 80
3.6 小结 80
第4章 安卓应用攻击概览 81
4.1 安卓应用简介 81
4.1.1 Web应用 81
4.1.2 原生应用 82
4.1.3 混合应用 82
4.2 理解应用攻击面 82
4.3 客户端存在的威胁 84
4.4 后端存在的威胁 84
4.5 移动应用测试与安全指南 85
4.5.1 OWASP移动应用十大风险(2014) 85
4.5.2 M1:弱服务器端控制 86
4.5.3 M2:不安全的数据存储 86
4.5.4 M3:传输层保护不足 87
4.5.5 M4:意外的数据泄漏 87
4.5.6 M5:糟糕的授权和身份认证 87
4.5.7 M6:被破解的加密技术 88
4.5.8 M7:客户端注入 88
4.5.9 M8:通过不受信任的输入进行安全决策 88
4.5.10 M9:会话处理不当 88
4.5.11 M10:缺乏二进制文件保护 89
4.6 自动化工具 89
4.6.1 Drozer 89
4.6.2 使用Drozer进行安卓安全评估 90
4.7 识别攻击面 92
4.8 QARK 94
4.8.1 以交互模式运行QARK 94
4.8.2 以无缝模式运行QARK 100
4.9 小结 102
第5章 数据存储与数据安全 103
5.1 什么是数据存储 103
5.2 共享首选项 107
5.3 SQLite数据库 110
5.4 内部存储 111
5.5 外部存储 113
5.6 用户字典缓存 115
5.7 不安全的数据存储——NoSQL数据库 115
5.8 备份技术 118
5.8.1 使用adb backup命令备份应用数据 119
5.8.2 使用Android Backup Extractor将.ab格式转换为.tar格式 120
5.8.3 使用pax或star工具解压TAR文件 122
5.8.4 分析解压内容并查找安全问题 122
5.9 确保数据安全 125
5.10 小结 125
第6章 服务器端攻击 126
6.1 不同类型的移动应用及其威胁模型 127
6.2 移动应用服务器端的攻击面 127
6.3 移动后端测试方法 128
6.3.1 设置用于测试的Burp Suite代理 128
6.3.2 绕过证书锁定 136
6.3.3 使用AndroidSSLTrustKiller绕过证书锁定 137
6.3.4 后端威胁 139
6.4 小结 145
第7章 客户端攻击——静态分析技术 146
7.1 攻击应用组件 146
7.1.1 针对activity的攻击 146
7.1.2 针对服务的攻击 151
7.1.3 针对广播接收器的攻击 153
7.1.4 对内容提供程序的攻击 155
7.1.5 注入测试 160
7.2 使用QARK进行静态分析 164
7.3 小结 166
第8章 客户端攻击——动态分析技术 167
8.1 使用Drozer进行安卓应用自动化测试 167
8.1.1 列出全部模块 168
8.1.2 检索包信息 169
8.1.3 查找目标应用的包名 170
8.1.4 获取包信息 170
8.1.5 转储AndroidManifes.xml文件 171
8.1.6 查找攻击面 172
8.1.7 针对activity的攻击 173
8.1.8 针对服务的攻击 175
8.1.9 广播接收器 176
8.1.10 使用Drozer引起内容提供程序泄漏和进行SQL注入 177
8.1.11 使用Drozer进行SQL注入攻击 179
8.1.12 内容提供程序目录遍历攻击 182
8.1.13 利用可调试的应用 184
8.2 Cydia Substrate简介 186
8.3 使用Introspy进行运行时监控与分析 187
8.4 使用Xposed框架进行hook 191
8.5 使用Frida进行动态插桩 198
8.6 基于日志的漏洞 201
8.7 WebView攻击 203
8.7.1 通过file scheme访问本地敏感资源 203
8.7.2 其他WebView问题 206
8.8 小结 207
第9章 安卓恶意软件 208
9.1 编写安卓恶意软件 209
9.2 注册权限 216
9.3 恶意应用分析 226
9.3.1 静态分析 226
9.3.2 动态分析 232
9.4 自动化分析工具 236
9.5 小结 236
第10章 针对安卓设备的攻击 237
10.1 中间人攻击 237
10.2 来自提供网络层访问的应用的威胁 239
10.3 利用现有漏洞 243
10.4 恶意软件 246
10.5 绕过锁屏 247
10.5.1 利用adb绕过图案锁 247
10.5.2 使用adb绕过密码或PIN码 249
10.5.3 利用CVE-2013-6271漏洞绕过锁屏 252
10.6 从SD卡拉取数据 252
10.7 小结 253
· · · · · · (
收起)