AnnsGilani/SOC-Threat-Hunting-Ecommerce

GitHub: AnnsGilani/SOC-Threat-Hunting-Ecommerce

基于 Splunk Enterprise 对模拟电商服务器的合成访问日志进行威胁狩猎调查,检测并记录了五类 Web 攻击活动。

Stars: 0 | Forks: 0

# 电商 SOC 调查 — Splunk 威胁狩猎项目 使用 Splunk Enterprise 和 SPL 进行的自主 SOC 调查,针对模拟的电商 Web 服务器,旨在检测、关联并记录混入正常流量中的真实攻击行为。 ![仪表盘概览](https://raw.githubusercontent.com/AnnsGilani/SOC-Threat-Hunting-Ecommerce/main/screenshots/dashboard-overview.png) ## 概述 - **数据集:** 250,000 个事件,Apache Combined Log Format - **时间范围:** 14 天(2026 年 7 月 6 日–19 日) - **唯一客户端 IP:** ~1,383 - **工具:** Splunk Enterprise, SPL - **确认的发现:** 识别并验证了 5 次不同的攻击活动 该数据集是一个合成的访问日志,旨在模拟真实的电商流量——正常浏览、结账流程、静态资产、健康检查——同时攻击活动被直接穿插在同一时间线中。攻击者 IP **并未**被放置在与合法流量分离的地址段中,这意味着检测必须依赖于行为(请求率、payload 内容、响应代码模式、目标 endpoint),而不是简单的 IP 封锁过滤。 ## 方法论 1. 建立正常 Web 流量的基线(吞吐量、状态码分布、HTTP 方法) 2. 识别最活跃的客户端 IP 3. 审查请求的 URI 以查找恶意模式 4. 检查 HTTP 响应码以发现异常 5. 调查可疑的 user agent 6. 使用 `timechart` 关联时间戳和攻击序列 7. 使用 `stats` 聚合而不是原始事件列表来验证每项发现的总范围(见下文注释) 8. 记录证据并构建仪表盘以进行持续监控 **期间总结的经验:** Splunk 的默认事件列表视图仅显示有上限的结果页。在此次调查的早期阶段,仅凭肉眼观察该视图严重低估了某次活动的实际持续时间。改为运行 `stats count, min(_time) as first, max(_time) as last by clientip` 后,每次都能得出真实的时间窗口——这现在已成为以下每项发现的固定习惯。 ## 确认的 IOC 摘要 | 源 IP | 攻击类型 | 严重性 | 状态 | |---|---|---|---| | `111.115.221.94` | SQL 注入(自动化,sqlmap) | 高 | 已检测 | | `59.32.208.15` | 凭据暴力破解 (`/wp-login.php`) | 严重 | 已检测 — 尝试约 3,200 次后有 1 次成功登录 | | `167.25.135.250` | 目录枚举 | 高 | 已检测 | | `188.32.158.82` | 强制浏览 (Feroxbuster) | 中 | 已检测 | | `89.159.44.17` | 管理后台门户攻击(Basic-Auth 暴力破解) | 严重 | 已检测 — 尝试约 1,400 次后有 1 次成功登录 | ## 详细发现 ### 发现 1 — SQL 注入 (`111.115.221.94`) 在 URI 参数中观察到自动化的 SQL 注入 payload,集中在短暂的高频时间窗口内。 ``` index=web_lab clientip="111.115.221.94" | timechart span=5m count by status ``` ### 发现 2 — 凭据暴力破解 (`59.32.208.15`) 在约 32 分钟内对 `/wp-login.php` 发起持续的 POST 请求,尝试约 3,200 次,在密集的失败尝试之后紧接着出现了一次成功的身份验证。 ``` index=web_lab clientip="59.32.208.15" | timechart span=1m count by status ``` ### 发现 3 和 4 — 目录枚举 / 强制浏览 针对不同 endpoint 的两波独立枚举,其中一波通过其 Feroxbuster user agent 字符串被识别出来。 ``` index=web_lab (clientip="167.25.135.250" OR clientip="188.32.158.82") | timechart span=2m count by clientip ``` ### 发现 5 — 管理后台门户攻击 (`89.159.44.17`) 针对 `/admin/` 的 HTTP Basic-Auth 暴力破解。由于目标使用 Basic-Auth,因此可以直接从 Splunk 的 `user` 字段中恢复尝试的用户名——这是比单看请求量更强的 IOC。 ``` index=web_lab clientip="89.159.44.17" | stats count by user | sort -count ``` ## 仪表盘 一个 Splunk 经典仪表盘 (`dashboard/ecommerce_soc_dashboard.xml`) 汇总了所有五项发现以及基线流量面板:一个 KPI 条、整体流量时间线、确认的 IOC 表格,以及针对每项发现的专用下钻面板。 ## 建议 - 部署 Web 应用防火墙 (WAF) - 对所有特权账户强制执行多因素身份验证 (MFA) - 对身份验证 endpoint 实施速率限制 - 监控来自单一源的连续 404/403 爆发 - 根据 user agent 检测并拦截已知的自动化扫描工具 - 验证并清理所有用户输入 ## 关键要点 ## 仓库内容 ``` ├── README.md ├── dashboard/ │ └── ecommerce_soc_dashboard.xml ├── screenshots/ └── report/ └── SOC_Threat_Hunting_Investigation_Report.pdf ``` ## 作者 Muhammad Anas Gilani — 计算机科学 (BSCS) 学生,正致力于成为 SOC 分析师和云安全工程师。
标签:CISA项目, IP 地址批量处理, Web安全, 安全运营, 密码管理, 扫描框架, 蓝队分析