khardeman/siem-incident-response-lab
GitHub: khardeman/siem-incident-response-lab
模拟真实 SOC 工作流的安全实验室,通过 Splunk 和 Wireshark 检测并分析 SSH 暴力破解攻击。
Stars: 0 | Forks: 0
# SIEM 与事件响应家庭实验室:SSH 暴力破解检测
一个模拟真实 SOC 调查工作流的实战家庭实验室——从基础设施建设,到攻击执行、检测,再到使用基于日志和基于数据包的工具进行分析。
## 概述
该实验室旨在复制 1 级/2 级 SOC 分析师的核心工作流:搭建一个受监控的环境,执行真实的攻击(MITRE ATT&CK T1110 — 暴力破解),并使用 Splunk(日志分析)和 Wireshark(数据包捕获)进行检测。其目的不仅在于了解攻击*是否*发生,更在于培养调查能力,以回答发生了*什么*、是*如何*发生的,以及有*什么证据*支持该结论。
## 实验室架构
- **攻击者/SIEM 主机:**运行 Splunk Enterprise 10.4.0 的 Kali Linux 2026.1
- **目标主机:**运行 OpenSSH 和 Apache2 的 Ubuntu Server 26.04
- **网络:**两个 VM 位于仅主机适配器 (192.168.56.0/24) 上,并带有第二个用于访问互联网的 NAT 适配器
- **日志流水线:**Ubuntu 通过 `rsyslog` 经由 UDP 514 将 syslog 和 auth.log 事件转发至 Splunk
```
[Ubuntu Server 192.168.56.102] --rsyslog (UDP 514)--> [Kali Linux 192.168.56.101]
OpenSSH (22) / Apache2 (80) Splunk Enterprise 10.4.0
```
## 构建过程
1. 部署具有双网络适配器(NAT + 仅主机)的 Kali Linux 和 Ubuntu Server VM。
2. 在 Kali 上安装并配置 Splunk Enterprise,解决了 NAT 适配器上的初始 DHCP/网络问题 (`dhcpcd eth0`)。
3. 在 Kali 上安装并启用 `rsyslog`(默认情况下不存在),确认将纯文本日志写入 `/var/log/auth.log` 和 `/var/log/syslog`。
4. 配置 Splunk 在本地监控这两个日志文件,通过 Search & Reporting 验证实时摄入。
5. 配置 Ubuntu 的 `rsyslog.conf` 以将所有日志 (`*.*`) 经由 UDP 514 转发到 Kali/Splunk 主机。
6. 在 Splunk 中创建相应的 UDP 网络输入(端口 514,sourcetype 为 `syslog`),并确认双主机日志摄入 (`index=main sourcetype=syslog`),验证 Kali 和 Ubuntu 是否均显示为独立主机。
7. 在 Ubuntu 目标上安装并启用 Apache2,以在 SSH(端口 22)之外暴露第二个服务(端口 80)。
**验证——确认双机日志流水线:**

`host` 字段明细确认正在摄入来自两台机器的事件:Kali-Splunk(1,444 个事件,98.6%)和位于 192.168.56.102 的 Ubuntu 目标(19 个事件,1.3%),证明 rsyslog 转发流水线已实现端到端的正常运行。
## 侦察:Nmap 服务发现 (T1046)
从 Kali 对 Ubuntu 目标运行 Nmap SYN 扫描,以模拟大多数凭证攻击之前的侦察阶段。

- **结果:**发现 2 个开放端口——22/tcp (OpenSSH 10.2p1)、80/tcp (Apache httpd 2.4.66)
- 998 个端口返回 RST,确认处于关闭状态
- 操作系统被指纹识别为 Linux 内核
- 扫描持续时间:20.51 秒
## 攻击模拟:SSH 暴力破解 (T1110)
**工具:**针对 Ubuntu SSH 服务的 Hydra v9.6,使用 `rockyou.txt` 字典(包含来自真实泄露数据的 14,344,399 个密码)。

```
hydra -l root -P /usr/share/wordlists/rockyou.txt -t 4 ssh://192.168.56.102
```
- `-l root` — 目标账户
- `-P` — 密码字典
- `-t 4` — 4 个并发线程
- 在攻击进行到一半时,Ubuntu 的 SSH 服务开始进行速率限制并拒绝连接——这是一种在生产环境中也能见到的真实防御响应。
## 检测与分析
结合使用两种工具来构建攻击的完整图景,这反映了真实 SOC 调查中如何结合主机和网络证据:
| 工具 | 层级 | 解答内容 |
|---|---|---|
| **Splunk** | 日志/主机级别 | 哪个账户受到攻击、尝试次数、哪个源 IP |
| **Wireshark** | 数据包/网络级别 | TCP 握手模式、SSHv2 协商、连接断开/重连节奏 |
**Wireshark 捕获:**
- 应用的过滤器:`ip.addr == 192.168.56.102 && tcp.port == 22`
- 确认了快速的 SSHv2 连接尝试,遵循以下模式:TCP 握手 → SSHv2 协商 → 身份验证失败 → 断开连接,每分钟重复数百次
- 捕获结果保存为 `ssh_bruteforce_capture.pcap` 以保留证据
- *(此仓库未包含数据包捕获截图——上述方法依据实验记录进行记录。)*
**Splunk 检测:**

- 构建了 24 小时窗口内失败密码事件的时间图表可视化
- 基准:在此之前的整个时间段内,零次失败的身份验证事件
- 异常:在 2026 年 6 月 18 日 19:29 的单个一分钟窗口内,突发了大约 44 次失败的登录事件
- 这种激增模式(突然、集中且远超既定基准)与自动化的暴力破解工具的特征相符,合法的用户行为是不可能产生这种情况的
## 关键发现
- 确认了使用行业标准 syslog 转发,将远程主机上的日志通过端到端流水线传输到集中式 SIEM
- 展示了完整的攻击者生命周期:侦察 (Nmap) → 凭证攻击 (Hydra) → 检测 (Splunk + Wireshark)
- 验证了主机级别的防御(SSH 速率限制)和检测工具均对模拟攻击做出了适当的响应
- 练习了将日志级别和数据包级别的证据相关联,以构建具有说服力的调查时间线
## MITRE ATT&CK 映射
- **T1046** — 网络服务发现(Nmap 侦察)
- **T1110** — 暴力破解(Hydra SSH 凭证攻击)
## 展示的技能
`Splunk (SIEM)` `Wireshark (Packet Analysis)` `Linux Administration` `rsyslog / Log Forwarding` `Nmap` `Hydra` `Incident Detection & Triage` `MITRE ATT&CK Framework` `Network Fundamentals (TCP/IP, SSH)`
## 备注
该实验室自托管在隔离的仅主机虚拟网络适配器上,未暴露于生产网络或公共互联网。所引用的所有 IP 地址均为私有 (RFC 1918) 实验室地址。
标签:CTI, Wireshark, 句柄查看, 安全运营, 实验环境, 扫描框架