本書從研究移動(dòng)智能終端安全所需的基礎(chǔ)知識(shí)、常見的移動(dòng)智能終端攻擊技術(shù)及如何防御對(duì)智能終端的攻擊三個(gè)角度介紹了移動(dòng)智能終端的安全問題,分別對(duì)應(yīng)書中的基礎(chǔ)篇、攻擊篇及防護(hù)篇。
本書可供信息安全研究者以及移動(dòng)智能終端生產(chǎn)企業(yè)從業(yè)者學(xué)習(xí)參考,亦可作為高等學(xué)校網(wǎng)絡(luò)空間安全專業(yè)的教材使用。
隨著移動(dòng)互聯(lián)網(wǎng)與物聯(lián)網(wǎng)的快速融合發(fā)展,人們從傳統(tǒng)的互聯(lián)網(wǎng)時(shí)代逐步進(jìn)入物聯(lián)網(wǎng)時(shí)代,網(wǎng)絡(luò)終端設(shè)備如智能手機(jī)、智能水表、智能家電等迅猛發(fā)展,其中最為普遍的莫過于智能手機(jī)。與此同時(shí),信息時(shí)代互聯(lián)網(wǎng)應(yīng)用領(lǐng)域也從商業(yè)、金融、行政及軍事延伸到了百姓生活的方方面面,如出現(xiàn)了網(wǎng)購、公交信息查詢、旅游信息查詢、外賣、移動(dòng)支付等層出不窮的應(yīng)用。隨之而來的問題是個(gè)人安全事件頻發(fā),安全問題已從企業(yè)、政府、軍方及敏感單位的信息安全拓展到了個(gè)人隱私、財(cái)產(chǎn)及人身安全。個(gè)人安全問題頻發(fā)成為物聯(lián)網(wǎng)時(shí)代的一個(gè)突出特點(diǎn),其涉及的人群之大、范圍之廣更是前所未有。造成個(gè)人信息安全問題的根源是移動(dòng)智能終端本身存在的安全隱患,因此解決移動(dòng)智能終端安全問題既是迫在眉睫的問題,又是物聯(lián)網(wǎng)健康發(fā)展的一個(gè)重要保障。
由于移動(dòng)智能終端的多樣性,很難通過一本書把所有的移動(dòng)智能終端都講清楚,因此本書以應(yīng)用最廣泛的移動(dòng)智能終端即智能手機(jī)為研究對(duì)象,介紹了其硬件、系統(tǒng)軟件、應(yīng)用軟件三個(gè)層面存在的安全問題,其總體思路是:首先介紹相關(guān)的基礎(chǔ)知識(shí),然后介紹從三個(gè)層面形成的攻擊,最后介紹如何從這三個(gè)層面進(jìn)行防護(hù)。
本書共包括3篇16章內(nèi)容:基礎(chǔ)篇共5章,內(nèi)容分別為移動(dòng)智能終端安全概述、移動(dòng)智能終端硬件體系結(jié)構(gòu)及面臨的安全威脅、操作系統(tǒng)安全架構(gòu)及面臨的安全威脅、SQLite數(shù)據(jù)庫及面臨的安全威脅、移動(dòng)智能終端應(yīng)用軟件及面臨的安全威脅;攻擊篇共8章,內(nèi)容分別為固件篡改攻擊、藍(lán)牙攻擊、WiFi連接攻擊、權(quán)限提升攻擊、通過虛假App對(duì)手環(huán)進(jìn)行信息竊取及劫持、組件通信漏洞挖掘、SQLite數(shù)據(jù)泄露和惡意代碼的植入;防護(hù)篇共3章,內(nèi)容分別為應(yīng)用軟件的防護(hù)、基于系統(tǒng)安全機(jī)制的防護(hù)和外圍接口的防護(hù)。
本書的寫作目的是讓讀者系統(tǒng)地、全方位地了解移動(dòng)終端安全,以彌補(bǔ)目前市面上缺乏這類書籍的缺憾。
基 礎(chǔ) 篇
第1章 移動(dòng)智能終端安全概述 2
1.1 移動(dòng)智能終端安全現(xiàn)狀 2
1.2 移動(dòng)智能終端安全分類 3
1.2.1 硬件安全 3
1.2.2 操作系統(tǒng)安全 4
1.2.3 應(yīng)用軟件安全 5
1.2.4 外圍接口安全 6
小結(jié) 7
第2章 移動(dòng)智能終端硬件體系結(jié)構(gòu)及
面臨的安全威脅 8
2.1 硬件體系結(jié)構(gòu)概述 8
2.2 MCU 8
2.3 傳感器 10
2.4 存儲(chǔ)設(shè)備 10
2.4.1 內(nèi)部存儲(chǔ)器 10
2.4.2 SD存儲(chǔ)卡 12
2.5 對(duì)外接口 12
2.5.1 藍(lán)牙接口 12
2.5.2 WiFi接口 14
2.6 面臨的安全威脅 15
2.6.1 固件篡改威脅 15
2.6.2 來自藍(lán)牙的安全威脅 16
2.6.3 來自WiFi的安全威脅 17
小結(jié) 18
第3章 操作系統(tǒng)安全架構(gòu)及面臨的
安全威脅 19
3.1 安全模型 19
3.1.1 系統(tǒng)體系結(jié)構(gòu) 19
3.1.2 系統(tǒng)安全模型介紹 24
3.2 權(quán)限 26
3.2.1 權(quán)限申請及管理 26
3.2.2 權(quán)限賦予及執(zhí)行 27
3.2.3 系統(tǒng)權(quán)限 27
3.2.4 廣播權(quán)限 27
3.2.5 公開和私有組件 28
3.3 權(quán)限機(jī)制 28
3.3.1 Android安裝時(shí)的權(quán)限機(jī)制 28
3.3.2 iOS的實(shí)時(shí)權(quán)限機(jī)制 29
3.4 設(shè)備安全 29
3.4.1 控制系統(tǒng)的啟動(dòng)和安裝 29
3.4.2 驗(yàn)證啟動(dòng) 29
3.4.3 硬盤加密 29
3.4.4 屏幕安全 30
3.4.5 系統(tǒng)備份 30
3.5 系統(tǒng)更新和root訪問 30
3.5.1 引導(dǎo)加載程序 30
3.5.2 recovery 31
3.5.3 root權(quán)限 31
3.6 面臨的安全威脅 31
小結(jié) 32
第4章 SQLite數(shù)據(jù)庫及面臨的
??安全威脅 33
4.1 SQLite數(shù)據(jù)庫簡介 33
4.2 SQLite數(shù)據(jù)庫的安全機(jī)制 36
4.3 面臨的安全威脅 39
小結(jié) 40
第5章 移動(dòng)智能終端應(yīng)用軟件及面臨的
安全威脅 41
5.1 應(yīng)用軟件體系結(jié)構(gòu) 41
5.1.1 Android應(yīng)用軟件的體系結(jié)構(gòu) 41
5.1.2 iOS應(yīng)用軟件的體系結(jié)構(gòu) 43
5.2 開發(fā)過程概述 44
5.2.1 Android應(yīng)用軟件開發(fā)過程 45
5.2.2 iOS應(yīng)用軟件開發(fā)過程 51
5.3 應(yīng)用軟件權(quán)限的獲取 54
5.3.1 Android應(yīng)用軟件權(quán)限的獲取 54
5.3.2 iOS應(yīng)用軟件權(quán)限的獲取 56
5.4 面臨的安全威脅 58
5.4.1 組件通信過程中的信息泄露 58
5.4.2 惡意代碼的威脅 60
小結(jié) 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 使用編程器獲取二進(jìn)制數(shù)據(jù) 64
6.4 調(diào)試串口獲取shell訪問權(quán)限 64
6.4.1 串口的查找 64
6.4.2 獲取訪問控制權(quán)限 65
6.5 固件的逆向分析及篡改 65
6.5.1 相關(guān)MCU指令結(jié)構(gòu) 66
6.5.2 固件代碼特征分析 66
6.5.3 固件代碼格式識(shí)別 67
6.5.4 固件代碼還原 67
6.5.5 固件代碼仿真調(diào)試 67
6.5.6 固件代碼篡改 70
6.6 篡改固件的注入 71
小結(jié) 71
第7章 藍(lán)牙攻擊 72
7.1 藍(lán)牙協(xié)議簡介 72
7.2 藍(lán)牙節(jié)點(diǎn)設(shè)備的連接 73
7.2.1 設(shè)置節(jié)點(diǎn)的可發(fā)現(xiàn)狀態(tài) 73
7.2.2 掃描節(jié)點(diǎn)設(shè)備 74
7.2.3 連接參數(shù)設(shè)置 75
7.2.4 建立連接 76
7.3 GATT數(shù)據(jù)服務(wù) 77
7.3.1 通過UUID發(fā)現(xiàn)設(shè)備特征 77
7.3.2 設(shè)置特征通知功能為可用 78
7.3.3 向特征中寫入指令 79
7.3.4 獲得指令執(zhí)行結(jié)果 79
7.4 Hook概述 80
7.4.1 Xposed框架 80
7.4.2 Substrate框架 81
7.4.3 BLE指令協(xié)議竊取 81
7.5 藍(lán)牙數(shù)據(jù)包的抓取及分析 81
7.5.1 UUID的篩選 81
7.5.2 藍(lán)牙數(shù)據(jù)包的抓取 82
7.5.3 藍(lán)牙數(shù)據(jù)包的解析 82
7.6 藍(lán)牙攻擊 86
7.6.1 藍(lán)牙漏洞攻擊 86
7.6.2 藍(lán)牙劫持 87
7.6.3 藍(lán)牙竊聽 87
7.6.4 拒絕服務(wù) 87
7.6.5 模糊測試攻擊 87
7.6.6 配對(duì)竊聽 88
小結(jié) 88
第8章 WiFi連接攻擊 89
8.1 有線等效保密協(xié)議(WEP)簡介 89
8.2 無線偵察 90
8.2.1 在Windows系統(tǒng)下對(duì)WiFi的
偵察 90
8.2.2 在Linux系統(tǒng)下對(duì)WiFi的
偵察 90
8.2.3 在OS X系統(tǒng)下對(duì)WiFi的
偵察 91
8.3 解除用戶認(rèn)證獲得隱藏的
?服務(wù)集標(biāo)識(shí)符 94
8.3.1 在Android系統(tǒng)中加載一個(gè)解除
認(rèn)證的攻擊 94
8.3.2 在iOS系統(tǒng)中加載一個(gè)解除
認(rèn)證的攻擊 94
8.4 破解MAC地址過濾 95
8.4.1 在Linux系統(tǒng)中破解MAC
地址過濾 95
8.4.2 在Windows系統(tǒng)中破解MAC
地址過濾 95
8.4.3 在OS X系統(tǒng)中破解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
小結(jié) 99
第9章 權(quán)限提升攻擊 100
9.1 權(quán)限提升攻擊的分類 100
9.1.1 混淆代理人攻擊 100
9.1.2 共謀攻擊 100
9.2 權(quán)限機(jī)制漏洞挖掘 101
9.2.1 安裝時(shí)期權(quán)限機(jī)制漏洞分析 101
9.2.2 運(yùn)行時(shí)期權(quán)限機(jī)制漏洞分析 101
9.3 權(quán)限提升攻擊實(shí)例 102
9.3.1 混淆代理人攻擊實(shí)例 102
9.3.2 共謀攻擊實(shí)例 104
小結(jié) 104
第10章 通過虛假App對(duì)手環(huán)進(jìn)行信息
??竊取及劫持 105
10.1 底層藍(lán)牙通信分析 105
10.1.1 藍(lán)牙通信交互機(jī)制 105
10.1.2 藍(lán)牙設(shè)備的掃描與偵測 109
10.2 官方App逆向分析及
?代碼定位 112
10.3 反逆向技術(shù)及抵抗方案 118
10.3.1 反逆向技術(shù) 118
10.3.2 抵抗方案 124
小結(jié) 127
第11章 組件通信漏洞挖掘 128
11.1 定制ROM及刷入測試機(jī) 128
11.2 暴露組件檢測 129
11.2.1 Broadcast Receiver暴露
?組件檢測 130
11.2.2 Activity暴露組件檢測 130
11.2.3 Service暴露組件檢測 131
11.3 測試數(shù)據(jù)的構(gòu)造 131
11.3.1 記錄暴露組件的Action和
Category信息 131
11.3.2 依據(jù)Extras表構(gòu)造測試數(shù)據(jù) 132
11.4 基于Fuzzing測試的通信漏洞
挖掘 133
小結(jié) 143
第12章 SQLite數(shù)據(jù)泄露 144
12.1 基礎(chǔ)知識(shí) 144
12.1.1 SQLite的基礎(chǔ)知識(shí) 144
12.1.2 SQLite的安全機(jī)制 144
12.1.3 數(shù)據(jù)庫泄露的基礎(chǔ)知識(shí) 145
12.1.4 SQL漏洞產(chǎn)生的原因 146
12.1.5 ASLR的基礎(chǔ)知識(shí) 149
12.2 不安全的全文搜索特性 150
12.2.1 SQLite全文搜索特性 150
12.2.2 危險(xiǎn)的fts3_tokenizer 151
12.2.3 多種場景下攻擊分析 154
12.3 利用SQLite load_extension進(jìn)行
?攻擊 156
小結(jié) 161
第13章 惡意代碼的植入 162
13.1 反編譯 162
13.1.1 反編譯Dalvik字節(jié)碼文件 162
13.1.2 反編譯原生文件 172
13.2 邏輯分析 174
13.2.1 Java代碼分析 175
13.2.2 補(bǔ)充分析smali代碼 176
13.2.3 補(bǔ)充分析原生代碼 179
13.3 動(dòng)態(tài)調(diào)試應(yīng)用程序 180
13.3.1 動(dòng)態(tài)調(diào)試環(huán)境配置 180
13.3.2 使用Android Studio動(dòng)態(tài)
???調(diào)試程序 181
13.3.3 使用IDA Pro調(diào)試原生程序 185
13.4 惡意代碼的植入 188
13.4.1 手工植入 188
13.4.2 捆綁植入 188
13.5 重新打包 190
小結(jié) 191
防 護(hù) 篇
第14章 應(yīng)用軟件的防護(hù) 193
14.1 應(yīng)用程序的保護(hù) 193
14.1.1 使用加殼保護(hù) 193
14.1.2 使用NDK保護(hù) 200
14.1.3 使用代碼混淆保護(hù) 202
14.1.4 使用簽名校驗(yàn)保護(hù) 205
14.2 Android平臺(tái)的惡意代碼檢測 209
14.2.1 靜態(tài)檢測 210
14.2.2 動(dòng)態(tài)檢測 211
14.2.3 云端檢測 215
小結(jié) 216
第15章 基于系統(tǒng)安全機(jī)制的防護(hù) 217
15.1 系統(tǒng)安全基礎(chǔ) 217
15.2 Android權(quán)限機(jī)制的改進(jìn) 220
15.2.1 Android安全機(jī)制基礎(chǔ) 220
15.2.2 安裝時(shí)期權(quán)限改進(jìn) 227
15.2.3 運(yùn)行時(shí)期權(quán)限改進(jìn) 228
15.3 通過iOS安全機(jī)制加強(qiáng)防護(hù) 229
15.3.1 iOS安全基礎(chǔ) 229
15.3.2 靜態(tài)的權(quán)限評(píng)估 231
15.3.3 動(dòng)態(tài)的API調(diào)用分析 232
15.4 基于權(quán)限的應(yīng)用程序安全性分析 234
15.4.1 基于權(quán)限的Android惡意
程序檢測 234
15.4.2 Android應(yīng)用程序中權(quán)限申請
缺陷檢測 235
15.4.3 iOS文件系統(tǒng)權(quán)限 235
15.4.4 iOS應(yīng)用程序權(quán)利字串 236
小結(jié) 236
第16章 外圍接口的防護(hù) 237
16.1 藍(lán)牙接口的防護(hù) 237
16.1.1 藍(lán)牙通信基礎(chǔ) 237
16.1.2 依據(jù)安全策略設(shè)置
藍(lán)牙設(shè)備 242
16.1.3 以適當(dāng)?shù)墓β蕚鬏?242
16.1.4 設(shè)備的雙向認(rèn)證 244
16.1.5 藍(lán)牙傳輸系統(tǒng)的
安全及研究 244
16.2 WiFi接口的防護(hù) 245
16.2.1 WiFi安全基礎(chǔ)及安全機(jī)制 245
16.2.2 WiFi安全防護(hù)策略 251
16.2.3 WiFi熱點(diǎn)安全研究 252
小結(jié) 254
參考文獻(xiàn) 255