基于快照的 Fuzz 工具 Wtf 的基础使用
作者:IT资讯 来源:数据库 浏览: 【大中小】 发布时间:2025-11-26 20:27:38 评论数:
前言
wtf (https://github.com/0vercl0k/wtf</https://github.com/0vercl0k/wtf>) 是基于具一种分布式 、代码覆盖引导、快照可定制 、的基基于快照的础使跨平台模糊器,设计用于 fuzz 在 Microsoft Windows 平台上运行的基于具用户模式或内核模式的目标。
在日常的快照 fuzz 的工作中 ,通常我们都需要先大致分析目标软件,的基然后对其输入点构造 harness,础使才可以使用工具对 harness 进行 fuzz ,源码下载基于具从而发现目标软件的快照潜在漏洞 。构造 harness 不是的基一件容易的事情 ,这取决于安全研究人员分析解构目标软件的础使程度 ,除此之外 ,基于具在部分软件中 ,快照只有进行完整的的基、复杂的初始化操作和预设,才能保证 harness 调用的云计算输入点函数能够正常运行。
针对这一问题,基于快照的 fuzz 工具 wtf 吸引了我的注意;我们可以对正常运行的目标软件打下内存快照,然后对该内存快照进行 fuzz,这种方式可以不必编写 harness,并在一定程度上减少分析目标软件的成本。
本文从基于快照这一个特性出发,介绍 wtf 工具的基础使用和注意事项 。
本文实验环境:
复制Windows 10 x64 专业版 Visual Studio 2019 WinDBG ProxmoxVE 7.2-31.2.3.4.1. wtf概要
在 github 上可以访问 wtf 的源码和 README(https://github.com/0vercl0k/wtf):
image
作者提供了 4 篇使用 wtf 进行 fuzz 的实操文章:
Building a new snapshot fuzzer & fuzzing IDAFuzzing Modern UDP Game Protocols With Snapshot-based FuzzersFuzzing RDPEGFX with "what the fuzz"A Journey to Network Protocol Fuzzing – Dissecting Microsoft IMAP Client Protocol其中第一篇针对 IDA 的亿华云 fuzz,也是作者开发 wtf 的初衷,其中讲诉了 wtf 的开发历程并介绍了 wtf 的实现原理。
通过以上文章 ,了解到使用 wtf 进行 fuzz 可以大致分为 3 个步骤:
复制1. 远程调试目标程序 ,并在合适的位置打下系统内存快照 2. 为内存快照编写 wtf 的 fuzz 模块/插件(也称为 harness) 3. 编译并启动 wtf 进行 fuzz1.2.3.为了方便下文叙述 ,这里先介绍如何源码编译 wtf。wtf 使用 ninja 进行构建,首先我们下载 ninja(https://ninja-build.org/</https://ninja-build.org/>) 并添加到环境变量PATH中,随后从 github 下载 wtf 源码,高防服务器打开 Visual Studio 的 x64 位开发者命令行工具(vs2019:x64 Native Tools Command Prompt for VS 2019):
复制# 进入 wtf 的 build 目录 $ cd C:\Users\john\Desktop\wtf-0.4\src\build # 执行 bat 脚本 $ .\build-release.bat1.2.3.4.执行如下 :
image
编译成功后,会在build目录下生成wtf.exe文件,该二进制文件将支撑我们全部的 fuzz 流程 。
2. fuzz hevd
wtf 提供了完整的测试用例 hevd / tlv_server,能够帮助我们快速上手 wtf ,这里我们以 hevd 为例进行介绍;hevd(HackSys Extreme Vulnerable Windows Driver)是 Windows 内核驱动漏洞靶场(https://github.com/hacksysteam/HackSysExtremeVulnerableDriver</https://github.com/hacksysteam/HackSysExtremeVulnerableDriver>) ,以帮助安全研究员学习漏洞原理。
首先第一步是创建 hevd 运行时的系统内存快照 ,作者已经提供好了 https://github.com/0vercl0k/wtf/releases/download/v0.4/target-hevd.7z</https://github.com/0vercl0k/wtf/releases/download/v0.4/target-hevd.7z>,模板下载下载解压后如下 :
image
第二步是编写 hevd 的 wtf fuzz 模块/插件 ,其插件代码属于 wtf 源码的一部分,在其中需要定义如何对快照进行初始化,如何向快照注入测试用例等操作 ,同样作者也提供了 https://github.com/0vercl0k/wtf/blob/main/src/wtf/fuzzer_hevd.cc</https://github.com/0vercl0k/wtf/blob/main/src/wtf/fuzzer_hevd.cc>
