atharvbyadav/SentinelX
GitHub: atharvbyadav/SentinelX
基于 Streamlit 和 scikit-learn 构建的 SOC 威胁情报仪表板,集实时攻击模拟、异常检测与财务损失预测于一体。
Stars: 0 | Forks: 0
# 🛡️ SentinelX
### 企业级网络威胁情报平台
[](https://sentinelx.streamlit.app/)
[](https://github.com/atharvbyadav/SentinelX)
[](https://python.org)
[](https://streamlit.io)
[](https://scikit-learn.org)
[](LICENSE)
*一个实时、基于 ML 的安全运营中心 (SOC) 仪表板,用于监控、分析和预测全球网络威胁 —— 使用 Streamlit、scikit-learn 和 Plotly 构建。*
## 📌 目录
- [概述](#-overview)
- [在线演示](#-live-demo)
- [核心功能](#-key-features)
- [技术栈](#-tech-stack)
- [架构](#-architecture)
- [截图](#-screenshots)
- [快速上手](#-getting-started)
- [前置条件](#prerequisites)
- [安装](#installation)
- [本地运行](#running-locally)
- [项目结构](#-project-structure)
- [工作原理](#-how-it-works)
- [实时威胁源](#live-threat-feed)
- [严重性评分引擎](#severity-scoring-engine)
- [异常检测](#anomaly-detection)
- [ML 预测模型](#ml-prediction-model)
- [数据集](#-dataset)
- [配置](#-configuration)
- [路线图](#-roadmap)
- [贡献](#-contributing)
- [作者](#-author)
- [许可证](#-license)
## 🔍 概述
**SentinelX** 是一个全栈、企业级的**网络威胁情报 (CTI) 平台**,模拟了真实世界的安全运营中心 (SOC)。它将实时威胁模拟、基于机器学习的异常检测和财务影响预测结合到一个交互式仪表板中。
SentinelX 旨在模拟安全分析师使用的工具类型,提供:
- **实时**攻击事件模拟,每 5 秒自动刷新
- 基于隔离森林 **(Isolation Forest)** 的 **ML 驱动**异常检测
- 通过随机森林回归 **(Random Forest Regression)** 进行财务损失估算的**预测分析**
- 跨模拟企业环境的**多租户**支持
- 通过交互式 Plotly 图表和实时全球威胁地图提供**丰富的可视化情报**
无论您是网络安全爱好者、数据科学家,还是探索安全领域应用 ML 的开发者,SentinelX 都展示了现代威胁情报平台是如何构建的。
## 🚀 在线演示
该在线应用已完全部署在 Streamlit Community Cloud 上。无需登录。仪表板每 5 秒自动刷新一次,模拟活跃的威胁源。
## ✨ 核心功能
### 🔴 实时威胁模拟
- 每 5 秒自动生成实时网络攻击事件
- 跨国家、行业、攻击类型和载体模拟攻击
- 由有状态的基于会话的数据引擎驱动(无需外部 API)
### 📊 实时 KPI 仪表板
- **总事件数** — 所有模拟攻击事件的运行计数
- **严重警报** — 超过严重阈值的事件
- **检测到的异常** — 威胁源中被 ML 标记的离群值
- **总财务损失** — 累计财务影响(百万美元)
- **活跃租户** — 当前选定的企业租户上下文
### 🌍 全球威胁地图
- 交互式 `scatter_geo` 地图,按国家显示攻击来源
- 气泡大小随财务影响缩放
- 按严重性级别进行颜色编码(低 → 严重)
### 📈 财务影响时间线
- 随时间跟踪财务损失的实时折线图
- 按严重性分段,以便清晰的视觉分类
- 随着每个新模拟事件自动更新
### 🏭 行业与板块分析
- 显示各目标行业累计财务损失的条形图
- 涵盖金融、医疗保健、政府、零售和技术行业
### 🔥 严重性分布
- 显示低 / 中 / 高 / 严重警报比例的饼图
- 随着新事件的流入动态重新计算
### 🧬 攻击载体细分
- 可视化哪些攻击入口(电子邮件、Web 漏洞利用、内部人员、远程访问)造成最大的财务损失
### ⚡ SOC 风险仪表
- 基于严重事件数量的动态风险评分仪表
- 为当前会话提供一目了然的态势感知
### 🤖 基于 ML 的财务损失预测器
- 在历史网络攻击数据 (`cyber_attacks.csv`) 上训练的 **Random Forest Regressor**
- 给定以下输入预测估计的财务损失(百万美元):
- 年份、国家、攻击类型、行业、攻击载体
- 模型通过 `joblib` 持久化 —— 训练一次,后续运行重新加载
- 输入采用独热编码 (one-hot encoded),并保持列对齐以防止漂移
### 🚨 异常检测引擎
- **Isolation Forest** (污染率=5%) 应用于实时财务和泄露数据
- 标记超出预期分布的统计异常事件
- 异常计数直接显示在 KPI 行中
### 🏢 多租户支持
- 可切换的租户上下文:Global Corp、FinBank Ltd、GovSecure、HealthX
- 模拟服务于多个业务部门的企业 SOC 平台
## 🛠 技术栈
| 层级 | 技术 |
|---| |
| **前端 / UI** | [Streamlit](https://streamlit.io/) |
| **数据处理** | [Pandas](https://pandas.pydata.org/), [NumPy](https://numpy.org/) |
| **可视化** | [Plotly Express](https://plotly.com/python/plotly-express/), [Plotly Graph Objects](https://plotly.com/python/) |
| **机器学习** | [scikit-learn](https://scikit-learn.org/) — Random Forest, Isolation Forest |
| **模型持久化** | [joblib](https://joblib.readthedocs.io/) |
| **虚假数据生成** | [Faker](https://faker.readthedocs.io/) |
| **部署** | [Streamlit Community Cloud](https://streamlit.io/cloud) |
| **语言** | Python 3.9+ |
## 🏗 架构
```
SentinelX/
│
├── Live Threat Engine ← Session-state driven attack generator (Faker + random)
│ ↓
├── Severity Scoring ← Rule-based classifier (Financial Loss + Records Breached)
│ ↓
├── Anomaly Detection ← Isolation Forest (sklearn) on live numeric features
│ ↓
├── Dashboard Layer ← Streamlit UI with Plotly charts, KPIs, Gauge, Map
│ ↓
└── ML Prediction Module ← Random Forest Regressor trained on cyber_attacks.csv
↓
model.pkl / model_columns.pkl ← Persisted via joblib
```
**数据流:**
1. 在每个渲染周期(或 5 秒自动刷新)中,会生成一个新的攻击事件并追加到 `st.session_state.live_data`
2. 重新计算整个数据框的严重性和异常分数
3. 所有图表和 KPI 使用更新后的数据重新渲染
4. ML 预测部分独立于稳定的 `cyber_attacks.csv` 数据集运行
## 📸 截图
| 全球威胁地图 + 时间线 | 行业影响 + 严重性 |
|---| |
| *(带有攻击气泡的实时地理地图)* | *(条形图 + 严重性饼图)* |
| SOC 风险仪表 | ML 损失预测器 |
|---| |
| *(动态风险评分仪表)* | *(Random Forest 预测表单)* |
## 🚀 快速上手
### 前置条件
- Python **3.9+**
- `pip` (或 `conda`)
- Git
### 安装
```
# 1. Clone 仓库
git clone https://github.com/atharvbyadav/SentinelX.git
cd SentinelX
# 2. (推荐) 创建 virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
```
### 本地运行
```
streamlit run app.py
```
应用将在浏览器中通过 `http://localhost:8501` 打开。
## 📁 项目结构
```
SentinelX/
├── app.py # Main Streamlit application (all logic + UI)
├── cyber_attacks.csv # Historical cyber attack dataset for ML training
├── model.pkl # Persisted Random Forest model (auto-generated)
├── model_columns.pkl # Saved model column schema (auto-generated)
├── requirements.txt # Python dependencies
└── README.md # Project documentation
```
## ⚙️ 工作原理
### 实时威胁源
`generate_live_attack()` 函数在每个刷新周期使用 Python 的 `random` 模块和 `Faker` 创建一个合成攻击事件。每个事件包含:
- **时间戳** — 当前日期时间
- **国家** — 6 个模拟来源国家之一
- **攻击类型 (Attack_Type)** — 勒索软件、DDoS、网络钓鱼 或 零日漏洞利用
- **行业** — 目标板块(金融、医疗保健、政府、零售、技术)
- **攻击载体 (Attack_Vector)** — 入侵方式(电子邮件、Web 漏洞利用、内部人员、远程访问)
- **财务损失 (Financial_Loss)** — 100 万至 5 亿美元之间的随机浮点数
- **泄露记录数 (Records_Breached)** — 50 万至 5000 万条记录之间的随机浮点数
所有事件都存储在 `st.session_state.live_data` 中,因此历史记录在会话内的重新渲染之间持久存在。
### 严重性评分引擎
每个事件都使用加权公式进行评分:
```
score = (Financial_Loss × 0.6) + (Records_Breached × 2)
# 阈值:
# 分数 > 300 → Critical
# 分数 > 150 → High
# 分数 > 50 → Medium
# 否则 → Low
```
这反映了现实世界的 SOC 分类逻辑,其中财务风险和泄露规模都被计入威胁严重性。
### 异常检测
**Isolation Forest** 模型 (`contamination=0.05`) 实时应用于实时源的 `Financial_Loss` 和 `Records_Breached` 列:
```
iso = IsolationForest(contamination=0.05, random_state=42)
df["Anomaly"] = iso.fit_predict(df[["Financial_Loss", "Records_Breached"]])
# -1 = anomaly,1 = normal
```
异常计数显示在 KPI 行中,为分析师提供当前会话中统计离群值的快速计数。
### ML 预测模型
预测模块在包含历史攻击数据的 `cyber_attacks.csv` 上训练一个 **Random Forest Regressor**。目标变量是 `Financial_Loss_Million`。
分类特征(国家、攻击类型、行业、攻击载体)经过独热编码。训练好的模型和特征列模式通过 `joblib` 保存,防止在每次页面加载时重新训练:
```
if not os.path.exists("model.pkl"):
model = RandomForestRegressor(random_state=42)
model.fit(X, y)
joblib.dump(model, "model.pkl")
joblib.dump(X.columns.tolist(), "model_columns.pkl")
```
在预测时,用户输入被编码并与保存的模式进行列对齐,以确保特征空间一致:
```
input_encoded = input_encoded.reindex(columns=model_columns, fill_value=0)
prediction = model.predict(input_encoded)[0]
```
## 📂 数据集
**`cyber_attacks.csv`** 是 ML 预测器的核心训练数据集。它包含具有以下模式的历史网络攻击记录:
| 列名 | 类型 | 描述 |
|---|---| |
| `Year` | int | 攻击年份 |
| `Country` | str | 来源/目标国家 |
| `Attack_Type` | str | 网络攻击类型 |
| `Industry` | str | 目标行业板块 |
| `Financial_Loss_Million` | float | 财务影响(百万美元)*(目标)* |
| `Records_Breached_Million` | float | 泄露的记录数(百万) |
| `Attack_Vector` | str | 攻击入侵方式 |
## 🔧 配置
侧边栏提供运行时控制:
| 控制 | 描述 |
|---| |
| **启用实时自动刷新 (5秒)** | 切换每 5 秒自动重新渲染 |
| **选择租户** | 在企业租户上下文之间切换 |
要禁用自动刷新(例如,用于静态分析),只需取消选中侧边栏切换开关。
## 🗺 路线图
- [ ] **真实威胁情报集成** — 连接到公共 CTI 源(例如 MISP、AlienVault OTX)
- [ ] **用户身份验证** — 每个租户的登录和访问控制
- [ ] **警报导出** — 生成用于事件报告的 CSV / PDF 报告
- [ ] **地理位置丰富** — 基于 IP 的地理映射,用于真实的来源跟踪
- [ ] **攻击分类模型** — 从行为信号预测攻击类型
- [ ] **暗网监控模块** — 模拟数据泄露检测源
- [ ] **历史回放模式** — 重放会话的威胁时间线
- [ ] **Slack / Teams 警报** — 用于严重警报通知的 Webhook 集成
- [ ] **Docker 化** — 用于本地 SOC 环境的容器部署
## 🤝 贡献
欢迎贡献、问题和功能请求!
```
# 1. Fork 仓库
# 2. 创建 feature branch
git checkout -b feature/your-feature-name
# 3. 提交更改
git commit -m "feat: add your feature"
# 4. Push 到 branch
git push origin feature/your-feature-name
# 5. 开启 Pull Request
```
请确保适当地更新测试和文档。
## 👤 作者
**Atharv Yadav**
[](https://github.com/atharvbyadav)
## 📄 许可证
该项目根据 **MIT License** 授权 —— 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
⭐ **如果您觉得这个项目有用,请考虑给它一个 Star!** ⭐
标签:Apex, HTTP/HTTPS抓包, IP 地址批量处理, Kubernetes, Plotly, Python, Scikit-learn, SOC仪表盘, Streamlit, TCP/IP协议栈, 交互式图表, 企业安全, 多租户监控, 威胁情报, 孤立森林, 安全大数据, 安全运营中心, 开发者工具, 异常检测, 态势感知, 损失预测, 插件系统, 攻击模拟, 无后门, 机器学习, 网络安全, 网络安全平台, 网络映射, 网络资产管理, 访问控制, 逆向工具, 配置错误, 防御绕过, 随机森林, 隐私保护, 风险分析, 驱动签名利用