前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EFuzz:基于程序环境的通用模糊测试工具

EFuzz:基于程序环境的通用模糊测试工具

作者头像
FB客服
发布2024-05-28 08:58:39
1240
发布2024-05-28 08:58:39
举报
文章被收录于专栏:FreeBufFreeBuf
关于EFuzz

EFuzz是一款功能强大的模糊测试工具,该工具支持基于程序运行环境来执行模糊测试,广大安全研究人员可以使用该工具对几乎任何程序组件执行安全模糊测试。

该工具在运行之后,会将所有的环境交互信息(包括用户输入数据),并将其存储到一个文件中,然后对目标应用程序执行模糊测试。在这个过程中,EFuzz会不断对原始用例进行变异,并尝试触发程序崩溃。

功能介绍

当前版本的EFuzz支持对任意组件执行模糊测试,其中包括但不限于:

1、网络服务器/客户端; 2、图形化用户接口(GUI)应用程序; 3、编辑器; 4、编译器; 5、数据库; 6、其他任何Linux用户模式软件; 7、...

工具运行机制

与其他模糊测试工具的不同之处在于,EFuzz会对目标与其环境的整个交互进行模糊测试,其中包括所有的文件(配置、缓存、资源、字体等)、套接字(会话管理器、命名服务等)、用户窗口交互、设备和数据流等。也就是说,EFuzz的模糊测试目标是整个环境本身,我们将其称之为基于程序环境的模糊测试。该工具执行架构如下图所示:

工具下载

广大研究人员可以直接使用下列命令将该项目地址克隆至本地:

代码语言:javascript
复制
git clone https://github.com/GJDuck/RRFuzz.git

代码构建

项目克隆完成后,切换到项目目录中,使用工具build.sh脚本完成代码构建:

代码语言:javascript
复制
$ cd RRFuzz

$ ./build.sh

注意,上述命令仅在Ubuntu系统中进行过测试。

工具使用命令

记录环境数据:

代码语言:javascript
复制
$ ./EFuzz record -- vim hello.txt

重放:

代码语言:javascript
复制
$ ./EFuzz replay

模糊测试:

代码语言:javascript
复制
$ ./EFuzz fuzz

复现崩溃:

代码语言:javascript
复制
$ ./EFuzz replay out/crash/SIGSEGV_XXXX_mYYYYY.patch

调试崩溃:

代码语言:javascript
复制
$ ./EFuzz replay out/crash/SIGSEGV_XXXX_mYYYYY.patch -d

工具使用样例

在第一阶段,我们可以使用下列命令记录gnome-calculator应用程序的所有环境信息:

代码语言:javascript
复制
$ ./EFuzz record gnome-calculator

上述命令会创建一个out/子目录,所有收集到的数据会记录在out/RECORD.pcap.gz文件中。

在第二阶段,我们就可以使用下列命令来对gnome-calculator应用程序执行模糊测试了:

代码语言:javascript
复制
$ ./EFuzz fuzz

EFuzz会使用第一阶段记录下的数据作为初始种子,并重复执行目标应用程序。在此过程中,EFuzz还会对初始种子不断地进行编译,以尝试触发新的程序行为或程序崩溃。

发现的程序奔溃信息会存储到out/crash/子目录中,下列命令可以复现崩溃:

代码语言:javascript
复制
$ ./EFuzz replay out/crash/SIGSEGV_XXXX_m0YYYY.patch

工具运行演示

在下面的例子中,演示了如何使用EFuzz对一款GUI应用程序执行模糊测试:

许可证协议

本项目的开发与发布遵循GPL-3.0开源许可协议。

项目地址

EFuzz:

https://github.com/GJDuck/RRFuzz

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档