首页 > 其他分享 >模糊测试面面观 | 模糊测试工具知多少

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

时间:2023-08-17 10:36:35浏览次数:36  
标签:AFL Web 模糊 面面观 开源 测试 测试工具

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

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

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

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

文件格式类模糊测试工具

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

01

AFL

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

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

02

WinAFL

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

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

03

libFuzzer

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

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

网络协议类模糊测试工具

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

01

Peach Fuzzer

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

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

02

Boofuzz

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

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

03

AFLNet

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

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

操作系统类模糊测试工具

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

01

kAFL

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


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

02

syzkaller

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

模糊测试面面观 | 模糊测试工具知多少_网络协议_09

Web服务类模糊测试工具

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

01

WFuzz

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

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

02

WebScarab

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

模糊测试面面观 | 模糊测试工具知多少_网络协议_11

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

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

01

go-fuzz

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

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

02

Kelinci

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

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

03

fuzzilli

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

模糊测试面面观 | 模糊测试工具知多少_网络协议_14


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

标签:AFL,Web,模糊,面面观,开源,测试,测试工具
From: https://blog.51cto.com/u_15891519/7118734

相关文章

  • MyBatis 模糊查询 like
    方法一Dao.java//模糊查询List<User>getUserLike(Stringstr);mapper <selectid="getUserLike"resultType="com.mao.pojo.User"parameterType="String"> select*fromtest.userwherenamelike"%"#{......
  • 有没有好用的性能测试工具推荐
    在当前软件测试行业,熟练掌握性能测试已经是测试工程师们面试的敲门砖了,当然还有很多测试朋友们每天的工作更多的是点点点,性能方面可能也只是做过简单的并发测试,对于编写脚本,搭建环境方面也比较陌生。今天这篇文章就给大家梳理一下如何去做性能测试,和怎么熟练掌握性能测试。文章结构......
  • 有没有好用的性能测试工具推荐
    在当前软件测试行业,熟练掌握性能测试已经是测试工程师们面试的敲门砖了,当然还有很多测试朋友们每天的工作更多的是点点点,性能方面可能也只是做过简单的并发测试,对于编写脚本,搭建环境方面也比较陌生。今天这篇文章就给大家梳理一下如何去做性能测试,和怎么熟练掌握性能测试。文章结......
  • 模型超参数基本都没改,测试时加载模型报模型结构不匹配,设置模糊加载模型即:model.load_s
    原因多卡训练;单卡模糊加载进行测试。训练时,通过torch.nn.DataParallel(self.model)进行多卡并行训练;测试时,用单卡模糊加载保存的模型权重,很多模型参数都没有加载成功,自然会导致测试效果很差。解决方法测试时,使用多卡加载模型时,删掉'module.'前缀;或者用单卡加载模型进行测试。......
  • 【Unity3D】运动模糊特效
    1运动模糊原理​开启混合(Blend)后,通过Alpha通道控制当前屏幕纹理与历史屏幕纹理进行混合,当有物体运动时,就会将当前位置的物体影像与历史位置的物体影像进行混合,从而实现运动模糊效果,即模糊拖尾效果。主要代码如下:Pass{BlendSrcAlphaOneMinusSrcAlphaCGPROGR......
  • Linux下系统性能测试工具
    1.测试cpu浮点性能,计算圆周率指定位数时间,用系统自带命令即可,只是粗略测试Linux系统中,bc命令是一个任意精度的计算器,如果用它计算圆周率,我们可以大概估算出CPU的浮点运算性能:timeecho"scale=5000;4*a(1)"|bc-l-q其中:time 用来计算执行时间;scale=5000,表......
  • 【Unity3D】高斯模糊特效
    1高斯模糊原理​边缘检测特效中使用了卷积运算进行了边缘检测,本文实现的高斯模糊特效同样使用了卷积运算,关于卷积核和卷积运算的概念,读者可以参考边缘检测特效。​本文完整资源见→Unity3D高斯模糊特效。​我们将用于模糊处理的卷积核称为模糊算子,它一般满足以下......
  • 不务正业的前端写了一个自动化测试工具
    各位朋友大家好,大家应该都是被这么奇葩的标题吸引点击进来的吧,既然来了,那就跟我一起读下去吧,保证你这几分钟没有浪费(即使浪费了也能给你不一样的想法),废话不多说,大家坐稳,系好安全带,开始发车喽!!!......
  • redis 2.8--7.0 常用数据类型及性能测试工具
    redis2.8--7.01.redis-cli2.redisincrpageviewredisincrpageviewredisgetpageview3.Redishash是一个string类型的field(字段)和value(值)的映射表,hash特别适合用于存储对象。Redis中每个hash可以存储232-1键值对(40多亿)hash:hmsetkeyfiled1valuefil......
  • 输入框 input的 支持 clearable 清空 select 下拉列表框的 支持 clearable 清空 fil
    开发的前端 中select 下拉列表框 必须支持1、模糊查询2、清空按钮......