前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fuzzable:一款基于静态分析实现的可模糊测试的自动化目标识别工具

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

作者头像
FB客服
发布2023-02-10 17:17:11
9540
发布2023-02-10 17:17:11
举报
文章被收录于专栏:FreeBufFreeBuf

关于Fuzzable

对于需要对软件进行安全评估的漏洞研究人员来说,通常会使用AFL++和libFuzzer这样的强大工具来增强基于覆盖率的模糊测试。这一点非常重要,因为它可以自动执行错误查找过程,并快速发现和利用目标中存在的安全问题。然而,遇到大型复杂的代码库或闭源二进制文件时,研究人员必须花时间手动审查并对它们进行逆向工程分析,以确定目标可以进行模糊测试。

Fuzzable是一款基于静态分析实现的可模糊测试的自动化目标识别工具,该工具基于Python和C/C++开发,可帮助漏洞研究人员识别可用于模糊测试的功能目标。这是通过应用几种基于静态分析的启发式方法来确定软件中的风险行为以及执行这些行为的功能来实现的。然后,研究人员可以利用该框架生成基本的模糊测试增强模板,然后可以使用这些模板来查找漏洞,或者将其集成为连续模糊化管道的一部分,例如谷歌的oss fuzz项目。

除了作为独立工具运行外,Fuzzable还针对Binary Ninja反汇编程序制作了插件部分。

功能介绍

1、支持对代码进行分析(使用Angr、BinaryNinja和tree-sister实现); 2、支持以独立命令行工具或Binary Ninja插件执行静态分析; 3、利用生成的工具组件快速执行模糊测试任务;

工具安装

命令行(独立工具)

如果你安装了Binary Ninja,请确保安装了正确的API:

代码语言:javascript
复制
$ python3 /Applications/Binary\ Ninja.app/Contents/Resources/scripts/install_api.py

(向右滑动,查看更多)

接下来,我们可以使用pip看命令来安装Fuzzable:

代码语言:javascript
复制
$ pip install fuzzable

手动/开发构建

我们使用了poetry来实现依赖管理和项目构建,如需进行手动构建,则需要使用下列命令克隆项目代码以及第三方模块:

代码语言:javascript
复制
$ git clone --recursive https://github.com/ex0dus-0x/fuzzable

(向右滑动,查看更多)

接下来,切换到项目目录中,并使用下列命令完成项目的手动构建:

代码语言:javascript
复制


$ cd fuzzable/



# 不使用poetry

$ pip install .



# 使用poetry

$ poetry install



# 使用poetry 和开发virtualenv环境

$ poetry shell

(向右滑动,查看更多)

现在,我们就可以使用该工具来分析二进制文件或源代码了:

代码语言:javascript
复制


# 分析一个单独的共享对象库代码

$ fuzzable analyze examples/binaries/libbasic.so



# 分析一个单独的C源代码文件

$ fuzzable analyze examples/source/libbasic.c



# 分析一个包含多个C/C++文件和头文件的工作空间

$ fuzzable analyze examples/source/source_bundle/

(向右滑动,查看更多)

Binary Ninja插件

工具使用

静态分析启发式

代码语言:javascript
复制
$ fuzzable analyze <TARGET> --score-weights=0.2,0.2,0.2,0.2,0.2

(向右滑动,查看更多)

分析过滤

代码语言:javascript
复制
$ fuzzable analyze --list-ignored <TARGET>

(向右滑动,查看更多)

报告生成

代码语言:javascript
复制
$ fuzzable analyze --export=report.json <TARGET>

(向右滑动,查看更多)

报告生成样例

许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

Fuzzable:https://github.com/ex0dus-0x/fuzzable

参考资料

https://github.com/google/oss-fuzz

https://binary.ninja/

https://codemuch.tech/2021/06/07/fuzzabble/

https://www.blackhat.com/us-22/arsenal/schedule/index.html#automating-fuzzable-target-discovery-with-static-analysis-26726

https://angr.io/

https://tree-sitter.github.io/tree-sitter/

https://github.com/angr/angr

https://python-poetry.org/

https://scikit-criteria.quatrope.org/en/latest/tutorial/quickstart.html

https://resources.sei.cmu.edu/asset_files/WhitePaper/2010_019_001_53555.pdf

https://github.com/ex0dus-0x/fuzzable/blob/main/templates/linux_source_harness.cpp

https://github.com/ex0dus-0x/fuzzable/blob/main/templates/linux_closed_source_harness.cpp

https://github.com/mirrorer/afl/blob/master/qemu_mode/README.qemu

https://lief-project.github.io/

https://github.com/trailofbits/deepstate

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于Fuzzable
  • 功能介绍
  • 工具安装
    • 命令行(独立工具)
      • (向右滑动,查看更多)
        • 手动/开发构建
          • (向右滑动,查看更多)
            • (向右滑动,查看更多)
              • (向右滑动,查看更多)
                • Binary Ninja插件
                • 工具使用
                  • 静态分析启发式
                    • (向右滑动,查看更多)
                      • 分析过滤
                        • (向右滑动,查看更多)
                          • 报告生成
                            • (向右滑动,查看更多)
                            • 报告生成样例
                            • 许可证协议
                            • 项目地址
                            • 参考资料
                            相关产品与服务
                            命令行工具
                            腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档