首页 > 其他分享 >ProFuzzBench搭建

ProFuzzBench搭建

时间:2023-07-28 12:55:05浏览次数:32  
标签:ProFuzzBench 模糊 results lightftp 参数 csv profuzzbench 搭建

概述

论文:ProFuzzBench - A Benchmark for Stateful Protocol Fuzzing

会议:2021年第30届ACM SIGSOFT软件测试与分析国际研讨会(ISSTA)

项目地址:https://github.com/profuzzbench/profuzzbench

ProFuzzBench是网络协议状态模糊化的基准。它包括一套用于流行协议(如TLS、SSH、SMTP、FTP、SIP)的代表性开源网络服务器,以及自动化实验的工具。

ProFuzzBench提供了三个模糊器来模糊目标的自动化脚本:AFLnwe(AFL的一个网络启用版本,它通过TCP/IP套接字而不是文件发送输入)、AFLNet(一个为有状态网络服务器量身定制的模糊器)和StateAFL(另一个用于有状态网络服务器的模糊器)。

1.设置环境变量

git clone https://github.com/profuzzbench/profuzzbench.git
cd profuzzbench
export PFBENCH=$(pwd)
export PATH=$PATH:$PFBENCH/scripts/execution:$PFBENCH/scripts/analysis

文件结构如下:

2.构建docker镜像

以下命令创建一个标记为lightftp的docker image,image应该具有可用于模糊处理和代码覆盖率收集的所有内容。

cd $PFBENCH
cd subjects/FTP/LightFTP
docker build . -t lightftp

3.运行模糊处理

运行deprizzbench_exec_common.sh脚本开始一个实验。该脚本包含8个参数,如下所示。

第一个参数(DOCIMAGE):docker映像的名称

第二个参数(RUNS):运行次数,每次运行产生一个独立的Docker容器

第三个参数(SAVETO):保存结果的文件夹的路径

第四个参数(FUZZER):FUZZER名称(例如,aflnet)--此名称必须与Docker容器中FUZZER文件夹的名称匹配(例如/home/ubuntu/aflnet

第五个参数(OUTDIR):在docker容器内创建的输出文件夹的名称

第六个参数(OPTIONS):除了在目标特定的run.sh脚本中编写的标准选项之外,模糊处理所需的所有选项

第七个参数(TIMEOUT):模糊处理的时间(秒)

第八个参数(SKIPCOUNT):用于计算一段时间内的覆盖率。例如,SKIPCOUNT=5意味着我们在每5个测试用例之后运行gcovr,因为gcovr需要时间,并且我们不希望在每个测试用例之后都运行它

以下命令运行4个AFLNet实例和4个AFLnwe实例,在60分钟内同时模糊LightFTP。

cd $PFBENCH
mkdir results-lightftp
#AFLNet实例
profuzzbench_exec_common.sh lightftp 4 results-lightftp aflnet out-lightftp-aflnet "-P FTP -D 10000 -q 3 -s 3 -E -K" 3600 5 &
#AFLNwe实例
profuzzbench_exec_common.sh lightftp 4 results-lightftp aflnwe out-lightftp-aflnwe "-D 10000 -K" 3600 5

4.收集运行结果

所有结果(在tar文件中)都应存储在步骤3中创建的文件夹中(results-lightftp),这些tar文件是所有模糊实例生成的输出文件夹的压缩版本。

如果模糊器是基于afl的(例如,AFLNet、AFLnwe),则每个文件夹都应该包含子文件夹,如崩溃、挂起、队列等。

使用deprizzbench_generate_csv.sh脚本收集随时间变化的代码覆盖率结果,并将其保存到results.csv。

脚本的五个参数如下:

第一个参数(PROG):主题程序的名称(例如,lightftp)
第二个参数(RUNS):运行次数
第三个参数(FUZZER):模糊器名称(例如aflnet)
第四个参数(COVFILE):保存结果的CSV格式输出文件
第五个参数(APPEND):追加模式;对于第一个模糊器,将其设置为0,对于后续模糊器,设置为1。

cd $PFBENCH/results-lightftp

profuzzbench_generate_csv.sh lightftp 4 aflnet results.csv 0
profuzzbench_generate_csv.sh lightftp 4 aflnwe results.csv 1

 实例中给出的csv文件使用了唯一的result名称,所以脚本在开始会先删除之前存在的result.csv

results.csv文件有六列,显示时间戳、主题程序、模糊器名称、运行索引、覆盖率类型及其值。

该文件包含线路覆盖率和分支覆盖率随时间变化的信息,每个覆盖率类型都有两个值,分别为百分比(_per)和绝对数(_abs)。

5.分析运行结果

 步骤4中收集的结果(即result.csv)可用于绘图。实例提供了一个示例Python脚本来绘制随时间变化的代码覆盖率。

cd $PFBENCH/results-lightftp

profuzzbench_plot.py -i results.csv -p lightftp -r 4 -c 60 -s 1 -o cov_over_time.png

 ubuntu18.04 默认使用了python2,这里可以调整成为python3

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 20

这个命令将把/usr/bin/python链接到/usr/bin/python3,并把python3优先级设置为20(也就是默认Python版本)

 

标签:ProFuzzBench,模糊,results,lightftp,参数,csv,profuzzbench,搭建
From: https://www.cnblogs.com/elegantcloud/p/17586391.html

相关文章

  • mysql8.0环境的搭建(Windows)
    1.MySQL的卸载因为之前可能安装过其他版本的mysql,所以在安装之前,需要将原先安装的进行卸载。1.1步骤1:停止MySQL服务在卸载之前,先停止MySQL8.0的服务。按键盘上的Ctrl+Alt+Delete组合键,打开任务管理器对话框,可以在服务列表找到MySQL8.0的服务,如果现在正在运行......
  • dubbo-admin管理平台搭建
    一、前言dubbo的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用了,但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入dubbo-admin。通过dubbo-admin可以对消费者和提供者进行管理。在这里呢,首先编译的前提是需要在本机上面安装maven环境二、下载......
  • Jira的搭建
     文章来自:https://www.cnblogs.com/shianliang/p/9015839.html Jira的搭建  一、环境准备jira7.2的运行是依赖java环境的,也就是说需要安装jdk并且要是1.8以上版本,如下:java-version除此之外,我们还需要为jira创建对应的数据库、用户名和密码,如下:mysql-uroot-p'ka......
  • 智能制造之路—从0开始打造一套轻量级MOM平台之基础平台搭建(Linux部署)
    一、前言前面我们选定了Admin.net来搭建我们的MOM快速开发平台,本章主要描述.NET6平台的Linux部署,以及记录搭建过程中坑。本次搭建我们选择某云的轻量应用服务器,系统选择CentOS7.6,数据库使用Mysql。参考配置如下: 二、搭建Linux管理工具系统搭建完毕,我们使用宝塔来管理linux......
  • 通过qemu和docker搭建检查编译环境
    背景在工作中我们经常需要交叉编译一些可执行程序或者动态库,有时要编译的程序过于复杂,如果靠纯的交叉编译,费事又费力,需要解决大量的编译依赖以及报错。解决方案docker+qemu-userqemu-user提供可以运行不同架构的用户态程序的方案,而docker可以帮我们搭建一个运行qemu-user的......
  • OAK-D-LITE相机环境搭建和测试
    1、首先USB规则,之前已测试过echo'SUBSYSTEM=="usb",ATTRS{idVendor}=="03e7",MODE="0666"'|sudotee/etc/udev/rules.d/80-movidius.rulessudoudevadmcontrol--reload-rules&&sudoudevadmtrigger2、然后是depthaicore安装包的......
  • xxl-job docker 搭建&接入
    项目地址:https://github.com/xuxueli/xxl-job1初始化数据库新建表sql语句在项目里/xxl-job/doc/db/tables_xxl_job.sql在目标数据库执行语句建库、建表##XXL-JOBv2.4.1-SNAPSHOT#Copyright(c)2015-present,xuxueli.CREATEdatabaseifNOTEXISTS`xxl_job`......
  • WSL2安装以及go开发环境搭建
    1WSL2安装WSL2相比WSL1来说,稳定了很多,基本能够应付所有的Linux开发工具,比开虚拟机方便了好多!!安装步骤Window10开发环境搭建(1)|详细演示WSL2的安装这个UP主还有WSL2下的其他软件配置相关的。跟着视频做就好了。微软的WSL安装教程微软的教程写的非常详细,我是直接参......
  • DVWA靶场搭建
    1.靶场是什么,靶场的搭建在学习web安全的过程中,靶场是必不可少的,毕竟在计算机界,任何理论知识都不如实操   靶场就是人为提供的带有安全漏洞的服务,每一个学习者都可以在本地快速搭建来实操,回溯漏洞的发生原理以及操作方式。DVWA靶场呢就是一个可以通过浏览器访问的拥有可视化页......
  • 最新基于nonebot的qq机器人搭建
    导读核心资源(参考各项目到各自release下载NoneBot简介|go-cqhttp帮助中心qq登录需要包签名,要自己部署https://github.com/fuqiuluo/unidbg-fetch-qsign环境ubuntu:win10商店直接下个ubuntu做wsl,python:wsl里面安装conda,conda创建虚拟环境使用python最新3.11java......