内容简介
在网络安全领域,仿真和模糊测试是提升安全性的核心技术,但有效应用它们颇具
挑战。本书借助真实案例和实操示例,助力读者掌握仿真与模糊测试的基础概念,开展漏洞研究,提升发现软件潜在安全漏洞的能力。
本书共 12 章,开篇明确适用读者与所需预备知识,介绍后续使用工具,接着阐述仿
真发展历史、QEMU 系统仿真器及其执行模式与模糊测试等基础内容。随后,通过多个
案例,如结合 QEMU 与 AFL 识别 VLC 安全漏洞、三星 Exynos 基带漏洞分析、OpenWrt全系统模糊测试及针对 ARM 架构的模糊测试,以及 iOS、Android 系统的相关测试等,深入讲解仿真与模糊测试的实际应用。最后,总结了模糊测试的研究发现、影响及未来方向。
目录
第 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