freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

在没有源代码的情况下对Linux二进制代码进行模糊测试
2019-05-27 13:00:20

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

drAFL

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

工具使用

首先,你需要定义DRRUM_PATH值来指向drrun启动工具,并设置LIBCOV_PATH来指向libbinafl.so代码覆盖库。除此之外,你还需要设置AFL的fork服务器(AFL_NO_FORKSRV=1),或者设置“AFL_SKIP_BIN_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/drAFL

cd/home/max/drAFL

第二步:克隆并构建DynamoRIO。

git clone https://github.com/DynamoRIO/dynamorio

mkdir build_dr

cd build_dr/

cmake../dynamorio/

make -j

cd ..

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

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

mkdir build

cd build

cmake ../bin_cov/ -DDynamoRIO_DIR=../build_dr/cmake

make -j

cd ..

第四步:构建AFL。

cd afl/

make

cd ..

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

cd build

mkdir in

mkdir out

echo "AAAA" > in/seed

export DRRUN_PATH=/home/max/drAFL/build_dr/bin64/drrun

export LIBCOV_PATH=/home/max/drAFL/build/libbinafl.so

export AFL_NO_FORKSRV=1

export AFL_SKIP_BIN_CHECK=1

../afl/afl-fuzz-m none -i in -o out -- ./afl_test @@

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

项目地址

drAFL:【GitHub传送门

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

# linux # 模糊测试
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者