Fuzzable:基于静态分析实现的可模糊测试的自动化目标识别工具

发表于:2023-1-31 09:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Alpha_h4ck    来源:FreeBuf

  关于Fuzzable
  对于需要对软件进行安全评估的漏洞研究人员来说,通常会使用AFL++和libFuzzer这样的强大工具来增强基于覆盖率的模糊测试。这一点非常重要,因为它可以自动执行错误查找过程,并快速发现和利用目标中存在的安全问题。然而,遇到大型复杂的代码库或闭源二进制文件时,研究人员必须花时间手动审查并对它们进行逆向工程分析,以确定目标可以进行模糊测试。
  Fuzzable是一款基于静态分析实现的可模糊测试的自动化目标识别工具,该工具基于Python和C/C++开发,可帮助漏洞研究人员识别可用于模糊测试的功能目标。这是通过应用几种基于静态分析的启发式方法来确定软件中的风险行为以及执行这些行为的功能来实现的。然后,研究人员可以利用该框架生成基本的模糊测试增强模板,然后可以使用这些模板来查找漏洞,或者将其集成为连续模糊化管道的一部分,例如谷歌的oss fuzz项目。
  除了作为独立工具运行外,Fuzzable还针对Binary Ninja反汇编程序制作了插件部分。
  功能介绍
  1、支持对代码进行分析(使用Angr、BinaryNinja和tree-sister实现);
  2、支持以独立命令行工具或Binary Ninja插件执行静态分析;
  3、利用生成的工具组件快速执行模糊测试任务;
  工具安装
  命令行(独立工具)
  如果你安装了Binary Ninja,请确保安装了正确的API:
  $ python3 /Applications/Binary\ Ninja.app/Contents/Resources/scripts/install_api.py
  接下来,我们可以使用pip看命令来安装Fuzzable:
  $ pip install fuzzable
  手动/开发构建
  我们使用了poetry来实现依赖管理和项目构建,如需进行手动构建,则需要使用下列命令克隆项目代码以及第三方模块:
  $ git clone --recursive https://github.com/ex0dus-0x/fuzzable
  接下来,切换到项目目录中,并使用下列命令完成项目的手动构建:
  $ cd fuzzable/
   
  # 不使用poetry
  $ pip install .
   
  # 使用poetry
  $ poetry install
   
  # 使用poetry 和开发virtualenv环境
  $ poetry shell
  现在,我们就可以使用该工具来分析二进制文件或源代码了:
  # 分析一个单独的共享对象库代码
  $ fuzzable analyze examples/binaries/libbasic.so
   
  # 分析一个单独的C源代码文件
  $ fuzzable analyze examples/source/libbasic.c
   
  # 分析一个包含多个C/C++文件和头文件的工作空间
  $ fuzzable analyze examples/source/source_bundle/
  Binary Ninja插件
  工具使用
  静态分析启发式
  $ fuzzable analyze <TARGET> --score-weights=0.2,0.2,0.2,0.2,0.2
  分析过滤
  $ fuzzable analyze --list-ignored <TARGET>
  报告生成
  $ fuzzable analyze --export=report.json <TARGET>
  报告生成样例
  许可证协议
  本项目的开发与发布遵循MIT开源许可证协议。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号