lethanhsang188/Smart-SOC-A-Machine-Learning-Integrated-Platform-for-Alert-Prioritization-and-Threat-Orchestration
GitHub: lethanhsang188/Smart-SOC-A-Machine-Learning-Integrated-Platform-for-Alert-Prioritization-and-Threat-Orchestration
一个集成 SIEM 告警优先级排序、ML 恶意软件检测与 SOAR 自动化响应的安全运营原型平台,旨在减少告警疲劳并提升威胁处置效率。
Stars: 0 | Forks: 0
# Smart SOC:用于告警优先级排序和威胁编排的机器学习集成平台
Smart SOC 是一个安全运营原型,它将 SIEM 告警分析、SOAR 响应工作流以及基于机器学习的恶意软件分析结合到一个集成平台中。该项目侧重于通过根据操作优先级对 Wazuh 告警进行排序、使用 EMBER 风格的 LightGBM 模型检测可疑 PE 文件,并将高可信度的发现结果转发到 Shuffle、pfSense 和 Telegram 等响应系统,从而减少告警疲劳。
## 核心功能
- **SIEM 告警优先级排序:** 对原始 Wazuh 告警进行标准化处理,并利用提取的规则、网络、HTTP、Suricata 和攻击模式特征预测 `P1` 至 `P4` 优先级。
- **基于 ML 的恶意软件分析:** 提取静态 PE 特征,并针对 EMBER2024 风格的恶意软件检测模型执行 LightGBM 推理。
- **SOAR 编排:** 将重要的恶意软件和告警优先级结果发送到 Shuffle webhook,用于下游 playbook。
- **自动化威胁响应:** 支持 pfSense alias 更新以进行源 IP 封锁,并支持 Telegram 通知以提高分析师的安全感知。
- **统一的 FastAPI 服务:** 提供一个综合 API,用于恶意软件预测、告警优先级推理、批量预测、Wazuh 摄取、健康检查和模型元数据。
- **数据准备工具:** 将 Wazuh Dashboard 的 CSV 导出文件转换为适用于模型训练和推理实验的 JSON-lines 格式。
## 架构
该项目在一个划分了安全区域的 SOC 实验环境中进行了演示,该环境将攻击者网络、DMZ 服务、服务器 VLAN 和安全/SOC VLAN 分离开来。以下三张图表记录了实验室拓扑结构以及两个主要的检测和响应流程。
### Smart SOC 实验室网络拓扑

该拓扑显示了主要的实验室区域和 IP 地址分配:
- 攻击者主机:`172.16.69.184`
- Internet 网关网段:`172.16.69.176`
- pfSense 防火墙:`192.168.10.1`
- DMZ Web 服务器:`192.168.20.125`
- 包含 Windows 端点的服务器 VLAN 10:`192.168.30.16`
- 包含 Wazuh `192.168.10.128`、ML 服务 `192.168.10.49` 和 Shuffle `192.168.10.150` 的安全/SOC VLAN 20
### Web 攻击告警优先级排序与响应流程

该流程说明了如何检测 Web 攻击并对其进行优先级排序:
1. 攻击者将目标对准 Web 服务器。
2. 流量通过 pfSense 转发到 DMZ Web 服务器。
3. Suricata 观察流量并生成安全事件。
4. Wazuh Agent 收集日志(例如 `eve.json`)。
5. Wazuh Server 接收收集到的日志并将其关联。
6. Wazuh 告警被发送到 ML 服务。
7. ML 服务预测告警优先级,并将高风险结果转发给 Shuffle。
8. Shuffle 向 SOC 团队发送通知消息。
9. 对于高优先级的情况,Shuffle 可以触发 pfSense 封锁操作。
### 恶意软件分析与主动响应流程

该流程说明了恶意软件分析的工作流程:
1. Windows 端点从 Internet 下载恶意文件。
2. Wazuh File Integrity Monitoring 检测到文件事件。
3. 提取 PE 特征并将其发送到机器学习分析服务。
4. ML 服务返回恶意软件预测结果。
5. Shuffle 与 Wazuh Manager 协调主动响应。
6. Wazuh 从端点中删除恶意文件。
7. Shuffle 就检测和响应操作通知 SOC 团队。
## 系统流程
```
Wazuh / SIEM Alerts
|
v
Alert Feature Extractor -----> Alert Priority ML Model ----+
|
PE File / Endpoint Sample -> PE Feature Extractor ----------+--> Combined ML API
|
+--> Shuffle SOAR
+--> pfSense block list
+--> Telegram notification
```
## 仓库结构
```
.
|-- combined_ml_server.py # Unified FastAPI service for malware + alert priority inference
|-- ml_server.py # Standalone malware detection API
|-- pe_extractor_service.py # Flask service for PE static feature extraction
|-- model.py # EMBER-style feature vectorization and LightGBM training utilities
|-- alert_priority/
| |-- alert_priority_server.py # Standalone Wazuh alert priority API
| |-- convert_wazuh_csv.py # Wazuh CSV to JSON-lines conversion utility
| `-- feature_extractor.py # Stable feature extraction for Wazuh/SIEM alerts
|-- docs/
| `-- images/ # Lab topology and workflow diagrams
|-- requirements.txt
`-- .env.example
```
诸如已训练的 `.model`、`.joblib`、`.pkl` 文件、日志、虚拟环境和演示文件等大型二进制工件被有意排除在此仓库之外。请在本地放置模型文件,并通过环境变量将服务指向它们。
## API 概述
| Endpoint | Method | 用途 |
| --- | --- | --- |
| `/health` | `GET` | 综合服务健康状态和模型可用性 |
| `/model-info` | `GET` | 综合恶意软件和告警优先级模型元数据 |
| `/predict-features` | `POST` | 根据 2560 维 PE 特征向量进行恶意软件预测 |
| `/predict` | `POST` | 对单个 Wazuh 告警进行优先级预测 |
| `/predict-batch` | `POST` | 对多个告警进行批量优先级预测 |
| `/ingest/wazuh` | `POST` | 带有可选响应编排的 Wazuh 摄取 endpoint |
| `/malware/model-info` | `GET` | 恶意软件模型元数据 |
| `/alert-priority/model-info` | `GET` | 告警优先级模型元数据 |
## 快速开始
1. 创建并激活 Python 虚拟环境。
```
python -m venv .venv
.venv\Scripts\activate
```
2. 安装依赖项。
```
pip install -r requirements.txt
```
3. 复制环境模板并配置本地路径或集成。
```
copy .env.example .env
```
4. 在本地添加已训练的模型工件。
```
./ember2024_pe_lgbm.model
./alert_priority/models/alert_priority_model.joblib
```
5. 启动综合服务。
```
uvicorn combined_ml_server:app --host 0.0.0.0 --port 8000
```
6. (可选)启动 PE 特征提取服务。
```
python pe_extractor_service.py
```
## 配置
该平台通过环境变量进行配置。重要选项包括:
| Variable | 描述 |
| --- | --- |
| `ML_MODEL_PATH` | EMBER2024 LightGBM 恶意软件模型的路径 |
| `ALERT_PRIORITY_MODEL_PATH` | 已训练的告警优先级 `.joblib` 模型的路径 |
| `ML_INGEST_API_KEY` | Wazuh 摄取所需的可选 API key |
| `SHUFFLE_MALWARE_WEBHOOK` | 用于恶意软件检测事件的 Shuffle webhook |
| `SHUFFLE_RESPONSE_WEBHOOK` | 用于告警响应编排的 Shuffle webhook |
| `PFSENSE_ALIAS_URL` | 用于 IP 封锁的 pfSense API alias endpoint |
| `PFSENSE_API_KEY` | pfSense API key |
| `TELEGRAM_BOT_TOKEN` / `TELEGRAM_CHAT_ID` | Telegram 通知目标 |
## 安全说明
- 切勿提交 `.env`、API key、webhook URL、已训练的模型二进制文件、原始日志或内部实验室导出数据。
- 在投入生产使用之前,请调整阈值,以符合本地的误报容忍度和响应策略。
- 在通过验证之前,请将自动封锁置于分析师批准的策略之后,或限制在实验室允许列表范围内。
- 请将此仓库视为研究和毕业设计实现,而不是即插即用的托管 SOC 产品。
## 项目范围
该项目通过结合以下几个方面,展示了机器学习如何支持 SOC 工作流:
- 来自 Wazuh 的 SIEM 遥测数据标准化。
- 为分析师分流进行告警评分和优先级排序。
- 使用 PE 特征和 LightGBM 进行静态恶意软件分析。
- 用于富集、通知和遏制的 SOAR 风格响应 hook。
标签:Apex, AV绕过, DAST, DNS 反向解析, FastAPI, Metaprompt, SOAR, Wazuh, 安全运营, 恶意软件分析, 扫描框架, 机器学习, 逆向工具