ElinorCohen/threathub-cti-platform

GitHub: ElinorCohen/threathub-cti-platform

一个全栈网络威胁情报平台,支持 IOC 多源富化、风险评分、关系关联可视化与案件管理,帮助安全分析人员集中完成入侵指标调查。

Stars: 0 | Forks: 0

ThreatHub shield logo # ThreatHub ### 🛡️ 网络威胁情报与 IOC 调查平台 **在一个调查工作区内验证、富化、评分、关联、可视化和管理入侵指标。** ![React](https://img.shields.io/badge/React-18-61DAFB?logo=react&logoColor=white) ![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?logo=typescript&logoColor=white) ![Vite](https://img.shields.io/badge/Vite-5-646CFF?logo=vite&logoColor=white) ![Python](https://img.shields.io/badge/Python-3.10%2B-3776AB?logo=python&logoColor=white) ![Flask](https://img.shields.io/badge/Flask-REST_API-000000?logo=flask&logoColor=white) ![SQLite](https://img.shields.io/badge/SQLite-Local_Cache-003B57?logo=sqlite&logoColor=white) ![Testing](https://img.shields.io/badge/Testing-Pytest_%7C_Vitest-6E9F18) ![Status](https://img.shields.io/badge/Status-Active-success) [演示](#-demo) • [概述](#-overview) • [功能](#-key-features) • [关联](#-ioc-correlation-engine) • [架构](#-architecture) • [快速开始](#-quick-start) • [API](#-rest-api) • [安全](#-security-and-privacy)
## 🎬 演示
ThreatHub end-to-end IOC investigation workflow
该演示展示了完整的调查工作流: 1. 创建一个命名的调查案件。 2. 添加并验证多个 IOC。 3. 查询兼容的威胁情报提供商。 4. 查看标准化的判定结果和来源证据。 5. 详细检查单个 IOC。 6. 探索生成的关系图谱。 7. 查看每个检测到的连接背后的证据。 ## 🔎 概述 ThreatHub 是一个全栈网络威胁情报平台,可将原始的入侵指标转化为结构化、可重用的调查案件。 该平台接受 IP 地址、域名、URL 和文件哈希,通过多个威胁情报提供商对其进行丰富,计算标准化的风险评分,提取相关证据,并发现指标之间的关系。 ThreatHub 在同一个分析引擎之上包含两个接口: - 一个基于 React 和 TypeScript 的 Web 应用程序,用于案件管理和可视化。 - 一个基于 Rich 的 Python CLI,用于终端调查。 调查报告、图谱数据和案件元数据本地存储在 SQLite 中。缓存层减少了重复的 API 请求,加快了重复搜索的速度,并限制了不必要的提供商配额消耗。 ## 🎯 问题背景 威胁情报调查通常要求分析人员: - 跨多个外部平台搜索相同的 IOC。 - 比较不一致的提供商响应格式。 - 手动跟踪结果。 - 确定指标是否有关联。 - 在后续调查中重新打开以前的发现。 - 管理 API 配额和提供商故障。 - 从通用分类中分离出有意义的证据。 ThreatHub 将此流程集中到一个调查工作区中。 ``` flowchart LR A[Raw IOCs] --> B[Validation] B --> C[Multi-source enrichment] C --> D[Normalization] D --> E[Risk scoring] D --> F[Evidence correlation] E --> G[Investigation results] F --> H[Relationship graph] G --> I[Saved case] H --> I ``` ## ✨ 核心功能 ### 多来源情报富化 ThreatHub 集成了多个威胁情报提供商: | 提供商 | 主要用途 | 证据示例 | |---|---|---| | VirusTotal | 信誉和多引擎分析 | 检测计数、分类、解析记录、联系的 IP、URL 和文件 | | AbuseIPDB | IP 滥用信誉 | 滥用置信度、报告计数、ISP、使用类型和国家 | | Shodan | 面向互联网的基础设施 | 端口、服务、主机名、组织、漏洞和地理位置 | | AlienVault OTX | 威胁活动上下文 | Pulse、标签、活动、引用和恶意软件上下文 | | URLScan.io | Web 和基础设施分析 | 截图、重定向、关联域名、IP、品牌和判定结果 | | MalwareBazaar | 恶意软件样本情报 | 签名、哈希、文件元数据、标签和引用 | 采集器会根据 IOC 类型动态选择。不支持的提供商会被自动跳过。 ### 调查案件管理 - 创建命名的调查案件。 - 添加可选的案件描述。 - 在一个工作流中分析多个 IOC。 - 将新的 IOC 添加到现有案件中。 - 跳过重复的指标。 - 移除单个指标。 - 在案件更改后重建关系。 - 导出案件信息。 - 删除完整案件。 - 从 SQLite 恢复已保存的案件。 ### IOC 分析 - 自动检测 IOC 类型。 - 内联输入验证。 - 多 IOC 分析。 - 并发 IOC 处理。 - 并发提供商收集。 - 标准化的判定结果和风险评分。 - 特定来源的证据面板。 - 关联 IOC 发现。 - 备用哈希查找。 - 人类可读的威胁上下文。 - 国家和基础设施元数据。 ### 分析师可视化 - 案件概览卡片。 - 严重性摘要。 - IOC 结果表。 - 单个 IOC 详情面板。 - 交互式关系图谱。 - 关系证据卡片。 - Shodan 地理位置地图。 - URLScan 截图预览。 - 恶意软件家族摘要。 - 关联基础设施视图。 ### 弹性与性能 - 特定来源的缓存。 - 备用哈希缓存重用。 - 可配置的强制刷新。 - 提供商超时隔离。 - 实时提供商失败后的缓存回退。 - 并发收集。 - 去重的关系图谱。 - 针对密集证据组的简化布局。 ## 🧾 支持的 IOC 类型 | IOC 类型 | 示例 | 兼容的采集器 | |---|---|---| | IPv4 | `8.8.8.8` | VirusTotal, AbuseIPDB, Shodan, OTX, URLScan | | IPv6 | `2001:4860:4860::8888` | VirusTotal, AbuseIPDB, Shodan, OTX, URLScan | | Domain | `example.com` | VirusTotal, URLScan, OTX | | URL | `https://example.com/login` | VirusTotal, URLScan, OTX | | MD5 | `44d88612fea8a8f36de82e1278abb02f` | VirusTotal, MalwareBazaar, OTX | | SHA-1 | 40 字符的十六进制哈希 | VirusTotal, MalwareBazaar, OTX | | SHA-256 | 64 字符的十六进制哈希 | VirusTotal, MalwareBazaar, OTX | 后端使用能力矩阵来确定哪些采集器与每个 IOC 兼容。 ## 🧠 IOC 关联引擎 ThreatHub 会比较来自同一调查的指标,并仅在具备支持性证据时创建图谱关系。 ### 支持的关系类型 | 关系 | 含义 | 证据示例 | |---|---|---| | `SUBDOMAIN` | 一个域名是另一个域名的真实子域 | 解析并标准化的域名 | | `RESOLVES_TO` | 观察到一个域名解析到某个 IP | 结构化的 VirusTotal 解析记录 | | `HOSTED_ON` | 一个 URL 托管在已分析的域名或 IP 上 | 解析的 URL 主机名或 URLScan 页面证据 | | `SHARED_INFRASTRUCTURE` | 指标共享基础设施 | 共同的 IP 或托管证据 | | `SAME_MALWARE_FAMILY` | 文件哈希共享特定的恶意软件家族 | 标准化的 MalwareBazaar 或提供商分类 | | `COMMUNICATES_WITH` | 恶意软件样本联系了另一个 IOC | 联系的 IP、URL 或域名证据 | | `MENTIONED_TOGETHER` | 指标共享相关的威胁上下文 | 上下文相关的 OTX pulse 证据 | 每个关系包含: - 源 IOC。 - 目标 IOC。 - 关系类型。 - 人类可读的描述。 - 置信度。 - 证据类别。 - 方向性元数据。 ### 关联防护措施 ThreatHub 包含多项防护措施,旨在减少误报关系: - 关系是从结构化的提供商字段中提取的,而不是任意的原始报告文本。 - 域名和 IP 在比较前会被标准化。 - URL 关系使用解析后的主机名,而不是子字符串匹配。 - 长相相似的域名不会被自动视为子域。 - OTX pulse 在被选中之前会根据案件上下文进行评分。 - 无关或通用的 pulse 会被拒绝。 - 通用的恶意软件标签不会作为特定的恶意软件家族被接受。 - 威胁行为者名称不会被视为恶意软件家族名称。 - 重复的家族关系使用星型布局,而不是完全的成对图谱。 - 重复和较低优先级的关系在渲染前会被简化。 被拒绝的通用标签示例包括: ``` trojan dropper trojan/dropper ransomware backdoor APT backdoor generic malware Lazarus Moonstone Sleet ``` 被接受的特定家族名称示例包括: ``` SUNBURST NukeSped Teardrop Cuba ``` ### 关联流水线 ``` flowchart LR A[Provider reports] --> B[Structured evidence extraction] B --> C[IOC normalization] C --> D[Relationship rules] D --> E[Context and confidence checks] E --> F[False-positive filters] F --> G[Deduplication] G --> H[Graph simplification] H --> I[Visual graph and evidence cards] ``` ### 密集图谱简化 当多个文件属于同一恶意软件家族时,ThreatHub 会避免创建所有可能的成对连接。 对于六个相关文件: ``` Pairwise graph: 15 edges Star graph: 5 edges ``` 星型布局在保持连通性的同时,生成了更清晰、更有用的调查图谱。 ## 📊 风险评分 ThreatHub 计算一个 `0` 到 `10` 的标准化风险评分。 | 评分 | 判定 | |---:|---| | 9–10 | `CRITICAL` | | 7–8 | `HIGH` | | 4–6 | `MEDIUM` | | 1–3 | `LOW` | | 0 | `CLEAN` | 该评分可能会考虑以下证据: - VirusTotal 恶意引擎检测。 - AbuseIPDB 滥用置信度评分。 - MalwareBazaar 恶意软件识别。 - URLScan 恶意判定结果。 - AlienVault OTX pulse 关联。 - 提供商信誉和分类信号。 该评分上限为 `10`。 后端还会生成人类可读的风险因素,解释哪些证据影响了结果。 ## ⚡ 并发分析 ThreatHub 在两个级别执行并发分析: 1. 提交给 API 的多个 IOC 被并发处理。 2. 每个 IOC 兼容的采集器并发运行。 ``` flowchart TB A[Investigation request] --> B1[IOC 1] A --> B2[IOC 2] A --> B3[IOC 3] B1 --> C11[VirusTotal] B1 --> C12[OTX] B1 --> C13[MalwareBazaar] B2 --> C21[VirusTotal] B2 --> C22[URLScan] B2 --> C23[OTX] B3 --> C31[VirusTotal] B3 --> C32[AbuseIPDB] B3 --> C33[Shodan] ``` 来自一个提供商的失败或超时不会自动使整个 IOC 报告失效。 ## 💾 本地缓存 ThreatHub 将完整的分析报告存储在本地 SQLite 数据库中。 缓存包括: - IOC 值和类型。 - 首次发现时间戳。 - 最后扫描时间戳。 - 搜索计数。 - 风险评分。 - 完整的序列化报告。 - 特定提供商的结果。 - 案件结果和图谱数据。 默认的缓存有效期窗口为 24 小时。 ### 备用哈希缓存 同一文件样本的报告可能包含多个哈希。 如果样本已通过 SHA-256 进行过分析,后续的 MD5 或 SHA-1 搜索可以重用现有报告,而无需重复所有提供商请求。 强制刷新会绕过备用哈希重用,以便执行真正全新的提供商查询。 这减少了: - 重复的 API 请求。 - 提供商配额使用。 - 分析时间。 - 冗余的数据库记录。 ## 🏗 架构 ``` flowchart TB Analyst[Security Analyst] Analyst --> Web[React + TypeScript Web UI] Analyst --> CLI[Rich Python CLI] Web -->|REST JSON| API[Flask REST API] CLI --> Engine[Summary Engine] API --> Engine Engine --> Parser[IOC Parser and Capability Matrix] Engine --> Cache[(SQLite Cache and Cases)] Engine --> Collectors[Concurrent Collector Layer] Collectors --> VT[VirusTotal] Collectors --> Abuse[AbuseIPDB] Collectors --> Shodan[Shodan] Collectors --> OTX[AlienVault OTX] Collectors --> URLScan[URLScan.io] Collectors --> MB[MalwareBazaar] VT --> Normalize[Normalization Layer] Abuse --> Normalize Shodan --> Normalize OTX --> Normalize URLScan --> Normalize MB --> Normalize Normalize --> Score[Risk Scoring] Normalize --> Correlate[IOC Correlation Engine] Score --> Report[Normalized IOC Reports] Correlate --> Graph[Relationship Graph] Report --> Cache Graph --> Cache Report --> API Graph --> API Report --> CLI ``` ## 🔄 分析流程 ``` sequenceDiagram actor User participant UI as React Frontend participant API as Flask API participant Engine as Summary Engine participant DB as SQLite participant Providers as Intelligence Providers User->>UI: Submit one or more IOCs UI->>UI: Validate and identify IOC types UI->>API: POST /api/analyze API->>Engine: Analyze indicators concurrently loop For each IOC Engine->>DB: Check fresh cache alt Fresh report exists DB-->>Engine: Return cached report else Live enrichment required Engine->>Providers: Query compatible providers concurrently Providers-->>Engine: Return provider evidence Engine->>Engine: Normalize and score Engine->>DB: Save fresh report end end Engine->>Engine: Extract relationship evidence Engine->>Engine: Correlate and simplify graph Engine-->>API: Results and graph API-->>UI: JSON response UI-->>User: Tables, evidence, maps and graph ``` ## 🗂 项目结构 ``` ThreatHub/ ├── README.md ├── .gitignore ├── docs/ │ └── assets/ │ └── threathub-demo.gif ├── backend/ │ ├── .env.example │ ├── api/ │ │ └── server_api.py │ ├── cli/ │ │ └── main_cli.py │ ├── src/ │ │ ├── analysis/ │ │ │ └── summary_engine.py │ │ ├── collectors/ │ │ │ ├── abuseipdb.py │ │ │ ├── base_collector.py │ │ │ ├── malwarebazaar.py │ │ │ ├── otx.py │ │ │ ├── shodan.py │ │ │ ├── urlscan.py │ │ │ └── virustotal.py │ │ ├── core/ │ │ │ ├── country_mapper.py │ │ │ ├── database.py │ │ │ ├── input_parser.py │ │ │ ├── normalizers.py │ │ │ └── utils.py │ │ └── config.py │ ├── tests/ │ │ ├── integration/ │ │ └── unit/ │ │ ├── test_analysis/ │ │ ├── test_collectors/ │ │ └── test_core/ │ ├── pyproject.toml │ ├── requirements.txt │ └── run_cli.sh └── frontend/ ├── .env.example ├── public/ │ └── shield.png ├── src/ │ ├── components/ │ ├── hooks/ │ ├── lib/ │ ├── pages/ │ ├── test/ │ └── types/ ├── package.json ├── package-lock.json ├── vite.config.ts └── vitest.config.ts ``` 虚拟环境、`.env` 文件、SQLite 数据库、本地数据库备份、构建输出、缓存文件和本地维护脚本被排除在版本控制之外。 ## 🧰 技术栈 ### 前端 - React 18 - TypeScript - Vite - Tailwind CSS - shadcn/ui - Radix UI - React Router - TanStack Query - React Flow - Cytoscape - ELK.js - Dagre - Leaflet - Recharts - Vitest - Testing Library ### 后端 - Python 3.10+ - Flask - Flask-CORS - SQLite - Requests - Rich - Pandas - OpenPyXL - Graphviz - python-dotenv - PyCountry - Pytest - pytest-cov - pytest-asyncio - pytest-mock ## 🚀 快速开始 ### 前置条件 安装: - Git - Python 3.10 或更新版本 - Node.js 18 或更新版本 - npm - 您打算使用的提供商的 API 密钥 缺少 API 密钥将禁用相关的采集器。其他已配置的提供商可以继续运行。 ### 1. 克隆仓库 ``` git clone https://github.com/ElinorCohen/threathub-cti-platform.git cd threathub-cti-platform ``` ### 2. 配置后端 #### macOS 或 Linux ``` cd backend python3 -m venv venv source venv/bin/activate python -m pip install --upgrade pip pip install -r requirements.txt cp .env.example .env ``` 将您的 API 密钥添加到 `backend/.env`: ``` VT_API_KEY= SHODAN_API_KEY= ABUSEIPDB_API_KEY= OTX_API_KEY= MALWAREBAZAAR_API_KEY= URLSCAN_API_KEY= IPINFO_API_KEY= API_PORT=5001 ``` 启动 API: _BLOCK_12/> 后端监听于: ``` http://127.0.0.1:5001 ``` #### Windows PowerShell ``` cd backend py -m venv venv .\venv\Scripts\Activate.ps1 python -m pip install --upgrade pip pip install -r requirements.txt Copy-Item .env.example .env $env:PYTHONPATH = "." python api/server_api.py ``` ### 3. 配置前端 打开另一个终端: ``` cd frontend npm ci cp .env.example .env ``` 在 `frontend/.env` 中设置 API 基础 URL: ``` VITE_API_BASE=http://127.0.0.1:5001/api ``` 启动 Vite: ``` npm run dev ``` 打开: ``` http://localhost:8080 ``` ## 🖥 CLI 使用方法 ### macOS 或 Linux ``` cd backend source venv/bin/activate export PYTHONPATH="$(pwd):$PYTHONPATH" python cli/main_cli.py ``` 也可以使用辅助脚本: ``` cd backend chmod +x run_cli.sh ./run_cli.sh ``` ### Windows PowerShell ``` cd backend .\venv\Scripts\Activate.ps1 $env:PYTHONPATH = (Get-Location).Path python cli/main_cli.py ``` CLI 提供: - 单个 IOC 分析。 - 从文件批量输入。 - 带有颜色编码的判定结果。 - 特定于提供商的证据。 - 关联的 IOC 信息。 - 搜索历史元数据。 - 结构化的终端表格。 - 进度指示器。 ## ⚙️ 环境变量 ### 后端 | 变量 | 提供商或组件 | 用途 | |---|---|---| | `VT_API_KEY` | VirusTotal | 信誉、分析和相关对象证据 | | `SHODAN_API_KEY` | Shodan | 主机、服务、端口和漏洞信息 | | `ABUSEIPDB_API_KEY` | AbuseIPDB | IP 滥用信誉 | | `OTX_API_KEY` | AlienVault OTX | Pulse 和活动上下文 | | `MALWAREBAZAAR_API_KEY` | MalwareBazaar | 恶意软件样本查询 | | `URLSCAN_API_KEY` | URLScan.io | 搜索和活动网站扫描 | | `IPINFO_API_KEY` | 预留集成 | 未来的富化支持 | | `API_PORT` | Flask API | 后端监听端口;默认为 `5001` | ### 前端 | 变量 | 默认 | 用途 | |---|---|---| | `VITE_API_BASE` | `http://127.0.0.1:5001/api` | 后端 REST API 基础 URL | 切勿提交真实的凭据。 ## 🔌 REST API 本地 API 基础 URL 为: ``` http://127.0.0.1:5001/api ``` ### 分析 IOC ``` POST /api/analyze Content-Type: application/json ``` 请求示例: ``` { "iocs": [ { "value": "8.8.8.8", "type": "IPv4" }, { "value": "example.com", "type": "DOMAIN" } ] } ``` 响应结构示例: ``` { "results": [ { "id": "generated-result-id", "value": "8.8.8.8", "type": "IPv4", "verdict": "LOW", "score": 2, "sources": [], "analyzedAt": "2026-01-01T12:00:00+00:00" } ], "graph": { "nodes": [], "links": [] } } ``` ### 案件端点 | 方法 | 端点 | 用途 | |---|---|---| | `GET` | `/api/cases` | 列出已保存的调查案件 | | `GET` | `/api/cases/{case_id}` | 获取一个案件 | | `POST` | `/api/cases` | 创建或更新案件 | | `DELETE` | `/api/cases/{case_id}` | 删除案件 | | `POST` | `/api/cases/{case_id}/add-iocs` | 分析并追加新的 IOC | | `DELETE` | `/api/cases/{case_id}/iocs/{ioc_value}` | 删除 IOC 并重建图谱 | 当添加或删除指标时,关系图谱将被重新计算,并保存更新后的案件。 ## 🗄 数据库 ThreatHub 使用本地 SQLite 数据库: ``` backend/cti_data.db ``` 数据库在后端初始化时自动创建。 ### IOC 记录 IOC 缓存存储: - IOC 值。 - IOC 类型。 - 首次发现时间戳。 - 最后扫描时间戳。 - 搜索计数。 - 风险评分。 - 序列化的提供商报告。 ### 案件记录 调查案件存储: - 案件 ID。 - 案件名称。 - 描述。 - 状态。 - 创建和更新时间戳。 - IOC 计数。 - 标准化的结果。 - 关系数据。 - 图谱节点和链接。 由于数据库可能包含私密的调查历史和敏感指标,因此已将其从 Git 中排除。 ## 🧪 测试 ### 后端 ``` cd backend source venv/bin/activate pytest pytest -v pytest --cov=src pytest tests/unit pytest tests/integration pytest tests/unit/test_analysis -v ``` 后端测试套件涵盖: - 采集器初始化。 - 缺失 API 密钥的行为。 - 提供商错误和超时。 - 响应解析。 - IOC 验证。 - 数据标准化。 - 风险评分。 - SQLite 操作。 - 备用哈希查找。 - 案件持久化。 - 强制刷新行为。 - DNS 关系。 - URL 主机关系。 - 共享基础设施。 - 文件通信。 - OTX pulse 相关性。 - 拒绝通用恶意软件标签。 - 恶意软件家族图谱简化。 - 防止误报关联。 ### 前端 ``` cd frontend npm run build npm run lint npm test npm run test:watch ``` ## 🛠 开发命令 ### 前端 | 命令 | 用途 | |---|---| | `npm run dev` | 启动 Vite 开发服务器 | | `npm run build` | 创建生产环境构建 | | `npm run preview` | 预览生产环境构建 | | `npm run lint` | 运行 ESLint | | `npm test` | 运行一次 Vitest | | `npm run test:watch` | 在监视模式下运行测试 | ### 后端 | 命令 | 用途 | |---|---| | `pytest` | 运行完整的后端测试套件 | | `pytest -v` | 以详细输出模式运行测试 | | `pytest --cov=src` | 生成源代码覆盖率 | | `python cli/main_cli.py` | 启动 CLI | | `PYTHONPATH=. python api/server_api.py` | 启动 Flask API | ## 🔐 安全与隐私 ### API 密钥 - 仅将 API 密钥存储在 `backend/.env` 中。 - 切勿提交 `.env`。 - 切勿通过前端变量暴露提供商密钥。 - 一旦暴露,请立即轮换凭据。 - 避免在日志或截图中打印机密信息。 - 在生产环境中使用受管理的密钥存储服务。 ### 敏感 IOC 查询 提交的指标将被发送到配置的第三方提供商。 查询可能会泄露: - 内部基础设施。 - 客户指标。 - 正在调查的可疑域名。 - 事件响应上下文。 - 先前未知的 URL。 在提交机密指标之前,请查看每个提供商的隐私政策和服务条款。 ### URLScan 可见性 当前的 URLScan 主动扫描工作流可能会使用公开可见性。 请勿提交: - 内部 URL。 - 身份验证链接。 - 仅限客户的系统。 - 机密基础设施。 - 包含敏感 token 的 URL。 在将 collector 与私有 URL 一起使用之前,请更改其配置。 ### 开发服务器 内置的 Flask 服务器仅用于本地开发。 它可能会: - 在启用调试模式的情况下运行。 - 允许广泛的 CORS 访问。 - 在没有身份验证的情况下运行。 - 在没有授权的情况下运行。 - 在没有速率限制的情况下运行。 在未增加额外安全控制的情况下,请勿将其公开暴露。 ### 本地数据库 SQLite 数据库可能包含调查历史、提供商响应、基础设施元数据、案件描述和 IOC 值。 请勿将其发布或附加到公开的错误报告中。 ## 🚢 生产环境建议 在公开部署之前: - 禁用 Flask 调试模式。 - 使用 Gunicorn、Waitress 或其他 WSGI 服务器。 - 将 CORS 限制为已批准的来源。 - 添加身份验证。 - 添加基于角色的授权。 - 添加 schema 验证。 - 添加请求大小限制。 - 添加速率限制。 - 使用 HTTPS。 - 使用密钥管理器。 - 添加结构化日志记录。 - 避免记录机密的 IOC。 - 将长时间运行的分析移至后台 worker。 - 添加数据库迁移。 - 在多用户环境中考虑使用 PostgreSQL。 - 添加保留策略。 - 添加依赖项扫描。 - 添加自动机密扫描。 - 添加 CI/CD 检查。 ## 🩺 故障排除
前端无法连接到后端 确认后端正在运行: ``` http://127.0.0.1:5001 ``` 确认 `frontend/.env` 包含: ``` VITE_API_BASE=http://127.0.0.1:5001/api ``` 更改环境文件后重新启动 Vite。 直接测试 API: ``` curl http://127.0.0.1:5001/api/cases ```
在 macOS 上端口 5000 返回 HTTP 403 某些 macOS 系统将端口 `5000` 用于 AirPlay Receiver,并返回类似以下的响应: ``` HTTP/1.1 403 Forbidden Server: AirTunes ``` 因此,ThreatHub 默认使用端口 `5001`。 使用: ``` API_PORT=5001 ``` 和: ``` VITE_API_BASE=http://127.0.0.1:5001/api ```
提供商返回“Missing API Key” 将相关变量添加到 `backend/.env` 并重新启动后端。 请从 `backend` 目录运行后端,以便 `python-dotenv` 能够定位到环境文件。
提供商超时或未返回数据 检查: - API 密钥权限。 - 提供商配额。 - 速率限制。 - 网络可用性。 - 正确的 IOC 格式。 - 提供商可用性。 ThreatHub 会隔离提供商故障,并在可用时重用缓存的源数据。
应用程序启动时出现旧案件 案件是从以下位置恢复的: ``` backend/cti_data.db ``` 仅在您确实想要重置本地调查历史时,才备份或移除数据库。
CLI 无法导入 src 包 请从 `backend` 目录运行 CLI 并配置 `PYTHONPATH`: ``` export PYTHONPATH="$(pwd):$PYTHONPATH" python cli/main_cli.py ```
## 🗺 路线图 未来潜在的改进包括: - 身份验证和用户账户。 - 多用户调查工作区。 - 基于角色的访问控制。 - Docker 和 Docker Compose。 - 后台分析作业。 - 使用 WebSockets 或服务器发送事件的实时进度更新。 - 分析师笔记和标签。 - 证据附件。 - PDF、JSON 和 CSV 案件报告。 - STIX 2.1 支持。 - TAXII 集成。 - MISP 集成。 - Sigma 规则管理。 - YARA 规则管理。 - 定期的 IOC 重新扫描。 - 判定变更警报。 - 提供商健康监控。 - API 配额监控。 - 扩展的图谱实体类型。 - PostgreSQL 支持。 - 完整的前端测试覆盖率。 - 端到端测试。 - 持续集成。 - 自动化依赖审查。 - 自动化机密扫描。 ## ⚖️ 负责任的使用 仅对您获得授权可以分析的指标、系统和调查使用 ThreatHub。 尊重: - 提供商服务条款。 - API 配额。 - 隐私要求。 - 数据处理义务。 - 适用法律。 威胁情报数据可能包含误报、过期报告、Sinkhole、共享托管基础设施、受损的合法服务或安全研究系统。 提供商的判定结果应被视为调查证据,而非确凿的证据。 ## 🤝 贡献 为每个更改创建单独的分支: ``` git switch -c feature/your-feature-name ``` 进行更改后: ``` git add . git commit -m "feat: describe the change" git push -u origin feature/your-feature-name ``` 贡献应: - 避免提交凭据。 - 避免提交调查数据库。 - 在可行的情况下包含测试。 - 保持前端 API 契约。 - 记录新的环境变量。 - 为新的提供商包含采集器测试。 - 通过后端测试和前端构建检查。 ## 👤 作者 **Elinor Cohen** 作为一个全栈网络安全和威胁情报项目构建,它结合了: - 外部 API 集成。 - 并发处理。 - 数据标准化。 - 本地缓存。 - SQLite 持久化。 - 调查案件管理。 - 风险评分。 - 基于证据的 IOC 关联。 - 误报过滤。 - 交互式图谱可视化。 - 后端和前端工程。 ## 📄 许可证 目前未包含任何开源许可证。 在添加许可证之前,源代码仍受仓库所有者的默认版权所有权约束。
标签:Flask, Python, React, Syscalls, 威胁情报, 开发者工具, 无后门, 网络安全, 逆向工具, 隐私保护