securityjoes/AskJOE
GitHub: securityjoes/AskJOE
基于 Ghidra 的 AI 驱动恶意软件分析套件,整合大语言模型、威胁情报查询和逆向工程辅助工具,提升静态分析效率。
Stars: 152 | Forks: 11
# AskJOE 3.0 – 高级恶意软件分析套件
[](https://github.com/securityjoes/AskJOE/stargazers)
[](https://github.com/securityjoes/AskJOE/network)
[](LICENSE)
## 演示

## 目录
- [AskJOE 3.0 是什么?](#what-is-askjoe-30)
- [主要组件](#main-components)
- [工具概览](#tool-overview)
- [环境要求](#requirements)
- [安装说明](#installation)
- [使用 AskJOE](#using-askjoe)
- [许可证](#license)
- [联系方式](#contact)
## AskJOE 3.0 是什么?
AskJOE 3.0 将最初的 [AskJOE 项目](https://github.com/securityjoes/AskJOE) 从单一 AI 驱动的函数分析器扩展为一个完整的恶意软件分析套件。它基于 **Ghidra** 和 **LLM 集成**(OpenAI 或 Claude)构建,增加了用于行为理解、威胁情报和逆向工程工作流的专用模块——所有这些都通过单一启动器和共享配置实现。
## 环境要求
- 启用了 Python 脚本功能的 **Ghidra** (PyGhidra; Ghidra 10+)。
- **Python 3.x**(Ghidra 用于运行脚本的解释器)。
- **网络访问**,用于支持 AI 的工具和威胁情报/沙箱 API(如果启用)。
从项目根目录安装 Python 依赖:
```
pip install -r AskJOE/requirements.txt
```
## 安装说明
1. **克隆或复制代码库**

将 `AskJOE.py` 和 `AskJOE/` 文件夹放入你的 Ghidra **脚本目录**(例如 `ghidra_scripts`),或任何已在 Ghidra 脚本路径中的路径。
2. **配置 API 密钥和选项**
- 如果提供了 `AskJOE/config.example.ini`,请将其用作模板,或直接编辑 `AskJOE/config.ini`。
- 设置 AI 提供商、模型和 API 密钥(`[AI]`、`[API_KEYS]`)。
- 根据需要设置威胁情报密钥(`[VIRUSTOTAL]`、`[OTX]` 等)。
- 如有需要,调整 CAPA 和其他工具选项。
3. **在 Ghidra 中运行 AskJOE**

- **Window > Script Manager** > 如有需要添加你的脚本目录。
- 找到 `AskJOE.py`(例如在 **SecurityJOES** 下)。
- 双击运行;AskJOE 窗口随即打开。
## 主要组件
| 组件 | 描述 |
|-----------|-------------|
| **AskJOE 启动器** (`AskJOE.py`) | 从 Ghidra 的 Script Manager 运行的中心入口点。打开一个带选项卡的窗口,包含 **Analysis**(所有工具)和 **Config**(来自 `config.ini` 的设置)。 |
- 运行一次 **AskJOE.py** 以打开启动器。
- 使用 **Analysis** 选项卡选择并运行任何工具;结果将显示在同一窗口中,带有样式化的 HTML 和可点击的地址。
- 使用 **Config** 选项卡调整 API 密钥和选项,无需手动编辑 `config.ini`。
## 工具概览
工具按角色分组如下。所有工具在输出中均支持**可点击地址**(如果适用)(点击可在 Listing/Decompiler 中跳转)。
### AI 与解释
| 工具 | 目标 |
|------|------|
| **AI Triage** | 初步理解:可能的行为、IOC、ATT&CK 风格技术。结构化 HTML 报告;在 `config.ini` 中可选择“light”或“deep”模式。 |
| **Explain Function** | 使用反编译输出解释光标处的函数。点击 **Run**;结果在新窗口中打开。选项卡仅显示状态。 |
| **Ask AI** | 针对当前二进制文件的聊天。预设用于恶意软件/漏洞研究;宏 `#func`、`#addr`、`#strings`、`#imports`。按钮用于从最新回答创建**书签**和**注释**。 |
### 重命名与简化
| 工具 | 目标 |
|------|------|
| **Rename Helper** | 从一个窗口重命名函数和变量。使用实时 Code Browser 光标;**Refresh** 然后 **Suggest**;应用选定的或全部。处理参数、局部变量和反编译器生成的名称。 |
| **Function Simplifier** | 反编译函数的简化视图;语法高亮、类似 IDE 的输出。 |
### 能力与威胁情报
| 工具 | 目标 |
|------|------|
| **CAPA Analysis** | 在二进制文件上运行 Mandiant capa 并将结果导入 Ghidra(符号/注释)。AskJOE 风格的 HTML 报告。 |
| **Threat Intelligence Analyzer** | 聚合 OSINT(VirusTotal、Hybrid Analysis、OTX、Malware Bazaar、Intezer、Any.Run、Triage、X-Force 等)。单一 HTML 视图;包含每项服务的状态和速率限制处理。 |
### 检测与恢复
| 工具 | 目标 |
|------|------|
| **Crypto Detector** | 查找加密相关的代码和常量(加密/哈希候选)。 |
| **XOR Searcher** | 识别并解码 XOR 混淆数据;过滤噪声;可点击地址。包含简短的“How to read this”图例。 |
| **Stack Strings Detector** | 恢复堆栈构造的字符串;针对恶意软件工作流优化的表格输出。 |
### 导出
| 工具 | 目标 |
|------|------|
| **Export Report** | 轻量级可共享报告:将 AI Triage JSON、Threat Intel JSON 和最新的 CAPA 日志合并为 Markdown 风格的 HTML 报告;在窗口中打开并保存到磁盘。 |
## 使用 AskJOE
### 打开启动器

- 从 Script Manager 运行 `AskJOE.py`(或使用快捷键,例如 **Ctrl+Shift+J**)。
- 窗口显示 **Analysis** 选项卡(工具列表 + 输出)和 **Config** 选项卡。

### 运行任何工具(通用)
1. 在 Ghidra 中 **File > Import** 一个二进制文件并等待分析完成。
2. 在 AskJOE **Analysis** 中,从列表中选择一个工具。
3. 点击 **Run**;结果显示在输出窗格中(HTML,适用时可点击地址)。对于 **Explain Function**,首先使用 **Refresh** 以便当前函数与你的光标匹配。
4. 在再次运行前使用 **Clear output** 重置。
### AI 分流

1. 在 Ghidra 中打开二进制文件并运行初始分析。
2. 在 Analysis 中,选择 **AI Triage**。
3. 点击 **Run**;工具生成初步报告(行为、IOC、ATT&CK 风格技术)。
4. 查看 HTML 输出;地址可点击以在 Listing/Decompiler 中跳转。
5. 如有需要,在 **Config** 或 `config.ini` 中调整“light”或“deep”模式。
### 询问 AI

1. 将光标放在感兴趣的函数或地址上。
2. 从 Analysis 选项卡打开 **Ask AI**。
3. 可选择一个预设(例如“Classify malware behaviour”、“Review interesting strings”)。
4. 在你的问题中使用 `#func`、`#addr`、`#strings`、`#imports` 来注入上下文。
5. 点击 **Send**;使用 **Bookmark here** / **Comment here** 从回答中注释 Ghidra。
### 解释函数

1. 将光标放在(Listing 或 Decompiler 中)你想要解释的函数**内部**。
2. 在 Analysis 中,选择 **Explain Function**。
3. 点击 **Run**;结果在新窗口中打开(AI 摘要和逐步描述)。选项卡仅显示状态。
4. 在结果窗口中,点击任何地址以在 Ghidra 中跳转到该地址。
### 函数简化器

1. 将光标放在你想要简化的函数内部。
2. 在 Analysis 中,选择 **Func Simplifier**。
3. 点击 **Run**;显示反编译函数的简化、语法高亮视图。
4. 使用输出了解控制流和逻辑;状态消息发送到 Ghidra 控制台。
### 重命名助手

1. 将光标放在你想要重命名的函数内部。
2. 在 Analysis 中,打开 **Rename helper**。
3. 在 Rename Helper 窗口中:**Refresh** > **Suggest variable & function names**。
4. 选择行并使用 **Apply selected renames** 或 **Apply all renames**。
5. 名称应用于函数、参数和反编译器可见的局部变量。
### CAPA 分析

1. 在 Ghidra 中打开二进制文件;确保已安装并配置 **capa**(见 `config.ini`)。
2. 在 Analysis 中,选择 **CAPA Analysis**。
3. 点击 **Run**;capa 在二进制文件上运行,结果被导入 Ghidra(符号/注释)。
4. 在输出窗格中查看 HTML 报告;点击地址进行导航。
5. 检查 Listing/Decompiler 中脚本添加的能力标记。
### 威胁情报分析器

1. 在 **Config** 或 `config.ini` 中为所需服务(VirusTotal、OTX 等)配置 API 密钥。
2. 在 Ghidra 中打开二进制文件(文件必须在磁盘上以便计算哈希)。
3. 在 Analysis 中,选择 **Threat Intel**。
4. 点击 **Run**;工具查询已启用的服务并聚合结果。
5. 查看 HTML 报告(家族、活动、IOC);显示每项服务的状态。
### 加密检测器

1. 在 Ghidra 中打开二进制文件并运行分析。
2. 在 Analysis 中,选择 **Crypto Detector**。
3. 点击 **Run**;工具扫描加密相关的代码和常量。
4. 查看可疑的加密/哈希例程和地址列表。
5. 点击输出中的地址以跳转到 Listing/Decompiler 中的候选项。
### 栈字符串检测器

1. 在 Ghidra 中打开二进制文件并运行分析。
2. 在 Analysis 中,选择 **Stack Strings**。
3. 点击 **Run**;工具恢复堆栈构造的字符串并在表格中显示。
4. 查看与恶意软件相关的地址和字符串内容。
5. 使用可点击地址导航到相应的代码。
### XOR 搜索器

1. 在 Ghidra 中打开二进制文件并运行分析。
2. 在 Analysis 中,选择 **XOR Search**。
3. 点击 **Run**;工具查找 XOR 模式和解码后的候选字符串。
4. 阅读输出中的“How to read this”图例以了解循环和操作数。
5. 点击地址以在 Listing/Decompiler 中检查 XOR 例程。
### 导出报告

1. 根据需要运行 **AI Triage**、**Threat Intelligence** 和 **CAPA**(将使用它们的输出)。
2. 在 Analysis 中,选择 **Export report**。
3. 点击 **Run**;脚本从最新结果构建合并的 HTML报告。
4. 报告在新窗口中打开并保存到磁盘。
5. 共享或附加生成的文件用于案例记录、工单或报告。
## 许可证
本项目采用 **GPL-2.0 License** 授权。详见 [LICENSE](LICENSE)。
## 联系方式
- **Security Joes**: [https://securityjoes.com](https://securityjoes.com)
- **GitHub**: 使用仓库 Issue 追踪器提交 Bug 和功能请求。
标签:AI辅助逆向, AskJOE, Claude, CVE检测, DAST, DInvoke, Ghidra, OpenAI, Petitpotam, PyGhidra, Python, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 内存规避, 威胁情报, 开发者工具, 恶意软件分析, 无后门, 网络安全, 自动化分析, 跨站脚本, 逆向工具, 逆向工程, 隐私保护, 静态分析