mguruprasath416/Threat-Intelligence

GitHub: mguruprasath416/Threat-Intelligence

面向安全运营团队的威胁情报仪表板,支持多源 IOC 自动丰富、威胁评分和 MITRE ATT&CK 映射。

Stars: 1 | Forks: 0

# 🛡️ IOC Sentinel — 威胁情报仪表板 **一个专为 SOC 分析师和 CTI 团队设计的全栈网络威胁情报平台。** 自动丰富 IOC,映射 MITRE ATT&CK 技术,并实时可视化威胁。 [功能](#-features) • [技术栈](#️-tech-stack) • [安装说明](#-setup) • [API](#-api-endpoints) • [项目结构](#-project-structure) • [工作原理](#-how-it-works) ## 📌 什么是 IOC Sentinel? IOC Sentinel 是一个**威胁情报 IOC 仪表板**,可帮助 SOC 分析师和 CTI 团队: - **搜索并丰富**入侵指标(IP、域名、URL、文件哈希) - 在一处**关联**来自多个来源的威胁数据 - **自动映射**威胁到 MITRE ATT&CK 技术 - 从 OpenPhish 等来源**监控实时威胁源** - 为事件记录**生成报告** 作为一个**作品集项目**构建,展示了真实的网络威胁情报工作流程。 ## ✨ 功能 ### 🔍 IOC 搜索与丰富 - 支持 **IP 地址、域名、URL、文件哈希 (MD5/SHA1/SHA256)** - 自动检测 IOC 类型 —— 只需粘贴并搜索 - 同时从 **3 个威胁情报 API** 获取数据进行丰富 - 结果缓存 24 小时以保留 API 配额 ### 📊 威胁情报来源 | 来源 | 提供的数据 | |--------|--------------| | **VirusTotal** | 90+ 引擎检测、信誉评分、地理数据 | | **AbuseIPDB** | 滥用置信度评分、报告数量、ISP、Tor 检测 | | **AlienVault OTX** | 威胁 pulse、攻击活动关联、被动 DNS | | **OpenPhish** | 实时钓鱼 URL 源(每 6 小时自动刷新) | ### 🎯 威胁评分引擎 - 加权评分算法:**VT (40%) + AbuseIPDB (40%) + OTX (20%)** - 标准化 0–100 分数 → 严重性分类: - 🟢 **低危** (0–25) - 🟡 **中危** (26–50) - 🟠 **高危** (51–75) - 🔴 **严重** (76–100) ### 🗺️ MITRE ATT&CK 自动映射 自动将 IOC 特征映射到 MITRE 技术: - `T1566` — 钓鱼 (初始访问) - `T1110` — 暴力破解 (凭证访问) - `T1071` — C2 通信 - `T1486` — 数据加密以造成影响 (勒索软件) - `T1555` — 来自密码存储的凭证 ### 📈 实时仪表板 - KPI 卡片:IOC 总数、严重、高危、中危计数 - 严重性分布甜甜圈图 - IOC 类型细分饼图 - 30 天 IOC 趋势折线图 - 头部威胁国家柱状图 - 来自威胁情报的标签云 ### 📡 实时威胁源 - 每 30 秒自动刷新 - 实时滚动跑马灯显示严重/高危威胁 - 按来源过滤 (OpenPhish、手动、API 丰富) - 新 IOC 计数器(过去 1 小时、过去 24 小时) ### 📋 分析师报告 - 创建捆绑多个 IOC 的调查报告 - 草稿 → 发布的工作流程 - 自动计算的汇总统计 - 分析师的发现与建议 ### 🔐 认证与访问控制 - 基于 JWT 的认证 - 基于角色的访问:**Admin** 和 **Analyst** 角色 - 第一个注册的用户自动获得 Admin 角色 - 速率限制:常规 100 请求/15分钟,认证 10 请求/15分钟,IOC 搜索 30 请求/10分钟 ## 🛠️ 技术栈 ### 前端 | 技术 | 用途 | |-----------|---------| | React 18 | UI 框架 | | React Router v6 | 客户端路由 | | Recharts | 数据可视化 (图表) | | Axios | 带拦截器的 HTTP 客户端 | | Vite | 构建工具和开发服务器 | | CSS 变量 | 暗色网络行动主题 | ### 后端 | 技术 | 用途 | |-----------|---------| | Node.js + Express | REST API 服务器 | | MongoDB + Mongoose | 数据库和 ODM | | JWT + bcryptjs | 认证和密码哈希 | | Winston | 结构化日志记录 | | node-cron | 定时源获取 | | Helmet + CORS | 安全中间件 | | express-rate-limit | API 速率限制 | ### 外部 API | API | 免费额度 | |----|----------| | VirusTotal | 4 请求/分钟, 500/天 | | AbuseIPDB | 1,000 请求/天 | | AlienVault OTX | 宽裕的免费额度 | | OpenPhish | 公共源,无需密钥 | ## 🚀 安装说明 ### 前置条件 - Node.js 18+ - MongoDB (本地或 Atlas) - npm 或 yarn ### 1. 克隆代码库 ``` git clone https://github.com/yourusername/ioc-sentinel.git cd ioc-sentinel ``` ### 2. 后端配置 ``` cd server npm install ``` 创建 `server/.env`: ``` PORT=5000 NODE_ENV=development MONGO_URI=mongodb://localhost:27017/ioc_dashboard JWT_SECRET=your_super_secret_jwt_key_here JWT_EXPIRE=7d VT_API_KEY=your_virustotal_api_key ABUSEIPDB_API_KEY=your_abuseipdb_api_key OTX_API_KEY=your_otx_api_key CLIENT_URL=http://localhost:5173 LOG_LEVEL=info IOC_STALE_DAYS=90 ``` 启动后端: ``` npm run dev ``` ### 3. 前端配置 ``` cd client npm install npm run dev ``` ### 4. 在浏览器中打开 ``` http://localhost:5173 ``` 注册账号并开始分析威胁。 ## 🔑 获取免费 API 密钥 | 服务 | 注册链接 | 免费限制 | |---------|------------------|-----------| | VirusTotal | https://www.virustotal.com/gui/join-us | 500/天 | | AbuseIPDB | https://www.abuseipdb.com/register | 1,000/天 | | AlienVault OTX | https://otx.alienvault.com | 无限 | ## 📡 API Endpoint ### 认证 ``` POST /api/auth/register Create new account POST /api/auth/login Login and receive JWT GET /api/auth/me Get current user profile POST /api/auth/logout Logout PUT /api/auth/password Change password ``` ### IOC 操作 ``` POST /api/ioc/search Search and enrich an IOC GET /api/ioc/stats Dashboard aggregated statistics GET /api/ioc List IOCs (paginated, filterable) GET /api/ioc/:id Get single IOC details DELETE /api/ioc/:id Archive IOC (admin only) PATCH /api/ioc/:id/flag Toggle false positive flag ``` ### 报告 ``` POST /api/reports Create new report GET /api/reports List all reports GET /api/reports/:id Get single report with IOC details PUT /api/reports/:id Update report POST /api/reports/:id/publish Publish a draft report DELETE /api/reports/:id Delete report (admin only) ``` ### 健康检查 ``` GET /health Server health check ``` ## 📁 项目结构 ``` ioc-sentinel/ │ ├── client/ # React Frontend │ ├── src/ │ │ ├── api/ │ │ │ └── axios.js # Pre-configured axios with JWT │ │ ├── components/ │ │ │ ├── Navbar/ # Top navigation bar │ │ │ ├── Sidebar/ # Left navigation sidebar │ │ │ ├── IOCSearch/ # Search bar with auto type detection │ │ │ ├── ThreatCard/ # Enrichment result display card │ │ │ ├── ThreatTable/ # Sortable paginated IOC table │ │ │ ├── Charts/ # Recharts visualizations │ │ │ ├── Loader/ # Loading spinner │ │ │ └── Alerts/ # Toast notifications │ │ ├── context/ │ │ │ ├── AuthContext.jsx # JWT and user session state │ │ │ └── IOCContext.jsx # IOC search and list state │ │ ├── pages/ │ │ │ ├── Dashboard.jsx # Main dashboard with charts │ │ │ ├── IOCSearch.jsx # Search + results + IOC table │ │ │ ├── IOCDetails.jsx # Single IOC full detail view │ │ │ ├── ThreatFeed.jsx # Live auto-refreshing threat feed │ │ │ ├── Reports.jsx # Analyst report management │ │ │ └── Login.jsx # Authentication page │ │ ├── routes/ │ │ │ └── AppRoutes.jsx # Protected route definitions │ │ ├── utils/ │ │ │ └── formatDate.js # Date, severity, validation helpers │ │ └── styles/ │ │ └── globals.css # Dark cyber-ops design system │ └── package.json │ └── server/ # Node.js Backend ├── config/ │ ├── db.js # MongoDB connection │ └── apiKeys.js # API key configuration ├── controllers/ │ ├── iocController.js # IOC search, list, stats logic │ ├── authController.js # Login, register, JWT handling │ └── reportController.js # Report CRUD operations ├── middleware/ │ ├── authMiddleware.js # JWT verification + RBAC │ ├── errorMiddleware.js # Global error handler │ └── rateLimitMiddleware.js # Rate limiting per endpoint ├── models/ │ ├── IOC.js # IOC MongoDB schema │ ├── User.js # User schema with bcrypt hooks │ └── Report.js # Analyst report schema ├── routes/ │ ├── iocRoutes.js # IOC endpoint routing │ ├── authRoutes.js # Auth endpoint routing │ └── reportRoutes.js # Report endpoint routing ├── services/ │ ├── virustotalService.js # VirusTotal API integration │ ├── abuseipdbService.js # AbuseIPDB API integration │ ├── otxService.js # AlienVault OTX integration │ ├── openphishService.js # OpenPhish feed with cache │ └── enrichmentService.js # Orchestrates all API calls ├── utils/ │ ├── threatScore.js # Weighted scoring algorithm │ ├── mitreMapper.js # MITRE ATT&CK auto-mapping │ ├── iocValidator.js # IOC type detection and validation │ └── logger.js # Winston structured logging ├── jobs/ │ └── fetchThreatFeeds.js # Cron: OpenPhish every 6 hours ├── app.js # Express app configuration └── server.js # Entry point ``` ## 🔄 工作原理 ``` User types: 185.220.101.45 ↓ Frontend auto-detects type → IP Address ↓ POST /api/ioc/search ↓ authMiddleware verifies JWT token ↓ iocController checks MongoDB cache (less than 24h old) ↓ (cache miss — fresh enrichment needed) enrichmentService calls APIs in parallel: ├── VirusTotal → 45 out of 92 engines flagged ├── AbuseIPDB → 87% abuse confidence score └── OTX → 12 threat pulses found ↓ threatScore.js calculates weighted score → 70 → HIGH severity ↓ mitreMapper.js assigns → T1110 Brute Force, T1071 C2 Communication ↓ Result saved to MongoDB for caching ↓ ThreatCard.jsx displays full enrichment result ``` ## 🧠 展示的核心概念 | 概念 | 实现 | |---------|---------------| | 威胁情报流水线 | 收集 → 丰富 → 评分 → 可视化 | | IOC 丰富 | 多源 API 关联 | | MITRE ATT&CK 映射 | 从 IOC 数据自动识别 TTP | | 严重性分类 | 加权评分算法 (0–100) | | 缓存策略 | 24小时 MongoDB 缓存以保留 API 配额 | | JWT 认证 | 无状态的基于 token 的会话管理 | | 基于角色的访问控制 | Admin 与 Analyst 权限 | | 速率限制 | 保护外部 API 配额免受滥用 | | 后台任务 | 通过 cron 自动获取 OpenPhish 源 | | REST API 设计 | 具有正确 HTTP 方法的 RESTful endpoint | ## 🛡️ 安全特性 - 使用 bcrypt 进行密码哈希 (12 轮盐) - 带有可配置过期的 JWT token - 通过 Helmet.js 实现 HTTP 安全头 - 仅为特定来源配置 CORS - 所有 API endpoint 均启用速率限制 - 对所有 IOC 提交进行输入验证 - 软删除 —— IOC 被归档而不是永久删除 - 环境变量 —— 无硬编码的机密信息 ## 🗺️ 映射的 MITRE ATT&CK 技术 | 技术 ID | 名称 | 战术 | |-------------|------|--------| | T1566 | 钓鱼 | 初始访问 | | T1566.001 | 鱼叉式钓鱼附件 | 初始访问 | | T1566.002 | 鱼叉式钓鱼链接 | 初始访问 | | T1071 | 应用层协议 | 命令与控制 | | T1110 | 暴力破解 | 凭证访问 | | T1555 | 来自密码存储的凭证 | 凭证访问 | | T1486 | 数据加密以造成影响 | 影响 | | T1041 | 通过 C2 通道外发 | 外发 | | T1046 | 网络服务扫描 | 发现 | | T1204.002 | 恶意文件 | 执行 | | T1078 | 有效账户 | 防御规避 | | T1589 | 收集受害者身份信息 | 侦察 | ## 🚧 路线图 - [ ] 针对严重 IOC 的实时 WebSocket 警报 - [ ] Telegram 频道监控集成 - [ ] SIEM 集成 (Splunk, Microsoft Sentinel) - [ ] 用于基础设施分析的 Shodan API - [ ] PDF 报告导出 - [ ] 针对新严重 IOC 的电子邮件警报 - [ ] 用于威胁分析的 AI 驱动的 RAG 聊天机器人 - [ ] 从 IOC 生成 Sigma 规则 - [ ] 暗网监控模块 - [ ] CSV 和 JSON IOC 导出 ## 🤝 使用场景 | 角色 | 使用方式 | |------|----------------| | **SOC 分析师** | 在事件期间快速调查可疑的 IP 和域名 | | **CTI 分析师** | 跟踪新出现的威胁并从多个来源丰富指标 | | **安全工程师** | 监控威胁源并与现有 SIEM 集成 | | **安全研究员** | 分析恶意软件基础设施和威胁行为者的 TTP | ## 📄 许可证 MIT 许可证 — 免费用于个人和教育项目。 ## 👤 作者 **Guru Prasath** 网络安全 | 威胁情报 | SOC 运营 - LinkedIn: https://linkedin.com/in/yourprofile - GitHub: https://github.com/yourusername
标签:MITM代理, 威胁情报, 安全运营, 开发者工具, 扫描框架, 自定义脚本