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绕过, 网络安全, 脆弱性评估, 自动化响应, 自定义脚本, 请求拦截, 逆向工具, 配置错误, 隐私保护, 隔离森林, 驱动签名利用