securityjoes/AskJOE

GitHub: securityjoes/AskJOE

基于 Ghidra 的 AI 驱动恶意软件分析套件,整合大语言模型、威胁情报查询和逆向工程辅助工具,提升静态分析效率。

Stars: 152 | Forks: 11

# AskJOE 3.0 – 高级恶意软件分析套件 [![GitHub stars](https://img.shields.io/github/stars/securityjoes/AskJOE)](https://github.com/securityjoes/AskJOE/stargazers) [![GitHub forks](https://img.shields.io/github/forks/securityjoes/AskJOE)](https://github.com/securityjoes/AskJOE/network) [![License](https://img.shields.io/badge/License-GPL_v2-blue.svg)](LICENSE) ## 演示 ![AskJOE 3.0 mini walkthrough](/imgs/AskJOE3-running.gif "AskJOE 3.0 mini walkthrough") ## 目录 - [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. **克隆或复制代码库** ![Script Directory](/imgs/ghidra-script-directory.png "Script Directory") 将 `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** ![Script Manager](/imgs/ghidra-script-manager.png "Ghidra Script Manager") - **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 ### 打开启动器 ![AskJOE GUI Analysis](/imgs/askjoe-gui-analysis.png "AskJOE GUI Analysis") - 从 Script Manager 运行 `AskJOE.py`(或使用快捷键,例如 **Ctrl+Shift+J**)。 - 窗口显示 **Analysis** 选项卡(工具列表 + 输出)和 **Config** 选项卡。 ![AskJOE GUI Config](/imgs/askjoe-gui-config.png "AskJOE GUI Config") ### 运行任何工具(通用) 1. 在 Ghidra 中 **File > Import** 一个二进制文件并等待分析完成。 2. 在 AskJOE **Analysis** 中,从列表中选择一个工具。 3. 点击 **Run**;结果显示在输出窗格中(HTML,适用时可点击地址)。对于 **Explain Function**,首先使用 **Refresh** 以便当前函数与你的光标匹配。 4. 在再次运行前使用 **Clear output** 重置。 ### AI 分流 ![AskJOE - AI Triage](/imgs/askjoe-ai-triage.png "AskJOE - AI Triage") 1. 在 Ghidra 中打开二进制文件并运行初始分析。 2. 在 Analysis 中,选择 **AI Triage**。 3. 点击 **Run**;工具生成初步报告(行为、IOC、ATT&CK 风格技术)。 4. 查看 HTML 输出;地址可点击以在 Listing/Decompiler 中跳转。 5. 如有需要,在 **Config** 或 `config.ini` 中调整“light”或“deep”模式。 ### 询问 AI ![AskJOE - Ask AI](/imgs/askjoe-ask-ai.png "AskJOE - Ask 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。 ### 解释函数 ![AskJOE - Explain Function](/imgs/askjoe-explain-function.png "AskJOE - Explain Function") 1. 将光标放在(Listing 或 Decompiler 中)你想要解释的函数**内部**。 2. 在 Analysis 中,选择 **Explain Function**。 3. 点击 **Run**;结果在新窗口中打开(AI 摘要和逐步描述)。选项卡仅显示状态。 4. 在结果窗口中,点击任何地址以在 Ghidra 中跳转到该地址。 ### 函数简化器 ![AskJOE - Function Simplifier](/imgs/askjoe-func-simplifier.png "AskJOE - Function Simplifier") 1. 将光标放在你想要简化的函数内部。 2. 在 Analysis 中,选择 **Func Simplifier**。 3. 点击 **Run**;显示反编译函数的简化、语法高亮视图。 4. 使用输出了解控制流和逻辑;状态消息发送到 Ghidra 控制台。 ### 重命名助手 ![AskJOE - Rename Helper](/imgs/askjoe-rename-helper.png "AskJOE - Rename Helper") 1. 将光标放在你想要重命名的函数内部。 2. 在 Analysis 中,打开 **Rename helper**。 3. 在 Rename Helper 窗口中:**Refresh** > **Suggest variable & function names**。 4. 选择行并使用 **Apply selected renames** 或 **Apply all renames**。 5. 名称应用于函数、参数和反编译器可见的局部变量。 ### CAPA 分析 ![AskJOE - CAPA Analysis](/imgs/askjoe-capa-analysis.png "AskJOE - CAPA Analysis") 1. 在 Ghidra 中打开二进制文件;确保已安装并配置 **capa**(见 `config.ini`)。 2. 在 Analysis 中,选择 **CAPA Analysis**。 3. 点击 **Run**;capa 在二进制文件上运行,结果被导入 Ghidra(符号/注释)。 4. 在输出窗格中查看 HTML 报告;点击地址进行导航。 5. 检查 Listing/Decompiler 中脚本添加的能力标记。 ### 威胁情报分析器 ![AskJOE - Threat Intelligence](/imgs/askjoe-threat-intel.png "AskJOE - Threat Intelligence") 1. 在 **Config** 或 `config.ini` 中为所需服务(VirusTotal、OTX 等)配置 API 密钥。 2. 在 Ghidra 中打开二进制文件(文件必须在磁盘上以便计算哈希)。 3. 在 Analysis 中,选择 **Threat Intel**。 4. 点击 **Run**;工具查询已启用的服务并聚合结果。 5. 查看 HTML 报告(家族、活动、IOC);显示每项服务的状态。 ### 加密检测器 ![AskJOE - Crypto Detector](/imgs/askjoe-crypto-detector.png "AskJOE - Crypto Detector") 1. 在 Ghidra 中打开二进制文件并运行分析。 2. 在 Analysis 中,选择 **Crypto Detector**。 3. 点击 **Run**;工具扫描加密相关的代码和常量。 4. 查看可疑的加密/哈希例程和地址列表。 5. 点击输出中的地址以跳转到 Listing/Decompiler 中的候选项。 ### 栈字符串检测器 ![AskJOE - Stack Strings](/imgs/askjoe-stack-strings.png "AskJOE - Stack Strings") 1. 在 Ghidra 中打开二进制文件并运行分析。 2. 在 Analysis 中,选择 **Stack Strings**。 3. 点击 **Run**;工具恢复堆栈构造的字符串并在表格中显示。 4. 查看与恶意软件相关的地址和字符串内容。 5. 使用可点击地址导航到相应的代码。 ### XOR 搜索器 ![AskJOE - XOR Searcher](/imgs/askjoe-xor-search.png "AskJOE - XOR Searcher") 1. 在 Ghidra 中打开二进制文件并运行分析。 2. 在 Analysis 中,选择 **XOR Search**。 3. 点击 **Run**;工具查找 XOR 模式和解码后的候选字符串。 4. 阅读输出中的“How to read this”图例以了解循环和操作数。 5. 点击地址以在 Listing/Decompiler 中检查 XOR 例程。 ### 导出报告 ![AskJOE - Export Report](/imgs/askjoe-export-report.png "AskJOE - Export Report") 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, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 内存规避, 威胁情报, 开发者工具, 恶意软件分析, 无后门, 网络安全, 自动化分析, 跨站脚本, 逆向工具, 逆向工程, 隐私保护, 静态分析