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 设计
标签:自动化攻击, 逆向工具