tanvirahmedcs/SOC-Analyst-Automation-Toolkit
GitHub: tanvirahmedcs/SOC-Analyst-Automation-Toolkit
这是一个基于Splunk和Python的SOC自动化框架,旨在通过自动化警报处理、威胁狩猎、事件响应和IOC关联来减少分析师工作量。
Stars: 1 | Forks: 0
# 🛡️ SOC 分析师自动化工具包
## 📋 概述
**SOC 分析师自动化工具包**是一个基于 Python 的框架,它构建于 Splunk SDK 之上,旨在自动化安全运营中心内最耗时的任务。它将四个关键工作流程整合到一个单一、遵循最佳实践的管道中:带有 OSINT 信息丰富化的警报分类、与 MITRE ATT&CK 对齐的威胁狩猎、引导式事件响应,以及针对实时流量的批量 IOC 关联分析。
## 🏗️ 架构
```
soc_automation_toolkit/
├── main.py # Entry point — full automation run
├── .env # Environment config (see setup)
├── soc_report.json # Auto-generated JSON report (output)
├── soc_automation.log # Timestamped run log (output)
└── modules/
├── AlertTriageEngine # Module 1 — Alert triage & enrichment
├── ThreatHunter # Module 2 — Threat hunting queries
├── IncidentResponsePlaybook # Module 3 — IR playbook automation
└── IOCCorrelator # Module 4 — IOC correlation & lookup
```
## ⚙️ 前置条件与安装
需要 **Python 3.8+**。
```
pip install splunk-sdk requests python-dotenv colorama
```
### 环境变量
在项目根目录创建一个 `.env` 文件:
```
SPLUNK_HOST=splunk.yourdomain.com
SPLUNK_PORT=8089
SPLUNK_USER=admin
SPLUNK_PASS=yourpassword
# 可选 — 启用 OSINT enrichment
VIRUSTOTAL_API_KEY=
ABUSEIPDB_API_KEY=
```
## 🚀 使用
### 全自动化运行
```
python main.py
```
这会按顺序执行所有四个模块并生成:
- `soc_report.json` — 结构化的调查结果报告
- `soc_automation.log` — 带时间戳的控制台日志
### 运行单个模块
```
from main import connect_splunk
from modules import ThreatHunter, AlertTriageEngine, IOCCorrelator
service = connect_splunk()
# 仅运行威胁 hunting
hunter = ThreatHunter(service)
findings = hunter.run_all(earliest="-48h")
# 运行单个自定义 hunt
hunter.run_custom("My Hunt", "index=* src_ip=* | stats count by src_ip")
```
## 🔍 模块参考
### 模块 1 — 警报分类与信息丰富化 (`AlertTriageEngine`)
从 Splunk ES / 关联搜索中提取显著事件,分配分类评分,并通过 VirusTotal 和 AbuseIPDB 丰富化源 IP 信息。
**评分逻辑:**
| 因素 | 权重 |
|---|---|
| 严重性(严重/高/中/低) | +10 / +7 / +4 / +1 |
| 事件计数(每 5 个事件,最大 +5) | +1 至 +5 |
| 警报龄 > 120 分钟 | −1 |
**每个警报的输出字段:** `alert_name`, `severity`, `src_ip`, `dest_ip`, `user`, `triage_score`, `vt_info`, `abuse_info`
### 模块 2 — 威胁狩猎 (`ThreatHunter`)
六个预置的 SPL 查询,映射到 MITRE ATT&CK 技术:
| 技术 | 检测逻辑 |
|---|---|
| **T1078** — 有效账户 | 暴力破解:每个用户/目标 >10 次失败登录 |
| **T1059** — PowerShell | 恶意脚本块(Mimikatz, IEX, EncodedCommand 等) |
| **T1486** — 勒索软件 | 通过 Sysmon 事件 11 检测已知勒索软件文件扩展名 |
| **T1071** — C2 信标 | DNS:从单个源向 <5 个唯一域发送 >200 次查询 |
| **T1136** — 持久化 | 新建本地管理员账户(事件 4720 + S-1-5-32-544) |
| **T1003** — 凭据访问 | 通过 Sysmon 事件 10 访问 LSASS 内存 |
在运行时添加自定义狩猎:
```
hunter.run_custom("My Hunt Name", "", earliest="-7d")
```
### 模块 3 — 事件响应剧本 (`IncidentResponsePlaybook`)
基于模块 1 中 **评分最高的警报** 触发的自动化事件响应步骤。
**执行的步骤:**
1. **时间线构建** — 为源 IP/用户/主机构建时间顺序事件日志(默认:48 小时窗口)
2. **横向移动检查** — 检测针对 >2 个不同目标的身份验证事件(事件 4624, 4648, 4672, 4776)
3. **持久化检查** — 扫描计划任务、注册表运行键和新服务
4. **遏制建议** — 基于分类评分生成:
| 评分 | 行动级别 |
|---|---|
| ≥ 10 | 严重 — 隔离主机,禁用 AD 账户,封锁 IP,升级至 P1 |
| 5–9 | 高 — 调查 NetFlow,重置凭据,启用日志记录,创建 P2 工单 |
| < 5 | 中 — 监控 24 小时,记录文档 |
### 模块 4 — IOC 关联 (`IOCCorrelator`)
在 Splunk 中搜索已知恶意指标,并可选择更新 KV 存储查找表。
**支持的 IOC 类型:** `ip`, `domain`, `hash`, `user`
```
iocs = [
{"value": "185.220.101.45", "type": "ip", "threat_level": "high"},
{"value": "malware.example.com", "type": "domain", "threat_level": "critical"},
{"value": "d41d8cd98f00b204e9800998ecf8427e", "type": "hash", "threat_level": "medium"},
]
correlator = IOCCorrelator(service)
correlator.bulk_ioc_search(iocs)
correlator.detect_ioc_in_traffic(lookup_name="ioc_lookup")
```
将 IOC 持久化到 Splunk KV 存储以进行持续检测:
```
correlator.update_lookup_table(service, "ioc_lookup", iocs)
```
## 📄 报告输出
每次运行后,将生成具有以下结构的 `soc_report.json`:
```
{
"run_time": "2025-01-01T00:00:00",
"modules": {
"alert_triage": [ ... ],
"threat_hunting": { "T1078 - Brute Force": 3, ... },
"incident_response": {
"entity": "1.2.3.4",
"timeline_events": 47,
"lateral_movement": true,
"persistence_checks": { "Scheduled Tasks": 2, ... },
"containment_steps": [ ... ]
},
"ioc_correlation": {
"iocs_checked": 3,
"iocs_matched": 1,
"live_hits": 2
}
}
}
```
## 🖥️ 控制台日志级别
| 颜色 | 级别 | 含义 |
|---|---|---|
| 🔵 青色 | INFO | 标准进度消息 |
| 🟡 黄色 | WARN | 需要注意的发现 |
| 🔴 红色 | ERROR | 严重命中 / 连接失败 |
| 🟢 绿色 | SUCCESS | 正常结果 / 操作成功 |
| 🟣 品红色 | SECTION | 模块 / 阶段标题 |
## 🔐 安全注意事项
- 凭据应仅存储在 `.env` 中 — 切勿提交此文件。将 `.env` 添加到 `.gitignore`。
- API 密钥(VirusTotal, AbuseIPDB)是只读的信息丰富化密钥,不需要写入权限。
- KV 存储更新功能需要 Splunk `admin` 或具有 `edit_kvstore` 能力的角色。
- 所有 SPL 查询使用 `blocking` 执行模式 — 请在大规模环境中调整 `max_count` 和时间窗口。
## 🗺️ 路线图
- [ ] 为高评分事件配置 Slack / Teams webhook 告警
- [ ] TheHive / MISP 集成用于案例管理
- [ ] 大规模狩猎的异步搜索模式
- [ ] CSV/PDF 报告导出
- [ ] 预配置 `.env` 模板的 Docker 容器
- [ ] 使用模拟 Splunk 响应进行单元测试
标签:AMSI绕过, API集成, Cloudflare, IOC关联, MITRE ATT&CK, OISF, OSINT集成, Python, SOC分析师工具, Splunk SDK, 可观测性, 威胁情报, 威胁检测, 安全运营中心, 开发者工具, 无后门, 日志管理, 环境变量管理, 网络安全, 网络映射, 自动化流水线, 警报分类, 逆向工具, 隐私保护