当前位置:   article > 正文

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

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

关于EFuzz

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

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

功能介绍

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

1、网络服务器/客户端;

2、图形化用户接口(GUI)应用程序;

3、编辑器;

4、编译器;

5、数据库;

6、其他任何Linux用户模式软件;

7、...

工具运行机制

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

工具下载

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

git clone https://github.com/GJDuck/RRFuzz.git

代码构建

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

$ cd RRFuzz

$ ./build.sh

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

工具使用命令

记录环境数据:

$ ./EFuzz record -- vim hello.txt

重放:

$ ./EFuzz replay

模糊测试:

$ ./EFuzz fuzz

复现崩溃:

$ ./EFuzz replay out/crash/SIGSEGV_XXXX_mYYYYY.patch

调试崩溃:

$ ./EFuzz replay out/crash/SIGSEGV_XXXX_mYYYYY.patch -d

工具使用样例

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

$ ./EFuzz record gnome-calculator

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

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

$ ./EFuzz fuzz

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

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

$ ./EFuzz replay out/crash/SIGSEGV_XXXX_m0YYYY.patch

工具运行演示

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

许可证协议

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

项目地址

EFuzz:【GitHub传送门

参考资料

https://github.com/GJDuck/e9patch

https://arxiv.org/pdf/1705.05937

https://arxiv.org/abs/2404.13951

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/646860
推荐阅读
相关标签
  

闽ICP备14008679号