专栏首页FreeBuf在没有源代码的情况下对Linux二进制代码进行模糊测试

在没有源代码的情况下对Linux二进制代码进行模糊测试

AFL配合DynamoRIO,没错,就是drAFL。在drAFL的帮助下,我们就可以在没有源代码的情况下对LInux二进制代码进行模糊测试了。

drAFL

原始版本的AFL支持使用QEMU模式来对待测目标进行黑盒测试,因此在使用drAFL之前,作者强烈建议大家先尝试使用一下原始版本的AFL,如果达不到各位的目标,再来使用drAFL。

工具使用

首先,你需要定义DRRUMPATH值来指向drrun启动工具,并设置LIBCOVPATH来指向libbinafl.so代码覆盖库。除此之外,你还需要设置AFL的fork服务器(AFLNOFORKSRV=1),或者设置“AFLSKIPBIN_CHECK=1”。具体请参考代码构建部分的第五步。

注意:请注意,针对64位代码库,你需要使用64位的DynamoRIO,如果使用的是32位的代码库,你就需要使用32位的DynamoRIO了,否则工具将无法正常运行。你可以使用下列命令来确保项目运行在DynamoRIO下:

drrun -- <path/to/your/app/> <app_args>

代码构建

第一步:将drAFL代码库克隆到本地。

git clone https://github.com/mxmssh/drAFL.git /home/max/drAFLcd/home/max/drAFL

第二步:克隆并构建DynamoRIO。

git clone https://github.com/DynamoRIO/dynamoriomkdir build_drcd build_dr/cmake../dynamorio/make -jcd ..

如果在DynamoRIO的编译环节遇到问题的话,可以参考这篇【文档】。

第三步:构建代码覆盖工具

mkdir buildcd buildcmake ../bin_cov/ -DDynamoRIO_DIR=../build_dr/cmakemake -jcd ..

第四步:构建AFL。

cd afl/makecd ..

第五步:配置环境变量并执行扫描任务。

cd buildmkdir inmkdir outecho "AAAA" > in/seedexport DRRUN_PATH=/home/max/drAFL/build_dr/bin64/drrunexport LIBCOV_PATH=/home/max/drAFL/build/libbinafl.soexport AFL_NO_FORKSRV=1export AFL_SKIP_BIN_CHECK=1../afl/afl-fuzz-m none -i in -o out -- ./afl_test @@

注意:对于afl_test测试样例,可能需要大概25-30秒的执行时间。

项目地址

drAFL:https://github.com/mxmssh/drAFL

*参考来源:mxmssh,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

本文分享自微信公众号 - FreeBuf(freebuf),作者:Alpha_h4ck

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 闲话文件上传漏洞

    文件上传漏洞是web安全中经常利用到的一种漏洞形式。这种类型的攻击从大的类型上来说,是攻击 数据与代码分离原则 的一种攻击。 一些web应用程序中允许上传图片,...

    FB客服
  • Sh00t:一个渗透测试管理工具

    Sh00t是一个高可定制的渗透测试管理工具,它强调让测试人员手动进行安全测试,并让你专注于执行安全测试任务的本身。此外,Sh00t还为我们提供了测试用例的待办事...

    FB客服
  • 新型僵尸网络:Wonder Botnet深入分析

    CSE CybSec Z-Lab恶意软件实验室在调查暗网恶意代码时发现了一个名为Wonder botnet的新僵尸网络,该恶意软件由Downloader和真正的...

    FB客服
  • python基本数据类型(四)-集合与运

    py3study
  • 给XFN链接关系加上“nofollow”选项

    今天无意间查询了一下友情链接,发现了俺的反链有部分被加上了“nofollow”属性,查了下资料: ....它的出现为网站管理员提供了一种方式,即告诉搜索引擎"不...

    张戈
  • 老版本IE下内容为空时td不显示边框的解决办法

    在较低版本的IE浏览器中,td 内容为空时,就不会显示边框,可以通过下面两种方法解决:

    德顺
  • 缓存服务器syns to listen sockets drop导致创建socket失败

    问题描述: 最近遇到了一个syn丢包的情况,当系统磁盘、网络、cpu都无压力的时候,系统莫名其妙出现“sync to listen sockets drop”...

    用户1263954
  • Eclipse安卓使用Activity模板快速新建Activity

    使用android studio的安卓开发者可能发现它和eclipse+ADT大同小异,个人用完android studio之后发现android studio...

    极客人
  • kafka0.8生产者配置参数解析

    codecraft
  • 限流的简单使用及学习

    整个系统间的调用都是采用spring cloud这一套去实现的。我所负责的为业务服务端,专门为web端和pc端提供接口调用。在服务刚上线的一段时间,出现了一次雪...

    一枝花算不算浪漫

扫码关注云+社区

领取腾讯云代金券