硬件系統模糊測試:技術揭秘與案例剖析 Fuzzing Against the Machine: Automate vulnerability research with emulated IoT devices on QEMU

[西]安東尼奧·納帕(Antonio Nappa)

  • 硬件系統模糊測試:技術揭秘與案例剖析-preview-1
  • 硬件系統模糊測試:技術揭秘與案例剖析-preview-2
硬件系統模糊測試:技術揭秘與案例剖析-preview-1

相關主題

商品描述

在網絡安全領域,仿真和模糊測試是提升安全性的核心技術,但有效應用它們頗具

挑戰。本書借助真實案例和實操示例,助力讀者掌握仿真與模糊測試的基礎概念,開展漏洞研究,提升發現軟件潛在安全漏洞的能力。

本書共 12 章,開篇明確適用讀者與所需預備知識,介紹後續使用工具,接著闡述仿

真發展歷史、QEMU 系統仿真器及其執行模式與模糊測試等基礎內容。隨後,通過多個

案例,如結合 QEMU 與 AFL 識別 VLC 安全漏洞、三星 Exynos 基帶漏洞分析、OpenWrt全系統模糊測試及針對 ARM 架構的模糊測試,以及 iOS、Android 系統的相關測試等,深入講解仿真與模糊測試的實際應用。最後,總結了模糊測試的研究發現、影響及未來方向。

作者簡介

Antonio Nappa,博士,Zimperium 公司的應用分析主管。自 2008 年 DEFCON CTF

總決賽以來,他一直努力保持自己在網絡安全領域的領先地位。他是一名經驗豐富的底層 C/C++開發人員,也是一位資深的逆向工程師,擅長自動化模糊測試、固件仿真、設備仿真和符號執行。他會解決所有的段錯誤,並在多個頂級會議上發表過數篇經由同行評審的論文。在學術生涯中,他曾是加州大學伯克利分校的訪問學者;在職業領域,他曾為包括 Brave 和 Corelight 在內的多家知名初創公司工作過。努力工作之余,他最近喜歡探索側信道攻擊和量子計算。在計算機之外,他還喜歡劃船、遊泳和彈吉他。

Eduardo Blázquez,馬德裏卡洛斯三世大學的在讀博士生,同時也是該校的研究員。

自本科期間學習網絡安全知識以來,他一直專註於底層安全領域。他喜歡用多種編程語言(如 Python、C 和 C++)編寫分析工具。他的興趣主要在模糊測試、編譯器和符號執行技術的內部機制上。他曾發表過與 Android 生態系統安全與隱私、惡意軟件分析、Dalvik靜態分析工具開發相關的論文。在計算機之外,他喜歡武術、亞洲音樂,並對日本及日語的學習很有興趣。

目錄大綱

第 1 部分 基礎知識

第 1 章 本書適用讀者 2

11 本書的讀者對象 3

12 先決條件 4

13 自主內容選擇 4

14 入門指導 5

15 現在正式開始 10

151 QEMU 基本插樁 11

152 OpenWrt 全系統仿真 11

153 三星 Exynos 基帶 11

154 iOS 和 Android 系統 11

16 小結 12

第 2 章 仿真的發展歷史 13

21 什麼是仿真 14

22 為何需要仿真 14

23 除 QEMU 以外的仿真工具 22

231 MAME 23

232 Bochs 24

233 RetroPie 24

24 仿真與虛擬化在網絡安全歷史中的作用 24

241 Anubis 25

242 TEMU 25

243 Ether 26

244 Cuckoo 沙箱 26

245 商業化解決方案—VirusTotal 和 Joe Sandbox 26

25 小結 27

第 3 章 深入探究 QEMU 28

31 使用仿真方法研究物聯網(IoT)設備 28

32 代碼結構 29

33 QEMU 仿真 31

331 QEMU IR 31

332 深入了解 QEMU 架構 35

34 QEMU 的擴展和修改 38

341 Avatar2簡要示例 39

342 PANDA 41

35 小結 41

第 2 部分 仿真和模糊測試

第 4 章 QEMU 執行模式和模糊測試 44

41 QEMU 用戶模式 44

42 QEMU 全系統模式 50

43 模糊測試和分析技術 52

431 程序語義的羅塞塔石碑 53

432 模糊測試技術 63

44 American Fuzzy Lop 和 American Fuzzy Lop++ 65

441 AFL 和 AFL++相較於自研模糊測試工具的優勢 65

442 使用 AFL 和 AFL++進行模糊測試 66

443 對 ARM 二進制文件進行模糊測試 69

45 總結 72

第 5 章 一個廣為人知的組合:AFL + QEMU = CVE 73

51 發現漏洞真的那麼容易嗎 74

511 下載和安裝 AFL++ 75

512 準備一個易受攻擊的 VLC 實例 75

513 VLC 漏洞利用 80

52 全系統模糊測試—引入 TriforceAFL 92

53 總結 97

54 延伸閱讀 97

55 附錄—修改 Triforce 以實現測試用例的隔 98

第 6 章 修改 QEMU 以進行基本的插樁 101

61 添加新的 CPU 102

62 仿真嵌入式固件 103

63 對 DMA 外設進行逆向工程 106

64 使用 Avatar2仿真 UART 以進行固件調試—可視化輸出 108

65 總結 110

第 3 部分 高級概念

第 7 章 真實案例研究—三星 Exynos 基帶 112

71 手機架構的速成課程 112

711 基帶 113

712 基帶 CPU 家族 114

713 應用處理器和基帶接口 116

714 深入了解 Shannon 系統 116

715 關於 GSM/3GPP/LTE 協議規範的說明 117

72 配置 FirmWire 以驗證漏洞 118

721 CVE-2020-25279—仿真器模糊測試 120

722 CVE-2020-25279—OTA 漏洞利用 126

73 總結 132

第 8 章 案例研究—OpenWrt 全系統模糊測試 133

81 OpenWrt 133

82 構建固件 134

821 在 QEMU 中測試固件 136

822 提取並準備內核 137

83 對內核進行模糊測試 139

84 崩潰後的核心轉儲分析實驗 141

85 總結 142

第 9 章 案例研究—針對 ARM 架構的 OpenWrt 系統模糊測試 144

91 仿真 ARM 架構以運行 OpenWrt 系統 144

92 為 ARM 架構安裝 TriforceAFL 147

93 在基於 ARM 架構的 OpenWrt 中運行 TriforceAFL 152

94 復現崩潰情況 154

95 總結 156

第 10 章 終至此處—iOS 全系統模糊測試 158

101 iOS 仿真的簡要歷史 159

102 iOS 基礎 160

1021 啟動 iOS 所需的條件 161

1022 代碼簽名 161

1023 屬性列表文件和權限 162

1024 二進制文件編譯 162

1025 IPSW 格式和內核用研究 163

103 設置 iOS 仿真器 163

1031 準備環境 164

1032 構建仿真器 165

1033 啟動準備工作 165

1034 在 QEMU 中啟動 iOS 168

104 準備用於啟動模糊測試的測試框架 169

105 Triforce 針對 iOS 的驅動程序修改 173

106 總結 179

第 11 章 意外轉機—對 Android 庫的模糊測試 181

111 Android OS 和架構介紹 182

112 使用 Sloth 對 Android 庫進行模糊測試 184

1121 介紹 Sloth 的機制 185

1122 AFL 覆蓋能力介紹 186

1123 運行 ELF 鏈接器 188

1124 運行 LibFuzzer 190

1125 解決 Sloth 模糊測試方法的問題 191

1126 運行 Sloth 191

113 總結 198

第 12 章 總結與結語 199