Ammar-Binaymin/Sentinel-Threat-Intelligence-Platform
GitHub: Ammar-Binaymin/Sentinel-Threat-Intelligence-Platform
Sentinel 是一个 AI 驱动的全栈威胁情报平台,结合机器学习分类、OTX 情报富化与 SOC 案件管理,帮助安全团队自动化分析和跟踪可疑网络活动。
Stars: 0 | Forks: 0
# Sentinel 威胁情报平台
**AI 驱动的威胁分析、情报富化与 SOC 案件管理**
Sentinel 威胁情报平台是一个全栈网络安全系统,能够分析可疑网络活动、对威胁进行分类、利用威胁情报富化指标、评估风险、推荐响应措施,并通过管理员/分析师仪表板管理 SOC 调查案件。
该平台是作为阿卜杜勒阿齐兹国王大学计算与信息技术学院的高年级毕业项目开发的。
## 概述
安全团队每天通常需要处理大量警报和可疑记录。人工筛选可能耗时较长、重复性高且难以确定优先级。
Sentinel 通过结合以下功能来帮助解决这一问题:
* 基于 Machine learning 的威胁分类
* 针对稀疏指标的规则辅助分析
* AlienVault OTX 威胁情报富化
* 风险评分与修复建议
* Supabase 案件存储
* JWT 身份验证
* 管理员与分析师工作流
* 电子邮件警报
* 审计日志与案件历史记录
* 专业的浅色/深色用户界面
## 主要功能
### 威胁分析
Sentinel 可以分析不同类型的可疑记录,包括:
* 网络流
* 公网 IP 指标
* 可疑域名
* 可疑 URL
* DNS 查询
* 分析师手动提交
系统会根据提交数据的质量和类型,决定使用训练好的 ML 模型还是规则辅助的录入逻辑。
### Machine Learning Pipeline
对于完整的网络流记录,Sentinel 使用训练好的 UNSW-NB15 类型 Machine learning pipeline 来:
* 分类恶意与良性活动
* 尽可能预测攻击类型
* 生成置信度数值
* 支持风险评分与分析师决策
### 规则辅助录入
对于 URL、域名、IP 和 DNS 查询等稀疏记录,系统会使用规则辅助分析,而不是强行将不完整的数据输入到 ML 模型中。
这提高了可靠性,并防止在缺失大量 ML 特征时产生不准确的预测。
### 威胁情报富化
Sentinel 集成了 **AlienVault OTX**,通过以下信息对公网指标进行富化:
* 信誉度
* Pulse 数量
* 威胁标签
* 相关的威胁上下文
OTX 富化在 UI、案件详情页、电子邮件警报、导出文件以及案件历史记录中保持一致应用。
### SOC 案件管理
每次成功的分析都会创建一个案件,供 SOC 团队跟踪。
案件包括:
* 判定结论
* 攻击类型
* 风险评分
* 严重程度
* 指标
* 提交的 payload
* 修复建议
* 分配的分析师
* 状态
* 审计追踪
* 调查记录
支持的状态:
* 新建
* 调查中
* 已升级
* 已解决
* 已关闭
* 误报
### 身份验证与角色
系统支持基于 JWT 的身份验证,包含两个主要角色:
#### 管理员
管理员可以:
* 管理用户
* 创建用户
* 编辑用户
* 重置密码
* 停用用户
* 分配案件
* 查看仪表板和审计日志
#### 分析师
分析师可以:
* 查看案件
* 认领分配的工作
* 更新案件状态
* 添加调查记录
* 查看分析结果和建议
密码使用 bcrypt 进行哈希处理。
### 电子邮件警报
检测到威胁时,Sentinel 可以发送 SOC 风格的电子邮件警报,包含:
* 威胁 ID
* 指标
* 判定结论
* 攻击类型
* 风险评分
* 严重程度
* OTX 富化信息
* 解释说明
* 修复建议
* 仪表板案件链接
### 用户界面
前端提供:
* 管理员仪表板
* 分析师仪表板
* 威胁录入与分析页面
* 案件页面
* 案件详情页面
* 报告
* 系统状态
* 用户管理
* 审计日志
* 账户设置
* 浅色/深色模式切换
## 系统工作流
```
Threat Input
↓
Frontend React/Vite UI
↓
Flask Backend API
↓
Input Normalization
↓
ML Model or Rule-Assisted Analysis
↓
OTX Threat Intelligence Enrichment
↓
Risk Scoring
↓
Explanation and Recommended Fixes
↓
Supabase Case Storage
↓
Dashboard, Case Management, Email Alerts
```
## 技术栈
### 前端
* React
* Vite
* JavaScript
* Tailwind CSS / CSS
* Axios
* Lucide React Icons
### 后端
* Python
* Flask
* Scikit-learn
* Pandas
* NumPy
* Supabase
* JWT
* bcrypt
* python-dotenv
### 集成
* AlienVault OTX
* Supabase PostgreSQL
* SMTP 电子邮件警报
## 项目结构
```
Sentinel-Threat-Intelligence-Platform/
│
├── Website/
│ └── React + Vite frontend
│
├── ai_threat_intelligence_model/
│ ├── api/
│ ├── services/
│ ├── src/threat_intel/
│ ├── models/
│ ├── app.py
│ ├── train_with_real_data.py
│ └── requirements.txt
│
├── Datasets/
│ └── Dataset files used for training
│
└── README.md
```
## 环境变量
真实的机密文件不应上传到 GitHub。
请使用 `.env.template` 作为示例,然后在自己的机器上创建本地 `.env` 文件。
### 后端 `.env`
位于:
```
ai_threat_intelligence_model/.env
```
必填值:
```
DB_BACKEND=supabase
SUPABASE_URL=
SUPABASE_SERVICE_ROLE_KEY=
JWT_SECRET=
JWT_EXPIRES_HOURS=8
OTX_API_KEY=
EMAIL_USER=
EMAIL_PASSWORD=
ALERT_EMAIL_TO=
DASHBOARD_BASE_URL=http://localhost:5173
```
### 前端 `.env`
位于:
```
Website/.env
```
必填值:
```
VITE_API_URL=http://127.0.0.1:5000
VITE_API_TIMEOUT=20000
VITE_USE_MOCK=false
```
## 运行后端
从项目根目录开始:
```
cd ai_threat_intelligence_model
```
创建并激活虚拟环境:
```
python -m venv .venv
```
Windows PowerShell:
```
.\.venv\Scripts\activate
```
安装依赖项:
```
pip install -r requirements.txt
```
创建本地环境文件:
```
Copy-Item .env.template .env
```
在 `.env` 中填入真实的后端值。
启动后端:
```
python app.py
```
后端运行于:
```
http://127.0.0.1:5000
```
健康检查:
```
http://127.0.0.1:5000/api/health
```
## 运行前端
打开第二个终端:
```
cd Website
```
安装依赖项:
```
npm install
```
创建本地环境文件:
```
Copy-Item .env.template .env
```
确保前端 `.env` 包含:
```
VITE_API_URL=http://127.0.0.1:5000
VITE_USE_MOCK=false
```
启动前端:
```
npm run dev
```
前端运行于:
```
http://localhost:5173
```
## 训练模型
从后端文件夹开始:
```
cd ai_threat_intelligence_model
```
激活虚拟环境,然后运行:
```
python train_with_real_data.py
```
训练过程将加载数据集、准备特征、训练分类器、评估模型,并保存模型产物以供运行时使用。
## 主要 API Endpoints
| Endpoint | Method | 用途 |
| -------------------------- | ------------ | ---------------------------------------------- |
| `/api/health` | GET | 检查后端、数据库、模型和 OTX 状态 |
| `/api/analyze` | POST | 分析可疑记录 |
| `/api/threats` | GET | 列出威胁案件 |
| `/api/threats/` | GET | 获取案件详情 |
| `/api/threats/` | PATCH | 更新案件状态 |
| `/api/threats//assign` | PATCH | 分配或取消分配案件 |
| `/api/threats//events` | GET | 获取案件历史记录 |
| `/api/stats` | GET | 获取仪表板统计信息 |
| `/api/auth/login` | POST | 用户登录 |
| `/api/users` | GET/POST | 列出或创建用户 |
| `/api/users/` | PATCH/DELETE | 更新或停用用户 |
## 演示流程
一个简单的演示流程:
1. 以管理员身份登录。
2. 展示管理员仪表板。
3. 打开威胁录入与分析。
4. 提交一个可疑的网络流样本。
5. 展示 ML/规则路由决策。
6. 展示判定结论、攻击类型、风险评分和严重程度。
7. 展示 OTX 富化信息。
8. 打开创建的案件。
9. 将案件分配给分析师。
10. 更改案件状态。
11. 添加调查记录。
12. 展示审计追踪和案件历史记录。
13. 展示电子邮件警报。
14. 在浅色和深色模式之间切换。
## 分析 Payload 示例
```
{
"source": "manual_demo",
"input_type": "network_flow",
"features": {
"src_ip": "192.168.1.10",
"dst_ip": "185.220.101.1",
"dst_port": 4444,
"protocol": "TCP",
"flow_duration": 12000,
"packets": 500,
"bytes_in": 3000,
"bytes_out": 5000
}
}
```
## 安全注意事项
重要的安全规则:
* 请勿上传 `.env` 文件。
* 请勿暴露 Supabase 服务角色密钥。
* 请勿暴露 JWT 密钥。
* 请勿暴露电子邮件凭据。
* 请勿暴露 OTX API 密钥。
* `.env.template` 仅用于安全的示例变量。
* 如果之前已提交过真实机密信息,请立即对其进行轮换。
## 当前状态
已实现:
* 全栈前端和后端
* Supabase 数据库集成
* JWT 身份验证
* 管理员与分析师角色
* 用户管理
* 案件分配
* ML 威胁分类
* 规则辅助录入分析
* OTX 富化
* 风险评分
* 修复建议
* 电子邮件警报
* 审计日志
* 案件历史时间轴
* 浅色/深色模式
* 专业的仪表板 UI
## 未来工作
可能的改进:
* 实时威胁流摄取
* SIEM 日志摄取
* Firewall/IDS 警报复制
* CSV 批量导入
* 更多攻击类别
* 模型重训仪表板
* 高级报告导出
* 生产部署强化
## 团队
* Ali Binyamin
* Ammar Binyamin
* Abdulaziz Alzahrani
指导教师:
* Badraddin Alturki
计算与信息技术学院
阿卜杜勒阿齐兹国王大学
标签:Apex, IP 地址批量处理, Supabase, 威胁分析, 威胁情报, 安全运营中心, 开发者工具, 数据可视化, 机器学习, 测试用例, 网络映射, 自动化侦查工具, 逆向工具