当前位置: 首页 > 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 [仅测试用例生成器])仅适用于文件输入。也就

http://www.dtcms.com/a/157240.html

相关文章:

  • 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
  • MySQL 中 SQL 语句的详细执行过程
  • Debian安装避坑
  • 基于Matlab的MDF文件导入与处理研究
  • 59. Java 类和对象 - 方法的返回值
  • JSAPI2.4——正则表达式
  • Network.framework 的引入,不是为了取代 URLSession
  • Oracle EBS 零金额的AP付款无法过账数据修复
  • 基于开源技术体系的品牌赛道力重构:AI智能名片与S2B2C商城小程序源码驱动的品类创新机制研究
  • Unity text 表情和超链接解决方案。
  • 交换机之配置系统基本信息(Basic Information of the Configuration System for Switches)