前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pe-afl:一款支持对Windows二进制程序的afl fuzz工具

Pe-afl:一款支持对Windows二进制程序的afl fuzz工具

作者头像
C4rpeDime
发布2020-01-20 14:19:33
1.2K0
发布2020-01-20 14:19:33
举报
文章被收录于专栏:黑白安全黑白安全

pe-afl是一款基于了PE二进制和WinAFL上的静态二进制检测的工具,可以用于fuzzWindows应用程序和内核模式驱动程序,而无需源代码或完整符号或硬件支持。

我用这个工具发现了office,gdiplus,jet,lnk,clfs,cng上的bug。

PE上的仪表部分可以被多种用途重用:

1. 如果你觉得测试速度很慢,你可以在ubuntu上运行这个脚本; 2. 该工具基于microsoft二进制文件和visual studio编译的二进制文件,因此在非microsoft编译器上可能会出现故障。

操作方法

在calc.exe入口点测量2 NOP的例子:

代码语言:javascript
复制
ida.exe demo\calc.exe
# 如果pdb可用,则使用pdb加载更可靠

File->script file->ida_dump.py

python instrument.py -i"{0x1012d6c:'9090'}" demo\calc.exe demo\calc.exe.dump.txt
# 0x1012d6c is entry point address, you can instrument from command-line or from __main__ in instrument.py

如何fuzz

您必须根据目标实现包装器,并添加你想要的东西,例如page heap等。

JetDB用于fuzz测试

代码语言:javascript
复制
ida.exe demo\msjet40.dll

File->script file->ida_dump.py

python pe-afl.py -m demo\msjet40.dll demo\msjet40.dll.dump.txt
# msjet40是多线程的,所以使用-m参数

在win7上测试JetDB

代码语言:javascript
复制
copy /Y msjet40.instrumented.dll C:\Windows\System32\msjet40.dll

bin\afl-showmap.exe -o NUL -p msjet40.dll -- bin\test_mdb.exe demo\mdb\normal.mdb
# 确保能够捕获

bin\AFL.exe -i demo\mdb -o out -t 5000 -m none -p msjet40.dll -- bin\test_mdb.exe @@

模糊测试CLFS

代码语言:javascript
复制
ida.exe demo\clfs.sys
File->script file->ida_dump.py

python pe-afl.py demo\clfs.sys demo\clfs.sys.dump.txt

在win10上的模糊测试CLFS

代码语言:javascript
复制
install_helper.bat
disable_dse.bat
copy /Y clfs.instrumented.sys C:\Windows\System32\drivers\clfs.sys
# reboot if necessary
    
bin\afl-showmap.exe -o NUL -p clfs.sys -- bin\test_clfs.exe demo\blf\normal.blf
# make sure that capture is OK
    
bin\AFL.exe -i demo\blf -o out -t 5000 -m none -p clfs.sys -- bin\test_clfs.exe @@

如何追踪

示例记录驱动程序执行并导入lighthouse

代码语言:javascript
复制
ida.exe demo\clfs.sys
File->script file->ida_dump.py

python pe-afl.py -cb demo\clfs.sys demo\clfs.sys.dump.txt
copy /Y clfs.instrumented.sys C:\Windows\System32\drivers\clfs.sys
# reboot if necessary

bin\afl-showmap.exe -o NUL -p clfs.sys -d -- bin\test_clfs.exe demo\blf\normal.blf
# output is trace.txt

python lighthouse_trace.py demo\clfs.sys demo\clfs.sys.mapping.txt trace.txt > trace2.txt

# install lighthouse
xcopy /y /e lighthouse [IDA folder]\plugins\

ida.exe demo\clfs.sys
File->Load File->Code coverage file->trace2.txt

参考来源:github

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-105,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 操作方法
  • 如何fuzz
    • JetDB用于fuzz测试
      • 在win7上测试JetDB
        • 模糊测试CLFS
          • 在win10上的模糊测试CLFS
          • 如何追踪
            • 示例记录驱动程序执行并导入lighthouse
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档