网络安全-好用的模糊测试器汇总与思考

目录

  • 内核 && 通用模糊测试器
  • 文件格式模糊测试器
  • 网络协议模糊测试器
  • 浏览器模糊测试器
  • WEB模糊测试器
  • 云模糊测试器
  • 某语言的模糊测试器
    • Java
    • C/C++
    • Go
    • DOM
    • JS
  • 关于模糊测试器的思考
    • 模糊测试器的组成部分
      • 用例生成器
      • 监控器
      • 过滤器
      • 核心部分
      • 结果统计
    • 提高
      • 代码覆盖率引导
      • 多进程、多线程
      • 分布式
      • 可视化


内核 && 通用模糊测试器

OSS-Fuzz-7.1k stars, 对开源软件进行持续模糊测试,支持多种语言开发的软件,能够构建自己的模糊测试平台,例如结合Jazzer,学习成本较高。

clusterfuzz-4.7k stars,可扩展的模糊测试框架,OSS-Fuzz的后端。

syzkaller - 3.9k stars, 分布式、无监督、基于覆盖度的 Linux 系统调用模糊测试工具

AFL-2.5k stars,可使用QEMU,是一款比较经典的模糊测试器。

AFL++-2.5k stars,是AFL的高级分支,速度更快,变异策略更多更好。

honggfuzz-2.4k stars,支持安卓、windows、mac、linux等多种操作系统,可通过命令行或文件等输入模式,可使用QEMU,多进程、多线程,已发现多个CVE,OSS-Fuzz、go-fuzz等受到它的启发。

Choronzon - 265 stars,基于遗传知识的 Fuzzer

gramfuzz - 221 stars,可定义复杂语法来建模文档与二进制数据格式的基于语法的 Fuzzer

KernelFuzzer - 424 stars, 跨平台内核 Fuzzer 框架

QuickFuzz - 192 stars,Haskell 写的针对第三方软件使用常见文件格式进行测试的工具,利用现成的、知名的 Fuzzer

Hodor Fuzzer - 124 stars, 曾经是另一个通用的 fuzzer

radamsa - 通用的测试用例生成器

文件格式模糊测试器

对pdf、 mp3、 swf 等文件格式进行模糊测试

Win AFL - 83 stars, Ivan Fratic 开发的针对 Windows 二进制程序 fuzzing 的 AFL 分支版本

AFLGo - 344 stars, 基于 AFL 构建的导向性灰盒 Fuzzing,针对程序特定位置进行模糊测试

Shellphish Fuzzer - 598 stars, 一个操纵 AFL 的 Python 接口,可以简单的写入测试用例与其他功能

zzuf - 366 stars, 一个透明应用输入 fuzzer,可以拦截文件操作、改变程序输入的随机位

binspector - 179 stars, 二进制格式分析与模糊测试工具

grammarinator - 215 stars, 基于 ANTLR v4 语法的文件格式模糊测试工具(ANTLR 项目已有大量的语法)

pe-afl-195 stars, 针对 PE 文件进行静态二进制插桩辅助、结合 WinAFL 的 Fuzzer

MiniFuzz - Microsoft 出品的基础文件格式 fuzzing 工具

BFF from CERT - 基础文件格式 fuzzing 框架

AFL Fuzzer (Linux only) - Michal Zalewski aka lcamtuf 开发的 Fuzzer

TriforceAFL - 一个 AFL 的修正版,支持应用源码无法获得情况下的 fuzzing

Peach Fuzzer - 帮助创建传统 dumb 以及小型 fuzzer 的框架

Failure Observation Engine (FOE) - 基于畸形文件的 Windows 程序 Fuzzing 工具

rmadair - 基于畸形文件的 fuzzer,使用 PyDBG 来监视感兴趣的信号

网络协议模糊测试器

对 HTTP, SSH, SMTP 等网络协议进行模糊测试

Sulley - 1.3k stars, Michael Sutton 开发,包含多个可扩展组件的 Fuzzer 开发与 Fuzzing 测试框架,不再维护,推荐下面的

boofuzz - 1.5k stars, Sulley 框架的继任者

Spike - 像 sulley 的 fuzzer 开发框架,是 sulley 的前身

Metasploit Framework - 26.3k stars,通过 Auxiliary 模块使其具有了 fuzzing 能力的框架

Nightmare - 362 stars, 一个带有 Web 管理界面的分布式 fuzzing 测试套件,支持对网络协议进行 fuzzing

rage_fuzzer - 20 stars, 未知协议包 fuzzer

Fuzzotron - 355 stars, 支持 TCP、UDP 的简单多进程网络 Fuzzer

Mutiny - 474 stars, 通过重放畸变的 PCAP 数据包来对网络进行 Fuzzer

Fuzzing For Worms - 103 stars, 用于网络服务的 Fuzzing 框架

AFL (w/ networking patch) - 188 stars, 用于网络 Fuzzing 的非官方版 AFL

AFLNet - 503 stars, 用于网络协议的灰盒 Fuzzer(AFL 的扩展)

Jackalope-684 stars, 分布式的,可用于windows和macos的二进制模糊测试器。

Peach Fuzzer - 帮助创建传统 dumb 以及小型 fuzzer 的框架,之前是Python编写的,Peach3使用C#重写了。

浏览器模糊测试器

BFuzz - 283 stars, 一款基于输入的模糊测试框架

WEB模糊测试器

ffuf-6k stars,go语言编写的快速web模糊测试器,可对get、post数据包进行模糊测试,可使用外部变异器,例如,radamsa,来对种子进行变异生成测试用例。

wfuzz-4.2k stars,WFuzz 是一个用于 Python 的 Web 应用程序安全模糊器工具和库,可对路径、文件、URL参数、POST请求等进行模糊测试。

restler-fuzzer-1.5k stars,RestApi模糊测试器

SSRFmap-1.7k stars,自动的SSRF模糊测试器。

WebScarab-该工具是一个具有模糊测试能力的Web应用审计套件

云模糊测试器

在云环境中进行模糊测试的模糊测试工具

Cloudfuzzer - 18 stars,在云环境中自动、便易地进行云 Fuzzing 的框架

Fuzzit - Fuzzit 是一个 Fuzzing 即服务的平台,被 systemd, radare2 等多个开源\闭源项目使用

某语言的模糊测试器

Java

jazzer-489 stars,基于libFuzzer的覆盖率指导的JVM软件模糊测试器
Tribble - 16 stars,易用、覆盖度指导的 JVM 模糊测试框架

C/C++

libFuzzer - 面向 C/C++ 程序、基于覆盖度的进化模糊测试工具
ansvif - 用于在 C/C++ 程序中查找漏洞的高级跨平台模糊测试框架

Go

go-fuzz - 4.3k star,覆盖度指导的 go 包模糊测试

DOM

domato-1.4k stars,dom模糊测试器

JS

fuzzilli-1.4k stars, js引擎模糊测试器

关于模糊测试器的思考

模糊测试器的组成部分

用例生成器

基于变异:有种子文件,变异后生成测试用例
基于生成:知道输入的格式,根据格式在范围内生成测试用例
可使用radamsa

监控器

监控被测试程序,获取被测试程序占用的cpu、内存、是否崩溃等情况
可利用插桩技术

过滤器

有些崩溃可能上网络波动等造成的,可以过滤
可利用正则

核心部分

调用用例生成器生成测试用例,将测试用例通过发送或调用被测试程序的方式传输,接收监控器的结果,指导用例的生成,接收过滤器的结果,生成统计信息

结果统计

统计发送的用例数量、崩溃数量、运行耗时等

提高

代码覆盖率引导

使用分支覆盖率等进行引导,使测试用例尽可能的覆盖更多代码
可利用插桩技术,放在监控器的部分,返回给核心部分

多进程、多线程

模糊测试的一个大问题就是效率太低,通过多进程和多线程可以得到缓解

分布式

同样,分布式也可以提高效率,同时,分布在不同机器,省的占用某一台机器过多内存和cpu,而且可以满足高可用。

可视化

可通过web界面等进行可视化,实时显示统计信息,有多少生成器在运行等。

更多内容查看:网络安全-自学笔记

喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

你可能感兴趣的:(网络安全,#,模糊测试,安全,模糊测试,漏洞挖掘)