Atharv675/Threat-Intelligence-SOC-

GitHub: Atharv675/Threat-Intelligence-SOC-

一款集 OSINT 威胁情报聚合、日志威胁检测、事件管理与交互式可视化于一体的安全运营平台。

Stars: 0 | Forks: 0

# 威胁情报聚合器 [![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://www.python.org/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-green.svg)](https://fastapi.tiangolo.com/) [![MongoDB](https://img.shields.io/badge/MongoDB-7.0+-brightgreen.svg)](https://www.mongodb.com/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ## 概述 这是一个生产级别的威胁情报聚合平台,从 OSINT 来源收集 IOC,执行智能关联和 MITRE ATT&CK 映射,检测操作日志中的威胁,管理安全事件,并通过专业的交互式仪表板可视化威胁态势。 ### 核心功能 # ✅ **OSINT 收集** - 整合来自 AlienVault OTX、Abuse.ch 和 OpenPhish 的威胁情报 ✅ **9 阶段流水线** - 标准化 → 富化 → 关联 → MITRE 映射 → 风险评分 → 生成告警 → 汇总 → 存储 ✅ **日志接入** - 使用严格的 schema 验证解析和验证 auth、nginx 和 DNS 日志 ✅ **检测引擎** - 有状态的行为启发式检测(SSH 暴力破解、Web 主动扫描、DNS DGA 查询)以及带有置信度评分的静态 IOC 匹配 ✅ **事件生命周期** - 完整的事件管理(创建、更新状态、添加注释、分配分析师) ✅ **交互式仪表板** - 专业的黑紫色 D3.js 力导向节点图,支持缩放、平移和点击交互 ✅ **OWASP 安全性** - 速率限制、输入验证、数据清理、无 SQL 注入、结构化日志记录 ✅ **MongoDB 仓储模式** - 清晰的架构,无直接数据库访问 -> **OSINT 收集** - 整合来自 AlienVault OTX、Abuse.ch 和 OpenPhish 的威胁情报 ->**9 阶段流水线** - 标准化 → 富化 → 关联 → MITRE 映射 → 风险评分 → 生成告警 → 汇总 → 存储 -> **日志接入** - 使用严格的 schema 验证解析和验证 auth、nginx 和 DNS 日志 ->**检测引擎** - 将日志事件与存储的 IOC 进行匹配并提供置信度评分 -> **事件生命周期** - 完整的事件管理(创建、更新状态、添加注释、分配分析师) ->**交互式仪表板** - 专业的黑紫色 D3.js 力导向节点图,支持缩放、平移和点击交互 -> **OWASP 安全性** - 速率限制、输入验证、数据清理、无 SQL 注入、结构化日志记录 ->**MongoDB 仓储模式** - 清晰的架构,无直接数据库访问 ## 架构 ``` ┌────────────────────────────────────────────────────────┐ │ OSINT Sources (AlienVault, Abuse.ch, OpenPhish) │ └──────────────────────┬─────────────────────────────────┘ │ ┌──────────────────────▼─────────────────────────────────┐ │ Intelligence Pipeline (Stage 1) │ │ ┌──────┐ ┌────────┐ ┌──────────┐ ┌────────┐ │ │ │Collect│ → │Normalize│ → │Correlation│ → │MITRE │ │ │ └──────┘ └────────┘ └──────────┘ │Mapping │ │ │ └────┬───┘ │ │ ┌──────┐ ┌─────────┐ ┌──────┐ │ │ │ │Summary│ ← │Alerts │ ← │Risk │ ←───────┘ │ │ └───┬──┘ └─────────┘ │Score │ │ └──────┼────────────────────────────────────────────────┘ │ ┌──────▼──────────────────────────────────────────────────┐ │ MongoDB (Repository Pattern) │ │ • events • alerts • detections • incidents │ └──────┬───────────────────────────────┬──────────────────┘ │ │ ┌──────▼───────────────────┐ ┌───────▼─────────────────┐ │ Log Ingestion (Stage 2) │ │ Detection Engine │ │ • Auth logs │ │ • IOC matching │ │ • Nginx logs │ │ • Confidence scoring │ │ • DNS logs │ │ • Alert creation │ │ • Strict validation │ └───────┬─────────────────┘ └──────────────────────────┘ │ ┌─────▼──────────────────┐ │ Incident Manager │ │ • Create incidents │ │ • Track status │ │ • Add notes │ │ • Assign analysts │ └─────┬──────────────────┘ │ ┌───────────▼───────────────────┐ │ Interactive Dashboard │ │ (Stage 3) │ │ • Force-directed graph │ │ • Real-time status │ │ • Timeline view │ │ • Cluster details │ └───────────────────────────────┘ ``` ## 安全设计 ### OWASP 合规性 - **速率限制**:所有 endpoint 上每个 IP 每分钟 60 次请求 - **输入验证**:使用带有 `extra="forbid"` 的严格 Pydantic schema - **数据清理**:清理所有用户输入(检测 SQL/命令注入) - **无密钥泄露**:仅通过环境变量进行配置 - **错误处理**:全局异常处理器防止堆栈跟踪暴露 - **仓储模式**:无直接数据库访问,强制实施抽象层 - **结构化日志记录**:仅记录 JSON 日志,无敏感数据泄露 ### 架构原则 1. **模块化分离**:每个组件相互隔离(收集器、核心、存储、安全、接入、检测、可视化) 2. **只读可视化**:仪表板仅显示数据,从不进行修改 3. **依赖反转**:所有数据库操作均通过 repository 进行 4. **故障安全默认值**:拒绝格式错误的输入,不进行处理 ## 安装说明 ### 前置条件 - Python 3.8+ - MongoDB 7.0+(运行在 localhost:27017 上) - Git ### 步骤 1:克隆代码库 ``` git clone https://github.com/yourusername/threat-intelligence-aggregator.git cd threat-intelligence-aggregator ``` ### 步骤 2:创建虚拟环境 ``` python -m venv venv # Windows venv\Scripts\activate # Linux/Mac source venv/bin/activate ``` ### 步骤 3:安装依赖 ``` pip install -r requirements.txt ``` ### 步骤 4:环境配置 在项目根目录下创建 `.env` 文件: ``` # MongoDB 配置 MONGODB_URI=mongodb://localhost:27017 DATABASE_NAME=threat_intel # API Keys(可选 - 部分来源无需 keys 即可工作) ALIENVAULT_API_KEY=your_alienvault_otx_api_key ABUSEDB_API_KEY=your_abuseipdb_api_key # 应用设置 LOG_LEVEL=INFO RATE_LIMIT_DEFAULT=60 ``` **获取 API Key**(可选): - **AlienVault OTX**:在 https://otx.alienvault.com/ 注册 - **AbuseIPDB**:在 https://www.abuseipdb.com/ 注册 ## MongoDB 设置 ### 安装 MongoDB **Windows**: ``` # 从 https://www.mongodb.com/try/download/community 下载 # 或使用包管理器 choco install mongodb ``` **Linux/Mac**: ``` # Ubuntu/Debian sudo apt-get install mongodb # MacOS brew install mongodb-community ``` ### 启动 MongoDB ``` # Windows mongod --dbpath=C:\data\db # Linux/Mac mongod --dbpath=/data/db ``` ### 验证连接 ``` mongosh # 应成功连接 ``` ## 运行平台 ### 选项 1:演示脚本(推荐用于测试) #### 阶段 1:威胁情报收集 ``` python demo.py ``` 这将: - 从 OSINT 来源收集 IOC - 运行完整的 9 阶段流水线 - 将事件和告警存储在 MongoDB 中 - 显示汇总统计信息 #### 阶段 2:SOC 操作 ``` python demo_soc.py ``` 这将: - 接入示例 auth/nginx/DNS 日志 - 运行检测引擎 - 创建测试事件 - 跟踪事件生命周期 - 显示统计信息 ### 选项 2:FastAPI 服务器(生产环境) ``` uvicorn main:app --reload --host 0.0.0.0 --port 8000 ``` ### 选项 3:Docker 和 Docker Compose(容器化生产环境) 确保你已安装 Docker Desktop 和 Compose。 ``` # 在后台启动 MongoDB 和 FastAPI 服务 docker-compose up -d ``` *注意:MongoDB 容器会自动将端口 `27017:27017` 转发到宿主机,确保选项 1 中的本地演示脚本仍能无缝连接和运行。* ### 🌐 访问平台 - **交互式仪表板**:http://localhost:8000/dashboard - **API 文档**:http://localhost:8000/docs - **健康检查**:http://localhost:8000/health ### API Endpoint #### 威胁情报(阶段 1) - `POST /api/v1/collect` - 触发收集流水线 - `GET /api/v1/alerts` - 列出告警(按严重程度/风险过滤) - `GET /api/v1/events` - 列出威胁事件 #### 日志接入(阶段 2) - `POST /api/v1/ingest/auth` - 接入 auth 日志 - `POST /api/v1/ingest/nginx` - 接入 nginx 日志 - `POST /api/v1/ingest/dns` - 接入 DNS 日志 #### 检测 - `GET /api/v1/detections` - 列出检测结果 - `GET /api/v1/detections/{id}` - 获取检测详情 #### 事件 - `POST /api/v1/incidents` - 创建事件 - `GET /api/v1/incidents` - 列出事件(按状态/严重程度过滤) - `PUT /api/v1/incidents/{id}/status` - 更新状态 - `POST /api/v1/incidents/{id}/notes` - 添加注释 #### 仪表板(阶段 3) - `GET /dashboard` - 交互式可视化 - `GET /dashboard/api/graph-data` - 图节点和边 (JSON) - `GET /dashboard/api/timeline` - 时间轴事件 - `GET /dashboard/api/status` - 流水线状态 - `GET /dashboard/api/cluster/{id}` - 集群详情 ## 仪表板功能 ### 交互式节点图 - **力导向布局**:D3.js 物理模拟 - **节点大小**:基于风险评分 (0-10) - **节点着色**:MITRE ATT&CK 战术映射 - **关联边**:关系强度可视化 - **点击交互**:点击节点查看集群详情 - **缩放和平移**:完整的图表导航 ### 状态面板 - 总事件数、告警数、检测数、事件数 - 数据库健康监控 - **精简视图**:移除了冗余小部件,以实现清晰的操作关注 - 实时统计(每 30 秒自动刷新) ### 时间轴视图 - 按时间顺序排列的事件历史 - **统一侧边栏**:集成到右侧面板中以保持持久可见性 - IOC 接入、关联、检测、事件更新 - 事件类型过滤 - 时间戳显示 ### 集群详情 - 带有置信度评分的 IOC 列表 - MITRE ATT&CK 技术 - 风险评分明细 - 告警解释 - 分析师汇总 ## 项目结构 ``` SOC/ ├── collectors/ # OSINT data collectors │ ├── alienvault.py │ ├── abusedb.py │ └── openphish.py ├── core/ # Intelligence pipeline │ ├── normalizer.py │ ├── enrichment.py │ ├── correlation.py │ ├── mitre_mapper.py │ ├── risk_scoring.py │ ├── alert_generator.py │ ├── analyst_summary.py │ └── incident_manager.py ├── ingestion/ # Log ingestion layer │ ├── log_parser.py │ └── event_ingestor.py ├── detection/ # Detection engine │ └── detection_engine.py ├── storage/ # MongoDB repositories │ ├── database.py │ ├── models.py │ └── repositories.py ├── security/ # OWASP controls │ ├── rate_limiter.py │ ├── validators.py │ └── sanitizers.py ├── visualization/ # Dashboard (Stage 3) │ ├── dashboard.py │ ├── graph_view.py │ ├── cluster_details_panel.py │ ├── pipeline_status.py │ ├── timeline_view.py │ └── templates/ │ └── dashboard.html ├── utils/ # Shared utilities │ ├── logger.py │ └── config.py ├── main.py # FastAPI application ├── demo.py # Stage 1 demo ├── demo_soc.py # Stage 2 demo ├── requirements.txt # Python dependencies ├── .env # Environment variables (create this) ├── .gitignore └── README.md ``` ## 📈 性能 ======= **关键指标**: - 3 个 OSINT 集成(AlienVault、Abuse.ch、OpenPhish) - 4 个具有优化索引的 MongoDB 集合 - 20 个带有完整 OpenAPI 文档的 RESTful API endpoint - 500 多个威胁节点的实时可视化 - 日志接入的亚秒级检测延迟 ## 性能指标 - **收集速度**:来自 OSINT 来源的每分钟约 100 个 IOC - **检测延迟**:每个日志事件 <100ms - **图表渲染**:以 60 FPS 渲染 500+ 个节点 - **数据库查询**:使用索引时 p95 <50ms - **API 响应时间**:p95 <200ms ## 测试 ``` # 运行所有演示 python demo.py # Stage 1: Intelligence python demo_soc.py # Stage 2: SOC Operations # 测试 API curl http://localhost:8000/health ``` ## 故障排除 ### MongoDB 连接失败 ``` # 检查 MongoDB 是否正在运行 mongosh # 启动 MongoDB mongod --dbpath=./data ``` ### 导入错误 ``` # 重新安装依赖 pip install -r requirements.txt --force-reinstall ``` ### 仪表板未加载 ``` # 验证服务器是否正在运行 uvicorn main:app --reload # 检查日志 tail -f logs/app.log ``` ## 环境变量参考 | 变量 | 描述 | 默认值 | 是否必需 | |----------|-------------|---------|----------| | `MONGODB_URI` | MongoDB 连接字符串 | `mongodb://localhost:27017` | 是 | | `DATABASE_NAME` | 数据库名称 | `threat_intel` | 是 | | `ALIENVAULT_API_KEY` | AlienVault OTX API key | - | 否 | | `ABUSEDB_API_KEY` | AbuseIPDB API key | - | 否 | | `LOG_LEVEL` | 日志级别 (DEBUG/INFO/WARNING) | `INFO` | 否 | | `RATE_LIMIT_DEFAULT` | 每分钟请求数 | `60` | 否 | ## 📄 许可证 MIT 许可证 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 致谢 - **MITRE ATT&CK** - 威胁框架 - **AlienVault OTX** - 开放威胁情报 - **Abuse.ch** - 恶意软件跟踪 - **OpenPhish** - 钓鱼数据源 - **D3.js** - 数据可视化 - **FastAPI** - 现代的 Python Web 框架 ## 联系方式 如有问题或需要支持,请在 GitHub 上提交 issue。
标签:AV绕过, FastAPI, MongoDB, Python, 威胁情报, 密码管理, 开发者工具, 无后门, 请求拦截, 逆向工具