主要观点:通过模糊测试寻找软件中的内存相关漏洞,以实现无需管理员凭据即可通过网络利用漏洞的目标。分别介绍了模糊测试的现状、背景、寻找有效目标的方法、使用 AFL++ 和 QEMU 进行模糊测试等内容。
关键信息:
- 模糊测试是发现软件漏洞的有效方法,如 Google 的 OSS-Fuzz 已发现众多漏洞。
- 模糊测试 IoT 设备较难,存在源代码专有、CPU 架构不支持、硬件外设复杂等问题。
- 介绍了 IoTFuzzer 这一自动化模糊测试框架。
- 阐述了 harness(用于处理模糊器提供的输入的 API 调用序列)和 corpus(有效输入样本或测试用例)的概念。
- 详细说明了寻找潜在易受攻击函数的过程,包括使用工具 EMBA 等。
- 对多个潜在的易受攻击函数进行了分析,如 wscd、httpd、tdpd、upnpd、ushare、tmpd 等。
- 介绍了使用 AFL++ 和 QEMU 进行模糊测试的环境设置、覆盖主函数、开发和调试 harness、生成语料库数据、模糊目标等步骤。
重要细节: - 在 Docker 中创建可重现的模糊测试环境,安装必要工具和编译 AFL++ 及 QEMU。
- 通过环境变量 LD_PRELOAD 覆盖主函数,创建自定义的 __uClibc_main 函数。
- 开发 harness 时,不同目标函数需要不同的 harness 设置,如 httpd_parser_main 函数需要调试和调整输入结构。
- 生成语料库数据时,对于解析网络数据的函数,可使用 Wireshark 记录不同数据包,对于加密数据的函数,需进行相应修改。
- AFL++ 模糊测试过程中,可通过监控各种指标如执行速度、总崩溃次数等来评估和调整测试。
总结:模糊测试虽有效,但寻找有效目标和开发 harness 耗时较长,文中详细介绍了相关过程和方法。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。