vishalvarmaa/SOC-Detection-AI-Automation-Lab
GitHub: vishalvarmaa/SOC-Detection-AI-Automation-Lab
一个基于 Wazuh、n8n 与 Groq 的 SOC 家庭实验室,实现威胁检测、情报 enrichment 与自动化响应。
Stars: 7 | Forks: 1
# SOC检测与AI自动化实验室
一个从零开始构建的完整安全运营中心(SOC)家庭实验室——模拟真实的威胁检测、自动化事件响应以及通过Telegram机器人实现AI驱动的调查。
基于Kali Linux,使用Wazuh SIEM、n8n SOAR自动化、多源威胁情报 enrichment 以及一个Groq驱动的AI分析师(通过纯英语回答安全问题)。
## 工作流程概览

## 架构
```
Wazuh SIEM (Kali Linux)
│
▼
n8n Webhook receives alert
│
▼
Extract Fields
(rule_id, severity, source_ip, agent, MITRE ATT&CK)
│
▼
IF Severity >= 5 ──────────────────► Fast Path DB Save (Low severity)
│
▼
IF External IP ────────────────────► Endpoint Alert Path (Internal IP)
│
▼
┌───────────────────────────────────────┐
│ Threat Intelligence │
│ VirusTotal → AbuseIPDB → OTX │
│ Intermediate Score Calculation │
│ IF Shodan Gate (score >= 50) │
│ Shodan → IP Geolocation │
└───────────────────────────────────────┘
│
▼
Build Alert Data
(risk_score, risk_level, MITRE mapping, geo data)
│
▼
Fix Risk Level → Switch Risk Level
│
┌────┴─────────────────────┐
CRITICAL HIGH MEDIUM LOW
│
▼
Save to PostgreSQL → Telegram Alert
─────────────────────────────────────
Telegram Bot (AI SOC Agent)
│
▼
Normalize Message
│
▼
Switch Message Type
│ │ │
Help Greeting AI SQL Generator
│
Groq LLM
(llama-3.3-70b)
│
Execute SQL Query
│
Aggregate → Deduplication
│
AI Summarizer
(Groq LLM)
│
Send AI Reply
```
## 功能特性
### 自动告警管道
- Wazuh SIEM在每条触发规则时通过Webhook将告警发送至n8n
- 提取字段 — 规则ID、严重级别、源IP、代理名称、MITRE ATT&CK战术与技术
- 严重性门控过滤低于5级的告警 — 低严重性告警仅快速存入数据库
- 自动区分外部IP与内网/端点威胁
### 四源威胁情报 enrichment
- **VirusTotal** — 每个IP的恶意与可疑引擎计数
- **AbuseIPDB** — 滥用置信度评分与总报告数
- **AlienVault OTX** — 威胁脉冲计数
- **Shodan** — 开放端口、CVE与组织(条件判断 — 仅当中间评分≥50时调用)
- **IP地理位置** — 通过ip-api.com获取国家、城市与ISP
### 风险评分引擎
```
Risk Score = (VT Malicious × 4) + (VT Suspicious × 1)
+ (AbuseIPDB Score × 0.4) + (OTX Pulses × 2)
+ (Shodan CVEs × 5) + (Wazuh Severity × 4)
Maximum capped at 100
CRITICAL → score >= 75 → IMMEDIATE_RESPONSE
HIGH → score >= 50 → INVESTIGATE
MEDIUM → score >= 25 → MONITOR
LOW → score < 25 → LOG_ONLY
```
### PostgreSQL告警存储
- 所有告警保存至结构化的`alerts`表
- 存储字段 — IP、告警名称、风险等级、风险评分、MITRE ATT&CK、国家、代理名称、规则ID、Shodan端口、Shodan CVE、VirusTotal评分、AbuseIPDB评分
- 按严重性级别分别保存节点 — CRITICAL、HIGH、MEDIUM、LOW
### 实时Telegram通知
- CRITICAL与HIGH告警触发即时Telegram消息
- 消息包含完整的威胁情报摘要 — IP、位置、ISP、MITRE映射、所有enrichment评分
- 端点告警(内网IP)单独处理并附带主机调查消息
- 带有上下文感知的幽默感的讽刺式告警消息
### AI SOC 代理 — Telegram机器人
- 使用Groq LLM(llama-3.3-70b-versatile)将自然语言转换为PostgreSQL查询
- 分析师可直接用普通英语提问,无需SQL知识
- 查询分类 — DATABASE、KNOWLEDGE 或 GIBBERISH
- 在AI总结前对结果进行去重与聚合
- AI总结器基于查询结果生成完整威胁上下文、采用严重性感知语气并提供修复步骤
- 支持帮助菜单、问候语、知识问答、数据库查询与错误处理
### 演示模式
- 内置演示触发器模拟SSH暴力破解攻击
- 预配置负载 — 规则5710,严重级别12,MITRE T1110 凭据访问
- 无需真实Wazuh告警即可测试完整管道
## 技术栈
| 组件 | 技术 |
|---|---|
| SIEM | Wazuh |
| 自动化 | n8n SOAR |
| AI模型 | Groq — llama-3.3-70b-versatile |
| 数据库 | PostgreSQL |
| 威胁情报 | VirusTotal、AbuseIPDB、AlienVault OTX、Shodan |
| 地理位置 | ip-api.com |
| 通知 | Telegram Bot API |
| 操作系统 | Kali Linux(VMware) |
| 端点 | Windows 11 VM |
## 工作流程节点
| 节点 | 用途 |
|---|---|
| Wazuh Webhook | 通过HTTP POST接收来自Wazuh的告警 |
| 提取字段 | 解析规则ID、严重性、IP、代理、MITRE数据 |
| IF 严重性 >= 5 | 过滤低严重性告警 |
| IF 外部IP | 分离外部与内网/端点威胁 |
| VirusTotal | IP信誉检查 |
| AbuseIPDB | 滥用置信度评分 |
| OTX AlienVault | 威胁脉冲计数 |
| 中间评分 | 计算Shodan调用前的预评分 |
| IF Shodan门控 | 仅当评分≥50时调用Shodan |
| Shodan | 开放端口与CVE查询 |
| IP地理位置 | 国家、城市、ISP查询 |
| 构建告警数据 | 将所有enrichment整合为统一告警对象 |
| 修复风险等级 | 根据最终评分重新计算并修正风险等级 |
| 切换风险等级 | 将告警路由至CRITICAL / HIGH / MEDIUM / LOW路径 |
| 保存 CRITICAL/HIGH/MEDIUM/LOW | 将告警插入PostgreSQL |
| 快速路径数据库保存 | 低严重性告警的直接数据库插入 |
| Telegram CRITICAL/HIGH | 向Telegram发送格式化告警消息 |
| Telegram触发器 | 监听传入的Telegram消息 |
| 消息标准化 | 提取文本、聊天ID与发送者名称 |
| 消息类型切换 | 路由至帮助、问候或AI路径 |
| 发送帮助菜单 | 以带讽刺的介绍返回命令列表 |
| 发送问候 | 带有讽刺意味的问候响应 |
| AI SQL生成 | 使用Groq将自然语言转换为SQL |
| 执行SQL查询 | 在PostgreSQL中运行生成的SQL |
| 聚合 | 合并所有结果行 |
| 去重代码 | 按IP+名称+风险对告警进行分组与去重 |
| AI总结器 | 从查询结果生成可读摘要 |
| 发送AI回复 | 将最终AI响应发送至Telegram |
| 发送SQL错误 | 优雅处理SQL执行错误 |
| DEMO — 网络攻击 | 手动触发演示模式 |
| 网络攻击演示数据 | SSH暴力破解演示数据 |
## 安装配置
### 先决条件
```
- n8n (self-hosted)
- Wazuh SIEM
- PostgreSQL
- Telegram Bot (via BotFather)
- API keys — VirusTotal, AbuseIPDB, AlienVault OTX, Shodan, Groq
```
### PostgreSQL表
```
CREATE TABLE alerts (
id SERIAL PRIMARY KEY,
ip TEXT,
alert_name TEXT,
risk_level TEXT,
risk_score INTEGER,
mitre_attack TEXT,
country TEXT,
ai_explanation TEXT,
created_at TIMESTAMP DEFAULT NOW(),
agent_name TEXT,
rule_id TEXT,
shodan_vulns TEXT,
shodan_ports TEXT,
vt_score INTEGER,
abuse_score INTEGER
);
```
### 配置
```
1. Import Final no api.json into n8n
2. Add your credentials in n8n:
- Telegram Bot API token
- PostgreSQL connection
- Groq API key
3. Replace all YOUR_API_KEY_HERE placeholders
4. Replace YOUR_Chat_ID with your Telegram chat ID
5. Configure Wazuh to send webhooks to your n8n URL
6. Activate the workflow
```
### Wazuh Webhook配置
```
custom-webhook
http://YOUR_N8N_IP:5678/webhook/YOUR_WEBHOOK_PATH
5
json
```
## Telegram机器人命令
```
menu / help → Show command list
show critical → Latest critical alerts
show high → Latest high alerts
panic → Show all critical and high alerts
who is attacking → Top attacking IPs
full report → Alert summary by severity
am i hacked → Check for critical threats
alerts today → Last 24 hours
top countries → Where attacks are coming from
summary / stats → Total alert counts
show last alert → Most recent alert
```
任何普通英语问题均可使用 — AI会自动将其转换为SQL。
## 截图
### 工作流程概览

### Wazuh仪表板

### Telegram CRITICAL告警

### Telegram机器人 — AI响应



### PostgreSQL告警表

## 安全提示
所有API密钥与凭据已从本工作流中移除。
在导入前请将所有 `YOUR_API_KEY_HERE` 和 `YOUR_Chat_ID` 占位符替换为您自己的凭证。
切勿将真实API密钥提交至公共仓库。
## 作者
**Vishal Varma**
SOC分析师 | 安全运营 | 威胁检测
[LinkedIn](https://linkedin.com/in/vishalvarma-soc) · [GitHub](https://github.com/YOUR_USERNAME)
标签:AbuseIPDB, AI Telegram Bot, AMSI绕过, Ask搜索, Cloudflare, CRITICAL, Fast Path, Groq AI, HIGH, IP 地理定位, LOW, MEDIUM, MITRE ATT&CK, n8n SOAR, OTX, PostgreSQL, Telegram 机器人, VirusTotal, Wazuh SIEM, 代理支持, 低严重性, 关键词优化, 内部 IP, 告警, 外部 IP, 多源情报, 威胁情报, 威胁检测, 安全实验室, 安全运营中心, 安全问答, 开发者工具, 测试用例, 端点告警, 网络映射, 自动化响应, 速率限制, 风险评分, 高严重性