WinAFL 实战:探索闭源软件Fuzzing技术

💡 原文中文,约4300字,阅读约需11分钟。
📝

内容提要

WinAFL是一个基于AFL的模糊测试工具,专为Windows平台设计。它利用DynamoRIO插桩工具来跟踪和记录程序执行路径,以发现漏洞。使用WinAFL进行模糊测试需要准备初始种子输入和编写harness来控制程序的输入和执行路径。本文介绍了如何使用WinAFL对一个图片解析功能进行Fuzzing的实战案例。通过分析目标函数和构造参数,最终发现了多个程序崩溃的漏洞。

🎯

关键要点

  • WinAFL是一个基于AFL的模糊测试工具,专为Windows平台设计。
  • 模糊测试是一种自动化软件测试技术,通过提供大量随机数据来发现程序中的漏洞。
  • WinAFL利用DynamoRIO动态插桩工具来跟踪和记录程序执行路径。
  • 使用WinAFL进行模糊测试需要准备初始种子输入和编写harness。
  • 模糊测试的过程包括初始种子输入、变异输入、执行目标程序、分析结果和发现漏洞。
  • 对于GUI程序的模糊测试,通常需要编写一个harness来控制输入和执行路径。
  • 目标函数需要满足打开、解析和关闭输入文件的条件。
  • 通过Process Monitor监控进程,找到目标函数并进行参数构造。
  • 使用IDA和动态调试工具分析目标函数的执行流和参数。
  • 简化版的harness代码示例展示了如何调用目标函数进行模糊测试。
  • 使用WinAFL进行模糊测试的命令行参数说明。
  • 经过十几个小时的fuzz,最终发现多个程序崩溃的漏洞。
➡️

继续阅读