本書從研究移動智能終端安全所需的基礎(chǔ)知識、常見的移動智能終端攻擊技術(shù)及如何防御對智能終端的攻擊三個角度介紹了移動智能終端的安全問題,分別對應(yīng)書中的基礎(chǔ)篇、攻擊篇及防護篇。
本書可供信息安全研究者以及移動智能終端生產(chǎn)企業(yè)從業(yè)者學(xué)習(xí)參考,亦可作為高等學(xué)校網(wǎng)絡(luò)空間安全專業(yè)的教材使用。
隨著移動互聯(lián)網(wǎng)與物聯(lián)網(wǎng)的快速融合發(fā)展,人們從傳統(tǒng)的互聯(lián)網(wǎng)時代逐步進入物聯(lián)網(wǎng)時代,網(wǎng)絡(luò)終端設(shè)備如智能手機、智能水表、智能家電等迅猛發(fā)展,其中最為普遍的莫過于智能手機。與此同時,信息時代互聯(lián)網(wǎng)應(yīng)用領(lǐng)域也從商業(yè)、金融、行政及軍事延伸到了百姓生活的方方面面,如出現(xiàn)了網(wǎng)購、公交信息查詢、旅游信息查詢、外賣、移動支付等層出不窮的應(yīng)用。隨之而來的問題是個人安全事件頻發(fā),安全問題已從企業(yè)、政府、軍方及敏感單位的信息安全拓展到了個人隱私、財產(chǎn)及人身安全。個人安全問題頻發(fā)成為物聯(lián)網(wǎng)時代的一個突出特點,其涉及的人群之大、范圍之廣更是前所未有。造成個人信息安全問題的根源是移動智能終端本身存在的安全隱患,因此解決移動智能終端安全問題既是迫在眉睫的問題,又是物聯(lián)網(wǎng)健康發(fā)展的一個重要保障。
由于移動智能終端的多樣性,很難通過一本書把所有的移動智能終端都講清楚,因此本書以應(yīng)用最廣泛的移動智能終端即智能手機為研究對象,介紹了其硬件、系統(tǒng)軟件、應(yīng)用軟件三個層面存在的安全問題,其總體思路是:首先介紹相關(guān)的基礎(chǔ)知識,然后介紹從三個層面形成的攻擊,最后介紹如何從這三個層面進行防護。
本書共包括3篇16章內(nèi)容:基礎(chǔ)篇共5章,內(nèi)容分別為移動智能終端安全概述、移動智能終端硬件體系結(jié)構(gòu)及面臨的安全威脅、操作系統(tǒng)安全架構(gòu)及面臨的安全威脅、SQLite數(shù)據(jù)庫及面臨的安全威脅、移動智能終端應(yīng)用軟件及面臨的安全威脅;攻擊篇共8章,內(nèi)容分別為固件篡改攻擊、藍牙攻擊、WiFi連接攻擊、權(quán)限提升攻擊、通過虛假App對手環(huán)進行信息竊取及劫持、組件通信漏洞挖掘、SQLite數(shù)據(jù)泄露和惡意代碼的植入;防護篇共3章,內(nèi)容分別為應(yīng)用軟件的防護、基于系統(tǒng)安全機制的防護和外圍接口的防護。
本書的寫作目的是讓讀者系統(tǒng)地、全方位地了解移動終端安全,以彌補目前市面上缺乏這類書籍的缺憾。
基 礎(chǔ) 篇
第1章 移動智能終端安全概述 2
1.1 移動智能終端安全現(xiàn)狀 2
1.2 移動智能終端安全分類 3
1.2.1 硬件安全 3
1.2.2 操作系統(tǒng)安全 4
1.2.3 應(yīng)用軟件安全 5
1.2.4 外圍接口安全 6
小結(jié) 7
第2章 移動智能終端硬件體系結(jié)構(gòu)及
面臨的安全威脅 8
2.1 硬件體系結(jié)構(gòu)概述 8
2.2 MCU 8
2.3 傳感器 10
2.4 存儲設(shè)備 10
2.4.1 內(nèi)部存儲器 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
小結(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)限機制 28
3.3.1 Android安裝時的權(quán)限機制 28
3.3.2 iOS的實時權(quán)限機制 29
3.4 設(shè)備安全 29
3.4.1 控制系統(tǒng)的啟動和安裝 29
3.4.2 驗證啟動 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ù)庫的安全機制 36
4.3 面臨的安全威脅 39
小結(jié) 40
第5章 移動智能終端應(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 使用編程器獲取二進制數(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 固件代碼格式識別 67
6.5.4 固件代碼還原 67
6.5.5 固件代碼仿真調(diào)試 67
6.5.6 固件代碼篡改 70
6.6 篡改固件的注入 71
小結(jié) 71
第7章 藍牙攻擊 72
7.1 藍牙協(xié)議簡介 72
7.2 藍牙節(jié)點設(shè)備的連接 73
7.2.1 設(shè)置節(jié)點的可發(fā)現(xiàn)狀態(tài) 73
7.2.2 掃描節(jié)點設(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 藍牙數(shù)據(jù)包的抓取及分析 81
7.5.1 UUID的篩選 81
7.5.2 藍牙數(shù)據(jù)包的抓取 82
7.5.3 藍牙數(shù)據(jù)包的解析 82
7.6 藍牙攻擊 86
7.6.1 藍牙漏洞攻擊 86
7.6.2 藍牙劫持 87
7.6.3 藍牙竊聽 87
7.6.4 拒絕服務(wù) 87
7.6.5 模糊測試攻擊 87
7.6.6 配對竊聽 88
小結(jié) 88
第8章 WiFi連接攻擊 89
8.1 有線等效保密協(xié)議(WEP)簡介 89
8.2 無線偵察 90
8.2.1 在Windows系統(tǒng)下對WiFi的
偵察 90
8.2.2 在Linux系統(tǒng)下對WiFi的
偵察 90
8.2.3 在OS X系統(tǒng)下對WiFi的
偵察 91
8.3 解除用戶認證獲得隱藏的
?服務(wù)集標(biāo)識符 94
8.3.1 在Android系統(tǒng)中加載一個解除
認證的攻擊 94
8.3.2 在iOS系統(tǒng)中加載一個解除
認證的攻擊 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)限機制漏洞挖掘 101
9.2.1 安裝時期權(quán)限機制漏洞分析 101
9.2.2 運行時期權(quán)限機制漏洞分析 101
9.3 權(quán)限提升攻擊實例 102
9.3.1 混淆代理人攻擊實例 102
9.3.2 共謀攻擊實例 104
小結(jié) 104
第10章 通過虛假App對手環(huán)進行信息
??竊取及劫持 105
10.1 底層藍牙通信分析 105
10.1.1 藍牙通信交互機制 105
10.1.2 藍牙設(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及刷入測試機 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ǔ)知識 144
12.1.1 SQLite的基礎(chǔ)知識 144
12.1.2 SQLite的安全機制 144
12.1.3 數(shù)據(jù)庫泄露的基礎(chǔ)知識 145
12.1.4 SQL漏洞產(chǎn)生的原因 146
12.1.5 ASLR的基礎(chǔ)知識 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
小結(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 補充分析smali代碼 176
13.2.3 補充分析原生代碼 179
13.3 動態(tài)調(diào)試應(yīng)用程序 180
13.3.1 動態(tài)調(diào)試環(huán)境配置 180
13.3.2 使用Android Studio動態(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
防 護 篇
第14章 應(yīng)用軟件的防護 193
14.1 應(yīng)用程序的保護 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 靜態(tài)檢測 210
14.2.2 動態(tài)檢測 211
14.2.3 云端檢測 215
小結(jié) 216
第15章 基于系統(tǒng)安全機制的防護 217
15.1 系統(tǒng)安全基礎(chǔ) 217
15.2 Android權(quán)限機制的改進 220
15.2.1 Android安全機制基礎(chǔ) 220
15.2.2 安裝時期權(quán)限改進 227
15.2.3 運行時期權(quán)限改進 228
15.3 通過iOS安全機制加強防護 229
15.3.1 iOS安全基礎(chǔ) 229
15.3.2 靜態(tài)的權(quán)限評估 231
15.3.3 動態(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章 外圍接口的防護 237
16.1 藍牙接口的防護 237
16.1.1 藍牙通信基礎(chǔ) 237
16.1.2 依據(jù)安全策略設(shè)置
藍牙設(shè)備 242
16.1.3 以適當(dāng)?shù)墓β蕚鬏?242
16.1.4 設(shè)備的雙向認證 244
16.1.5 藍牙傳輸系統(tǒng)的
安全及研究 244
16.2 WiFi接口的防護 245
16.2.1 WiFi安全基礎(chǔ)及安全機制 245
16.2.2 WiFi安全防護策略 251
16.2.3 WiFi熱點安全研究 252
小結(jié) 254
參考文獻 255