基础篇 2
第1章 移动智能终端安全概述 2
1.1 移动智能终端安全现状 2
1.2 移动智能终端安全分类 3
1.2.1 硬件安全 3
1.2.2 操作系统安全 4
1.2.3 应用软件安全 5
1.2.4 外围接口安全 6
小结 7
第2章 移动智能终端硬件体系结构及面临的安全威胁 8
2.1 硬件体系结构概述 8
2.2 MCU 8
2.3 传感器 10
2.4 存储设备 10
2.4.1 内部存储器 10
2.4.2 SD存储卡 12
2.5 对外接口 12
2.5.1 蓝牙接口 12
2.5.2 WiFi接口 14
2.6 面临的安全威胁 15
2.6.1 固件篡改威胁 15
2.6.2 来自蓝牙的安全威胁 16
2.6.3 来自WiFi的安全威胁 17
小结 18
第3章 操作系统安全架构及面临的安全威胁 19
3.1 安全模型 19
3.1.1 系统体系结构 19
3.1.2 系统安全模型介绍 24
3.2 权限 26
3.2.1 权限申请及管理 26
3.2.2 权限赋予及执行 27
3.2.3 系统权限 27
3.2.4 广播权限 27
3.2.5 公开和私有组件 28
3.3 权限机制 28
3.3.1 Android安装时的权限机制 28
3.3.2 iOS的实时权限机制 29
3.4 设备安全 29
3.4.1 控制系统的启动和安装 29
3.4.2 验证启动 29
3.4.3 硬盘加密 29
3.4.4 屏幕安全 30
3.4.5 系统备份 30
3.5 系统更新和root访问 30
3.5.1 引导加载程序 30
3.5.2 recovery 31
3.5.3 root权限 31
3.6 面临的安全威胁 31
小结 32
第4章 SQL.ite数据库及面临的安全威胁 33
4.1 SQLite数据库简介 33
4.2 SQLite数据库的安全机制 36
4.3 面临的安全威胁 39
小结 40
第5章 移动智能终端应用软件及面临的安全威胁 41
5.1 应用软件体系结构 41
5.1.1 Android应用软件的体系结构 41
5.1.2 iOS应用软件的体系结构 43
5.2 开发过程概述 44
5.2.1 Android应用软件开发过程 45
5.2.2 iOS应用软件开发过程 51
5.3 应用软件权限的获取 54
5.3.1 Android应用软件权限的获取 54
5.3.2 iOS应用软件权限的获取 56
5.4 面临的安全威胁 58
5.4.1 组件通信过程中的信息泄露 58
5.4.2 恶意代码的威胁 60
小结 60
攻击篇 62
第6章 固件篡改攻击 62
6.1 常见Flash芯片介绍 62
6.2 编程器介绍 62
6.2.1 多功能编程器 62
6.2.2 编程器的分类 63
6.2.3 使用编程器读写芯片的方法 63
6.3 固件的获取 63
6.3.1 Flash芯片的辨别 63
6.3.2 芯片的拆卸 63
6.3.3 使用编程器获取二进制数据 64
6.4 调试串口获取shell访问权限 64
6.4.1 串口的查找 64
6.4.2 获取访问控制权限 65
6.5 固件的逆向分析及篡改 65
6.5.1 相关MCU指令结构 66
6.5.2 固件代码特征分析 66
6.5.3 固件代码格式识别 67
6.5.4 固件代码还原 67
6.5.5 固件代码仿真调试 67
6.5.6 固件代码篡改 70
6.6 篡改固件的注入 71
小结 71
第7章 蓝牙攻击 72
7.1 蓝牙协议简介 72
7.2 蓝牙节点设备的连接 73
7.2.1 设置节点的可发现状态 73
7.2.2 扫描节点设备 74
7.2.3 连接参数设置 75
7.2.4 建立连接 76
7.3 GATT数据服务 77
7.3.1 通过UUID发现设备特征 77
7.3.2 设置特征通知功能为可用 78
7.3.3 向特征中写入指令 79
7.3.4.获得指令执行结果 79
7.4 Hook概述 80
7.4.1 Xposed框架 80
7.4.2 Substrate框架 81
7.4.3 BLE指令协议窃取 81
7.5 蓝牙数据包的抓取及分析 81
7.5.1 UUID的筛选 81
7.5.2 蓝牙数据包的抓取 82
7.5.3 蓝牙数据包的解析 82
7.6 蓝牙攻击 86
7.6.1 蓝牙漏洞攻击 86
7.6.2 蓝牙劫持 87
7.6.3 蓝牙窃听 87
7.6.4 拒绝服务 87
7.6.5 模糊测试攻击 87
7.6.6 配对窃听 88
小结 88
第8章 WiFi连接攻击 89
8.1 有线等效保密协议(WEP)简介 89
8.2 无线侦察 90
8.2.1 在Windows系统下对WiFi的侦察 90
8.2.2 在Linux系统下对WiFi的侦察 90
8.2.3 在OSX系统下对WiFi的侦察 91
8.3 解除用户认证获得隐藏的服务集标识符 94
8.3.1 在Android系统中加载一个解除认证的攻击 94
8.3.2 在iOS系统中加载一个解除认证的攻击 94
8.4 破解MAC地址过滤 95
8.4.1 在Linux系统中破解MAC地址过滤 95
8.4.2 在Windows系统中破解MAC地址过滤 95
8.4.3 在OSX系统中破解MAC地址过滤 96
8.5 WEP密钥还原攻击 96
8.5.1 基于FiOS的SSID WEP密钥还原 97
8.5.2 FMS方式破解WEP密钥 97
8.5.3 PTW方式破解WEP密钥 97
8.6 Wifite 98
小结 99
第9章 权限提升攻击 100
9.1 权限提升攻击的分类 100
9.1.1 混淆代理人攻击 100
9.1.2 共谋攻击 100
9.2 权限机制漏洞挖掘 101
9.2.1 安装时期权限机制漏洞分析 101
9.2.2 运行时期权限机制漏洞分析 101
9.3 权限提升攻击实例 102
9.3.1 混淆代理人攻击实例 102
9.3.2 共谋攻击实例 104
小结 104
第10章 通过虚假App对手环进行信息窃取及劫持 105
10.1 底层蓝牙通信分析 105
10.1.1 蓝牙通信交互机制 105
10.1.2 蓝牙设备的扫描与侦测 109
10.2 官方App逆向分析及代码定位 112
10.3 反逆向技术及抵抗方案 118
10.3.1 反逆向技术 118
10.3.2 抵抗方案 124
小结 127
第11章 组件通信漏洞挖掘 128
11.1 定制ROM及刷入测试机 128
11.2 暴露组件检测 129
11.2.1 Broadcast Receiver暴露组件检测 130
11.2.2 Activity暴露组件检测 130
11.2.3 Service暴露组件检测 131
11.3 测试数据的构造 131
11.3.1 记录暴露组件的Action和Category信息 131
11.3.2 依据Extras表构造测试数据 132
11.4 基于Fuzzing测试的通信漏洞挖掘 133
小结 143
第12章 SQLite数据泄露 144
12.1 基础知识 144
12.1.1 SQLite的基础知识 144
12.1.2 SQLite的安全机制 144
12.1.3 数据库泄露的基础知识 145
12.1.4 SQL漏洞产生的原因 146
12.1.5 ASLR的基础知识 149
12.2 不安全的全文搜索特性 150
12.2.1 SQLite全文搜索特性 150
12.2.2 危险的fts3_tokenizer 151
12.2.3 多种场景下攻击分析 154
12.3 利用SQLite load_extension进行攻击 156
小结 161
第13章 恶意代码的植入 162
13.1 反编译 162
13.1.1 反编译Dalvik字节码文件 162
13.1.2 反编译原生文件 172
13.2 逻辑分析 174
13.2.1 Java代码分析 175
13.2.2 补充分析smali代码 176
13.2.3 补充分析原生代码 179
13.3 动态调试应用程序 180
13.3.1 动态调试环境配置 180
13.3.2 使用Android Studio动态调试程序 181
13.3.3 使用IDAPro调试原生程序 185
13.4 恶意代码的植入 188
13.4.1 手工植入 188
13.4.2 捆绑植入 188
13.5 重新打包 190
小结 191
防护篇 193
第14章 应用软件的防护 193
14.1 应用程序的保护 193
14.1.1 使用加壳保护 193
14.1.2 使用NDK保护 200
14.1.3 使用代码混淆保护 202
14.1.4 使用签名校验保护 205
14.2 Android平台的恶意代码检测 209
14.2.1 静态检测 210
14.2.2 动态检测 211
14.2.3 云端检测 215
小结 216
第15章 基于系统安全机制的防护 217
15.1 系统安全基础 217
15.2 Android权限机制的改进 220
15.2.1 Android安全机制基础 220
15.2.2 安装时期权限改进 227
15.2.3 运行时期权限改进 228
15.3 通过iOS安全机制加强防护 229
15.3.1 iOS安全基础 229
15.3.2 静态的权限评估 231
15.3.3 动态的API调用分析 232
15.4 基于权限的应用程序安全性分析 234
15.4.1 基于权限的Android恶意程序检测 234
15.4.2 Android应用程序中权限申请缺陷检测 235
15.4.3 iOS文件系统权限 235
15.4.4 iOS应用程序权利字串 236
小结 236
第16章 外围接口的防护 237
16.1 蓝牙接口的防护 237
16.1.1 蓝牙通信基础 237
16.1.2 依据安全策略设置蓝牙设备 242
16.1.3 以适当的功率传输 242
16.1.4 设备的双向认证 244
16.1.5 蓝牙传输系统的安全及研究 244
16.2 WiFi接口的防护 245
16.2.1 WiFi安全基础及安全机制 245
16.2.2 WiFi安全防护策略 251
16.2.3 WiFi热点安全研究 252
小结 254
参考文献 255