內容介紹
安全始終是計算機和網際網路領域最重要的話題。進入移動網際網路時代,移動平台和設備的安全問題更加突出。iOS系統憑藉其在移動市場的占有率擁有著舉足輕重的地位。雖然iOS系統向來以安全著稱,但由其自身漏洞而引發的威脅同樣一直存在。
《黑客攻防技術寶典:iOS實戰篇》由美國國家安全局全球網路漏洞攻擊分析師、連續4年Pwn2Own黑客競賽大獎得主Charlie Miller領銜,6位業內頂級專家合力打造,全面深入介紹了iOS的工作原理、安全架構、安全風險,揭秘了iOS越獄工作原理,探討了加密、代碼簽名、記憶體保護、沙盒機制、iPhone模糊測試、漏洞攻擊程式、ROP有效載荷、基帶攻擊等內容,為深入理解和保護iOS設備提供了足夠的知識與工具,是學習iOS設備工作原理、理解越獄和破解、開展iOS漏洞研究的重量級專著。
本書作為國內第一本全面介紹iOS漏洞及攻防的專著,作者陣容空前豪華,內容權威性毋庸置疑。Charlie Miller曾在美國國家安全局擔任全球網路漏洞攻擊分析師5年,並連續4屆摘得Pwn2Own黑客競賽桂冠。Dionysus Blazakis擅長漏洞攻擊緩解技術,2010年贏得了Pwnie Award最具創新研究獎。Dino Dai Zovi是Trail of Bits聯合創始人和首席技術官,有十餘年信息安全領域從業經驗,出版過兩部信息安全專著。Vincenzo Iozzo現任BlackHat和Shakacon安全會議評審委員會委員,因2010年和2011年連續兩屆獲得Pwn2Own比賽大獎在信息安全領域名聲大振。Stefan Esser是業界知名的PHP安全問題專家,是從原廠XBOX的硬碟上直接引導Linux成功的第一人。Ralf-Philipp Weinmann作為德國達姆施塔特工業大學密碼學博士、盧森堡大學博士後研究員,對密碼學、移動設備安全等都有深入研究。
本書適合想了解iOS設備工作原理的人,適合對越獄和破解感興趣的人,適合關注iOS套用及數據安全的開發人員,適合公司技術管理人員(他們需要了解如何保障iOS設備安全),還適合從事iOS漏洞研究的安全研究人員。
作者介紹
Charlie Miller
Accuvant Labs首席研究顧問,曾在美國國家安全局擔任全球網路漏洞攻擊分析師5年,連續4年贏得CanSecWest Pwn2Own黑客大賽。他發現了iPhone與G1安卓手機第一個公開的遠程漏洞,通過簡訊對iPhone進行漏洞攻擊並發現了可以讓惡意軟體進入iOS的代碼簽名機制缺陷。作為聖母大學博士的他還與人合著了The Mac Hacker's Handbook和Fuzzing for Software Security Testing and Quality Assurance兩本信息安全類圖書。
Dionysus Blazakis
程式設計師和安全研究人員,擅長漏洞攻擊緩解技術,經常在安全會議上發表有關漏洞攻擊緩解技術、繞過緩解技術和尋找漏洞的新方法等主題演講,因利用即時編譯器繞過數據執行保護的技術贏得了2010年Pwnie Award最具創新研究獎。另外,他與Charlie Miller為參加2011年Pwn2Own大賽開發的iOS漏洞攻擊程式贏得了iPhone漏洞攻擊比賽的大獎。
Dino Dai Zovi
Trail of Bits聯合創始人和首席技術官,有十餘年信息安全領域從業經驗,
做過紅隊(red teaming,又稱“倫理黑客”)、滲透測試、軟體安全、信息安全管理和網路安全研究與開發等多種工作。Dino是信息安全會議的常客,在DEFCON、BlackHat和CanSecWest等世界知名的信息安全會議上發表過對記憶體損壞利用技術、802.11無線客戶端攻擊和英特爾VT-x虛擬化rootkit程式等課題的獨立研究成果。他還是The Mac Hacker's Handbook和The Art of Software Security Testing的合著者。
Vincenzo Iozzo
Tiqad srl安全研究人員,BlackHat和Shakacon安全會議評審委員會成員,常在BlackHat和CanSecWest等信息安全會議上發表演講。他與人合作為BlackBerryOS和iPhoneOS編寫了漏洞攻擊程式,因2010年和2011年連續兩屆獲得Pwn2Own比賽大獎在信息安全領域名聲大振。
Stefan Esser
因在PHP安全方面的造詣為人熟知,2002年成為PHP核心開發者以來主要關注PHP和PHP應用程式漏洞的研究,早期發表過很多關於CVS、Samba、OpenBSD或Internet Explorer等軟體中漏洞的報告。2003年他利用了XBOX字型載入器中存在的緩衝區溢出漏洞,成為從原廠XBOX的硬碟上直接引導Linux成功的第一人;2004年成立Hardened-PHP項目,旨在開發更安全的PHP,也就是Hardened-PHP(2006年融入Suhosin PHP安全系統);2007年與人合辦德國Web套用開發公司SektionEins GmbH並負責研發工作;2010年起積極研究iOS安全問題,並在2011年提供了一個用於越獄的漏洞攻擊程式(曾在蘋果多次更新後倖存下來)。
Ralf-Philipp Weinmann
德國達姆施塔特工業大學密碼學博士、盧森堡大學博士後研究員。他在信息安全方面的研究方向眾多,涉及密碼學、移動設備安全等很多主題。讓他聲名遠播的事跡包括參與讓WEP破解劇烈提速的項目、分析蘋果的FileVault加密、擅長逆向工程技術、攻破DECT中的專屬加密算法,以及成功通過智慧型手機的Web瀏覽器(Pwn2Own)和GSM協定棧進行滲透攻擊。
作品目錄
目 錄
第1章 iOS安全基礎知識 1
1.1 iOS硬體/設備的類型 1
1.2 蘋果公司如何保護App Store 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 Pwn2Own 2010 10
1.5.7 Jailbreakme.com 2(“Star”) 10
1.5.8 Jailbreakme.com 3(“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 Lion Server描述檔案管理器 22
2.3 小結 36
第3章 加密 37
3.1 數據保護 37
3.2 對數據保護的攻擊 40
3.2.1 對用戶密碼的攻擊 40
3.2.2 iPhone Data Protection Tools 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 修改iOS shellcode 79
4.7.2 在iOS上使用Meterpreter 83
4.7.3 取得App Store的批准 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 沙盒機制對App Store套用和平台套用的影響 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 對快速查看(Quick Look)的模糊測試 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 SMS iOS注入 145
6.9.9 SMS的監測 146
6.9.10 SMS bug 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 案例研究:Pwn2Own 2010 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中ROP shellcode的示例 195
8.4.1 用於盜取檔案內容的有效載荷 196
8.4.2 利用ROP結合兩種漏洞攻擊程式(JailBreakMe v3) 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 Nucleus PLUS 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 將固件鏡像載入IDA Pro 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