mukul975/Malware-Sandbox-mcp

GitHub: mukul975/Malware-Sandbox-mcp

这是一个 MCP 服务器,允许在 Claude 中直接向多个云恶意软件沙箱提交文件和 URL 进行引爆分析,并跨多个威胁情报源丰富化 IOC 数据,最终生成标准化报告。

Stars: 4 | Forks: 0

# malware-sandbox-mcp ![Malware Sandbox MCP — 为 Claude 引爆、标准化、丰富信息](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/3c24f2d74e172524.png) [![CI](https://img.shields.io/github/actions/workflow/status/mukul975/Malware-Sandbox-mcp/ci.yml?branch=main&label=CI)](https://github.com/mukul975/Malware-Sandbox-mcp/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/github/license/mukul975/Malware-Sandbox-mcp)](LICENSE) [![Python](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13-blue)](pyproject.toml) [![MCP](https://img.shields.io/badge/MCP-compatible-blueviolet)](https://modelcontextprotocol.io) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Stars](https://img.shields.io/github/stars/mukul975/Malware-Sandbox-mcp?style=social)](https://github.com/mukul975/Malware-Sandbox-mcp/stargazers) **直接在 Claude 中引爆云恶意软件沙箱里的可疑文件和 URL —— 并获取标准化后的判定结果、IOC 和 MITRE ATT&CK 技术。** ## 问题所在 分诊一个可疑样本意味着要在四个浏览器标签页之间来回切换:提交给沙箱、等待、复制判定结果、将 C2 轮转到威胁情报数据库、在 VirusTotal 上查找哈希,然后手动将行为映射到 ATT&CK。每个报告都有不同的 schema,原始 JSON 大小高达数百 KB —— 远超可以直接粘贴到 LLM 的极限。 ## 解决方案 使用一个 MCP 服务器,通过 20 个工具封装了 **9 个后端**,并采用统一的标准化报告 schema。Claude 提交样本、进行异步轮询,并获取一份紧凑的(约 4K token)报告:判定结果、威胁评分、恶意软件家族、热门特征码、提取的 IOC,以及丰富了战术名称和链接的 ATT&CK 技术 —— 此外还提供了用于检索产物(释放的文件、PCAP、截图)、跨六个情报源丰富 IOC、轮转到相关样本、比较不同沙箱间的判定结果以及导出 ATT&CK Navigator 层级的工具。 引爆过程需要 2-10 分钟,但 Claude Desktop 强制执行硬编码的约 60 秒 MCP 工具超时限制。因此,此服务器采用**异步提交 → 轮询**模式:`submit_sample` 会在几秒内返回 `task_id`,而每次 `get_report(task_id)` 调用仅执行一次状态轮询 —— 没有任何工具调用会在等待沙箱时发生阻塞。 ## 为什么选择此工具 - **9 个后端,20 个工具** —— 引爆、产物、丰富信息、轮转、比较、ATT&CK 导出。 - **严格 BYOK** —— 每个后端都使用从环境变量中提取的*你自己的* API key;缺少 key 只会禁用该后端,而服务器仍会正常启动。 - **异步、避免超时** —— 提交 → 轮询 (handleId) 确保每次调用都在 MCP 超时上限之内。 - **标准化 + token 预算控制** —— 跨供应商的统一 schema,并进行摘要以适应 LLM 上下文。 - **MITRE ATT&CK 丰富化** —— 将技术解析为战术名称、链接以及 Navigator 层级。 - **设计安全** —— 二进制产物(活跃恶意软件、PCAP、内存转储)保存至磁盘,绝不内联;下载需要明确的确认;所有沙箱字符串均被视为不受信任的数据。 ## 架构 ``` Claude ──submit_sample──▶ malware-sandbox-mcp ──▶ Detonation sandboxes │ │ Hybrid Analysis · tria.ge · ANY.RUN │ ◀──── task_id ──────── │ │ │ normalize ──▶ MITRE ATT&CK enrich ──▶ summarize (<4K tok) │ ──get_report(task_id)──▶ │ │ ├──▶ Intel sources (enrich / pivot / C2) │ ◀── working | report ── │ MalwareBazaar · ThreatFox · URLhaus · Feodo · URLScan · VirusTotal │ │ │ ◀── artifacts saved to disk (PCAP, dropped files, screenshots, memory strings) ``` ## 工具 所有工具都会优雅降级:如果它们所需的后端没有 API key,它们将返回明确的“未配置”消息,而不是报错失败。 ### 引爆与报告 | 工具 | 描述 | |---|---| | `submit_sample` | 将文件或 URL 提交至引爆沙箱(Hybrid Analysis / tria.ge / ANY.RUN)。立即返回 `task_id`。 | | `get_report` | 对提交进行一次异步轮询;返回 `working` 或最终的标准化 + ATT&CK 丰富化报告。 | | `get_analysis_state` | 对提交进行轻量级状态轮询(及原始生命周期详情)。 | | `get_quota` | 获取某一个后端的 API 配额 / 使用限制。 | ### 哈希与样本情报 | 工具 | 描述 | |---|---| | `search_hash` | 在 MalwareBazaar、Hybrid Analysis、tria.ge 中快速静态查找 MD5/SHA1/SHA256。 | | `bulk_hash_lookup` | 一次性查找多个哈希,用于 IOC 清理。 | | `compare_verdicts` | 跨沙箱和 VirusTotal 查找某个哈希,并比对判定结果、评分和家族。 | | `download_sample` | 获取原始样本(活跃恶意软件 —— 需要明确确认;保存至磁盘)。 | ### 引爆产物 | 工具 | 描述 | |---|---| | `get_dropped_files` | 从已完成的分析中检索释放/提取的二进制文件。 | | `get_pcap` | 下载某项分析的网络抓包(PCAP)。 | | `get_screenshots` | 提取执行截图以供视觉分诊。 | | `get_memory_strings` | 从进程内存转储中提取字符串(Hybrid Analysis)。 | | `export_iocs` | 将报告的 IOC 导出为 STIX / MISP / OpenIOC / CSV 格式。 | | `export_attack_layer` | 根据报告中的技术生成 MITRE ATT&CK Navigator 层级 JSON。 | ### IOC 丰富化与轮转 | 工具 | 描述 | |---|---| | `enrich_ioc` | 跨 ThreatFox、URLhaus、VirusTotal、Feodo 丰富 IP / 域名 / URL / 哈希。 | | `check_c2_blocklist` | 检查 IP/域名是否为已知的僵尸网络 C2(Feodo + ThreatFox + URLhaus)。 | | `search_samples` | 跨沙箱和 ThreatFox 按家族 / 标签 / 特征码 / IOC 进行搜索。 | | `pivot_ioc` | 给定一个 IOC,在 HA、tria.ge、MalwareBazaar、ThreatFox 中查找所有相关样本。 | ### URL 分析 | 工具 | 描述 | |---|---| | `scan_url` | 将 URL 提交至 URLScan.io(默认不公开;公开需要确认)。 | | `get_url_scan_result` | 检索 URLScan 结果(判定结果、截图 URL、联系过的基础设施)。 | ## 安装说明 要求 **Python 3.11+** 和 [**uv**](https://docs.astral.sh/uv/)。 ``` git clone https://github.com/mukul975/Malware-Sandbox-mcp.git cd Malware-Sandbox-mcp uv sync # create the venv and install dependencies uv run python server.py # run over stdio (Ctrl-C to stop) ``` Pip 备选方案: ``` python -m venv .venv && . .venv/Scripts/activate # Windows; use .venv/bin/activate elsewhere pip install -e . python server.py ``` ## 配置(BYOK —— 自带密钥) 每个后端都会从环境变量中读取**你自己的** API key。只需设置你拥有的即可 —— 任何未设置的都会被禁用,而服务器仍会启动。复制 [`.env.example`](.env.example) 并填写你已有的内容,或者直接在下面的 MCP 客户端配置中设置 key。 | 后端 | 环境变量 | 免费层级? | 获取 key 的地址 | |---|---|---|---| | **Hybrid Analysis** (Falcon Sandbox) | `HA_API_KEY` | 是 —— 但需要进行一次性的**审核(vetting)**,才能将受限(仅限搜索)的 key 升级为完全提交/下载权限。 | [hybrid-analysis.com](https://hybrid-analysis.com) → 个人资料 → API key | | **tria.ge** (Recorded Future Sandbox) | `TRIAGE_API_KEY` | 是 —— 公共层级;**提交内容是公开的且无法删除**。 | [tria.ge](https://tria.ge) → 账户 → API 访问 | | **ANY.RUN** | `ANYRUN_API_KEY` | **否** —— API 需要付费的 Hunter/Enterprise 计划(或试用)。 | [app.any.run](https://app.any.run/plans) → API 与限制 | | **MalwareBazaar** (abuse.ch) | `MALWAREBAZAAR_API_KEY` 或 `ABUSECH_API_KEY` | 是 —— 合理使用;下载上限为 2,000/IP/天。 | [auth.abuse.ch](https://auth.abuse.ch/) | | **ThreatFox** (abuse.ch) | `THREATFOX_API_KEY` 或 `ABUSECH_API_KEY` | 是 —— 合理使用;超过 6 个月的 IOC 将过期。 | [auth.abuse.ch](https://auth.abuse.ch/) | | **URLhaus** (abuse.ch) | `URLHAUS_API_KEY` 或 `ABUSECH_API_KEY` | 是 —— 合理使用。 | [auth.abuse.ch](https://auth.abuse.ch/) | | **Feodo Tracker** (abuse.ch) | *(无)* | 是 —— 公共黑名单,无 key。 | 不适用 | | **URLScan.io** | `URLSCAN_API_KEY` | 是 —— 按分钟/小时/天进行速率限制。 | [urlscan.io](https://urlscan.io) → 设置 → API | | **VirusTotal** | `VT_API_KEY` 或 `VIRUSTOTAL_API_KEY` | 是 —— 公共 API:**4 次请求/分钟,500 次/天,仅供非商业用途**。 | [virustotal.com](https://www.virustotal.com) → API key | abuse.ch 现在为其所有服务签发**统一的 Auth-Key** —— 只需设置一次 `ABUSECH_API_KEY`,MalwareBazaar、ThreatFox 和 URLhaus 即可共同使用它(如果需要,各服务的独立变量会覆盖它)。 可选:`SANDBOX_ARTIFACTS_DIR` 用于设置下载的样本、PCAP 和截图的写入位置(默认为 `data/artifacts/`)。`TRIAGE_BASE_URL` 可将 tria.ge 指向私有云。 ### Claude Desktop / Claude Code 配置 将 [`.mcp.json.example`](.mcp.json.example) 复制到 `.mcp.json`(Claude Code,项目本地),或者将该代码块粘贴到 `claude_desktop_config.json` 中(Claude Desktop —— Windows 上为 `%APPDATA%\Claude\claude_desktop_config.json`): ``` { "mcpServers": { "malware-sandbox": { "command": "uv", "args": ["run", "--directory", "D:\\Malware-Sandbox-mcp", "python", "server.py"], "timeout": 600000, "env": { "HA_API_KEY": "", "TRIAGE_API_KEY": "", "ABUSECH_API_KEY": "", "URLSCAN_API_KEY": "", "VT_API_KEY": "" } } } } ``` 在 Windows 上,如果你的客户端在 PATH 中找不到 `uv`,请使用 `cmd /c` 将其包裹起来: ``` "command": "cmd", "args": ["/c", "uv", "run", "--directory", "D:\\Malware-Sandbox-mcp", "python", "server.py"] ``` `timeout`(仅适用于 Claude Code)可防止长时间轮询会话和一次性的 MITRE ATT&CK 数据集下载被中断。如果报告被截断,请在运行 Claude Code 的环境中提高 `MAX_MCP_OUTPUT_TOKENS=50000` 的值。 ## 使用示例 连接服务器后可以使用自然语言提示词: - “将 `http://example.com` 提交到 tria.ge,并在完成后给我判定结果。” - “在所有地方查找哈希 `ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa` 并比较判定结果。” - “`8.8.8.8` 是已知的僵尸网络 C2 吗?” - “跨所有威胁情报源丰富域名 `example.com`。” - “查找与 AgentTesla 家族相关的样本。” - “为任务 `triage:240611-abc123` 导出 ATT&CK Navigator 层级。” 请参阅 [`TEST_QUERIES.md`](TEST_QUERIES.md) 获取覆盖每个工具的、可直接粘贴的参数。 ## 安全、法律及负责任的使用 - **仅限授权和防御性使用。** 这是为安全研究人员和 SOC/DFIR 分析师提供的分诊工具。 - **第三方提交。** 文件和 URL 将被发送至外部云沙箱。在免费/社区层级(tria.ge 公共版、abuse.ch 社区版、Hybrid Analysis 公共版),提交内容及其结果可能是**公开且不可删除的**。`submit_sample` 和公开的 `scan_url` 需要明确的确认标志。切勿提交机密、个人或专有数据。 - **此仓库中无活跃恶意软件。** 所有测试均使用模拟的 HTTP 响应(respx);没有任何样本会离开测试运行器。 - **活跃恶意软件处理。** `download_sample` 会将真实的恶意软件检索到磁盘(MalwareBazaar 返回的 zip 密码为 `infected`)。它需要设置 `acknowledge_malware_download=true`,并保存至隔离目录,且绝对不会执行任何内容。仅可在隔离环境中处理下载的产物。 - **不受信任的内容。** 沙箱报告中的每个字符串都是受攻击者控制的,可能包含提示词注入文本;服务器严格将其作为数据传递。 - **提供商服务条款。** 你必须遵守每个后端的 ToS(例如 Hybrid Analysis 的审核/条款、abuse.ch 仅限确认恶意软件的政策、VirusTotal 的非商业公共 API 条款)。结果由其提供商授权;严格保持 BYOK 方式使用。 - **无担保。** 按“原样”提供(参见 [LICENSE](LICENSE));作者不对滥用行为承担责任。 如需报告安全问题,请参阅 [URITY.md](SECURITY.md)。 ## 开发说明 ``` uv sync --extra dev uv run pytest # 156 tests, fully offline (respx-mocked) uv run ruff check . # lint uv run ruff format . # format ``` 测试从不进行真实的网络调用 —— 所有沙箱/情报的 HTTP 均被 `respx` 拦截。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 贡献与政策 - [CONTRIBUTING.md](CONTRIBUTING.md) — 开发设置、测试、代码风格、PR 预期 - [SECURITY.md](SECURITY.md) — 负责任的披露 + 恶意软件处理政策 - [CHANGELOG.md](CHANGELOG.md) — 发布历史(维护更新日志) - [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) — 贡献者公约 ## 许可证 [MIT](LICENSE) © Mahipal 威胁情报和沙箱数据分别由 Hybrid Analysis、Recorded Future (tria.ge)、ANY.RUN、abuse.ch (MalwareBazaar / ThreatFox / URLhaus / Feodo Tracker)、URLScan.io 和 VirusTotal 根据其各自条款提供。MITRE ATT&CK® 是 The MITRE Corporation 的注册商标。
标签:Claude, CVE检测, DAST, MCP, Python, 威胁情报, 开发者工具, 恶意软件分析, 无后门, 沙箱, 逆向工具