欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

模糊测试工具WinAFL使用指南

来源:本站整理 作者:佚名 时间:2019-11-07 TAG: 我要投稿

一、简介
WinAFL 是一款流行的基于 Windows 平台下的半自动二进制文件格式模糊测试工具,属于 AFL 大家族中的一员,早期的 AFL 测试工具多半是基于 Linux,并不支持 Windows,所以 WinAFL 弥补了这一空白,当然现在越来越多的 AFL 以及其他模糊测试工具适用于 Windows 平台。
WinAFL 的原理和其他的模糊测试工具类似,通过对程序输入的数据进行变异处理,观察程序在处理这些变异数据是否会产生 Crash,以此来验证程序是否有 Bug。但是相对于其它模糊测试工具来说则更为智能,因为它会通过进化算法不停的改变程序输入的数据,并且结合程序的覆盖率以进行下一步操作。并且运行的速度越快,效果越明显(天下武功,无坚不破,唯快不破)。

WinAFL 项目地址:https://github.com/ivanfratric/winafl
DynamoRIO 项目地址:https://github.com/DynamoRIO/dynamorio/wiki/Downloads
二、WinAFL 原理及使用(挑了几个重要的)
使用 DynamoRIO 进行二进制插桩
WinAFL 的使用非常简单,首先需要了解的是二进制插桩工具 DynamoRIO,它的功能非常的多,在这里主要用它来分析代码的覆盖率,也就是程序运行时会执行哪些汇编代码块。命令如下所示,-t drcov 表示使用代码覆盖率模块,xmlvalidate.exe 表示需要测试的软件,nn-valid.xml 表示生成的结果文件。
E:\DynameRIO-7.0.0\bin32\drrun.exe -t drcov -- xmlvalidate.exe nn-valid.xml
命令执行结束之后,会在当前目录中产生 nn-valid.xml 文件,之后在 IDA 中打开它即可显示 xmlvalidate.exe 的代码覆盖率,这里需要用到 lighthouse IDA 插件或者是 Qt5 的界面。

如下图所示可以看出被测试软件部分函数的代码覆盖率及块命中次数。

当然也可以显示函数执行的流程,白色区域表示未执行的部分。

使用 winafl-cmin.py 进行案例最小化处理
如下图所示,该命令主要是为对输入的样本文件进行最小化处理,以用来提高 WinAFL 的执行效率。命令如下,–working-dir 表示 winafl 命令文件夹的路径,-D 表示插桩工具 DynamoRIO 的命令文件夹路径(如果测试程序是 32 位的就用 bin32,反之则用 bin64),-i 表示需要筛选的测试用例存放目录,-o 表示将筛选过后的测试用例的存放目录,-coverage_module 表示需要覆盖的模块(如果不需要覆盖其他模块的话就填写为当前模块 xmlvalidate.exe),-target_module 表示被测模块,-target_method 表示被测模块函数的地址(也可以用偏移量 -target_offset 表示),最后就是参数的个数和程序的路径,@@ 引用 -i 参数的中的测试用例。
E:\winafl\python winafl-cmin.py --working-dir E:\winafl\bin32
                                -D E:\DynamoRIO-7.0.0\bin32
                                -t 100000
                                -i E:\xml_fuzz\samples
                                -o E:\minset_xml
                                -coverage_module msxml6.dll
                                -target_module xmlvalidate.exe
                                -target_method fuzzme [-target_offset 0x1000]
                                -nargs 2 -- E:\xml_fuzz\xmlvalidate.exe @@
使用 afl-fuzz.exe 命令执行模糊测试
命令如下,-i 表示输入的测试文件用例,-o 是输出结果的目录,-fuzz_iterations 表示迭代的次数,其他参数和上面的意思是一样的。
E:\winafl\bin32\afl-fuzz.exe -i E:\minset_xml
                             -o E:\xml\results

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载