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, 可观测性, 威胁情报, 威胁检测, 安全运营中心, 开发者工具, 无后门, 日志管理, 环境变量管理, 网络安全, 网络映射, 自动化流水线, 警报分类, 逆向工具, 隐私保护