alpha-01-cyber/AegisZero-Threat-Intelligence-Platform

GitHub: alpha-01-cyber/AegisZero-Threat-Intelligence-Platform

AegisZero - 实时威胁情报平台,自动化威胁情报分析。

Stars: 1 | Forks: 0

# AegisZero - 实时威胁情报平台 **作者**: Mohid Umer, M Ahsan, M Saim **学号**: 23i-2130, 23i-2117, 23i-2119 **课程**: 网络安全 **机构**: FAST-NUCES Islamabad ## 📋 目录 1. [项目概述](#project-overview) 2. [功能](#features) 3. [技术栈](#technology-stack) 4. [安装与设置](#installation--setup) 5. [项目结构](#project-structure) 6. [API 路由与工作流程](#api-routes--workflows) 7. [前端页面](#frontend-pages) 8. [后端服务](#backend-services) 9. [集成的外部 API](#external-apis-integrated) 10. [使用指南](#usage-guide) ## 🎯 项目概述 AegisZero 是一个高级实时威胁情报平台,它从 10+ 个外部安全 API 中聚合数据,使用真实 STIX 数据自动执行 MITRE ATT&CK 映射,并提供 AI 驱动的威胁分析。该系统具有交互式 3D 地理空间可视化、多格式报告生成(Excel、PDF、Word)以及现代、响应式的用户界面。 **关键问题解决**: 安全分析师需要花费 10-15 分钟手动检查每个 IOC(入侵指标)的多个威胁情报来源。AegisZero 通过自动化整个流程将此时间缩短至 **2 秒以内**。 ## ✨ 功能 ### 核心功能 - **实时威胁情报**: 从 VirusTotal、AbuseIPDB、AlienVault OTX、Shodan 和 6+ 其他 API 中聚合数据 - **自动 MITRE ATT&CK 映射**: 从官方 MITRE STIX 存储库获取 600+ 技巧 - **AI 安全分析师**: 流式 AI 驱动的威胁分析,提供战略建议 - **3D 地球可视化**: 交互式地理空间威胁映射到首都 - **多格式报告**: 导出为 Excel (.xlsx)、PDF (.pdf) 或 Word (.docx) - **实时威胁源**: 每隔 5 秒更新一次实时仪表板 - **加权严重程度评分**: 使用多标准算法防止严重程度膨胀 ### 安全功能 - **Firebase 身份验证**: 安全的用户登录/注册 - **受保护的路由**: 所有页面都需要身份验证 - **API 密钥管理**: 在环境变量中安全存储 - **输入验证**: 使用正则表达式模式检测 IOC 类型 ## 🛠 技术栈 ### 前端 - **框架**: Next.js 16.0.3 (React 19) - **语言**: TypeScript - **样式**: TailwindCSS 4.1.9 - **UI 组件**: ShadCN UI (Radix UI 原语) - **数据获取**: SWR (stale-while-revalidate) - **可视化**: - `react-globe.gl` (3D 地球) - `recharts` (图表) - `react-markdown` (AI 响应) - **导出库**: `xlsx`、`jspdf`、`docx` - `lucide-react`、`tailwindcss` - `firebase` ### 后端 - **框架**: Flask 3.0 (Python) - **HTTP 客户端**: `requests` - **环境**: `python-dotenv` - **CORS**: `flask-cors` ### 身份验证 - **Firebase 身份验证**: 电子邮件/密码登录 ## 📦 安装与设置 ### 先决条件 - **Node.js**: v18+ (用于前端) - **Python**: 3.8+ (用于后端) - **npm**: v9+ (随 Node.js 提供) ### 第 1 步:克隆仓库 ``` cd "d:\Network Security Project" ``` ### 第 2 步:安装前端依赖项 ``` npm install ``` **安装的包**(自动从 `package.json`): - next, react, react-dom - swr, recharts, react-globe.gl - xlsx, jspdf, docx, file-saver - lucide-react, tailwindcss - firebase ### 第 3 步:安装后端依赖项 ``` pip install -r requirements.txt ``` **安装的包**: - Flask - requests - python-dotenv - flask-cors ### 第 4 步:配置环境变量 在项目根目录中创建一个 `.env` 文件: ``` # 必需的API密钥(免费层) OTX_API_KEY=your_alienvault_otx_key VT_API_KEY=your_virustotal_key ABUSEIPDB_API_KEY=your_abuseipdb_key SHODAN_API_KEY=your_shodan_key # 可选 URLSCAN_API_KEY=optional # Flask 设置 FLASK_ENV=development HOST=127.0.0.1 PORT=5000 ``` **如何获取 API 密钥**(所有免费): 1. **AlienVault OTX**: https://otx.alienvault.com/(注册→设置中的 API 密钥) 2. **VirusTotal**: https://www.virustotal.com/(注册→个人资料中的 API 密钥) 3. **AbuseIPDB**: https://www.abuseipdb.com/(注册→账户中的 API 密钥) 4. **Shodan**: https://www.shodan.io/(注册→账户中的 API 密钥) ### 第 5 步:运行应用程序 **终端 1(后端)**: ``` python app.py ``` 后端运行在:`http://localhost:5000` **终端 2(前端)**: ``` npm run dev ``` 前端运行在:`http://localhost:3000` ### 第 6 步:访问应用程序 打开浏览器:`http://localhost:3000` **默认登录**(Firebase): - 通过注册页面创建账户 - 或使用 Firebase 测试凭据 ## 📁 项目结构 ``` d:\Network Security Project\ │ ├── 📄 app.py # Flask entry point, blueprint registration ├── 📄 config.py # Configuration settings ├── 📄 package.json # Frontend dependencies ├── 📄 requirements.txt # Backend dependencies ├── 📄 .env # API keys (DO NOT SUBMIT) ├── 📄 README.md # This file │ ├── 📂 app/ # Next.js pages (Frontend) │ ├── page.tsx # Dashboard (/) │ ├── active-threats/page.tsx # Active Threats page │ ├── ioc-search/page.tsx # IOC Search page │ ├── network-map/page.tsx # 3D Globe Map │ ├── reports/page.tsx # Threat Reports │ ├── ai-insights/page.tsx # AI Analyst │ ├── analytics/page.tsx # Analytics Dashboard │ ├── settings/page.tsx # User Settings │ ├── login/page.tsx # Login page │ └── signup/page.tsx # Signup page │ ├── 📂 components/ # React components │ ├── dashboard/ │ │ ├── LiveThreatFeed.tsx # Real-time threat feed widget │ │ └── dashboard-map.tsx # Dashboard map preview │ ├── reports/ │ │ └── ReportExportModal.tsx # Export modal (Excel/PDF/Word) │ ├── navigation/ │ │ ├── Sidebar.tsx # App sidebar navigation │ │ └── Header.tsx # Top header with user info │ ├── auth/ │ │ └── ProtectedRoute.tsx # Authentication wrapper │ └── layouts/ │ └── DashboardLayout.tsx # Main layout wrapper │ ├── 📂 routes/ # Flask API routes (Backend) │ ├── threats_route.py # Threat endpoints (/api/v1/threats/*) │ ├── mitre_route.py # MITRE ATT&CK endpoints (/api/v1/mitre/*) │ ├── analytics.py # Analytics endpoints (/api/v1/analytics) │ ├── enrich_route.py # IOC enrichment (/api/v1/enrich) │ └── dashboard_routes.py # Dashboard data endpoints │ ├── 📂 services/ # Backend business logic │ ├── enrichment.py # Multi-API orchestration engine │ ├── ingestion.py # IOC type detection │ ├── tld_risk.py # Domain TLD risk scoring │ └── graph_builder.py # Threat graph construction │ ├── 📂 contexts/ # React contexts │ ├── AuthContext.tsx # Firebase auth state │ └── NotificationContext.tsx # Toast notifications │ ├── 📂 lib/ # Utility libraries │ ├── firebase.ts # Firebase configuration │ └── utils.ts # Helper functions │ └── 📂 public/ # Static assets └── logo.png # App logo ``` ## 🔌 API 路由与工作流程 ### 后端路由(Flask) #### 1. **威胁情报路由**(`routes/threats_route.py`) ##### `GET /api/v1/threats/active` **目的**:从 AlienVault OTX 获取活动威胁 **工作流程**: 1. 使用 API 密钥调用 OTX API 2. 获取最新的威胁脉冲 3. 对于每个脉冲,提取 IOCs(IP、域名、哈希) 4. 使用地理数据丰富 IOCs 5. 存储在 `THREAT_HISTORY`(内存中) 6. 返回威胁的 JSON 数组 **前端使用**:仪表板、活动威胁页面 **刷新间隔**:10 秒(通过 `useSWR`) **响应示例**: ``` { "threats": [ { "id": "8.8.8.8", "type": "ip", "severity": "medium", "location": {"city": "Mountain View", "country": "US"}, "timestamp": "2025-11-29T20:00:00Z" } ] } ``` ##### `GET /api/v1/threats/reports?ioc=` **目的**:生成带有 MITRE 映射的详细威胁报告 **工作流程**: 1. 接收 IOC 参数(例如,`8.8.8.8`) 2. 检测 IOC 类型(IP、域名、哈希、URL) 3. 调用 `EnrichmentEngine.enrich_ioc()`: - 并行调用 VirusTotal、AbuseIPDB、Shodan、等 API - 将响应规范化为统一模式 4. 从所有来源收集标签和结论 5. **调用 MITRE API**(`POST /api/v1/mitre/map`): - 将 IOC 类型发送到 MITRE 路由 - 从 STIX 数据接收映射的技术 6. 使用加权评分计算严重程度: - 恶意结论 × 2 - 可疑结论 × 1 - 严重标签(勒索软件、APT)× 3 7. 生成修复建议 8. 返回全面的 JSON 报告 **前端使用**:报告页面 **Python 文件**:`routes/threats_route.py`(第 129-400 行) **响应示例**: ``` { "report": { "ioc": "8.8.8.8", "type": "ip", "severity": "medium", "description": "Google Public DNS", "sources": { "virustotal": {"verdict": "Clean", "threat_count": 0}, "abuseipdb": {"verdict": "Clean", "abuse_score": 0} }, "mitreTactics": [ {"id": "T1071", "name": "Application Layer Protocol", "tactic": "Command and Control"} ], "recommendations": ["Monitor traffic", "Enable logging"] } } ``` #### 2. **MITRE ATT&CK 路由**(`routes/mitre_route.py`) ##### `GET /api/v1/mitre/techniques` **目的**:从官方 STIX 数据获取所有 MITRE 技术 **工作流程**: 1. 检查 1 小时缓存 2. 如果缓存已过期,则从 GitHub 获取: - URL:`https://raw.githubusercontent.com/mitre-attack/attack-stix-data/master/enterprise-attack/enterprise-attack.json` 3. 解析 STIX JSON(600+ 技术) 4. 提取:ID、名称、描述、战术、平台、数据源 5. 缓存 1 小时 6. 返回所有技术 **前端使用**:不直接使用(内部 API) **Python 文件**:`routes/mitre_route.py`(第 16-60 行) ##### `POST /api/v1/mitre/map` **目的**:将 IOC 映射到相关的 MITRE 技术 **请求体**: ``` { "ioc": "8.8.8.8", "type": "ip" } ``` **工作流程**: 1. 根据 IOC 类型生成搜索查询: - IP → ["C2"、"botnet"、"scanning"] - 域名 → ["phishing"、"DNS"、"C2"] - 哈希 → ["malware"、"ransomware"、"trojan"] 2. 在缓存的 MITRE 技术中搜索每个查询 3. 返回最相关的 6 个技术 4. 根据技术数量、高风险战术(执行、持久性)和 IOC 类型严重程度计算风险评分(0-100) 5. 生成缓解措施和检测规则 **前端使用**:在 `threats_route.py` 生成报告时由 `threats_route.py` 调用 **Python 文件**:`routes/mitre_route.py`(第 147-200 行) **响应示例**: ``` { "techniques": [ {"id": "T1071", "name": "Application Layer Protocol", "tactics": ["command-and-control"]} ], "risk_score": 65, "detection_rate": 80, "mitigations": ["Network intrusion detection", "Web proxy filtering"] } ``` #### 3. **IOC 丰富路由**(`routes/enrich_route.py`) ##### `POST /api/v1/enrich` **目的**:丰富单个 IOC 的威胁情报 **请求体**: ``` { "ioc": "malware.com", "type": "domain" } ``` **工作流程**: 1. 使用 `detect_ioc_type()` 验证 IOC 格式 2. 调用 `EnrichmentEngine.enrich_ioc()`: - **对于 IP**:AbuseIPDB、VirusTotal、Shodan、IP-API - **对于域名**:VirusTotal、URLScan、TLD 风险评分器 - **对于哈希**:VirusTotal、ThreatFox 3. 将结果聚合到统一的 JSON 中 4. 返回丰富的数据 **前端使用**:IOC 搜索页面 **Python 文件**:`routes/enrich_route.py` #### 4. **分析路由**(`routes/analytics.py`) ##### `GET /api/v1/analytics` **目的**:提供仪表板指标 **工作流程**: 1. 读取 `THREAT_HISTORY`(内存中的威胁列表) 2. 计算: - 威胁分布按小时(过去 24 小时) - 严重程度分解(严重、高、中、低) - IOC 类型分布(IP、域名、哈希) - 首都的威胁(前 10 名) 3. 返回用于图表的 JSON **前端使用**:分析页面、仪表板 **Python 文件**:`routes/analytics.py` #### 5. **AI 分析路由**(`routes/ai_route.py`) ##### `POST /api/v1/ai/analyze` **目的**:生成 AI 驱动的威胁分析(模拟) **请求体**: ``` { "report": { "ioc": "8.8.8.8", "severity": "medium", "type": "ip" } } ``` **工作流程**: 1. 从报告中提取 IOC、严重程度、类型 2. 生成上下文 markdown 分析: - 执行摘要 - 技术分解 - 战略建议 3. **流式传输响应**(模拟真实 AI): - 状态:"思考"→"流式传输"→"完成" - 每个块是一个 JSON 行 4. 前端实时渲染 markdown **前端使用**:AI 洞察页面 **Python 文件**:`routes/ai_route.py` ### 前端页面(Next.js) #### 1. **仪表板**(`app/page.tsx`) **路由**:`/` **调用的 API**: - `GET /api/v1/threats/active`(活动威胁计数) - `GET /api/v1/threat-map`(地图数据) **组件**: - KPI 卡片(活动威胁、关键风险、系统状态) - `LiveThreatFeed`(滚动威胁列表) - `DashboardMap`(3D 地球预览) **数据流**: ``` User visits / → useSWR fetches /threats/active → Displays threat count → LiveThreatFeed shows latest 10 threats ``` #### 2. **活动威胁**(`app/active-threats/page.tsx`) **路由**:`/active-threats` **调用的 API**: - `GET /api/v1/threats/active` **功能**: - 可筛选的表格(按严重程度、类型) - 可点击的行→导航到 `/reports?ioc=` - 实时更新(10 秒间隔) **数据流**: ``` User visits /active-threats → Fetches threats → Renders table → User clicks row → Redirects to /reports ``` #### 3. **IOC 搜索**(`app/ioc-search/page.tsx`) **路由**:`/ioc-search` **调用的 API**: - `POST /api/v1/enrich`(在搜索提交时) **功能**: - 搜索输入(IP、域名、哈希、URL) - 图表(VirusTotal 检测率、供应商分解) - TLD 风险警告(对于域名) **数据流**: ``` User enters IOC → Clicks Search → POST /enrich → Displays charts → Shows MITRE techniques ``` #### 4. **网络地图**(`app/network-map/page.tsx`) **路由**:`/network-map` **调用的 API**: - `GET /api/v1/threats/active` **功能**: - 3D 地球(`react-globe.gl`) - 将威胁绘制到首都 - 可点击的标记→显示威胁详细信息 **数据流**: ``` User visits /network-map → Fetches threats → Maps to lat/lng → Renders on globe → User clicks marker → Shows popup ``` #### 5. **报告**(`app/reports/page.tsx`) **路由**:`/reports?ioc=` **调用的 API**: - `GET /api/v1/threats/reports?ioc=` **功能**: - MITRE ATT&CK 卡片(战术、技术) - 技术分析(按源分解) - 修复步骤 - **导出按钮**→打开 `ReportExportModal` **数据流**: ``` User visits /reports?ioc=8.8.8.8 → Fetches report → Displays MITRE cards → User clicks Export → Modal opens → Selects format → Downloads file ``` #### 6. **AI 洞察**(`app/ai-insights/page.tsx`) **路由**:`ai-insights?ioc=` **调用的 API**: - `GET /api/v1/threats/reports?ioc=`(获取报告) - `POST /api/v1/ai/analyze`(流式分析) **功能**: - 聊天式界面 - 流式 markdown 响应 - 自动滚动到新内容 **数据流**: ``` User visits /ai-insights?ioc=8.8.8.8 → Fetches report → Sends to AI API → Streams response → Renders markdown ``` ## 🌐 集成的外部 API | API | 目的 | 免费层限制 | 获取的数据 | |-----|---------|-----------------|----------------| | **AlienVault OTX** | 威胁脉冲、IOC 标签 | 无限制 | 脉冲、指标、标签 | | **VirusTotal** | 恶意软件检测 | 4 req/min | 检测率、供应商结论 | | **AbuseIPDB** | IP 声誉 | 1000 req/day | 暴力行为置信度分数、报告 | | **Shodan** | 连接到互联网的设备 | 100 req/month | 开放端口、服务、漏洞 | | **URLScan.io** | 网站分析 | 100 req/day | 截图、DOM、恶意标志 | | **ThreatFox** | 恶意软件 IOC | 无限制 | 威胁类型、恶意软件家族 | | **URLhaus** | 恶意 URL | 无限制 | URL 状态、标签 | | **SSL Blacklist** | 证书吊销 | 无限制 | 黑名单状态 | | **IP-API** | 地理位置信息 | 45 req/min | 城市、国家、经纬度 | | **IPQualityScore** | 代理/VPN 检测 | 5000 req/month | 欺诈分数、代理状态 | ## 📖 使用指南 ### 1. 搜索 IOC 1. 导航到 **IOC 搜索**(`/ioc-search`) 2. 输入 IP、域名、哈希或 URL 3. 点击 **搜索** 4. 查看图表和 MITRE 技术 ### 2. 查看活动威胁 1. 导航到 **活动威胁**(`/active-threats`) 2. 浏览实时威胁表 3. 点击任何行以查看详细报告 ### 3. 生成威胁报告 1. 从活动威胁中点击一个威胁 2. 或导航到 `/reports?ioc=` 3. 查看 MITRE ATT&CK 映射 4. 点击 **导出报告**→选择格式(Excel/PDF/Word) ### 4. 使用 AI 分析 1. 从报告页面点击 **使用 AI 分析** 2. 观看流式 AI 分析 3. 查看战略建议 ### 5. 探索 3D 地图 1. 导航到 **网络地图**(`/network-map`) 2. 旋转地球以查看威胁 3. 点击标记以查看详细信息 ## 🎓 学术背景 该项目是作为 FAST-NUCES Islamabad 的 **网络安全** 课程的一部分开发的。它展示了: - **复杂问题解决**:多 API 集成、实时数据处理 - **安全最佳实践**:身份验证、输入验证、API 密钥管理 - **现代架构**:微服务(Flask + Next.js)、RESTful API - **实际应用**:解决实际的 SOC 分析师工作流程低效问题 **提交内容**: - 源代码(所有 `.py`、`.tsx`、`.ts` 文件) - `package.json` 和 `requirements.txt` - 此 `README.md` - `PROJECT_REPORT.md`(15 页学术报告) ## 👥 团队成员 - **Mohid Umer**(23i-2130)- 后端开发、API 集成 - **M Ahsan**(23i-2117)- 前端开发、UI/UX 设计
标签:自动化攻击, 逆向工具