Callisto - 一款智能二进制漏洞分析工具

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/JetP1ane/Callisto

小编推荐

Callisto是一款智能自动二进制漏洞分析工具,它的目的是自动反汇编提供的二进制并遍历伪代码输出,寻找潜在的安全漏洞。它的关键技术包括Ghidra的无头反汇编器、Semgrep的SAST工具和OpenAI GPT-3.5-Turbo。该工具的预期目的是协助二进制分析和零日漏洞发现,输出有助于帮助研究人员识别二进制中潜在的关注区域或易受攻击的组件,以进行动态测试以验证和利用。

相关技术点

  • Ghidra无头反汇编器
  • Semgrep SAST工具
  • OpenAI GPT-3.5-Turbo
  • 二进制分析
  • 零日漏洞发现

项目用途

用于自动分析二进制文件中的漏洞,以及自动化地查找潜在的安全漏洞。它可以在伪代码输出中寻找潜在的安全漏洞,使用Semgrep SAST工具和OpenAI GPT-3.5-Turbo进行二次验证,以减少误报率并允许对程序进行更深入的分析。如果只是想使用该工具作为一个快速的无头反汇编器,那么输出的output.c文件将包含从二进制文件中提取的所有伪代码,这可以用于自己的SAST工具或手动分析。

Callisto

一个智能自动化的二进制漏洞分析工具

演示:

dbe35891ed113553

Callisto 是一个智能自动化的二进制漏洞分析工具。它的目的是自主反汇编所提供的二进制文件,并遍历伪代码输出,寻找该伪 C 代码中的潜在安全漏洞。Ghidra 的无头反汇编器驱动二进制反汇编和分析部分。伪代码分析最初由 Semgrep SAST 工具执行,然后转移到 GPT-3.5-Turbo 进行 Semgrep 发现的验证,以及潜在漏洞的识别。

该工具的预期用途是帮助二进制分析和零日漏洞发现。输出旨在帮助研究人员识别二进制文件中潜在的感兴趣或易受攻击的组件,这些可以通过动态测试进行验证和利用。它当然不能捕捉所有漏洞,但 Semgrep 到 GPT-3.5 的双重验证旨在减少误报并允许对程序进行更深入的分析。

对于那些希望将该工具仅用作快速无头反汇编器的人,output.c 文件将包含从二进制文件中提取的所有伪代码。这可以插入您自己的 SAST 工具或手动分析。

我要向 Marco Ivaldi @0xdea 表示极大的感谢,他公开发布了自定义的 Semgrep C 规则以及他通过使用 Semgrep 和反汇编器的伪代码输出自动化漏洞发现的想法。您可以在此处阅读有关他的研究的更多信息:Automating binary vulnerability discovery with Ghidra and Semgrep

要求:

  • 如果您想使用 GPT-3.5-Turbo 功能,则必须在 OpenAI 上创建 API 令牌并保存到此文件夹中的 config.txt 文件中
  • Ghidra
  • Semgrep - pip install semgrep
  • requirements.txt - pip install -r requirements.txt
  • 确保在 config.txt 文件中设置正确的 Ghidra 目录路径

运行: python callisto.py -b <path_to_binary> -ai -o <path_to_output_file>

  • -ai => 启用 OpenAI GPT-3.5-Turbo 分析。需要在 config.txt 文件中放置有效的 OpenAI API 密钥
  • -o => 定义输出文件,如果要保存输出
  • -ai-o 是可选参数
  • 例如 python callisto.py -b vulnProgram.exe -ai -o results.txt

程序输出示例:

ad1a1b7183113530

标签:工具分享, 逆向技巧, 二进制安全