Amal1120/SOC-AUTOMATION
GitHub: Amal1120/SOC-AUTOMATION
基于 Wazuh 的 SOC 自动化平台,实现从告警检测、风险评分、自动响应到修复验证的完整事件响应闭环。
Stars: 1 | Forks: 0
# SOC-AUTOMATION
**一个由 Wazuh 驱动的自动化 SOC pipeline —— 从原始告警到验证修复,并配备实时仪表板。**
## 项目概要
作为 Offenso Hackers Academy 四人团队项目的一部分,我设计并构建了这个 SOC 家庭实验室的自动化响应核心。我的工作涵盖了系统的风险逻辑和修复引擎:一个自定义风险引擎,对 Wazuh 告警进行 0-100 分的评分并将其分类为十种攻击类别;十个响应 playbook,将每个类别路由到正确的修复措施;一个基于 SSH 的 action engine,可在目标主机上执行并验证这些修复措施;以及一个人工审批工作流,在任何破坏性操作运行之前暂停高风险操作以供分析师审查。我还负责了 Wazuh 部署和 REST API 集成,并使用 Kali Linux 模拟真实攻击 —— SSH 暴力破解、文件完整性违规 —— 以端到端地测试和验证整个 pipeline。
## 我的贡献
这是一个四人团队项目。以下是我个人设计和构建的内容与队友工作的详细划分 —— 附上此说明是为了让 README 能够准确反映个人的负责部分。
**由我设计和实现**(Python 实现借助了 AI 辅助开发;设计、集成、测试和调试均由本人完成):
- Wazuh 部署和 Manager/Agent 集成
- Wazuh REST API 集成 (`wazuh_api.py`) — 告警检索、身份验证、分页
- Pipeline 编排 (`main_pipeline.py`)
- 风险评分引擎 (`risk_engine.py`) — 加权 0-100 评分,10 类分类
- Groups A–J 的响应 playbook (`playbook_groupA.py`, `playbook_groupB.py`, `playbook_groupCDEFGHIJ.py`)
- Action engine (`action_engine.py`) — 通过 Paramiko 执行基于 SSH 的远程命令
- 修复后验证逻辑 (`post_fix_checks.py`)
- 攻击模拟、测试和故障排除(使用 Kali Linux 针对 Ubuntu 目标进行)
**由队友构建:**
- Streamlit 仪表板 (`dashboard.py`)
- SQLite 数据库设计和 `DatabaseManager` 类 (`database.py`)
此处包含了完整的项目以提供背景,并展示我的组件如何融入更大的系统中 —— 但上面的划分准确反映了个人负责的部分。
## 概述
SOC-AUTOMATION 是一个围绕 Wazuh 构建的端到端安全运营中心 (SOC) 自动化平台。它持续接入安全告警,根据风险对其进行评分,将其分类为不同的攻击类别,运行自动化(或经人工批准的)响应 playbook,验证修复措施是否确实生效,并在实时仪表板上显示整个事件生命周期。
它的构建是为了进行实际演示,展示现代 SOC pipeline 如何从 **检测 → 决策 → 操作 → 验证**,而不是仅仅停留在告警阶段。
**技术栈:** Wazuh Manager · Wazuh Agent · Wazuh API · Wazuh Indexer (OpenSearch) · Filebeat · Python · SQLite · Streamlit
## 架构
```
Attacker (Kali)
│
▼
Ubuntu Target (Wazuh Agent)
│
▼
Wazuh Manager → Filebeat → Wazuh Indexer (OpenSearch)
│
▼
Wazuh API
│
▼
Python SOC Pipeline → Risk Engine → Playbooks (A–J) → Action Engine → Post-Fix Verification
│
▼
SQLite → Streamlit Dashboard
```
## 核心功能
**安全监控**
- 通过 Wazuh Agent 进行身份验证监控、文件完整性监控、权限提升和网络活动检测
**动态风险评分**
- 每个告警都会根据严重程度、资产重要性和上下文进行评分,然后被划分到 `INFO → LOW → MEDIUM → HIGH → CRITICAL` 级别
**攻击分类 (Groups A–J)**
- 身份验证攻击、侦察、恶意软件、文件完整性违规、拒绝服务、横向移动、权限提升、Web 攻击、数据泄露、持久化/Rootkit
**自动化响应**
- 封禁攻击者 IP、对可疑流量进行限速、隔离受损主机、终止恶意进程、发出 SOC 告警
**人工审批机制**
- 高风险操作可以在执行前被暂停、批准或拒绝 —— 任何破坏性操作都不会在静默状态下发生
**修复后验证**
- 确认修复措施确实生效:检查 `iptables` 规则、`fail2ban` 封禁、已终止的进程、sudo 策略
**实时仪表板 (Streamlit)**
- 实时事件、风险评分、告警历史、审批队列和事件报告
## 展示的技能
- **SIEM 集成** — Wazuh 部署、Manager/Agent 配置、REST API 调用
- **基于风险的告警优先级排序** — 自定义加权评分算法,威胁分类分类法
- **自动化事件响应 (SOAR 风格)** — 涵盖 10 种攻击类别的 playbook 设计
- **远程系统自动化** — 通过 Paramiko 进行 SSH 命令执行和基于密钥的身份验证
- **修复后验证** — 确认自动化修复确实生效,而不仅仅是假设成功
- **安全治理** — 控制高风险自动化操作的人工审批工作流
- **进攻性安全测试** — 使用 Kali Linux 进行攻击模拟(SSH 暴力破解、文件完整性违规),以验证检测和响应
- **Linux 管理** — 目标主机上的 `iptables`、`fail2ban` 和进程管理
## 前置条件
- Python 3.10+
- 正常运行的 Wazuh 部署:Manager + Agent(在基于 Ubuntu 的 Wazuh OVA 上测试)
- Wazuh Indexer (OpenSearch) 可通过端口 `9200` 访问
- 配置 Filebeat 以将 Manager 日志发送到 Indexer
- `requirements.txt` 中列出的 pip 依赖项
## 安装说明
```
git clone
cd SOC-AUTOMATION
pip install -r requirements.txt
```
在项目根目录中创建一个 `.env` 文件 — **切勿提交此文件**:
```
WAZUH_URL=https://:55000
WAZUH_USER=
WAZUH_PASS=
INDEXER_URL=https://:9200
INDEXER_USER=
INDEXER_PASS=
```
复制配置模板并填入你自己的实验室 IP — **`config.py` 也被 gitignore 忽略,切勿提交**:
```
cp config.example.py config.py # Mac/Linux
copy config.example.py config.py # Windows CMD
```
然后使用你自己的 `WAZUH_MANAGER_IP`、`UBUNTU_TARGET_IP` 和 `WINDOWS_ANALYST_IP` 编辑 `config.py`。
## 用法
在两个独立的终端中运行 pipeline 和仪表板:
```
# Terminal 1 — SOC pipeline(拉取 alerts,评分,运行 playbooks)
python main_pipeline.py
# Terminal 2 — 实时 dashboard
python -m streamlit run dashboard.py
```
**端到端流程示例:**
1. 攻击者针对受监控的 Ubuntu 目标发起 SSH 暴力破解尝试。
2. Wazuh Agent 将相关日志转发给 Manager。
3. Manager 生成告警。
4. Pipeline 通过 Wazuh API 检索告警。
5. 风险引擎对其评分并进行分类(例如,Group A — 身份验证攻击)。
6. 选择匹配的 playbook 并执行响应操作。
7. 修复后验证确认操作确实生效。
8. 事件存储在 SQLite 中,并立即显示在 Streamlit 仪表板上。
## 验证和测试
系统通过使用 Kali Linux 针对 Ubuntu 目标虚拟机进行结构化攻击模拟,以及涵盖分类和响应逻辑的自测套件进行了验证。
**在家庭实验室中进行的实时测试:**
- SSH 暴力破解尝试(Group A — 身份验证)
- 通过 Nmap 进行网络扫描(Group B — 侦察)
- 文件完整性违规,例如修改 `/etc/passwd`(Group D — 文件完整性)
- 平均检测延迟:从攻击发起至仪表板显示约 8 秒
**风险评分具备资产感知能力,而不是针对每种攻击类型进行单一评分。** 相同的 SSH 暴力破解尝试根据目标的不同得分也会不同 — 针对 Ubuntu 目标时为 56 分 (MEDIUM),而针对 Wazuh Manager 本身则为 80 分 (CRITICAL) — 因为引擎在评估时不仅考虑孤立的攻击类型,还会将目标重要性与攻击严重程度结合考虑。来自受信任 IP 的合法登录失败得分始终低于 30 分 (INFO/LOW),这证实了该引擎能够减少噪音,而不是将所有事件一视同仁地进行标记。
通过模块的自测套件**验证了所有 10 个攻击类别 (A–J) 的分类逻辑** — 身份验证攻击、侦察、恶意软件、文件完整性、拒绝服务、横向移动、权限提升、Web 攻击、数据泄露和 Rootkit/持久化。人工审批工作流能够正确暂停得分高于 60 分阈值的事件以供分析师审查,并且在事件被标记为已解决之前,修复后验证会确认修复操作(iptables 规则、终止的进程)确实已生效。
## 许可证
本项目基于 MIT 许可证授权 — 详情请参阅 [LICENSE](LICENSE)。
## 联系方式
amaldileef25@gmail.com
www.linkedin.com/in/amal-dileef
## 展示的技能
- **SIEM 集成** — Wazuh 部署、Manager/Agent 配置、REST API 调用
- **基于风险的告警优先级排序** — 自定义加权评分算法,威胁分类分类法
- **自动化事件响应 (SOAR 风格)** — 涵盖 10 种攻击类别的 playbook 设计
- **远程系统自动化** — 通过 Paramiko 进行 SSH 命令执行和基于密钥的身份验证
- **修复后验证** — 确认自动化修复确实生效,而不仅仅是假设成功
- **安全治理** — 控制高风险自动化操作的人工审批工作流
- **进攻性安全测试** — 使用 Kali Linux 进行攻击模拟(SSH 暴力破解、文件完整性违规),以验证检测和响应
- **Linux 管理** — 目标主机上的 `iptables`、`fail2ban` 和进程管理
## 前置条件
- Python 3.10+
- 正常运行的 Wazuh 部署:Manager + Agent(在基于 Ubuntu 的 Wazuh OVA 上测试)
- Wazuh Indexer (OpenSearch) 可通过端口 `9200` 访问
- 配置 Filebeat 以将 Manager 日志发送到 Indexer
- `requirements.txt` 中列出的 pip 依赖项
## 安装说明
```
git clone 标签:Kubernetes, PE 加载器, SSH远程执行, Wazuh, 安全编排自动化, 安全运营, 扫描框架, 自动化响应, 逆向工具