当前位置: 首页 > news >正文

使用 AFL++ 对 IoT 二进制文件进行模糊测试 - 第一部分

American fuzzy lop 是一款面向安全的模糊测试器,它采用一种新型的编译时插桩和遗传算法,可以自动发现干净、有趣的测试用例,从而触发目标二进制文件中新的内部状态。这显著提高了模糊测试代码的功能覆盖率。

AFL 的地址是https://lcamt uf.coredump.cx/afl/ 。它已经有一段时间没有更新了。虽然 AFL 仍然运行良好,但有一个新项目 AFL++,它是 AFL 的一个分支,包含许多改进和新功能。AFL++ 的地址是https://aflplus.plus/,其源代码位于GitHub。在本文中,我们将研究如何使用 AFL++ 对 IoT 二进制文件进行模糊测试。

当我们拥有目标二进制文件的源代码时,模糊测试效果最佳。但不幸的是,对于物联网二进制文件来说,情况往往并非如此。AFL++(和 AFL)附带一个配套工具(afl-gcc、afl-clang 等),可以作为 gcc、clang 或任何其他标准构建工具的直接替代品。该工具用于在编译源代码时向生成的二进制文件中注入检测工具。然后可以使用 afl-fuzz 对已检测的二进制文件进行模糊测试。

对闭源应用程序进行模糊测试非常棘手。为了对此类二进制文件进行模糊测试,AFL++ 可以使用 Qemu、Unicorn 或 Frida,并分别命名为 qemu 模式、Unicorn 模式和 Frida 模式。这些是仅适用于二进制文件的插桩模式,效率不如源代码插桩模式。在本文中,我们将使用 Qemu 模式。

在 Qemu 模式下,AFL++ 使用 qemu 用户模式仿真来运行二进制文件。它使用 Qemu 的修改版本,该版本会在程序执行时对基本块进行插桩。由此生成的插桩信息用于生成新的测试用例,这些测试用例会触发不同的代码路径,从而提高代码覆盖率。qemu 模式下的 AFL++ 还可以用于插桩外部架构的二进制文件(例如 x86_64 主机上的 arm 二进制文件)。这对于模糊测试通常采用 ARM 或 MIPS 架构的物联网固件二进制文件非常有用。

需要注意的是,AFL++ 和类似的模糊测试器(AFL、hongfuzz、radamsa [仅测试用例生成器])仅适用于文件输入。也就

相关文章:

  • Linux之netlink(2)libnl使用介绍(1)
  • Redis 数据类型全览:特性、场景与操作实例
  • 【Hive入门】Hive动态分区与静态分区:使用场景与性能对比完全指南
  • 游戏引擎学习第245天:wglChoosePixelFormatARB
  • 写入cache时数据格式错误产生的ERRO导致整个测试框架无法运行
  • PID程序实现
  • php一些命名规范 和 css命名规范
  • AIGC在自动化测试领域的创新应用:智能生成测试用例与缺陷预测
  • SpringCloud原理和机制
  • 产销协同的作用是什么?又如何对各部门发挥作用?
  • A. Ideal Generator
  • 【数据融合】基于拓展卡尔曼滤波实现雷达与红外的异步融合附matlab代码
  • 部署大模型需要多少GPU显存?以DeepSeek R1部署为例
  • 直接映射例题及解析
  • [笔记] MCPO搭建教程
  • 【Kafka】Windows环境下生产与消费流程详解(附流程图)
  • VO包装类和实体类分别是什么?区别是什么?
  • Jmeter如何取JDBC request响应参数作为下一个接口的值?
  • ORACLE数据库备份入门:第四部分:2-备份场景举例
  • SpringCloud组件——OpenFeign
  • 万达电影去年净利润亏损约9.4亿元,计划未来三年内新增25块IMAX银幕
  • 媒体:黑话烂梗包围小学生,“有话好好说”很难吗?
  • 腾讯重构混元大模型研发体系:成立大语言和多模态模型部,提升AI长期技术作战能力
  • 探索演艺产业新路径,2万观众走进音乐科技融创节
  • 当AI开始深度思考,人类如何守住自己的慢思考能力?
  • 全国电影工作会:聚焦扩大电影国际交流合作,提升全球影响力