当前位置: 首页 > 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.xdnf.cn/news/154657.html

相关文章:

  • Ubuntu20.04部署Dify(Docker方式)
  • 顶点着色器和片元着色器染色+表面体着色器染色
  • 深入理解算力:从普通电脑到宏观计算世界
  • MySQL长事务的隐患:深入剖析与解决方案
  • 【Castle-X机器人】二、智能导览模块安装与调试
  • 【Castle-X机器人】四、智能机械臂安装与调试
  • 【C++】stack、queue和priority_queue的模拟实现
  • Android Compose 框架图像修饰深度剖析:从源码到实践(八)
  • ‌MySQL 事务隔离级别详解
  • 深入剖析 Vue 组件:从基础到实践
  • 5G融合消息PaaS项目深度解析 - Java架构师面试实战
  • Linux文件操作命令终极指南:从查看到高级搜索
  • 使用MobaXterm远程登录Ubuntu系统:SSH服务配置教程
  • 【Docker项目实战】使用Docker部署Caddy+vaultwarden密码管理工具(详细教程)
  • 【Linux网络】打造初级网络计算器 - 从协议设计到服务实现
  • 模态链:利用视觉-语言模型从多模态人类视频中学习操作程序
  • 有关图的类型的题目(1)
  • Linux下终端命令行安装常见字体示例
  • 基于亚马逊云科技构建音频转文本无服务器应用程序
  • 使用matplotlib绘制Raincloud图/云雨图/柱状图/小提琴图
  • 《代码之美:静态分析工具与 CI 集成详解》
  • 【虚幻C++笔记】碰撞检测
  • 探秘卷积神经网络:深度学习的图像识别利器
  • 【Linux网络】构建HTTP响应与请求处理系统 - HttpResponse从理解到实现
  • 常见的机器视觉通用软件
  • JDBC数据库操作中如何保证最后关闭了所占用的资源——try用法的细节控制
  • k8s中资源的介绍及标准资源namespaces实践
  • 如何在 Conda 环境中降级 Python 版本:详细指南
  • H.264/AVC标准主流开源编解码器编译说明
  • 2025第十六届蓝桥杯大赛(软件赛)网络安全赛 Writeup