CERT Kaiju 是 Ghidra 的二进制分析工具集合。
这是 CERT Pharos 二进制分析框架的一些功能的 Ghidra/Java 实现,特别是函数哈希和恶意软件分析工具,但预计随着时间的推移会增加新的工具和功能。
由于这是一项新的工作,因此该实现尚不具备与基于 ROSE 的原始 C++ 实现完全等同的功能;然而,转向 Java 和 Ghidra 实际上启用了原始框架中不可用的一些新功能,特别是改进了对非 x86 架构的处理。由于正在对框架和工具进行一些重大的重新架构,并且转向 Java 和 Ghidra 实现了与 C++ 实现不同的功能,因此决定使用新的品牌,以便在讨论不同的工具和功能。
我们在不久的将来的目的是并行维护原始 Pharos 框架和 Kaiju,因为两者都可以提供独特的特性和功能。
注意:作为原型,在评估此插件创建的函数哈希时可能会出现许多问题。例如,与 Pharos 实现不同,Kaiju 的函数散列模块将为非常小的函数创建散列(例如,具有单个指令(如 RET)的函数会导致更多意外冲突)。因此,该插件和 Pharos fn2hash 之间的分析结果可能有所不同。
可以使用预构建的 Kaiju 包。只需下载与您的 Ghidra 版本相对应的 ZIP 文件并按照以下说明进行安装即可。建议通过 Ghidra 的图形界面安装,但也可以手动解压到相应目录进行安装。
CERT Kaiju 需要以下运行时依赖项:
Z3 作为预构建包的一部分进行预编译,或者您可以自己构建 Z3 或使用 Linux 发行版的包。
启动 Ghidra,然后从打开的窗口中选择菜单: File > Install Extension
。单击扩展窗口顶部的加号,在文件浏览器中导航并选择 .zip 文件,然后单击“确定”。将安装扩展,并在窗口中扩展名称旁边标记一个复选框,让您知道它已安装并准备就绪。
该界面将要求您重新启动 Ghidra 以开始使用该扩展。只需重新启动,即可以交互方式或在脚本中使用 Kaiju 的额外功能。
某些功能可能需要启用 Kaiju 插件。为此,请打开代码浏览器,然后导航至菜单File > Configure
。在弹出的窗口中,单击“CERT Kaiju”类别图标下方的Configure
链接。弹出窗口将显示所有可用的公开发布的 Kaiju 插件。检查您想要激活的任何插件,然后单击“确定”。您现在可以使用交互式插件功能。
如果插件在启用后未立即可见,您可以在代码浏览器的Window
菜单下找到该插件。
如果您想测试未来工具的实验性“alpha”版本,可以从“实验”类别中获得它们。然而,这些插件绝对是实验性的,不受支持,不建议用于生产使用。不过,我们确实欢迎早期反馈!
像 Kaiju 这样的 Ghidra 扩展也可以通过将扩展内容解压缩到 Ghidra 安装的相应目录中来手动安装。有关更多信息,请参阅 Ghidra 安装指南。
您还可以直接从源代码构建 Kaiju 扩展。请参阅顶级 Kaiju 源目录中包含的INSTALL.md
文件。
Kaiju 的工具可以以交互式图形方式使用,也可以通过更适合批处理作业的“无头”模式使用。根据工具的性质,某些工具可能仅可用于图形或无头使用。
Kaiju 利用 Java Swing 和 Ghidra 的插件架构在 Ghidra 中创建了一个交互式图形界面 (GUI)。
Kaiju 的大多数工具实际上是分析插件,当选择“自动分析”选项时,无论是导入新的可执行文件进行反汇编,还是直接从代码浏览器窗口中选择Analysis > Auto Analyze...
,它们都会自动运行。您将看到自动分析工具中默认选择的多个 CERT 分析插件,但您可以根据需要启用/禁用任何插件。
然而,必须先运行分析工具,然后各种 GUI 工具才能工作。在某些极端情况下,运行自动分析两次甚至可能会有所帮助,以确保生成所有元数据以创建正确的分区和反汇编信息,这反过来又会影响哈希结果。
分析器在 Ghidra 的分析阶段自动运行,包括:
GUI 工具包括:
Kaiju > GhiHorn
从 Ghidra 的 CodeBrowser 访问此工具。您还可以通过按CTRL-G
启动该插件。Window > CERT Function Hash Viewer
以开始使用此工具(如果该工具尚不可见)。将出现一个新窗口,显示哈希表和其他数据。窗口顶部的按钮可以刷新表格或将数据导出到文件或 YARA 签名。该窗口也可以停靠在主 Ghidra CodeBrowser 中,以便于与其他插件一起使用。使用该工具时,可以在 Ghidra 的Help > Contents
菜单中找到更广泛的使用文档。Kaiju > OOAnalyzer Importer
以开始使用此工具。一个简单的弹出对话框将要求您找到要导入的 JSON 文件。使用该工具时,可以在 Ghidra 的Help > Contents
菜单中找到更广泛的使用文档。Ghidra 还支持“无头”模式,允许工具在某些情况下运行而无需使用交互式 GUI。因此,这些命令可用于大量文件的脚本编写和“批处理模式”作业。
无头工具很大程度上依赖于 Ghidra 的 GhidraScript 功能。
无头工具包括:
其中包含一个名为kaijuRun
的简单 shell 启动脚本,用于在简单场景下运行这些无头命令,例如在单个可执行文件中输出每个函数的函数哈希值。假设设置了GHIDRA_INSTALL_DIR
变量,则可以在单个可执行文件上运行启动脚本,如下所示:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
此命令会将结果输出到自动命名的文件中,例如example.exe.Hashes.csv
。
通过运行以下命令可以获得kaijuRun
脚本的基本帮助:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
请参阅存储库中的docs/HeadlessKaiju.md
文件,了解有关使用此模式和kaijuRun
启动器脚本的更多信息。
以两种格式之一提供更全面的文档和帮助。
请参阅docs/
目录以获取 Markdown 格式的文档以及所有 Kaiju 工具和组件的帮助。这些文档甚至可以通过命令行轻松维护、编辑和阅读。
或者,您可以在 Ghidra 的内置帮助系统中找到相同的文档。要访问这些帮助文档,请从 Ghidra 菜单转至Help > Contents
,然后从帮助窗口左侧的树状导航中选择CERT Kaiju
。
请注意,Ghidra 帮助文档与docs/
目录中的 Markdown 文件内容完全相同;得益于树内 gradle 插件,gradle 将在构建过程中自动解析 Markdown 并导出到 Ghidra HTML。这允许更简单的维护(仅在一个地方更新文档,而不是两个地方)并使两者保持同步。
所有新文档都应添加到docs/
目录中。
该软件由卡内基梅隆大学软件工程学院按照简化的 BSD 风格许可证进行许可。请在此存储库根目录的LICENSE.md
文件中找到此许可证的完整详细信息以及此项目中使用的依赖项的许可条款。
CERT Kaiju 徽标基于 Cameron Spahn 创作的艺术作品,最初根据 Creative Commons Attribution-Share Alike 4.0 International 许可条款发布。