shivvv3824/SIEM-Log-Analysis-Threat-Hunting

GitHub: shivvv3824/SIEM-Log-Analysis-Threat-Hunting

一个基于实验室的 SIEM 日志分析与威胁狩猎项目,利用模拟日志与威胁情报丰富在 Splunk 中实现可复现的检测验证。

Stars: 0 | Forks: 0

# SIEM 日志分析与威胁狩猎仪表板(实验室) 端到端实验室项目:生成 **500k+** 条模拟的 Windows 安全 + Linux 风格 JSON 日志,使用 **VirusTotal** 和 **AbuseIPDB** 对公共 IP 进行丰富化,然后使用 MITRE 对齐的 SPL 在 **Splunk Enterprise** 中进行狩猎。 ## 仓库结构 | 文件 | 用途 | |------|------| | `log_generator.py` | 第 1 阶段 – 模拟基线 + 注入的攻击场景 | | `enrichment_engine.py` | 第 2 阶段 – VT + AbuseIPDB 并带 SQLite 缓存 | | `docker-compose.yml` | 第 3 阶段 – 本地 Splunk Enterprise(Docker) | | `splunk/threat_hunting_dashboard.spl` | 第 4 阶段 – 可复制粘贴的 SPL 面板 | | `.env.example` | API 密钥模板(`cp .env.example .env`) | ## 第 1 阶段 – 生成日志 ``` python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt # 快速烟雾测试(10k 事件) python log_generator.py --total 10000 --out raw_logs.jsonl --seed 42 # 全量(500k+) python log_generator.py --total 550000 --out raw_logs.jsonl --seed 42 ``` 输出换行分隔的 JSON(`raw_logs.jsonl`),Splunk 可将其作为 `_json` 良好处理。 ## 第 2 阶段 – 威胁情报丰富化 ``` cp .env.example .env # 编辑 .env 并设置 VIRUSTOTAL_API_KEY 和 ABUSEIPDB_API_KEY python enrichment_engine.py --in raw_logs.jsonl --out enriched_logs.json --max-api-ips 200 --sleep 15 ``` 说明: - **SQLite** 缓存(`intel_cache.sqlite3`)可避免对同一 IP 重复查询。 - **`--max-api-ips`** 限制对大型文件查询的唯一公共 IP 数(保护免费层级)。 - **`--sleep`** 控制请求间隔(AbuseIPDB 免费层级限制严格)。 - **离线 / CI**:设置 `SKIP_LIVE_APIS=1` 运行 `python enrichment_engine.py ...`,可在不调用 API 的情况下写入 `ti_summary` 字段。 每条丰富化记录包含: - `threat_intel`:每个 IP 的 `{ "virustotal": {...}, "abuseipdb": {...} }` - `ti_summary`:`{ "abuse_score_max": ..., "vt_malicious_max": ..., "public_ip_count": ... }` ## 第 3 阶段 – Docker 中的 Splunk 先决条件:Docker Desktop(macOS),足够内存(Splunk 较重;**建议 8 GB+**)。 ``` export SPLUNK_PASSWORD='ChangeMe!ChangeMe!' docker compose up -d ``` 打开 **Splunk Web**:`http://localhost:8000` 登录账号:**`admin`** / 在 `SPLUNK_PASSWORD` 中设置的密码。 ### 首次启动密码安全 在首次启动前在 `SPLUNK_PASSWORD` 中设置强密码。如需后续修改,请在 **Settings → Users and authentication** 中使用 Splunk 账户流程(或在容器内使用 CLI)。对于一次性实验室,最简单的方法是删除并重新创建卷: ``` docker compose down -v export SPLUNK_PASSWORD='NewStrongPasswordHere!' docker compose up -d ``` ### 上传 `enriched_logs.json` 1. **Settings → Add Data → Upload** 2. 选择 `enriched_logs.json` 3. **设置主机**(任意值,例如 `lab-generator`) 4. **输入设置** - **来源类型:** `_json`(或自定义来源类型;参见下文) - **索引:** `main`(默认)或新建 `threat_lab` 5. **确认并提交** ### 自定义来源类型以获得更清晰的 JSON 时间戳(推荐) **Settings → Source types → New** - 名称:`json_threat_lab` - **高级设置**(或通过 `props.conf` 在本地应用中):启用 JSON 提取并对 Windows 与 Linux 时间戳启用时间解析。 在本地应用(例如容器内的 `etc/apps/search/local/props.conf`)中创建最小的 `props.conf` 片段: ``` [json_threat_lab] KV_MODE = json TIME_PREFIX = "TimeCreated"\s*:\s*" TIME_FORMAT = %Y-%m-%dT%H:%M:%S%z MAX_TIMESTAMP_LOOKAHEAD = 32 ``` 由于某些事件使用 `timestamp` 而非 `TimeCreated`,SPL 文件中使用 `coalesce(strptime(...))` 模式以确保面板在两种格式下均可工作。 定义来源类型后,**重新摄取**或**为现有输入分配来源类型**。 ## 第 4 阶段 – SPL 仪表板 打开 `splunk/threat_hunting_dashboard.spl`,将每个面板查询复制到 **Search & Reporting → Save As → Dashboard Panel**。 替换: - `index=main` 替换为你的索引(例如 `index=threat_lab`) - `sourcetype=json_threat_lab` 替换为你配置过的来源类型 ## 将本项目发布到 GitHub 目标仓库(空仓):[shivvv3824/SIEM-Log-Analysis-Threat-Hunting](https://github.com/shivvv3824/SIEM-Log-Analysis-Threat-Hunting)。 **如果 Cursor 的代理或沙箱阻止 `.git`**:在 **Terminal.app**(或 iTerm)中运行以下命令,而不是在受限代理 shell 中: ``` cd /path/to/siem-threat-hunting-dashboard chmod +x scripts/push_to_github.sh ./scripts/push_to_github.sh ``` 该脚本会移除任何损坏的本地 `.git`,初始化 `main`,提交并使用 HTTPS 推送到 `origin`。系统会提示输入 GitHub 凭据,或可使用凭据助手 / 个人访问令牌。 **等效手动操作:** ``` cd siem-threat-hunting-dashboard rm -rf .git git init -b main git add . git commit -m "Initial commit: synthetic SIEM logs, enrichment, Splunk SPL" git remote add origin https://github.com/shivvv3824/SIEM-Log-Analysis-Threat-Hunting.git git push -u origin main ``` (可选)安装 [GitHub CLI](https://cli.github.com/) 并使用 `gh repo create` 以获得更快捷的路径。 ## 法律与道德使用 仅使用合成数据。API 密钥归您所有;请遵守 **VirusTotal** 与 **AbuseIPDB** 的条款与速率限制。本仓库仅供 **教育与授权测试** 使用。
标签:AbuseIPDB, Cloudflare, Conpot, Docker, IP信誉, JSON日志, Linux日志, MITRE ATT&CK, SQLite缓存, Windows安全, 免费API, 合成日志, 威胁情报, 安全仪表板, 安全运营, 安全防御评估, 开发者工具, 扫描框架, 数据富集, 日志丰富化, 日志可视化, 日志摄取, 日志生成, 病毒总览, 网络威胁, 请求拦截, 逆向工具