diyaajith/SplunkTrap
GitHub: diyaajith/SplunkTrap
基于 Splunk 的检测工程实验室,针对 Windows 多向量攻击场景编写完整的 SPL 关联检测规则、告警配置与仪表盘,并逐条映射 MITRE ATT&CK 技术。
Stars: 1 | Forks: 0
# SplunkTrap
**基于 Splunk 的检测工程实验室**,模拟多向量 Windows 攻击,包括 Active Directory 滥用、凭据暴力破解、权限提升以及类似勒索软件的文件访问行为——包含自定义关联搜索、保存的警报以及文档化的 SPL 检测逻辑。
## 实验室目标
- 使用 Splunk 的 `WinEventLog:Security` sourcetype 提取并解析 Windows 安全事件日志
- 编写 SPL 关联搜索以检测真实的攻击模式
- 构建并调整带有降噪技术的已保存警报(服务账户过滤、登录类型分类)
- 将所有检测映射到 MITRE ATT&CK 技术
- 记录检测逻辑以实现可复现性及用于作品集展示
## 构建的检测规则
### 1. 暴力破解后成功登录
**MITRE:** T1110.001 – Brute Force: Password Guessing | T1078 – Valid Accounts
检测某个账户在同一 5 分钟的时间窗口内,在遭遇多次失败登录尝试 (4625) 后,紧接着出现成功登录 (4624) 的情况。过滤掉产生噪音的服务账户(SYSTEM、LOCAL SERVICE、NETWORK SERVICE),并限制为交互式/网络登录类型。
```
index=main sourcetype=WinEventLog:Security (EventCode=4625 OR EventCode=4624)
| bin _time span=5m
| stats
count(eval(EventCode=4625)) as failed_attempts
count(eval(EventCode=4624)) as success_logins
values(Source_Network_Address) as src_ip
by _time, Account_Name, host
| where failed_attempts > 3 AND success_logins > 0
```
**结果:** 1 个真阳性 —— 账户 `LAB$` 在来自 `127.0.0.1` 的 6 次失败尝试 + 11 次成功登录
### 2. 密码喷射检测
**MITRE:** T1110.003 – Brute Force: Password Spraying
检测单个源在短时间内对多个账户生成失败登录事件 (4625) 的情况——这是密码喷射的典型特征(低频慢速,一个密码尝试多个用户)。
```
index=* EventCode=4625
| stats count by Account_Name, host
```
```
index=* EventCode=4624
| stats count by Account_Name, host
```
## **关键发现:** 实验室环境中总共有 824 个事件。
### 3. 类似勒索软件的文件访问(大量对象访问)
**MITRE:** T1486 – Data Encrypted for Impact | T1083 – File and Directory Discovery
检测在短时间内执行异常大量文件/对象访问 (EventCode 4663) 的账户——这与勒索软件的枚举或批量加密行为一致。
```
index=* EventCode=4663
| stats count by Account_Name
| where count > 20
```
**结果:** 总共 268 个事件。有两个账户超出了阈值:`LAB$`(52 个事件)和 `socen`(216 个事件)—— `socen` 被标记为高优先级异常。
### 4. AD 组成员身份更改
**MITRE:** T1098 – Account Manipulation | T1069 – Permission Groups Discovery
监控 EventCode 4732(成员被添加到启用安全性的本地组),以通过组成员身份修改检测权限提升或持久化造成的横向移动。
```
index=* EventCode=4732
```
**结果:** 检测到 12 个事件。提取的字段:`Group_Name`、`Account_Domain`、`Account_Name`。
### 5. 创建新用户账户
**MITRE:** T1136.001 – Create Account: Local Account
监控 EventCode 4720(创建用户账户)以检测通过未经授权创建账户实现的持久化。
```
index=* EventCode=4720
```
**结果:** 6 个事件
系统:LAB
洞察:创建了多个用户账户;需要验证其合法性。
## 保存的警报 (Splunk Alerts Dashboard)
三个生产级警报被配置为计划搜索,每小时运行一次:
## MITRE ATT&CK 覆盖范围
| 技术 ID | 技术名称 | 检测 |
|---|---|---|
| T1110.001 | Brute Force: Password Guessing | 暴力破解 + 成功登录关联 |
| T1110.003 | Brute Force: Password Spraying | 密码喷射检测 |
| T1078 | Valid Accounts | 暴力破解后的成功登录 |
| T1098 | Account Manipulation | EventCode 4732 组更改监控 |
| T1136.001 | Create Account: Local Account | EventCode 4720 监控 |
| T1486 | Data Encrypted for Impact | 大量 4663 对象访问 |
| T1083 | File and Directory Discovery | 4663 数量异常基线 |
## 使用的关键 SPL 技术
- `bin _time span=5m` — 用于关联的时间窗口分桶
- `stats count` 中的 `eval(EventCode=4625)` — 在单次搜索中进行条件计数
- `values(Source_Network_Address) as src_ip` — 多值字段聚合
- `search Account_Name!=` — 降噪 / 排除服务账户
- `eval is_user_login=if(Logon_Type=2 OR Logon_Type=10, 1, 0)` — 登录类型分类
- `where count > N` — 基于阈值的异常检测
## 实验室环境
| 组件 | 详细信息 |
|---|---|
| SIEM | Splunk Enterprise 10.2.2 |
| 日志源 | WinEventLog:Security (Windows 主机: LAB) |
| Sourcetype | WinEventLog:Security |
| 索引 | main |
| 攻击模拟 | 手动 + 脚本化的 Windows 事件生成 |
### 2. 密码喷射检测
**MITRE:** T1110.003 – Brute Force: Password Spraying
检测单个源在短时间内对多个账户生成失败登录事件 (4625) 的情况——这是密码喷射的典型特征(低频慢速,一个密码尝试多个用户)。
```
index=* EventCode=4625
| stats count by Account_Name, host
```
```
index=* EventCode=4624
| stats count by Account_Name, host
```
## **关键发现:** 实验室环境中总共有 824 个事件。
### 3. 类似勒索软件的文件访问(大量对象访问)
**MITRE:** T1486 – Data Encrypted for Impact | T1083 – File and Directory Discovery
检测在短时间内执行异常大量文件/对象访问 (EventCode 4663) 的账户——这与勒索软件的枚举或批量加密行为一致。
```
index=* EventCode=4663
| stats count by Account_Name
| where count > 20
```
**结果:** 总共 268 个事件。有两个账户超出了阈值:`LAB$`(52 个事件)和 `socen`(216 个事件)—— `socen` 被标记为高优先级异常。
### 4. AD 组成员身份更改
**MITRE:** T1098 – Account Manipulation | T1069 – Permission Groups Discovery
监控 EventCode 4732(成员被添加到启用安全性的本地组),以通过组成员身份修改检测权限提升或持久化造成的横向移动。
```
index=* EventCode=4732
```
**结果:** 检测到 12 个事件。提取的字段:`Group_Name`、`Account_Domain`、`Account_Name`。
### 5. 创建新用户账户
**MITRE:** T1136.001 – Create Account: Local Account
监控 EventCode 4720(创建用户账户)以检测通过未经授权创建账户实现的持久化。
```
index=* EventCode=4720
```
**结果:** 6 个事件
系统:LAB
洞察:创建了多个用户账户;需要验证其合法性。
## 保存的警报 (Splunk Alerts Dashboard)
三个生产级警报被配置为计划搜索,每小时运行一次:
## MITRE ATT&CK 覆盖范围
| 技术 ID | 技术名称 | 检测 |
|---|---|---|
| T1110.001 | Brute Force: Password Guessing | 暴力破解 + 成功登录关联 |
| T1110.003 | Brute Force: Password Spraying | 密码喷射检测 |
| T1078 | Valid Accounts | 暴力破解后的成功登录 |
| T1098 | Account Manipulation | EventCode 4732 组更改监控 |
| T1136.001 | Create Account: Local Account | EventCode 4720 监控 |
| T1486 | Data Encrypted for Impact | 大量 4663 对象访问 |
| T1083 | File and Directory Discovery | 4663 数量异常基线 |
## 使用的关键 SPL 技术
- `bin _time span=5m` — 用于关联的时间窗口分桶
- `stats count` 中的 `eval(EventCode=4625)` — 在单次搜索中进行条件计数
- `values(Source_Network_Address) as src_ip` — 多值字段聚合
- `search Account_Name!=` — 降噪 / 排除服务账户
- `eval is_user_login=if(Logon_Type=2 OR Logon_Type=10, 1, 0)` — 登录类型分类
- `where count > N` — 基于阈值的异常检测
## 实验室环境
| 组件 | 详细信息 |
|---|---|
| SIEM | Splunk Enterprise 10.2.2 |
| 日志源 | WinEventLog:Security (Windows 主机: LAB) |
| Sourcetype | WinEventLog:Security |
| 索引 | main |
| 攻击模拟 | 手动 + 脚本化的 Windows 事件生成 |标签:Active Directory 攻击, AMSI绕过, Cloudflare, MITRE ATT&CK, SPL 搜索语言, SSH 暴力破解, Web 服务器漏洞利用, Windows 安全日志, 勒索软件, 告警规则, 多向量攻击, 威胁检测, 安全仪表盘, 安全实验室, 安全运营, 密码喷洒, 库, 应急响应, 扫描框架, 特权升级, 网络安全, 自定义关联搜索, 隐私保护