
Callisto是一个智能的自动二进制漏洞分析工具。其目的是自主反编译提供的二进制文件,并遍历伪代码输出,以查找该伪 c 代码中的潜在安全漏洞。Ghidra的无头反编译器是驱动二进制反编译和分析部分的原因。伪代码分析最初由Semgrep SAST工具执行,然后转移到GPT-3.5-Turbo,以验证Semgrep的发现,以及潜在识别其他漏洞。
此工具的预期用途是协助二进制分析和零日漏洞发现。输出旨在帮助研究人员识别二进制文件中潜在的感兴趣区域或易受攻击的组件,然后可以通过动态测试进行验证和利用。它当然不会捕获所有内容,但是Semgrep对GPT-3.5的双重验证旨在减少误报并允许对程序进行更深入的分析。
对于那些希望仅利用该工具作为快速无头反编译器的人,创建的文件 output.c
将包含从二进制文件中提取的所有伪代码。这可以插入您自己的 SAST 工具或手动分析。
我非常感谢Marco Ivaldi@0xdea他公开发布的自定义Semgrep C规则以及他使用semgrep和反编译器的伪代码输出自动发现漏洞的想法。您可以在此处阅读有关他的研究的更多信息:使用Ghidra和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 Analysis。需要在配置.txt文件中放置一个有效的 OpenAI API 密钥-o
=> 如果要保存输出,请定义输出文件-ai
和-o
是可选参数-all
将通过 OpenAI 分析运行所有功能,无论 Semgrep 的任何发现如何。此标志需要先决条件-ai
标志- 例如
python callisto.py -b vulnProgram.exe -ai -o results.txt
- 例如(通过 AI 分析运行所有功能):
python callisto.py -b vulnProgram.exe -ai -all -o results.txt
程序输出示例:

原文链接:JetP1ane/Callisto: Callisto – An Intelligent Binary Vulnerability Analysis Tool (github.com)