Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
autoharness — 一个基于库自动生成模糊测试桩的工具 | Kitploit
工具/GitHubGitHub/parikhakshat/autoharness
漏洞分析代码分析模糊测试二进制分析
GitHubparikhakshat/autoharness

autoharness

一个基于库自动生成模糊测试桩的工具

查看仓库
293254年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

AutoHarness

由 Akshat Parikh 创建

这个工具是什么?

AutoHarness 是一个自动为你生成模糊测试(fuzzing)桩的工具。这个想法源于当前模糊测试代码库中的一个并行问题:大型代码库拥有数千个函数和代码片段,它们可能深嵌在库中。即使对于智能模糊测试器来说,要触及这些代码路径也非常困难,有时甚至不可能。 即使是像 oss-fuzz 这样的大型模糊测试项目,代码库中仍有部分区域未被模糊测试覆盖。因此,这个程序试图在一定程度上缓解这个问题,并为安全研究人员提供一个可用于初步测试代码库的工具。该程序仅支持用 C 和 C++ 编写的代码库。

设置/演示

该程序利用 llvm 和 clang 配合 libfuzzer,使用 Codeql 查找函数,并使用 Python 作为整体程序。该程序已在 Ubuntu 20.04 上使用 llvm 12 和 Python 3 进行了测试。以下是初始设置:

root@kitploit:~
sudo apt-get update;
sudo apt-get install python3 python3-pip llvm-12* clang-12 git;
pip3 install pandas lief subprocess os argparse ast;

请按照 https://github.com/github/codeql 上的说明安装 Codeql。 确保安装了 CLI 工具和库。在测试中,我将工具和库都存放在一个文件夹下。 最后,克隆此仓库或下载一个发行版。 以下是程序在 nginx 上运行并启用多参数模式后的输出结果。 这是我使用的命令:

root@kitploit:~
python3 harness.py -L /home/akshat/nginx-1.21.0/objs/ -C /home/akshat/codeql-h/ -M 1 -O /home/akshat/autoharness/ -D nginx -G 1 -Y 1 -F "-I /home/akshat/nginx-1.21.0/objs -I /home/akshat/nginx-1.21.0/src/core -I /home/akshat/nginx-1.21.0/src/event -I /home/akshat/nginx-1.21.0/src/http -I /home/akshat/nginx-1.21.0/src/mail -I /home/akshat/nginx-1.21.0/src/misc -I /home/akshat/nginx-1.21.0/src/os -I /home/akshat/nginx-1.21.0/src/stream -I /home/akshat/nginx-1.21.0/src/os/unix" -X ngx_config.h,ngx_core.h

结果: image 通过进一步调试编译过程、添加更多头文件等方式,完全有可能提高成功率。注意,nginx 项目在编译后没有任何共享对象。不过,该程序具有一项功能,可以将 PIE 可执行文件转换为共享库。

计划中的功能(按进度排序)

  1. 结构体模糊测试

当前程序对多参数函数进行模糊测试的方式是使用 fuzzing data provider。这一整合还有一些改进空间;但我认为我可以将这一特性与数据结构结合起来。编码过程中遇到的一个问题是 Codeql 和嵌套结构体。如果不为每个函数编写多个不同的查询,处理起来会特别困难。简而言之,这一功能需要更多工作。我也考虑过使用 protobuf 的简单解决方案。

  1. 基于实现的桩生成

利用 Codeql,可以生成控制流图,映射函数中参数是如何初始化的。利用这些信息,我们可以创建更好的桩。另一种方式是查找库中已有的函数实现,并利用这些信息对函数的桩实现做出有根据的猜测。目前我在这一方面遇到的问题是如何使用 Codeql 生成控制流图。

  1. 并行化模糊测试/误报检测

我可以创建一个简单的程序,运行所有桩,并使用 ASAN 捕捉任何常见的误报。此外,我还可以创建一个新界面,一次性运行所有桩并显示它们的统计信息。

贡献/Bug 报告

如果您发现此程序有任何错误,请创建一个 issue。我会尝试修复。另外,如果您对新功能、性能提升的实现方式或当前计划中的功能有任何想法,请创建一个合并请求(pull request)或带有 (contribution) 标签的 issue。

重要说明

此工具会生成一些误报。请先分析崩溃,确认是有效 Bug 还是实现问题。此外,如果某些函数无法编译,您可以启用调试模式。这有助于您了解是否缺少某些头文件或存在链接问题。如果您正在处理的项目没有共享库而是可执行文件,请确保以 PIE 形式编译该可执行文件,以便此程序可以将其转换为共享库。

参考文献

  1. https://lief.quarkslab.com/doc/latest/tutorials/08_elf_bin2lib.html
下载工具