关于AFL fuzz

AFL fuzz是一个模糊测试工具,它封装了一个GCC/CLang编译器,用于对被测代码重新编译的过程中进行插桩。插桩完毕后,AFL fuzz就可以给其编译过的代码输入不同的参数参数,跟踪被测代码的执行路径,并判定对输入的变异能否触发新的已知或未知执行路径。

某些情况下,你可能不想重新编译被测代码,或者根本没有被测程序的源代码,因此无法用编译的方式插桩。针对这种情况,AFL fuzz提供了QEMU模式,QEMU即“user emulation”的缩写,相当于是黑盒测试,主要用于压力测试(被测系统性能将下降2~5倍,但相比如DynamoRIO、PIN这些工具,QEMU的性能还算不算了)。

安装

AFL fuzz的安装非常简单,只需要去官网下载最新版本的源代码,解压缩后依次执行下面的指令:

make

sudo make install

若需要使用QEMU模式,参见下面的步骤:

1、使用./build_qemu_support.sh 脚本进行构建,其会自动下载、配置并编译QEMU的二进制代码,此过程比较耗时,且这一过程中需要解决一些依赖包的问题(必须的依赖包:libtool、glib2-devel)。

2、编译完成后,在afl-fuzz的启动参数中加入“-Q”即可启用QEMU模式。

注意:

1、QEMU模式需要较大内存空间,建议的最低配置为200M,负责项目则需要更多。当在afl-fuzz的启动参数中指定的-Q参数时,afl-fuzz会自动设置-m参数,默认值为200M。

2、afl-fuzz适用于linux系统,且不追踪共享库,即:

2-1、对于想要分析的库必须以静态方式链接到可执行二进制文件;

2-2、对于C的标准库及其他一些比较耗费资源而又不必要测试的库则必须以动态方式链接,否则afl fuzz是没有办法不测这些内容的。

示例

已对binutils的模糊测试为例,说明如何使用afl fuzz。

首先,需要下载binutils的源码并解压,进入加压后的文件夹,重写CC编译环境变量的值(如果是C++程序,且用g++而不是gcc进行编译,则修改CXX),修改后即可运行configure脚本,然后编译。

cd ~/binutils-2.25

CC=afl-gcc ./configure

make

注:如果用clang,而不是gcc,则将CC改为afl-clang。

编译完成后,要修改一下配置,使系统将coredump输出到文件,而不是上报给系统的处理程序:

# echo core > /proc/sys/kernel/core_pattern

建一个input文件夹作为afl fuzz的输入,afl fuzz将在这个输入的基础上进行变异,在建立一个out文件夹,作为afl fuzz的输出,afl fuzz会将崩溃、挂起等问题记录到输出文件中:

cd ~/binutils-2.25

mkdir afl_in afl_out

cp /bin/ps afl_in/

接下来,就可以使用afl fuzz进行模糊测试了:

cd ~/binutils-2.25

afl-fuzz -i afl_in -o afl_out ./binutils/readelf -a @@

afl fuzz启动后,我们将看到如下界面:

AFL Fuzz安装及完成一次简单的模糊测试的更多相关文章

  1. Mahout 0.10.1安装(Hadoop2.6.0)及Kmeans测试

    1.版本和安装路径 Ubuntu 14.04 Mahout_Home=/opt/mahout-0.10.1 Hadoop_Home=/usr/local/hadoop Mavent_Home=/opt ...

  2. Phoenix 安装完的几个简单使用

    Phoenix 安装完之后的一些简单使用: 本屌丝的运行环境是3节点集群,先启动hadoop,每个节点分别启动zookeeper,启动hbase(具体怎么启动这里就不多说了) 进入 phoenix的b ...

  3. 模糊测试(fuzz testing)介绍(一)

    模糊测试(fuzz testing)是一类安全性测试的方法.说起安全性测试,大部分人头脑中浮现出的可能是一个标准的“黑客”场景:某个不修边幅.脸色苍白的年轻人,坐在黑暗的房间中,正在熟练地使用各种工具 ...

  4. 模糊测试(Fuzz testing)

    模糊测试(fuzz testing)是一种安全测试方法,他介于完全的手工测试和完全的自动化测试之间.为什么是介于那两者之间?首先完全的手工测试即是渗透测试,测试人员可以模拟黑客恶意进入系统.查找漏洞, ...

  5. Robot Framework 使用1-环境配置及简单网站兼容性测试(转)

    0.Robot Framework 简介 Robot Framework 是一个通用的自动化测试框架,主要用于“验收测试”和“验收测试驱动开发(ATDD)” (会其它文章中会详细介绍ATDD).它使用 ...

  6. 云优化的概念、Entity Framework 7.0、简单吞吐量压力测试

    云优化的概念.Entity Framework 7.0.简单吞吐量压力测试 继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之 ...

  7. Robot Framework 教程 (1) - 环境配置及简单网站兼容性测试

    0.Robot Framework 简介 Robot Framework 是一个通用的自动化测试框架,主要用于“验收测试”和“验收测试驱动开发(ATDD)” (会其它文章中会详细介绍ATDD).它使用 ...

  8. delphi 三层架构简单例子(经测试成功)

    delphi 三层架构简单例子(经测试成功) 转载 2013年12月19日 09:48:57 1100 所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库 在数据访问时,使得客户端必须通过服 ...

  9. 简单快捷地测试 JPush API

    随着 JPush API v3版本的推出,加上之前开放的 Report API,JPush API 逐渐切换为比较好的符合 REST API 的规范,从而也很容易地使用一般的 HTTP/REST 工具 ...

随机推荐

  1. C++ Primer第五版(中文带书签)

    本想发github的(链接更稳定),但是大小超出限制了. 本文件为扫描件,还是在我找了大半天之后的结果.能找到的免费的貌似都是扫描件,在看了一百多页之后(我不喜欢文字不能选中的感觉),我果断买了纸质书 ...

  2. SSM整合学习 二

    二:与Spring MVC整合 一:添加Spring MVC Framework 右键项目名称,点击Add Framework Support 选择Spring-Spring MVC框架 选择Down ...

  3. .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?

    原文:.NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用? 都知道可以在任务管理器中查看进程的 CPU 和内存占用,那么如何通过 .NET 编写代码的方式来获取到 ...

  4. Golang_小程序学golang

    1 前置条件 Golang基本情况自行baidu/google 1.1 环境与工具 IDE:liteide (windows ).mingw-w64 (gcc) DB:SQL Server 2008 ...

  5. C# vb .net实现胶片效果滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的胶片效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...

  6. Tomcat6项目移到Tomcat7 提示 404 解决方案

    一个项目在Tomcat6可以运行和正常访问,但是一部署到Tomcat7就提示404错误.那么可以通过以下方法解决: 找到项目下面的   WEB-INF  文件夹   用记事本打开  WEB.XML 找 ...

  7. Java自学-Scanner类

    使用Scanner读取数据 System.out.println("") 用于向控制台输出数据. 我们还需要从控制台输入数据,所以需要用到Scanner类. 步骤 1 : 使用Sc ...

  8. Windows查看端口使用状况(转)

    转:https://www.cnblogs.com/lixuwu/p/5898354.html 阅读目录 1 查看windows所有端口进程 2 查询指定端口 使用端口是我们在进行远程或者打印机等都会 ...

  9. [LeetCode] 114. 二叉树展开为链表 ☆☆☆(深度遍历)

    二叉树展开为链表(很详细) 描述 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 解析 变形的 ...

  10. mybatis添加sql打印功能

    添加配置文件: mybatis-config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOC ...