Dr-Venom29/ZeroShield
GitHub: Dr-Venom29/ZeroShield
基于 IsolationForest 的 AI 驱动零日威胁检测演示系统,通过 React 仪表盘实时可视化云工作负载异常检测、威胁传播建模与自适应隔离响应全链路。
Stars: 2 | Forks: 2
## ZeroShield
由 AI 驱动的零日漏洞**检测、传播分析与自适应响应**演示。
ZeroShield 将来自 Python 后端的实时云工作负载遥测数据流式传输到 React 仪表盘,使用 IsolationForest 模型对其进行评分,模拟结构化攻击,在小型服务图中建模爆炸半径,并实时可视化具有传播感知能力的自动响应决策。
## 项目结构
```
ZeroShield/
├── backend/ # Python API, anomaly model, threat graph, and response engine
│ ├── app.py # Flask + Socket.IO backend, propagation model, STRIDE + DREAD, isolation logic
│ ├── collector.py # Collects real baseline telemetry into baseline.csv
│ ├── train_model.py # Trains IsolationForest on baseline.csv and saves model.pkl
│ └── model.pkl # Trained model artifact (generated)
├── simulator/ # Attack traffic generator (Phase B–E simulator)
│ └── attack_sim.py # Generates typed, severity-aware attacks from baseline.csv
├── data/
│ └── baseline.csv # Baseline workload telemetry (collected via collector.py)
├── frontend/
│ └── zeroshield-ui/ # React + Vite dashboard
├── requirements.txt # Python dependencies
└── README.md
```
## 核心功能
- **实时威胁评分**
- 通过 WebSocket 流式传输模型生成的异常分数(0-100)。
- 颜色编码的风险等级:NORMAL / LOW / MEDIUM / HIGH。
- 使用动态阈值(mean − C·std)而非固定的分数截断值。
- **攻击模拟器(类型化 + 严重性感知)**
- `simulator/attack_sim.py` 基于 `baseline.csv` 生成逼真的攻击遥测数据。
- 攻击类型:`CPU_SPIKE`、`AUTH_FLOOD`、`MEM_EXHAUSTION`、`SLOWDOWN`。
- 严重级别:`mild`(轻微)、`moderate`(中等)、`severe`(严重),采用加权分布。
- 指标根据攻击类型/严重级别进行扰动,然后进行裁剪/归一化。
- **图感知的威胁传播与爆炸半径**
- 针对四个工作负载(`svc-1`..`svc-4`)的固定服务图,带有加权边。
- 后端根据链路强度将风险从主节点传播到相邻节点。
- 计算定性的爆炸半径:MINIMAL / LOW / MEDIUM / HIGH。
- UI 显示微型拓扑图以及带有风险条受影响的服务。
- **自适应响应引擎(传播感知)**
- 响应决策同时考虑异常层级和爆炸半径。
- 自动选择以下方案:
- 被动监控
- 流量节流
- 横向移动防御
- 工作负载隔离
- 全面封锁区
- 随着爆炸半径扩大,响应范围从单个工作负载扩展到**传播封锁区**。
- 响应引擎卡片展示威胁状态、置信度、行动、策略、爆炸半径和执行范围。
- **STRIDE 威胁分类**
- 每次攻击都会通过简单的查找映射到 STRIDE 类别:
- `CPU_SPIKE` / `MEM_EXHAUSTION` → `DoS` (拒绝服务)
- `AUTH_FLOOD` → `S` (欺骗)
- `SLOWDOWN` → `T` (篡改)
- 前端显示:
- 攻击情报面板中的 STRIDE 代码和人工可读标签。
- 最近警报中的 STRIDE 代码(附带面向评审人员的小型图例)。
- **DREAD 热力图**
- 后端计算每种攻击类型的 DREAD 评估:
- 潜在破坏、可再现性、可利用性、受影响用户、可发现性。
- 总体评分(1-10)和级别(LOW / MEDIUM / HIGH / CRITICAL)。
- 前端渲染“DREAD 热力图”卡片,包含:
- 每个因子 1-10 的条形图可视化。
- 总体风险徽章。
- 颜色编码图例,便于快速视觉分类。
- **工作负载隔离状态**
- 反映活动工作负载当前隔离态势的卡片。
- 当层级为 **HIGH** 时,后端将隔离状态切换为 **QUARANTINED**,
否则为 **MONITORING** / **RECOVERED**。
- **云工作负载遥测**
- 指标形状设定为类似云基础设施:
- CPU 利用率
- 内存利用率
- 请求吞吐量
- 认证失败率
- 服务延迟
- **攻击情报面板**
- 显示 `attack_type`(美化格式,例如 `AUTH FLOOD`)和 `attack_severity`。
- 显示检测置信度以及关于模型为何
标记当前模式的自然语言解释。
- 包含活动攻击的 STRIDE 分类(代码 + 人工可读标签)。
- **威胁时间轴和最近警报**
- 异常分数的实时时间序列图表(实时威胁趋势)。
- 威胁时间轴:描述最近检测、传播
和响应决策的叙述性文本流。
- 最近警报:带有时间戳、工作负载、攻击类型、
STRIDE 代码、分数和层级的可滚动列表。
## 前置条件
- Python 3.9+(推荐)
- Node.js 18+ 和 npm
- Docker + Docker Compose(可选,用于容器化运行)
## 后端设置(本地)
在项目根目录下执行:
```
cd backend
# 安装 Python dependencies
pip install -r ../requirements.txt
# 1) 收集 baseline telemetry (CPU, RAM, traffic 等)
python collector.py
# 2) 基于 baseline.csv 训练 / 刷新 anomaly model
python train_model.py
# 3) 运行 API (Flask + Socket.IO)
python app.py
```
默认情况下,后端暴露以下接口:
- `GET /status` – 最新遥测数据 + 威胁评分负载
- `GET /history` – 最近的检测历史
- `GET /isolation-log` – 隔离/封锁时间轴
- `POST /simulate-attack` – 启动攻击模拟(使用 `attack_sim.py`)
- `POST /stop-attack` – 停止攻击模拟
- Socket.IO 频道 `update` – 推送实时状态对象
后端还会为每个检测事件发出结构化的 JSON 日志
(`timestamp`、`tier`、`anomaly_score`、`attack_type`、`attack_severity`、
`response_action`、`workload_id`、`isolation_status`、`blast_radius`)。
## 前端(仪表盘)设置
在一个单独的终端中:
```
cd frontend/zeroshield-ui
# 安装 JS dependencies
npm install
# 启动 Vite dev server
npm run dev
```
打开 Vite 打印的 URL(通常是 `http://localhost:5173`)。仪表盘
通过 `App.jsx` 中的 `BACKEND_URL` 常量连接到后端
(默认为 `http://localhost:5000`)。
## 模拟攻击
UI 提供了以下按钮:
- **模拟攻击** → 在后端执行 `POST /simulate-attack`,然后
立即获取 `/status` 以实现即时 UI 刷新。
- **停止攻击** → 执行 `POST /stop-attack`,然后获取 `/status`。
在受到攻击时,你应该会看到:
- 威胁分数飙升至 100 左右。
- 层级变为 **HIGH**。
- 隔离状态切换为 **QUARANTINED**。
- 响应引擎显示 ACTIVE THREAT 以及具有传播感知能力的行动
(例如,封锁区对比单工作负载隔离)。
- 攻击情报卡片填充了攻击类型、严重级别、STRIDE 标签
以及被标记的原因说明。
- DREAD 热力图亮起,相关因子的分数更高。
- 威胁传播面板显示受影响的服务和爆炸半径。
- 最近警报的显示格式如下:
`svc-2 • AUTH FLOOD • S • Score: 97`。
你也可以直接运行模拟器脚本(可选):
```
cd simulator
python attack_sim.py
```
这将打印一小部分生成的攻击数据行供检查。
## Docker 化运行(后端 + 前端)
从项目根目录运行:
```
docker compose down
docker compose up --build
```
此操作将会:
- 使用 `requirements.txt` 构建后端镜像(Python + Flask + Socket.IO)。
- 构建前端镜像(React + Vite)并在端口 5173 上暴露它。
- 配置前端与 Compose 网络内的后端服务进行通信。
然后在浏览器中打开 `http://localhost:5173`。
## 技术栈
- **后端:** Python, Flask, Flask-SocketIO, scikit-learn (版本固定), pandas, psutil
- **模拟器:** Python, pandas, NumPy (基于 baseline.csv 生成攻击)
- **前端:** React, Vite, Recharts, socket.io-client
- **基础设施:** Docker, Docker Compose (可选)
## 注意事项
这是一个旨在用于演示和黑客松的 MVP,而非生产环境。对于真实的
部署,您需要:
- 在所有 endpoint 和 WebSocket 上进行强大的身份验证/授权 (authN/Z)。
- 用于警报/事件和模型指标的持久化存储。
- 围绕模型加载、输入验证和错误处理的强化。
- 生产级的可观测性(集中式日志、指标、链路追踪)。
- 适当的云部署(Kubernetes、容器应用或类似平台),并包含
密钥管理和 CI/CD。
标签:AMSI绕过, Apex, Demo, DREAD模型, EDR, Flask, IsolationForest, PE 加载器, Python, React, Socket.IO, STRIDE模型, Syscalls, Vite, WebSocket, Web应用开发, 云工作负载保护, 人工智能, 依赖分析, 全栈, 基线分析, 大屏看板, 威胁传播分析, 威胁检测, 异常检测, 微隔离, 攻击模拟, 无后门, 时序数据, 机器学习, 横向移动分析, 爆炸半径, 用户模式Hook绕过, 网络安全, 脆弱性评估, 自动化响应, 自定义脚本, 请求拦截, 逆向工具, 配置错误, 隐私保护, 隔离森林, 驱动签名利用