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)。 **验证——确认双机日志流水线:** ![显示双主机日志摄入的 Splunk host 字段明细](https://static.pigsec.cn/wp-content/uploads/repos/cas/3b/3bea95292d5fce766132d7fae1064420bc76957f98791e2aca228126c6fca33a.png) `host` 字段明细确认正在摄入来自两台机器的事件:Kali-Splunk(1,444 个事件,98.6%)和位于 192.168.56.102 的 Ubuntu 目标(19 个事件,1.3%),证明 rsyslog 转发流水线已实现端到端的正常运行。 ## 侦察:Nmap 服务发现 (T1046) 从 Kali 对 Ubuntu 目标运行 Nmap SYN 扫描,以模拟大多数凭证攻击之前的侦察阶段。 ![显示开放端口 22 和 80 的 Nmap 扫描结果](https://static.pigsec.cn/wp-content/uploads/repos/cas/8f/8febce9f54999a423b90e13da2bb189570c2dbc1f56f47f7b68b8a6225d3dbdf.png) - **结果:**发现 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 SSH 暴力破解攻击](https://static.pigsec.cn/wp-content/uploads/repos/cas/00/00a74bd0add55da5f11875d959651a6245780b3daa55594b1b8e18b2ab33b593.png) ``` 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 检测:** ![显示失败登录激增的 Splunk 时间图表](https://static.pigsec.cn/wp-content/uploads/repos/cas/42/423293f2f02ccbc35ef289d28ede9ffab79c4f4ce234770edd9af9f0a8bdde64.png) - 构建了 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, 句柄查看, 安全运营, 实验环境, 扫描框架