第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已解锁bootloader的三星设备 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