本书从研究移动智能终端安全所需的基础知识、常见的移动智能终端攻击技术及如何防御对智能终端的攻击三个角度介绍了移动智能终端的安全问题,分别对应书中的基础篇、攻击篇及防护篇。
本书可供信息安全研究者以及移动智能终端生产企业从业者学习参考,亦可作为高等学校网络空间安全专业的教材使用。
随着移动互联网与物联网的快速融合发展,人们从传统的互联网时代逐步进入物联网时代,网络终端设备如智能手机、智能水表、智能家电等迅猛发展,其中最为普遍的莫过于智能手机。与此同时,信息时代互联网应用领域也从商业、金融、行政及军事延伸到了百姓生活的方方面面,如出现了网购、公交信息查询、旅游信息查询、外卖、移动支付等层出不穷的应用。随之而来的问题是个人安全事件频发,安全问题已从企业、政府、军方及敏感单位的信息安全拓展到了个人隐私、财产及人身安全。个人安全问题频发成为物联网时代的一个突出特点,其涉及的人群之大、范围之广更是前所未有。造成个人信息安全问题的根源是移动智能终端本身存在的安全隐患,因此解决移动智能终端安全问题既是迫在眉睫的问题,又是物联网健康发展的一个重要保障。
由于移动智能终端的多样性,很难通过一本书把所有的移动智能终端都讲清楚,因此本书以应用最广泛的移动智能终端即智能手机为研究对象,介绍了其硬件、系统软件、应用软件三个层面存在的安全问题,其总体思路是:首先介绍相关的基础知识,然后介绍从三个层面形成的攻击,最后介绍如何从这三个层面进行防护。
本书共包括3篇16章内容:基础篇共5章,内容分别为移动智能终端安全概述、移动智能终端硬件体系结构及面临的安全威胁、操作系统安全架构及面临的安全威胁、SQLite数据库及面临的安全威胁、移动智能终端应用软件及面临的安全威胁;攻击篇共8章,内容分别为固件篡改攻击、蓝牙攻击、WiFi连接攻击、权限提升攻击、通过虚假App对手环进行信息窃取及劫持、组件通信漏洞挖掘、SQLite数据泄露和恶意代码的植入;防护篇共3章,内容分别为应用软件的防护、基于系统安全机制的防护和外围接口的防护。
本书的写作目的是让读者系统地、全方位地了解移动终端安全,以弥补目前市面上缺乏这类书籍的缺憾。
基 础 篇
第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章 SQLite数据库及面临的
??安全威胁 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
攻 击 篇
第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 在OS X系统下对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 在OS X系统中破解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 使用IDA Pro调试原生程序 185
13.4 恶意代码的植入 188
13.4.1 手工植入 188
13.4.2 捆绑植入 188
13.5 重新打包 190
小结 191
防 护 篇
第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