前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在没有源代码的情况下对Linux二进制代码进行模糊测试

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

作者头像
FB客服
发布2019-05-31 20:51:27
1.4K0
发布2019-05-31 20:51:27
举报
文章被收录于专栏:FreeBufFreeBuf

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下:

代码语言:javascript
复制
drrun -- <path/to/your/app/> <app_args>

代码构建

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

代码语言:javascript
复制
git clone https://github.com/mxmssh/drAFL.git /home/max/drAFLcd/home/max/drAFL

第二步:克隆并构建DynamoRIO。

代码语言:javascript
复制
git clone https://github.com/DynamoRIO/dynamoriomkdir build_drcd build_dr/cmake../dynamorio/make -jcd ..

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

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

代码语言:javascript
复制
mkdir buildcd buildcmake ../bin_cov/ -DDynamoRIO_DIR=../build_dr/cmakemake -jcd ..

第四步:构建AFL。

代码语言:javascript
复制
cd afl/makecd ..

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

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • drAFL
  • 工具使用
  • 代码构建
  • 项目地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档