模糊测试面面观 | 模糊测试工具知多少

news2024/12/26 0:04:15

自1988年威斯康星大学的Barton Miller首次提出模糊测试这一概念以来,模糊测试领域经历了持续长久发展。模糊测试作为一种软件测试方法,旨在通过向程序输入模糊、随机、异常的数据,探测和发现潜在的漏洞和错误。这种方法备受安全研究人员的青睐。随着时间的推移,这一领域呈现出了蓬勃发展的景象,出现了丰富多样的模糊测试工具。

根据测试的特定目标,模糊测试工具可以被划分为不同类别,包括文件格式类模糊测试工具、网络协议类模糊测试工具、操作系统类模糊测试工具、Web服务类模糊测试工具、专注于特定编程语言的模糊测试工具等等。这些不同类型的模糊测试工具为软件安全性的提升带来了创新性的贡献。它们有针对性地探索和发现软件中的漏洞和脆弱性,能够帮助安全人员更好地了解潜在的安全隐患。

模糊测试领域涌现出了众多可供选择的工具,下面将介绍一些知名的开源模糊测试工具,以便帮助读者选择最适合自己需求的工具。

文件格式类模糊测试工具

文件格式类模糊测试工具主要用于测试文件格式解析器的健壮性和安全性,它专门针对某些文件格式,例如PDF、JPEG、MP3等。通过生成不符合文件规范的随机输入数据去尝试触发目标程序中未处理的异常情况,包括缓冲区溢出、内存泄漏等错误。

01

AFL

AFL(American Fuzzy Lop)是由安全研究员Michał Zalewski(@lcamtuf)开发的一款基于覆盖引导(Coverage-guided)的模糊测试工具,它通过记录输入样本的代码覆盖率,从而调整输入样本以提高覆盖率,增加发现漏洞的概率。

02

WinAFL

WinAFL是AFL的Windows版本,是一款专为Windows平台设计的开源模糊测试工具。与传统的AFL不同,WinAFL使用DynamoRIO动态插桩技术来监视目标程序的执行,收集代码覆盖率信息,并依此反馈来调整输入样本。

03

libFuzzer

libFuzzer是一款由LLVM项目开发的开源模糊测试库,用于进行持续、进化的模糊测试。与AFL等其他工具不同,libFuzzer是一个针对库函数的模糊测试器,它直接与目标库函数链接,无需与外部程序进行交互。

网络协议类模糊测试工具

网络协议类模糊测试工具是一种专门用于测试网络协议实现的安全和健壮性的测试工具。通过向目标系统发送随机或半随机的、可能违反协议规范的数据包,试图去引发目标系统的异常行为,例如崩溃、内存错误、或者更严重的安全问题。

01

Peach Fuzzer

Peach之前是一个遵守MIT开源许可证的模糊测试框架,是第一款综合性的开源工具,其中创建模糊器由XML语言实现。Peach主要有3个版本,最初采用Python语言编写,发布于2004年;第二版于2007年发布;Peach 3发布于2013年初,使用C#重写了整个框架。Peach支持对文件格式、网络协议、API等进行模糊测试。Peach提供了丰富的扩展和定制功能,以适应各种不同的测试需求和场景。值得注意的是在2020年Peach被GitLab收购,不再开源。

02

Boofuzz

Boofuzz是一个开源的由Python编写的网络协议模糊测试框架,继承自Sulley。Boofuzz提供了对于网络协议进行模糊测试的规范和功能函数,以此作为基础,我们可以编写针对自己目标的Python脚本,从而可以针对特定目标量身定制模糊测试工具。

03

AFLNet

AFLNet 是一款灰盒协议模糊测试工具,采用了代码覆盖率反馈、种子变异以及状态反馈等技术。与传统的基于生成的协议模糊测试工具相比,它采用Server和 Client之间的通信消息数据作为种子,无需任何的协议规范。本质上是模拟一个Client来发送一系列消息到 Server,并保留可以触发新的代码执行路径或者响应状态的变异数据。AFLNet使用Server 端的响应码来识别消息序列触发的不同状态,根据这种反馈,AFLNet 可以尽可能向有效的状态区域靠近。

操作系统类模糊测试工具

操作系统类模糊测试工具是一种专门针对操作系统内核和相关组件进行模糊测试的工具,旨在自动发现和识别潜在的漏洞和缺陷。通过生成随机或半随机的输入,并将其送入操作系统的各个层次和接口,模糊测试工具试图触发非预期的行为。与常规的模糊测试工具不同,操作系统模糊测试工具需处理更复杂的环境和上下文,通常涉及对底层硬件、驱动、系统调用等进行模拟和测试。

01

kAFL

kAFL(Kernel AFL)是一款专注于Linux内核和其他复杂的内核组件模糊测试的工具。基于流行的AFL设计,kAFL通过自动化、持续地提供随机或半随机输入来触发潜在错误。与AFL不同,kAFL专门针对内核空间的代码进行测试,能够识别出一些用户空间模糊器难以发现的漏洞。kAFL具备虚拟化技术支持,能够在虚拟机中执行测试,从而确保测试过程的隔离和安全。它还采用了覆盖率导向的方法,自动调整输入以最大限度地探索内核代码的执行路径。

02

syzkaller

syzkaller由Google的安全团队开发和维护,是一款高效的内核模糊测试工具。它主要使用Go编程语言实现,兼容Linux、Android、FreeBSD和Windows等多种操作系统,已成功发现上千个漏洞。syzkaller通过不断生成并执行一系列随机化的系统调用,尝试去触发内核的异常行为,如崩溃、死锁或内存泄露。

Web服务类模糊测试工具

Web服务类模糊测试工具是一种专门针对Web应用程序的安全测试工具,用于自动发现潜在的Web安全漏洞。通过生成一系列随机或半随机的HTTP请求,Web模糊器能够测试Web应用程序的各个组件,如URL、表单、参数、头部等。它可以快速识别常见的安全问题,如SQL注入、跨站脚本攻击(XSS)、文件包含等安全问题。

01

WFuzz

WFuzz是用Python实现的Web应用程序安全性模糊工具和库。它基于一个简单的理念:它将给定有效负载的值替换为对关键字的任一引用。它是一款出色的辅助模糊测试工具,可以在HTTP请求中插入各种输入值,用于对不同的Web应用程序组件进行多种复杂攻击,包括参数、认证、表单、头部等等。

02

WebScarab

WebScarab是一款开源的Web应用程序安全测试工具,由OWASP开发和维护。它是一款用Java编写的代理工具,主要用于分析和审查HTTP和HTTPS通信。它包含了一个基础的模糊测试器,能够将模糊测试值注入到应用参数中。

特定编程语言的模糊测试工具

特定编程语言的模糊测试工具是专门为某种编程语言设计的工具,用于自动检测代码中的漏洞和错误。特定编程语言的模糊测试工具有更深入的语言集成和理解,可以更精确地针对特定语言特性进行测试。与其他模糊测试工具相比,这些工具通常能提供更有效的测试,更容易集成到开发工作流程中,并能发现更深入、更特定的问题。

01

go-fuzz

go-fuzz是一款针对Go语言的模糊测试工具,使用覆盖率指导技术自动寻找能触发程序异常的输入。与Go的工具链紧密集成,它可以自动发现和最小化触发漏洞的输入,有效简化漏洞诊断和修复过程。作为Go开发人员和安全工程师的重要工具,go-fuzz在许多知名Go项目中成功地发现了漏洞。

02

Kelinci

Kelinci是一款配合AFL进行Java程序模糊测试的工具,通过插桩Java字节码来分析程序覆盖率。它通过创建一个C语言接口与AFL通信,接收AFL的变异数据,并通过TCP传递给Java端的Instrumentor。Instrumentor则负责将这些数据传递给Java的原始目标程序,并将运行结果反馈给C语言接口。Kelinci与AFL共同构建了一个闭环数据流,使AFL能够间接地对Java程序进行有效的模糊测试。

03

fuzzilli

fuzzilli是Google开源的一款JavaScript的模糊测试工具,使用swift语言开发。它整合了语法变异、模板生成、覆盖引导等多种技术,使用自定义中间语言用于语法变异,再将变异后的中间语言转换成JS代码。fuzzilli在3大主流JS引擎的测试中,收获颇丰,发现了不少漏洞,

这些开源工具为安全专业人员提供了更多选择,使他们能够更有效地发现安全漏洞,进而推动整个软件安全领域向前发展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/892077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价

近年来,国内外学者在生态系统的敏感性、适应能力和潜在影响等方面开展了大量的生态脆弱性研究,他们普遍将生态脆弱性概念与农牧交错带、喀斯特地区、黄土高原区、流域、城市等相结合,评价不同类型研究区的生态脆弱特征,其研究内容…

win下qwidget全屏弹窗后其他窗口鼠标样式无法更新的问题

在win平台下,实现截取选桌面执行推理功能,用一个qwidget(j对象名为m_selectWidget)来显示选取范围的边框,但这个qwidget显示后,其他窗口在他下面可以接受鼠标相应的事件,但原来的鼠标形状功能失效(mac正常&…

构建去中心化微服务集群,满足高可用性和高并发需求的实践指南!

随着互联网技术的不断发展,微服务架构已经成为了开发和部署应用程序的一种主流方式。然而,当应用程序需要满足高可用性和高并发需求时,单一中心化的微服务架构可能无法满足性能和可靠性的要求。因此,构建一个去中心化的微服务集群…

Fine tune简介

目录 Intro Related work Example .1 重新训练 .2 使用新的数据集进行fine tune .3 修改net结构 References 移学习不是一种算法而是一种机器学习思想,应用到深度学习就是微调(Fine-tune)。通过修改预训练网络模型结构(如修改样本类别输出个数),选择性载入预训练网络…

BOXTRADE-天启量化分析平台 主要功能介绍

BOXTRADE-天启量化分析平台 主要功能介绍 potato 数学 web 缘起 月晕而风,础润而雨 BOXTRADE-天启量化 欢迎来到天启量化!这是一个专注于量化分析的网站。我们致力于为用户提供市场行情技术指标和量化策略分析方面的优质内容和资源。 我们的使命是 做…

马斯克为何说大模型中R语言会替代Python

为什么不是Python? 当今的LLM应用程序,包括推理应用程序和代理,大多是用 Python 编写的。但这种情况即将改变。对于新一波的开发人员来说,Python 实在是太慢、太臃肿,而且要命的是太笨拙了。事实上, LLVM、…

安防视频汇聚平台EasyCVR视频监控综合管理平台H.265转码功能更新,新增分辨率配置的具体步骤

安防视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求,让平台在内网、专网、VPN、广域网、互联网等各种环境下进行音视频的采集、接入与多端分发。在视频能力上,视频云存储平台EasyCVR可实现视频实时直播、云端录像、视频云存储、视频存储…

sql server安装报错 合成活动模板库(ATL) 失败

错误 “合成活动模板库(ATL) 规则失败“ 解决办法: 进入SQL Server 2008R2安装包目录找到文件:sqlsupport_msi,安装此文件之后,再安装SQL Server,便可解决该问题。C:\SQL Server 2008R2\new\SQL Server 2008R2\2052_CH…

专访阿里云席明贤,视频云如何运用大模型与小模型来破茧升级2.0

不久前,LiveVideoStack与阿里云视频云负责人席明贤(花名右贤)展开一场深度的对话,一个是圈内专业的社区媒体,一个是20年的IT老兵,双方有交集、有碰撞、有火花。 面对风云变幻的内外环境,阿里云…

【开发】视频云存储EasyCVR视频汇聚平台AI智能算法定制

安防视频集中存储EasyCVR视频汇聚平台,可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等功能。为了便…

Golang 基础语法问答

使用值为 nil 的 slice、map 会发生什么? 允许对值为 nil 的 slice 添加元素,但是对值为 nil 的 map 添加元素时会造成运行时 panic。 // map错误示例 func main() {var m map[string]intm["one"] 1 // error: panic: assignment to entry …

构建高可用的去中心化微服务集群架构指南

随着云计算、大数据和物联网的快速发展,企业对于可扩展的、高性能的微服务架构的需求也日益增长。传统的集中式架构已经不能满足这些需求,因此出现了去中心化的微服务集群架构。本文将介绍如何构建高可用的去中心化微服务集群架构,以满足企业…

多路复用epoll函数组

epoll函数组 /*创建epoll句柄*/ int epoll_create(int size);//size参数实际上已经被弃用 /*epoll句柄的控制接口*/ int epoll_ctl(int epfd,int op,int fd,struct epoll_event *event); epfd:epoll专用的文件描述符,epoll_create()的返回值 op:表示动作&#x…

美国大模型风向速报(一)为何重视提示工程?LangChain+向量数据库+开源大模型真香...

多家,且独家来自美国的信源同时向“亲爱的数据”表示, 提示工程(Prompt Engineering)在美国大模型领域备受重视。 读者都要聊, 那就干活。 (一)开源真香 现阶段,AI开源极客大展身手&…

认识容器,走进Docker

文章目录 容器技术简介容器的核心技术容器平台技术容器的支持技术 Docker理念Docker安装配置阿里云镜像加速器 容器技术简介 一切在云端,万物皆容器,说到容器,大家都会想到Docker,Docker现在几乎是容器的代名词,什么是Docker&…

故障011:dmap服务缺失libnsl.so修复

故障011:dmap服务缺失libnsl.so修复 1. 问题描述2. 解决方法2.1 初步分析2.2 动手实操2.2.1 模糊搜索大法2.2.2 僵桃代李大法 DM技术交流QQ群:940124259 1. 问题描述 今天遇二期XC环境,达梦DM 7.6的DmAPService备份辅助进程服务无法启动&a…

SpringBoot 响应头添加版本号、打包项目后缀添加版本号和时间

文章目录 响应头添加版本号获取版本号添加响应处理器请求结果 打包项目后缀添加版本号和时间实现打包结果 响应头添加版本号 获取版本号 在 pom.xml 中,在 project.version 下定义版本号 在 application.yml 获取 pom.xml 中 project.version 中的信息 添加响应处…

JetBrains IDE远程开发功能可供GitHub用户使用

JetBrains与GitHub去年已达成合作,提供GitHub Codespaces 与 JetBrains Gateway 之间的集成。 GitHub Codespaces允许用户创建安全、可配置、专属的云端开发环境,此集成意味着您可以通过JetBrains Gateway使用在 GitHub Codespaces 中运行喜欢的IDE进行…

【002】学习笔记之typescript的【任意类型】

任意类型 顶级类型:any类型和 unknown 类型 any类型 声明变量的时候没有指定任意类型默认为any任意类型都可以赋值给any,不需要检查类型。也是他的弊端如果使用any 就失去了TS类型检测的作用 unknown 类型 TypeScript 3.0中引入的 unknown 类型也被认为…

【07 英语语法:句子的种类(陈述句、疑问句、祈使句、感叹句、倒装句、强调句)】

句子的种类和结构 1. 句子的种类:陈述、疑问、祈使、感叹1.1 祈使句1.1.1 祈使句的分类⑴ Do 型 祈使句: 动词原形 / Do动词原形⑵ Be 型祈使句⑶ Let 型 祈使句⑷ No 型 祈使句:禁止、请勿 (no n./v-ing)⑸ 无动词 祈…