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 次成功登录 image ### 2. 密码喷射检测 **MITRE:** T1110.003 – Brute Force: Password Spraying 检测单个源在短时间内对多个账户生成失败登录事件 (4625) 的情况——这是密码喷射的典型特征(低频慢速,一个密码尝试多个用户)。 ``` index=* EventCode=4625 | stats count by Account_Name, host ``` image ``` index=* EventCode=4624 | stats count by Account_Name, host ``` image ## **关键发现:** 实验室环境中总共有 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 ``` image **结果:** 总共 268 个事件。有两个账户超出了阈值:`LAB$`(52 个事件)和 `socen`(216 个事件)—— `socen` 被标记为高优先级异常。 ### 4. AD 组成员身份更改 **MITRE:** T1098 – Account Manipulation | T1069 – Permission Groups Discovery 监控 EventCode 4732(成员被添加到启用安全性的本地组),以通过组成员身份修改检测权限提升或持久化造成的横向移动。 ``` index=* EventCode=4732 ``` image **结果:** 检测到 12 个事件。提取的字段:`Group_Name`、`Account_Domain`、`Account_Name`。 ### 5. 创建新用户账户 **MITRE:** T1136.001 – Create Account: Local Account 监控 EventCode 4720(创建用户账户)以检测通过未经授权创建账户实现的持久化。 ``` index=* EventCode=4720 ``` image **结果:** 6 个事件 系统:LAB 洞察:创建了多个用户账户;需要验证其合法性。 ## 保存的警报 (Splunk Alerts Dashboard) 三个生产级警报被配置为计划搜索,每小时运行一次: image ## 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 安全日志, 勒索软件, 告警规则, 多向量攻击, 威胁检测, 安全仪表盘, 安全实验室, 安全运营, 密码喷洒, 库, 应急响应, 扫描框架, 特权升级, 网络安全, 自定义关联搜索, 隐私保护