ArmorIntel/mustela

GitHub: ArmorIntel/mustela

一款面向 SOC 分析师的无后端 Chrome 扩展,能自动检测高亮网页上的 IOC 并聚合多源威胁情报进行页内调查。

Stars: 0 | Forks: 0

# Mustela [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/17e3bb6033044235.svg)](https://github.com/ArmorIntel/mustela/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/ArmorIntel/mustela)](https://github.com/ArmorIntel/mustela/releases/latest) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Chrome MV3](https://img.shields.io/badge/Chrome-Manifest%20V3-4285F4?logo=googlechrome&logoColor=white)](manifest/chrome.manifest.json) **Mustela** 是一款专为 SOC 分析师设计的 Chrome 扩展,方便他们直接在当前浏览的页面上调查妥协指标 (IOC)。 你不再需要在多个标签页之间来回复制 IP、域名、URL 和哈希值,Mustela 会高亮显示页面上的 IOC,并提供快捷的上下文调查操作。 ## 为什么开发这个扩展 SOC 的工作流中充斥着重复的溯源操作: - 从 SIEM、工单、邮件或 CTI 报告中复制一个 IOC - 打开 VirusTotal、AbuseIPDB 或 Shodan - 粘贴该指标 - 手动比对结果 Mustela 减少了这种繁琐操作,将调查闭环保留在浏览器中。 ## 安装说明 ### 选项 A — 下载预构建版本(推荐,无需构建工具) 1. 前往 [最新发布版本](https://github.com/ArmorIntel/mustela/releases/latest) 2. 下载 `mustela-vX.X.X-chrome.zip` 文件 3. 将其解压到电脑上的任意位置 4. 在 Chrome 中打开 **`chrome://extensions`** 5. 启用 **开发者模式** — 右上角的开关 ![开发者模式开关位置](https://raw.githubusercontent.com/ArmorIntel/mustela/main/docs/screenshots/install-dev-mode.png) 6. 点击 **加载已解压的扩展程序**,并选择你刚刚解压的文件夹 7. 工具栏中会出现 Mustela 图标 — 安装完成 ### 选项 B — 一行命令(自动从源码构建) 如果你已安装 **Git** 和 **Node.js 18+**,请在终端中运行以下命令: ``` curl -fsSL https://raw.githubusercontent.com/ArmorIntel/mustela/main/install.sh | bash ``` 该脚本会克隆仓库、安装依赖、构建扩展,并输出需要粘贴到 Chrome **加载已解压的扩展程序** 对话框中的确切路径。 ### 选项 C — 从源码手动构建 ``` git clone https://github.com/ArmorIntel/mustela.git cd mustela npm install npm run build ``` 然后在 `chrome://extensions` 中通过 **加载已解压的扩展程序** 加载 `dist/chrome`(步骤同上述 4–7 步)。 ## 配置服务提供商 Mustela 开箱即用,能够检测并高亮显示 IOC — 无需任何 API 密钥。 要在页内面板中获取 **丰富的判定结果**(信誉评分、扫描结果、暴露服务数据),请连接一个或多个免费的提供商账号。 ### 如何打开选项页 右键点击工具栏中的 Mustela 图标 → **选项**。或者前往 `chrome://extensions`,找到 Mustela,点击 **详细信息 → 扩展程序选项**。 ### VirusTotal VirusTotal 汇总了 70 多个防病毒引擎的结果,并提供针对 IP、域名、URL 和文件哈希的信誉数据。 1. 在 [virustotal.com](https://www.virustotal.com/gui/join-us) 创建免费账号 2. 前往你的 [API key 页面](https://www.virustotal.com/gui/my-apikey) 3. 复制你的 **API Key** 4. 将其粘贴到 Mustela 选项页的 **VirusTotal** 字段中 免费额度:每分钟 4 次请求,每天 500 次请求。足够应对分析师的日常工作流。 ### AbuseIPDB AbuseIPDB 是一个众包的恶意 IP 地址举报数据库。 1. 在 [abuseipdb.com](https://www.abuseipdb.com/register) 创建免费账号 2. 前往 [Account → API](https://www.abuseipdb.com/account/api) 3. 点击 **Create Key**,为其命名并复制密钥 4. 将其粘贴到 Mustela 选项页的 **AbuseIPDB** 字段中 免费额度:每天 1,000 次请求。绰绰有余,完全满足日常分析需求。 ### Shodan Shodan 扫描互联网上的暴露服务和设备。非常适合用来丰富 IP 地址的端口、服务和 banner 数据。 1. 在 [shodan.io](https://account.shodan.io/register) 创建免费账号 2. 登录并前往 [My Account](https://account.shodan.io/) 3. 复制页面上显示的 **API Key** 4. 将其粘贴到 Mustela 选项页的 **Shodan** 字段中 免费额度:仅限于基础查询(无历史数据或过滤功能)。涵盖标准的 IP 查询。 如果未配置提供商,Mustela 在检测、高亮显示和外部溯源方面仍能完全正常运行 — 只是不会显示该提供商的丰富数据。 ## 配置 LLM (Analyst Assist) Mustela 集成了 **大语言模型**,通过 AI 驱动的分析来增强调查。此功能是 **可选的** — 不开启它,Mustela 依然能完全正常运行。启用后,它提供以下功能: - **调查摘要**:针对每个 IOC 由 AI 生成的一句话判定结果及推荐的下一步操作 - **关联分析**:识别调查历史中多个 IOC 之间的模式和关系 LLM 可在任何 **兼容 OpenAI 的 API** 上运行,因此你可以使用: - **Anthropic Claude**(通过 [Anthropic API](https://console.anthropic.com/)) - **OpenAI**(GPT-4o、GPT-4 Turbo 等) - **本地模型**(Ollama、LM Studio、vLLM) - 任何其他具有兼容 OpenAI `/chat/completions` 端点的服务 ### 配置 LLM 1. 打开 Mustela **选项** 页(右键点击 Mustela 图标 → **选项**) 2. 下拉滚动至 **Analyst Assist (LLM)** 部分 3. 勾选 **Enable Analyst Assist** 4. 填写: - **Base URL**:API 端点(例如,Anthropic 填 `https://api.anthropic.com/v1`,OpenAI 填 `https://api.openai.com/v1`,Ollama 填 `http://localhost:11434/v1`) - **API Key**:你从服务商获取的 API 密钥 - **Model**:模型名称(例如,Claude 填 `claude-3-5-sonnet-20241022`,OpenAI 填 `gpt-4o`,Ollama 填 `mistral`) 5. 点击 **Save** Mustela 将验证连接。如果有效,LLM 功能会自动激活。 ### AI 驱动的调查摘要 当你调查 IOC 时,LLM 会自动生成: - **摘要**:结合上下文对评分含义的一句话评估 - **操作**:最重要的一步后续调查步骤 LLM 会综合考量: - IOC 的类型和值 - 所有已配置威胁情报提供商(VirusTotal、AbuseIPDB、Shodan)的判定结果 - 各提供商的结论是否一致(以及如何解决冲突) - 你发现 IOC 的页面上下文(SIEM、工单、邮件等) **示例**:如果在调查工单上的某个域名时,VirusTotal 将其标记为恶意,但 Shodan 认为它是干净的,LLM 可能会总结道:*“高可信度的恶意域名;被多个扫描引擎标记,但近期的良性托管背景表明可能是误报 — 请对照你的网络日志进行验证。”* 推荐的操作将是:*“检查你的 DNS 日志中是否有内部查询记录;如果没有,将其标记为误导;如果有,则升级进行封堵。”* ### 跨 IOC 关联分析 通过弹窗中的 **Analyze correlations** 按钮,你可以让 LLM 识别近期调查中的模式: - **模式检测**:共享基础设施、ASN 集群、相似威胁画像、潜在攻击活动指标、共同上下文 - **关系判定**:这些 IOC 是“可能相关”、“疑似相关”还是“相互独立”? - **下一步调查**:根据发现的模式给出唯一的最佳行动 此功能适用于: - 识别跨多个告警的攻击活动 - 对误报或良性基础设施进行集群分类 - 发现已知威胁团伙对基础设施的重复使用 - 在嘈杂的 SIEM 输出中寻找线索串联 **示例**:在调查了一批告警中的 5 个 IP 和 3 个域名后,LLM 识别出它们都使用同一个 ASN,与已知的钓鱼攻击活动共享托管,并且出现在同一基础设施上。建议:*“高度确信这些是协调一致的基础设施 — 检查 ASN 信誉历史;将所有 8 个指标加入你的屏蔽列表,并与已知的 C2 sinkhole 活动进行关联比对。”* ### 推荐模型 | 提供商 | 模型 | 级别 | 适合 Mustela 吗? | |---|---|---|---| | **Anthropic** | `claude-3-5-sonnet-20241022` | 标准版 | ✅ 极佳 — 速度快、成本低、延迟低。推荐使用。 | | **Anthropic** | `claude-3-opus-20250219` | 高级版 | ✅ 是 — 在复杂关联方面能力更强。速度较慢且价格更高。 | | **OpenAI** | `gpt-4o` | 标准版 | ✅ 良好 — 成本与 Sonnet 相当,稳定可靠。 | | **OpenAI** | `gpt-4-turbo` | 高级版 | ✅ 是 — 能力更强,延迟更高。 | | **Ollama** | `mistral` 或 `neural-chat` (本地) | 免费 | ✅ 良好 — 完全离线,无 API 成本。在 CPU 上运行较慢。 | | **OpenAI** | `gpt-4 mini` | 预算版 | ⚠️ 在处理复杂关联时可能会比较吃力。 | **默认推荐**:从 **Claude 3.5 Sonnet** 开始。对于此类工作负载,它是速度最快且最具性价比的选择。 ### LLM 隐私说明 启用后,LLM 会接收到: - IOC 的值和类型(例如 `192.168.1.1`,`domain`) - 来自你配置的提供商的威胁判定(例如 `malicious`、`suspicious`、`clean`) - 你发现 IOC 的页面上下文(URL、标题) - 你最近的调查历史(用于关联分析) 请假定 LLM 提供商会看到这些信息。Mustela **不会**: - 将你的提供商 API 密钥发送给 LLM - 发送你完整的笔记历史 - 发送有关你已禁用高亮显示的页面的信息 - 存储 LLM 响应;它们是按需实时生成的 如果调查高度敏感的指标,请禁用 LLM 或使用本地模型(Ollama)。 ## 功能 ### IOC 检测 Mustela 会自动检测任何页面上的以下指标类型: | 类型 | 示例 | |---|---| | IPv4 地址 | `192.168.1.1`、`8.8.8.8` | | IPv4 子网 | `10.0.0.0/8` | | ASN | `AS15169` | | 域名 | `evil.example.com` | | URL | `http://malware.example.com/payload` | | MD5 哈希 | `d41d8cd98f00b204e9800998ecf8427e` | | SHA1 哈希 | `da39a3ee5e6b4b0d3255bfef95601890afd80709` | | SHA256 哈希 | `e3b0c44298fc1c149afb...` | 检测完全在浏览器本地运行 — 在此阶段不会向外部发送任何数据。 ### 页面高亮显示 **检测到的 IOC 并直接在页面上高亮显示:** ![页面上高亮显示的 IOC](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/152753ad05044246.png) 检测到的 IOC 会直接在页面上通过带有颜色编码的标记进行下划线标注。这不会影响宿主页面的布局和行为。你可以随时使用弹窗中的 **Disable on this page** 开关,针对特定页面禁用高亮显示。 ### 页内调查面板 **点击高亮显示的内容即可打开调查面板:** ![页内调查面板](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/713762ecb5044252.png) 点击任何高亮显示的 IOC 都会打开一个固定在页面上的侧边面板。该面板显示: - IOC 的类型和值 - 来自所有已配置提供商的汇总判定结果 - 用于快速跳转到各个提供商网站查看该 IOC 的链接 - 本地分析师笔记字段(仅存储在你的浏览器中) - 完整结果的 JSON 导出 ### 弹窗 — 手动查询与历史记录 **弹窗汇总了当前页面的信息,并保留了你最近的调查记录:** Popup with current-page summary and history 点击工具栏中的 Mustela 图标可以: - 按类型分组查看当前页面上检测到的所有 IOC 摘要 - 通过将 IOC 粘贴到搜索框中,对其执行 **手动查询** - 浏览跨所有会的 **近期调查** 记录 - 在当前页面上启用或禁用 Mustela ### 右键菜单查询 在页面上选中任意文本,右键点击并选择 **Investigate with Mustela**。Mustela 会自动识别 IOC 类型并打开包含结果的面板。 ### 本地存储 — 无后端 所有数据都保留在你的浏览器中: | 数据 | 存储位置 | |---|---| | API 密钥 | `chrome.storage.local` | | 查询缓存 | `chrome.storage.local` | | 调查历史 | `chrome.storage.local` | | 分析师笔记 | `chrome.storage.local` | | 禁用页面的规则 | `chrome.storage.local` | 不会向任何后端发送任何内容。唯一的出站请求就是你明确触发的提供商查询 — 并且仅指向你配置的提供商。详情请参阅 [`docs/PRIVACY_TRANSPARENCY.md`](docs/PRIVACY_TRANSPARENCY.md)。 ## 使用指南 1. 打开任何包含指标的页面 — SIEM 告警、工单、CTI 报告、电子邮件 2. Mustela 会自动检测并高亮显示 IOC(在页面上添加下划线) 3. 点击高亮显示的 IOC 以打开调查面板 4. 查看已配置提供商的汇总判定结果 5. 如果你想保留上下文供以后参考,可以添加分析师笔记 6. 仅在需要提供商网站上更深层的上下文时,才使用外部溯源链接 7. 将结果导出为 JSON,用于你的案件管理工具 对于不在页面上的 IOC,请将其直接粘贴到弹窗的搜索框中。 ## 隐私与信任机制 Mustela 的设计刻意保持透明: - IOC 检测和高亮显示完全在 **浏览器本地运行** - 设置、缓存、历史记录、笔记和禁用的页面规则都存储在 `chrome.storage.local` 中 — 不会同步到任何云端 - 已配置的提供商查询仅在你主动请求时,才会 **且仅** 将 IOC 发送至已启用的第三方提供商 - 这里 **没有后端、没有遥测、没有分析、没有账号系统** 如果你调查敏感的 IOC,请假定已启用的提商会看到该 IOC。详情请参阅 [`docs/PRIVACY_TRANSPARENCY.md`](docs/PRIVACY_TRANSPARENCY.md)。 ## 常见问题解答 **Mustela 能在所有网站上工作吗?** 是的 — 它可以注入到 Chrome 加载的任何页面中。如果它对特定网站造成干扰,你可以通过弹窗开关针对该页面禁用它。 **我可以不使用任何 API 密钥吗?** 可以。检测、高亮显示、外部跳转和右键菜单均可无密钥使用。API 密钥仅用于获取面板内的增强判定结果。 **我的 API 密钥安全吗?** 密钥存储在 `chrome.storage.local` 中,被沙箱隔离在扩展程序内,网页和其他扩展程序无法访问。除了各自的提供商 API 端点外,它们永远不会发送到任何其他地方。 **该扩展会拖慢页面加载速度吗?** 检测只在页面加载时运行一次,并处理 DOM 中已有的文本。它不会持续扫描页面,也不会在后台发起网络请求。 **如果提供商宕机或受到速率限制会怎样?** 面板会为该提供商显示清晰的错误状态,同时仍会显示其他提供商的结果。缓存机制避免了在同一会话中对相同 IOC 的冗余请求。 **支持 Firefox 吗?** 暂不支持。Mustela 目前基于 Manifest V3,主要针对 Chrome 及基于 Chromium 的浏览器(Edge、Brave、Arc 等)。对 Firefox 的支持已在路线图上。 **不配置 LLM 也能使用 LLM 的相关功能吗?** 可以。所有 LLM 功能都是可选的。如果不配置 LLM,Mustela 依然能仅利用你配置的威胁情报提供商来检测、高亮并调查 IOC。 **我需要为 LLM 付费吗?** 这取决于你选择的服务。Anthropic Claude、OpenAI 和其他商业 LLM API 会按请求收费(通常每次调查花费 < $0.01)。如果你想免费使用,可以在本地机器上运行 Ollama,没有 API 成本 — 不过在 CPU 上运行会慢一些,但可以完全离线。 **我可以使用其他的 LLM(不兼容 OpenAI 的)吗?** 暂不支持。Mustela 目前仅支持兼容 OpenAI 的 API。如果你希望支持其他 LLM API(如 Anthropic 原生 API、Azure OpenAI 等),请在 GitHub 上提交 Issue。 **LLM 会看到我的提供商 API 密钥吗?** 不会。LLM 只会接收到来自你提供商的判定结果和摘要 — 永远不会获取 API 密钥本身。 **我可以做贡献吗?** 欢迎。请阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md) 了解相关规范。安全漏洞报告请通过 [`SECURITY.md`](SECURITY.md) 处理 — 请勿针对漏洞公开提交 Issue。 ## 开发 ``` npm install # install dev dependencies npm test # fast Node test suite (parsing, providers, storage, popup state) npm run build # build the extension into dist/chrome npm run test:e2e # Playwright end-to-end suite (requires a display) npm run package # build + create dist zip in artifacts/ ``` 请参阅 [`CONTRIBUTING.md`](CONTRIBUTING.md) 了解规范以及怎样才算一个好的 PR。 ## 当前状态 Mustela 是一个 **Chrome MVP**(最小可行性产品)。Firefox 支持、后端服务、团队共享内存和高级自动化等功能尚未实现,我们也并未宣称支持。近期的优先事项包括:更强的检测质量、更少的误报、更好的调查用户体验,以及更稳健的提供商处理机制。 欢迎提交 Issue 和反馈 — 特别是来自从事 SOC 运营、CTI、事件响应或威胁追踪人员的声音。如果你在真实的分析师工作流中测试了 Mustela,你的反馈将比理论架构的探讨更有价值。 ## 开源许可 [MIT](LICENSE)
标签:IOC检测, MITM代理, Petitpotam, SOC分析, 威胁情报, 安全运营, 开发者工具, 扫描框架, 数据可视化, 自定义脚本