51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2696|回复: 2
打印 上一主题 下一主题

使用Afl-fuzz (American Fuzzy Lop) 进行fuzzing测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-11-21 18:04:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 goscam 于 2016-11-22 11:15 编辑

1. 具有导向性的模糊测试

Fuzzing技术被证明是当前鉴别软件安全问题方面最强大测试技术。当前大多数远程代码执行和特权提升等比较严重的漏洞都是使用Fuzzing技术挖掘的。然而Fuzzing技术仍然存在着覆盖率低的缺陷。而许多的代码漏洞需要更大的路径覆盖率才能触发,而不是通过纯粹的随机尝试。

为了解决这一问题,已经提出了不少通过提供被测试代码更多的信息去引导和增强测试技术的方法。如简单的语义库蒸馏(corpus distillation),流分析(concolic execution),到纯粹的符号执行(symbolic execution)和静态分析等。

第一种方式(corpus distillation)能很好地工作,但严重依赖于大量的、高质量的合法输入数据的语料库(corpus)。正因为如此,代码覆盖率也只是衡量程序执行状态的一个简单化的度量,这种方式并不适合后续引导fuzzing测试的。

其余的技术(符号执行,concolic执行)一直都被认为是极有前景的。但仍然被可靠性问题和程序执行环境的复杂性所束缚。大部分高价值的程序都有非常复杂的内部状态和执行路径,在这一方面符号执行和concolic技术往往会显得不够健壮(如路径爆炸问题),所以仍然稍逊于传统的fuzzing技术。

AFL号称是当前最高级的Fuzzing测试工具之一。由lcamtuf所开发。通过对源码进行重新编译时进行插桩(简称编译时插桩)的方式自动产生测试用例来探索二进制程序内部新的执行路径。与其他基于插桩技术的fuzzers相比,afl-fuzz具有较低的性能消耗,有各种高效的fuzzing策略和tricks最小化技巧, 不需要先行复杂的配置,能无缝处理复杂的现实中的程序。当然AFL也支持直接对没有源码的二进制程序进行测试,但需要QEMU的支持。这在本文后面会做详细介绍。

2. 安装

从官网http://lcamtuf.coredump.cx/afl/下载最新版的源码(latest version),解压后进入所在目录。执行以下命令进行编译和安装:

make
sudo make install
3. 对测试集进行fuzzing测试

在对测试集进行编译的时候把GCC编译器替换成afl-gcc,  

在执行的过程中会遇到一些错误,但都给出了提示,如:

echo core > /proc/sys/kernel/core_pattern
4. 对binutils进行fuzzing测试

GNU Binary Utilities或binutils是一整套的编程语言工具程序,用来处理许多格式的目标文件。下载之后解压,然后按一下步骤编译:

cd  ~/binutils-2.25**
CC=afl-gcc ./configure
make
在binutils-2.25目录下新建afl_in 用于存放初始输入文件,新建afl_out文件夹用于保存fuzzing测试结果。

cd ~/binutils-2.25
mkdir afl_in afl_out
cp /bin/ps afl_in/
开始对reeelf程序进行测试

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

(没错,跑了两天也没跑出个CRASH=_=)

5. 参考资料

http://lcamtuf.coredump.cx/afl/
http://www.evilsocket.net/2015/0 ... N1BXb.ncLj9Cic.dpbs


评分

参与人数 1测试积点 +10 收起 理由
lsekfe + 10 积极分享

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:27
  • 签到天数: 2816 天

    连续签到: 4 天

    [LV.Master]测试大本营

    2#
    发表于 2016-11-29 20:04:33 | 只看该作者
    安全性测试,学习吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2017-2-26 18:10:54 | 只看该作者
    总结点用AFL测试的测试流程啊,包括编译时遇到的错误和一些注意事项,这篇文章被转载多少次了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 07:31 , Processed in 0.071956 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表