內容簡介
《黑客攻防技術寶典:iOS 實戰篇》由美國國家安全局全球網路漏洞攻擊分析師、連續4年Pwn2Own黑客競賽大獎得主Charlie Miller主筆,作者陣容超級豪華,6位均為信息安全領域大名鼎鼎的頂級專家,各有所長,且多有專著出版,本書是國內唯一專注於iOS平台漏洞、破解及安全攻防的中文專著。
作者簡介
Charlie Miller是知名黑客,Accuvant實驗室資深研究顧問。
Dionysus Blazakis是OS X和iOS在沙盒安全機制領域的專家。
Dino Dai Zovi是知名黑客,Trail of Bits聯合創始人和首席技術官,有十餘年信息安全領域從業經驗,專注於攻擊系統,曾任職於國家安全機構。與Charlie Miller一起合著過The Mac Hacker’s Handbook。
Stefan Esser是知名黑客、PHP安全專家、iOS安全問題的資深研究員。
Vincenzo Iozzo是專注於Mac OS X和智慧型手機的獨立安全研究員。
Ralf-Philipp Weinmann德國達姆施塔特工業大學密碼學博士、盧森堡大學博士後研究員,對安全問題有著濃厚的興趣。
圖書目錄
第1章 iOS安全基礎知識 1
1.1 iOS硬體/設備的類型 1
1.2 蘋果公司如何保護AppStore 2
1.3 理解安全威脅 3
1.4 理解iOS的安全架構 4
1.4.1 更小的受攻擊面 4
1.4.2 精簡過的iOS 5
1.4.3 許可權分離 5
1.4.4 代碼簽名 5
1.4.5 數據執行保護 6
1.4.6 地址空間布局隨機化 6
1.4.7 沙盒 6
1.5 iOS攻擊簡史 7
1.5.1 Libtiff 7
1.5.2 簡訊攻擊 8
1.5.3 Ikee蠕蟲 8
1.5.4 Storm8 9
1.5.5 SpyPhone 10
1.5.6 Pwn2Own2010 10
1.5.7 Jailbreakme.com2(“Star”) 10
1.5.8 Jailbreakme.com3(“Saffron”) 11
1.6 小結 11
第2章 企業中的iOS 12
2.1 iOS配置管理 12
2.1.1 移動配置描述檔案 13
2.1.2 iPhone配置實用工具 14
2.2 移動設備管理 21
2.2.1 MDM網路通信 21
2.2.2 LionServer描述檔案管理器 22
2.3 小結 36
第3章 加密 37
3.1 數據保護 37
3.2 對數據保護的攻擊 40
3.2.1 對用戶密碼的攻擊 40
3.2.2 iPhoneDataProtectionTools 43
3.3 小結 54
第4章 代碼簽名和記憶體保護 55
4.1 強制訪問控制 56
4.1.1 AMFI鉤子 56
4.1.2 AMFI和execv 57
4.2 授權的工作原理 59
4.2.1 理解授權描述檔案 59
4.2.2 如何驗證授權檔案的有效性 62
4.3 理解套用簽名 62
4.4 深入了解特權 64
4.5 代碼簽名的實施方法 65
4.5.1 收集和驗證簽名信息 65
4.5.2 如何在進程上實施簽名 68
4.5.3 iOS如何確保已簽名頁不發生改變 72
4.6 探索動態代碼簽名 73
4.6.1 MobileSafari的特殊性 73
4.6.2 核心如何處理即時編譯 75
4.6.3 MobileSafari內部的攻擊 77
4.7 破壞代碼簽名機制 78
4.7.1 修改iOSshellcode 79
4.7.2 在iOS上使用Meterpreter 83
4.7.3 取得AppStore的批准 85
4.8 小結 86
第5章 沙盒 87
5.1 理解沙盒 87
5.2 在套用開發中使用沙盒 89
5.3 理解沙盒的實現 95
5.3.1 理解用戶空間庫的實現 95
5.3.2 深入核心 98
5.3.3 沙盒機制對AppStore套用和平台套用的影響 109
5.4 小結 113
第6章 對iOS套用進行模糊測試 114
6.1 模糊測試的原理 114
6.2 如何進行模糊測試 115
6.2.1 基於變異的模糊測試 116
6.2.2 基於生成的模糊測試 116
6.2.3 提交和監測測試用例 117
6.3 對Safari進行模糊測試 118
6.3.1 選擇接口 118
6.3.2 生成測試用例 118
6.3.3 測試和監測套用 119
6.4 PDF模糊測試中的冒險 122
6.5 對快速查看(QuickLook)的模糊測試 126
6.6 用模擬器進行模糊測試 127
6.7 對MobileSafari進行模糊測試 130
6.7.1 選擇進行模糊測試的接口 130
6.7.2 生成測試用例 130
6.7.3 MobileSafari的模糊測試與監測 131
6.8 PPT模糊測試 133
6.9 對SMS的模糊測試 134
6.9.1 SMS基礎知識 135
6.9.2 聚焦協定數據單元模式 136
6.9.3 PDUspy的使用 138
6.9.4 用戶數據頭信息的使用 139
6.9.5 拼接訊息的處理 139
6.9.6 其他類型UDH數據的使用 139
6.9.7 用Sulley進行基於生成的模糊測試 141
6.9.8 SMSiOS注入 145
6.9.9 SMS的監測 146
6.9.10 SMSbug 151
6.10 小結 153
第7章 漏洞攻擊 154
7.1 針對bug類的漏洞攻擊 154
7.2 理解iOS系統自帶的分配程式 156
7.2.1 區域 156
7.2.2 記憶體分配 157
7.2.3 記憶體釋放 157
7.3 馴服iOS的分配程式 158
7.3.1 所需工具 158
7.3.2 與分配/釋放有關的基礎知識 159
7.4 理解TCMalloc 167
7.4.1 大對象的分配和釋放 167
7.4.2 小對象的分配 168
7.4.3 小對象的釋放 168
7.5 馴服TCMalloc 168
7.5.1 獲得可預知的堆布局 168
7.5.2 用於調試堆操作代碼的工具 170
7.5.3 堆風水:以TCMalloc對算術漏洞進行攻擊 172
7.5.4 以TCMalloc就對象生存期問題進行漏洞攻擊 175
7.6 對ASLR的挑戰 176
7.7 案例研究:Pwn2Own2010 177
7.8 測試基礎設施 181
7.9 小結 181
第8章 面向返回的程式設計 182
8.1 ARM基礎知識 182
8.1.1 iOS的調用約定 183
8.1.2 系統調用的調用約定 183
8.2 ROP簡介 185
8.2.1 ROP與堆bug 186
8.2.2 手工構造ROP有效載荷 187
8.2.3 ROP有效載荷構造過程的自動化 191
8.3 在iOS中使用ROP 193
8.4 iOS中ROPshellcode的示例 195
8.4.1 用於盜取檔案內容的有效載荷 196
8.4.2 利用ROP結合兩種漏洞攻擊程式(JailBreakMev3) 202
8.5 小結 206
第9章 核心的調試與漏洞攻擊 207
9.1 核心的結構 207
9.2 核心的調試 208
9.3 核心擴展與IOKit驅動程式 213
9.3.1 對IOKit驅動程式對象樹的逆向處理 213
9.3.2 在核心擴展中尋找漏洞 216
9.3.3 在IOKit驅動程式中尋找漏洞 219
9.4 核心漏洞攻擊 222
9.4.1 任意記憶體的重寫 223
9.4.2 未初始化的核心變數 227
9.4.3 核心棧緩衝區溢出 231
9.4.4 核心堆緩衝區溢出 236
9.5 小結 245
第10章 越獄 246
10.1 為何越獄 246
10.2 越獄的類型 247
10.2.1 越獄的持久性 247
10.2.2 漏洞攻擊程式的類型 248
10.3 理解越獄過程 249
10.3.1 對bootrom進行漏洞攻擊 250
10.3.2 引導ramdisk 250
10.3.3 為檔案系統越獄 250
10.3.4 安裝完美越獄漏洞攻擊程式 251
10.3.5 安裝AFC2服務 251
10.3.6 安裝基本實用工具 252
10.3.7 套用轉存 253
10.3.8 套用包安裝 254
10.3.9 安裝後的過程 255
10.4 執行核心有效載荷和補丁 255
10.4.1 核心狀態修復 255
10.4.2 許可權提升 256
10.4.3 為核心打補丁 257
10.4.4 安全返回 267
10.5 小結 268
第11章 基帶攻擊 269
11.1 GSM基礎知識 270
11.2 建立OpenBTS 272
11.2.1 硬體要求 272
11.2.2 OpenBTS的安裝和配置 273
11.3 協定棧之下的RTOS 276
11.3.1 NucleusPLUS 276
11.3.2 ThreadX 277
11.3.3 REX/OKL4/Iguana 277
11.3.4 堆的實現 278
11.4 漏洞分析 281
11.4.1 獲得並提取基帶固件 281
11.4.2 將固件鏡像載入IDAPro 283
11.4.3 套用/基帶處理器接口 283
11.4.4 棧跟蹤與基帶核心轉儲 283
11.4.5 受攻擊面 284
11.4.6 二進制代碼的靜態分析 285
11.4.7 由規範引路的模糊測試 285
11.5 對基帶的漏洞攻擊 286
11.5.1 本地棧緩衝區溢出:AT+XAPP 286
11.5.2 ultrasn0w解鎖工具 287
11.5.3 空中接口可利用的溢出 293
11.6 小結 299
附錄 參考資料 300