batuhann99/splunk-detection-lab

GitHub: batuhann99/splunk-detection-lab

一个基于 Splunk Cloud 构建的 SIEM 检测工程实战项目,提供自定义 SPL 检测规则、Python IOC 富化脚本和多面板 SOC 仪表盘。

Stars: 0 | Forks: 0

# 🔍 Splunk 检测实验室 一个基于 Splunk Cloud 构建的 SIEM 检测工程实战项目。包含真实的攻击场景、自定义 SPL 检测规则、基于 Python 的 IOC 富化,以及一个全面运作的 SOC 仪表盘 —— 旨在模拟真实的 SOC 分析师工作流程。 ## 📌 项目概述 本项目展示了如何使用 Splunk Cloud 作为 SIEM 平台进行端到端的检测工程。我们创建并接入(Ingest)了三个真实的攻击日志数据集,涵盖 Web 应用程序攻击、Windows 身份验证事件以及网络层威胁。在此数据基础之上,构建了自定义的 SPL 检测规则、定时告警、Python IOC 富化脚本,以及一个多面板的 SOC 仪表盘。 ## 🛠️ 技术栈 | 工具 | 用途 | |------|---------| | Splunk Cloud | SIEM 平台 | | SPL | 检测规则语言 | | Python 3 | IOC 富化脚本 | | VirusTotal API | IP/hash 信誉查询 | | AbuseIPDB API | IP 滥用置信度评分 | | GitHub | 版本控制与文档管理 | ## 📁 项目结构 ``` splunk-detection-lab/ ├── detections/ │ ├── brute_force_detection.spl │ ├── critical_events_detection.spl │ ├── sensitive_file_access.spl │ └── backdoor_user_creation.spl ├── enrichment/ │ ├── ioc_enricher.py │ ├── requirements.txt │ ├── config.example.yaml │ └── sample_output/ │ ├── ioc_results.json │ └── ioc_results.csv ├── dashboards/ │ └── soc_dashboard.xml ├── data/ │ └── sample_logs/ │ ├── web_attack_logs.csv │ ├── windows_auth_logs.csv │ └── network_scan_logs.csv └── docs/ └── screenshots/ ``` ## 📊 日志数据集 三个自定义的攻击日志数据集被创建并接入到 Splunk Cloud 中: ### 1. web_attack_logs.csv — 主机:web-server-01 针对登录页面和搜索功能的 Web 应用程序攻击。 | 攻击类型 | 描述 | |-------------|-------------| | SQLi | 经典及盲注 SQL 注入尝试 | | XSS | 反射型、存储型及高级 XSS payload | | BruteForce | 13 次登录失败 → 登录成功 | | PathTraversal | 目录遍历以访问系统文件 | | SensitiveFile | 访问 `.env`、`wp-config.php`、`backup.zip` | | CMDInjection | OS 命令注入及反弹 shell 尝试 | ### 2. windows_auth_logs.csv — 主机:dc01-windows Windows Active Directory 和身份验证事件。 | 事件 | 描述 | |-------|-------------| | Account Lockout | 10 次登录失败 → administrator 被锁定 | | Privilege Escalation | 用户被添加至 admin 组 | | Mimikatz | 凭据转储工具被执行 | | Kerberoasting | 多次 RC4 服务票据请求 | | Backdoor User | 执行了 `net user /add backdoor` 命令 | ### 3. network_scan_logs.csv — 主机:firewall-01 在网络边界捕获到的网络层威胁。 | 威胁 | 描述 | |--------|--------| | Port Scan | 跨子网的全 TCP SYN 扫描 | | C2 Beacon | 每 30 秒一次的重复连接尝试 | | DNS Tunneling | 异常庞大的 DNS 查询字节数 | | Lateral Movement | 跨内部主机的 SMB 连接 | | Data Exfiltration | 对外部 IP 的大量出站传输 | ## 🚨 检测规则 ### 1. 暴力破解攻击检测 **文件:** `detections/brute_force_detection.spl` 检测失败登录尝试超过 5 次的源 IP。 ``` index=main sourcetype=csv attack_type=BruteForce | stats count by src_ip | where count > 5 | sort -count ``` **结果:** 检测到 `203.0.113.42` 尝试了 13 次 → 确认登录成功。 ### 2. 严重级别事件监控 **文件:** `detections/critical_events_detection.spl` 列出所有日志源中标记为 CRITICAL(严重)级别的所有事件。 ``` index=main sourcetype=csv severity=CRITICAL | table timestamp src_ip attack_type uri | sort timestamp ``` **结果:** 检测到 22 个严重事件,包括 BruteForce_Success 和 SensitiveFile 访问。 ### 3. 敏感文件访问检测 **文件:** `detections/sensitive_file_access.spl` 检测对敏感文件成功的 HTTP 访问。 ``` index=main sourcetype=csv attack_type=SensitiveFile | table timestamp src_ip uri status_code severity | sort timestamp ``` **结果:** `198.51.100.77` 访问了 `/.env`、`/wp-config.php`、`/backup.zip` — 全部返回 HTTP 200。 ### 4. 后门用户创建检测 **文件:** `detections/backdoor_user_creation.spl` 检测在域控制器上执行 `net user /add` 命令的行为。 ``` index=main source=windows_auth_logs.csv | where like(failure_reason, "%net user%") | table timestamp host user failure_reason ``` **结果:** `dc01-windows` 上的 `administrator` 执行了 `net user /add backdoor Passw0rd!` ## 🔔 Splunk 告警 配置了四个每小时运行一次的定时告警: | 告警 | 严重性 | 执行计划 | |-------|----------|----------| | DETECT - Brute Force Attack | High(高)| 每小时 | | DETECT - Critical Severity Events | Critical(严重)| 每小时 | | DETECT - Sensitive File Access | High(高)| 每小时 | | DETECT - Backdoor User Creation | Critical(严重)| 每小时 | ## 🐍 Python IOC 富化 **文件:** `enrichment/ioc_enricher.py` 使用 VirusTotal 和 AbuseIPDB API 自动富化攻击者 IP。 ``` Input : Attacker IPs from Splunk detection rules Output : Verdict (MALICIOUS / SUSPICIOUS / CLEAN) + JSON + CSV report ``` ### 结果示例 | IP | VT 评分 | Abuse 评分 | 国家/地区 | ISP | 判定 | |----|----------|-------------|---------|-----|---------| | 185.220.101.45 | 17/91 | 100% | DE | Tor Exit Node | **MALICIOUS** | | 45.33.32.156 | 4/91 | 12% | US | Linode | **SUSPICIOUS** | | 203.0.113.42 | 0/91 | 0% | — | — | CLEAN | | 198.51.100.77 | 0/91 | 0% | — | — | CLEAN | | 91.108.4.100 | 0/91 | 0% | NL | Telegram | CLEAN | ### 用法 ``` pip install -r requirements.txt python ioc_enricher.py ``` ## 📈 SOC 仪表盘 **文件:** `dashboards/soc_dashboard.xml` 包含 8 个面板的多面板暗色主题仪表盘: - **KPI 行** — 事件总数 (128)、严重事件 (22)、暴力破解尝试 (13)、独立攻击者 IP (12) - **攻击时间线** — 按时间展示严重性分布的堆叠柱状图 - **攻击类型分布** — 涵盖所有攻击类别的饼图 - **顶级攻击者 IP** — 最活跃威胁行为者的条形图 - **严重性细分** — 饼图 (CRITICAL / HIGH / MEDIUM / LOW) - **暴力破解顶级来源** — 带有热力图和风险评分的表格 - **敏感文件访问** — 成功获取敏感文件的表格 - **Windows 身份验证事件** — 按事件类型分类的条形图 - **近期严重事件** — 最新严重告警的实时表格 ## ✅ 项目路线图 - [x] Splunk Cloud 配置 - [x] 创建并接入攻击日志数据集(3 个来源,128 个事件) - [x] 编写并测试 SPL 检测规则(4 条规则) - [x] 配置 Splunk 告警(4 个告警,按小时定时执行) - [x] Python IOC 富化脚本(VirusTotal + AbuseIPDB) - [x] 构建 SOC 仪表盘(8 个面板) - [x] 完整的文档及 GitHub 设置 ## 👤 作者 **Batuhan Akkurt** Blue Team / SOC Analyst [GitHub](https://github.com/batuhann99)
标签:Python, 威胁情报, 安全运营, 开发者工具, 扫描框架, 无后门