barvhaim/ThreatXtension

GitHub: barvhaim/ThreatXtension

一款基于 AI 与多引擎集成的 Chrome 扩展安全分析工具,帮助快速识别扩展中的恶意行为与安全风险。

Stars: 16 | Forks: 1

## 概述 **ThreatXtension** 是一款用于 Chrome 浏览器扩展的综合性安全分析工具。它结合了静态分析(SAST)、威胁情报(VirusTotal)以及 AI 驱动评估,帮助安全研究人员、恶意软件分析师和浏览器安全团队识别浏览器扩展中的恶意行为。 ## 功能特性 ### 多层分析 - **权限分析**:对清单权限和主机访问进行风险评估 - **SAST 扫描**:针对银行欺诈、凭证窃取、数据外泄的定制 Semgrep 规则 - **VirusTotal 集成**:对文件哈希值进行声誉检查,覆盖 70 多家反病毒引擎 - **熵分析**:使用香农熵和模式匹配检测混淆/打包代码 - **WebStore 信誉**:用户评分、开发者信息与可信信号 ### AI 驱动的威胁评估 - **执行摘要**:自然语言风险评估与可操作建议 - **多 LLM 支持**:OpenAI、WatsonX、Ollama、RITS - **上下文感知分析**:每个发现均基于扩展完整上下文进行分析 ### 多界面支持 - **Web UI**:React 前端,实时分析仪表盘 - **CLI**:快速的命令行分析,丰富控制台输出 - **REST API**:FastAPI 后端,附带 OpenAPI 文档 - **MCP 服务器**:通过模型上下文协议集成 Claude Desktop ## 快速启动(Docker) 运行 ThreatXtension 最快的方式是使用 Docker。 ``` # 克隆仓库 git clone https://github.com/barvhaim/ThreatXtension.git cd ThreatXtension # 配置环境 cp .env.example .env # 编辑 .env 并添加您的 OPENAI_API_KEY(必需) # 可选添加 VIRUSTOTAL_API_KEY 以获取威胁情报 # 构建并运行 docker compose up --build # 访问应用程序 # Web UI: http://localhost:8007 # API 文档: http://localhost:8007/docs ``` ### Docker 命令 ``` make docker-build # Build container make docker-up # Start container (foreground) make docker-down # Stop container make docker-logs # View logs ``` ### 扫描扩展 **通过 Web UI:** 访问 http://localhost:8007,然后执行以下任一操作: - 粘贴 Chrome Web Store 的网址 - 输入扩展 ID(32 位字符串,例如 `gbbilodpoldeopifonmibfboicpafpjo`) - 上传本地的 `.crx` 或 `.zip` 文件 **通过 API:** ``` # 选项 1:从 Chrome Web Store URL 扫描 curl -X POST http://localhost:8007/api/scan/trigger \ -H "Content-Type: application/json" \ -d '{"url": "https://chromewebstore.google.com/detail/extension-name/extension-id"}' # 选项 2:使用扩展 ID 扫描(从 chrome-stats.com 下载) curl -X POST http://localhost:8007/api/scan/trigger \ -H "Content-Type: application/json" \ -d '{"url": "gbbilodpoldeopifonmibfboicpafpjo"}' # 选项 3:上传并扫描本地文件 curl -X POST http://localhost:8007/api/scan/upload \ -F "file=@/path/to/extension.crx" # 获取结果 curl http://localhost:8007/api/scan/results/{extension_id} ``` ## 安装(本地开发) ### 前置条件 - **Python 3.11+** - **Node.js 20+**(用于前端) - **uv** 包管理器([安装指南](https://docs.astral.sh/uv/getting-started/installation/)) ### 设置 ``` # 克隆仓库 git clone https://github.com/barvhaim/ThreatXtension.git cd ThreatXtension # 安装 Python 依赖 uv sync # 安装前端依赖 cd frontend && npm install && cd .. # 配置环境 cp .env.example .env # 使用 API 密钥编辑 .env ``` ### 本地运行 ``` # 选项 1:CLI - 从 Chrome Web Store URL 分析 make analyze URL=https://chromewebstore.google.com/detail/example/abcdef # 选项 1b:CLI - 使用扩展 ID 分析 uv run threatxtension analyze --id gbbilodpoldeopifonmibfboicpafpjo # 选项 1c:CLI - 分析本地文件 uv run threatxtension analyze --file /path/to/extension.crx uv run threatxtension analyze --file /path/to/extension.zip # 选项 2:Web UI(在独立终端中运行) make api # Start FastAPI backend (port 8007) make frontend # Start React frontend (port 5173) ``` ## 配置 ### 环境变量 从模板创建 `.env` 文件: ``` cp .env.example .env ``` **必需:** ``` LLM_PROVIDER=openai LLM_MODEL=gpt-4o OPENAI_API_KEY=sk-... ``` **可选:** ``` VIRUSTOTAL_API_KEY=... # For threat intelligence CHROMESTATS_API_KEY=... # For extension ID downloads via chrome-stats.com LANGSMITH_API_KEY=... # For LLM tracing/debugging ``` ### 支持的 LLM 提供商 | 提供商 | LLM_PROVIDER | 推荐模型 | |--------|--------------|----------| | OpenAI | `openai` | `gpt-4o`, `gpt-4-turbo` | | WatsonX(IBM) | `watsonx` | `meta-llama/llama-3-3-70b-instruct` | | Ollama(本地) | `ollama` | `llama3`, `mistral` | | RITS(IBM 研究) | `rits` | `meta-llama/llama-3-3-70b-instruct` | ### 自定义 Semgrep 规则 位于 `src/threatxtension/config/custom_semgrep_rules.yaml`: | 规则 ID | 类别 | 描述 | |---------|------|------| | `banking.form_hijack.submit_intercept` | 表单劫持 | 表单提交拦截 | | `banking.cred_sniff.password_input_hooks` | 凭证窃取 | 密码字段监听器 | | `banking.ext.webrequest.redirect` | 网络劫持 | WebRequest 重定向滥用 | | `banking.exfil.generic_channels` | 数据外泄 | sendBeacon/Image.src 滥用 | | `banking.obfuscation.eval_newfunc` | 代码注入 | eval()/Function() 执行 | 所有规则均包含 MITRE ATT&CK 映射和 CWE 参考。 ## API 参考 | 端点 | 方法 | 描述 | |------|------|------| | `/api/scan/trigger` | POST | 触发扩展扫描 | | `/api/scan/status/{id}` | GET | 检查扫描状态 | | `/api/scan/results/{id}` | GET | 获取完整结果 | | `/api/scan/files/{id}` | GET | 列出提取的文件 | | `/api/scan/file/{id}/{path}` | GET | 获取文件内容 | | `/api/scan/report/{id}` | GET | 生成 PDF 报告 | | `/api/statistics` | GET | 聚合统计 | | `/api/history` | GET | 扫描历史 | | `/health` | GET | 健康检查 | 完整的 API 文档请访问 http://localhost:8007/docs ## Claude Desktop 集成(MCP) ThreatXtension 通过 MCP(模型上下文协议)集成到 Claude Desktop。 **设置步骤:** 1. 编辑 Claude Desktop 配置文件(`~/Library/Application Support/Claude/claude_desktop_config.json`): ``` { "mcpServers": { "ThreatXtension": { "command": "uv", "args": [ "--directory", "/absolute/path/to/ThreatXtension", "run", "python", "-m", "threatxtension.mcp_server.main" ] } } } ``` 2. 重启 Claude Desktop 3. 询问 Claude:*“分析这个 Chrome 扩展:https://chromewebstore.google.com/detail/...”* ## 架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ ThreatXtension │ ├─────────────────────────────────────────────────────────────┤ │ Interfaces │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ CLI │ │ Web UI │ │ API │ │ MCP │ │ │ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │ │ └────────────┴────────────┴────────────┘ │ │ │ │ │ ┌──────────────────────▼──────────────────────┐ │ │ │ LangGraph Workflow │ │ │ │ Download → Parse → Analyze → Summarize │ │ │ └──────────────────────┬──────────────────────┘ │ │ │ │ │ ┌──────────────────────▼──────────────────────┐ │ │ │ Analyzers │ │ │ │ ┌────────────┐ ┌────────────┐ ┌──────────┐ │ │ │ │ │Permissions │ │ SAST │ │ WebStore │ │ │ │ │ └────────────┘ └────────────┘ └──────────┘ │ │ │ │ ┌────────────┐ ┌────────────┐ │ │ │ │ │VirusTotal │ │ Entropy │ │ │ │ │ └────────────┘ └────────────┘ │ │ │ └─────────────────────────────────────────────┘ │ │ │ │ │ ┌──────────────────────▼──────────────────────┐ │ │ │ LLM Summary Generation │ │ │ │ (OpenAI / WatsonX / Ollama) │ │ │ └─────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 许可证 本项目采用 MIT 许可证授权 - 详细信息请参见 [LICENSE](LICENSE) 文件。 ## 感谢 - **Semgrep** - 静态分析引擎 - **LangGraph** - 工作流编排 - **VirusTotal** - 威胁情报 - **React + Vite** - 前端框架

专为浏览器安全研究与扩展威胁情报而构建

本工具仅限合法的安全研究、恶意软件分析与教育用途。