PurpleDefender249/Purple-Labs
GitHub: PurpleDefender249/Purple-Labs
一套包含 9 个实战实验的 SOC 安全运营与威胁狩猎课程,通过攻击模拟、SIEM 日志分析和检测规则编写帮助学习者构建可验证的安全分析作品集。
Stars: 0 | Forks: 0
# SOC 与 Threat Hunting 实验室课程
### 从攻击模拟到检测工程 — 9 个实战实验系列




## 关于本课程
这是一门自定节奏的实战课程,专为那些希望从“我知道 Nmap 和 Metasploit 是做什么的”进阶到**“我能够发动攻击、看着它在 SIEM 中落地、编写检测规则,并像分析师一样解释证据”**的人而设计。
每个实验都遵循相同的循环:
**攻击 → 日志 → 检测 → 记录。**
你将从 Kali Linux 对真实目标(专用受害者 VM)执行真实的攻击技术,观察生成的证据进入 ELK Stack SIEM,为其构建检测(查询、警报或仪表板),并像 SOC 分析师一样撰写调查报告。
无需观看任何视频——每个实验都有完整的文本文档,包含精确的命令、预期的输出,以及明确标记的截图位置,以便**你**捕获截图,使报告拥有真实的视觉证据。
## 实验环境架构
三台虚拟机,一个隔离的内部网络:
```
flowchart LR
subgraph VMware Host-Only Network 192.168.56.0/24
K["🐉 Kali Linux
Attacker
192.168.56.101"] U["📊 Ubuntu Server
ELK Stack (SIEM)
192.168.56.102"] M["🎯 Metasploitable2
Victim
192.168.56.103"] end K -- "attacks / scans" --> M M -- "syslog / auth.log" --> U K -- "views dashboards :5601" --> U K -. "some labs: attacker log source too" .-> U ``` | 机器 | 角色 | 操作系统 | IP(本课程) | |---|---|---|---| | Kali Linux | 攻击者 / 红队环境 | Kali Rolling 2025.3 | `192.168.56.101` | | ELK-SIEM | 日志聚合、检测、仪表板 | Ubuntu Server 22.04 LTS | `192.168.56.102` | | Metasploitable2 | 故意存在漏洞的受害者 | Ubuntu 8.04 (自定义) | `192.168.56.103` | ## 仓库结构 ``` soc-threat-hunting-course/ ├── README.md ← you are here ├── 00-Environment-Setup/ │ ├── README.md ← build the 3-VM lab network + ELK │ └── media/ ← your screenshots for this phase ├── Lab-01-SSH-Bruteforce-Detection/ │ ├── README.md │ └── media/ ├── Lab-02-Port-Scan-Detection-Engineering/ ├── Lab-03-Reverse-Shell-Network-Detection/ ├── Lab-04-SOC-Investigation-Simulation/ ├── Lab-05-Custom-Log-Based-IDS-Script/ ├── Lab-06-Beaconing-Traffic-Detection/ ├── Lab-07-Exploitation-Visibility-Analysis/ ├── Lab-08-Web-Attack-Detection-SIEM/ └── Lab-09-Baseline-vs-Attack-Deviation/ ``` 每个实验文件夹都是独立的:其 `README.md` 是完整的操作手册,其 `media/` 文件夹仅包含该实验的截图。 ## 本课程中媒体文件的使用方式 你永远不需要录制或编辑视频。在学习每个实验时,本课程会明确告诉你: - **捕获什么**(特定的终端输出、Kibana 面板、Wireshark 过滤结果等) - **文件如何命名**(统一的命名规范,例如 `lab01-03-hydra-bruteforce-running.png`) - **它放在哪里**(放在哪个 `media/` 文件夹,以及嵌入在该实验 `README.md` 的哪一行——我会提供给你精确的 Markdown 以便粘贴) 命名规范:`lab--.png`(对于任何需要展示动态的内容,请使用 `.gif`,例如正在实时更新的仪表板)。
## 发布到 GitHub
1. 创建一个新的 **公开(public)** GitHub 仓库,例如 `soc-threat-hunting-labs`。
2. 按原样推送此文件夹结构。
3. 在仓库页面添加 topics/标签:`soc`、`threat-hunting`、`siem`、`elk-stack`、`detection-engineering`、`blue-team`、`cybersecurity`。
4. 完成后将其置顶在你的 GitHub 个人主页上——它可以作为 SOC/检测工程求职时的作品集展示。
5. 所有实验完成后可选的润色操作:添加 `LICENSE`(MIT 许可证通常用于教育内容)以及根目录的架构图(如果你也想要一张静态图片,可以通过 Mermaid Live Editor 将上面的 Mermaid 图表导出为 PNG)。
## 课程目录
| # | 实验标题 | 核心技能 | 主要工具 |
|---|---|---|---|
| 1 | [在 ELK 中检测 SSH 暴力破解](./Lab-01-SSH-Bruteforce-Detection/README.md) | 基于认证日志的阈值告警 | Hydra, Nmap, ELK |
| 2 | [端口扫描检测工程实验](./Lab-02-Port-Scan-Detection-Engineering/README.md) | 侦察检测、误报调优 | Nmap, ELK |
| 3 | [反弹 Shell 网络检测研究](./Lab-03-Reverse-Shell-Network-Detection/README.md) | 数据包级别的 C2 识别 | Netcat, Metasploit, Wireshark |
| 4 | [端到端 SOC 调查模拟](./Lab-04-SOC-Investigation-Simulation/README.md) | 完整攻击链 + 事件时间线 | Nmap, Metasploit, Wireshark, ELK |
| 5 | [基于自定义日志的入侵检测脚本](./Lab-05-Custom-Log-Based-IDS-Script/README.md) | 自定义检测工程 | Python, ELK (通过 Filebeat/HTTP) |
| 6 | [Beaconing 流量检测实验](./Lab-06-Beaconing-Traffic-Detection/README.md) | 时间序列 / 周期性检测 | Netcat, Wireshark, ELK |
| 7 | [漏洞利用可见性分析](./Lab-07-Exploitation-Visibility-Analysis/README.md) | 日志覆盖盲区分析 | Metasploit, ELK |
| 8 | [在 SIEM 中检测 Web 攻击](./Lab-08-Web-Attack-Detection-SIEM/README.md) | Web 日志检测工程 | Metasploit (DVWA/Mutillidae), ELK |
| 9 | [网络基线与攻击偏差报告](./Lab-09-Baseline-vs-Attack-Deviation/README.md) | 基线建立与异常记录 | Wireshark, Nmap, ELK |
### 实验简介
**实验 1 — 在 ELK 中检测 SSH 暴力破解**
使用 Hydra 模拟针对受害者 VM 的真实 SSH 凭证填充攻击,通过 Filebeat 将 `auth.log` 接入 ELK,并构建 Kibana 可视化图表和阈值警报,当登录失败速度超过基线时触发警报。目标:理解大规模认证滥用在原始日志中与在 SIEM 中的不同表现形式,以及如何调优阈值,使其能够捕获攻击而不对正常输入错误产生误报。
**实验 2 — 端口扫描检测工程实验**
对受害者运行多种 Nmap 扫描类型(`-sS`、`-sT`、`-sA`、`-sU`、`-Pn`、时间模板),并在网络和日志中捕获它们。构建 ELK 检测逻辑,基于“每个源在每个时间窗口的唯一端口计数”来标记侦察行为,并特意针对“嘈杂但良性”的流量样本进行调优以减少误报。目标:学习检测灵敏度与分析师警报疲劳之间的权衡。
**实验 3 — 反弹 Shell 网络检测研究**
从受害者向 Kali 生成多个反弹 Shell(Netcat 和 Metasploit/`msfvenom` payload),在 Wireshark 中捕获流量,并识别 Shell 活动的网络指纹——长持续时间低流量连接、异常目标端口、交互式 Shell 数据包时序。目标:学习仅从数据包行为中发现 C2 通道,而不依赖 payload 签名。
**实验 4 — 端到端 SOC 调查模拟**
将所有内容串联起来:扫描 → 漏洞利用 → Shell → 后渗透,同时在 Wireshark 和 ELK 中捕获。然后生成一份结构化的事件报告,其中包含将每个攻击阶段与其检测证据(或缺失的证据)相关联的时间线。目标:练习实际的 SOC/IR 交付物——一份能让 Tier-2 分析师或事件指挥官在毫无背景的情况下直接看懂的时间线。
**实验 5 — 基于自定义日志的入侵检测脚本**
编写一个 Python 脚本,实时追踪 `auth.log`,使用你自己的逻辑(而非 SIEM 查询)检测暴力破解模式,并通过 HTTP/Filebeat 将结构化的 JSON 警报转发到 ELK。目标:从第一性原理理解检测工程——SIEM 内置的关联规则在底层实际上是如何工作的——并为你的作品集制作一个小巧可复用的工具。
**实验 6 — Beaconing 流量检测实验**
模拟周期性的 C2 风格签入流量(通过脚本化的 Netcat 循环),并使用 Wireshark 统计数据和 ELK 时间桶查询来检测 beacon 间隔、抖动和规律性。目标:学习基于间隔/统计的检测方法,这种方法能够捕获任何签名都无法发现的 C2 流量。
**实验 7 — 漏洞利用可见性分析**
利用受害者上的易受攻击服务(例如通过 Metasploit),并刻意比较同一事件的三个视图:原始应用程序/系统日志、默认的 ELK 数据接入,以及专门构建的检测。目标:学习识别和清晰表述**监控盲区**——这是一项很少被直接教授的核心 SOC 成熟度技能。
**实验 8 — 在 SIEM 中检测 Web 攻击**
针对受害者 VM 上的易受攻击 Web 应用程序模拟常见的 Web 攻击(SQLi、XSS、目录遍历、编码 payload),将 Web 服务器日志接入 ELK,并为可疑参数、HTTP 错误代码激增和编码异常(例如 `%27`、`
Attacker
192.168.56.101"] U["📊 Ubuntu Server
ELK Stack (SIEM)
192.168.56.102"] M["🎯 Metasploitable2
Victim
192.168.56.103"] end K -- "attacks / scans" --> M M -- "syslog / auth.log" --> U K -- "views dashboards :5601" --> U K -. "some labs: attacker log source too" .-> U ``` | 机器 | 角色 | 操作系统 | IP(本课程) | |---|---|---|---| | Kali Linux | 攻击者 / 红队环境 | Kali Rolling 2025.3 | `192.168.56.101` | | ELK-SIEM | 日志聚合、检测、仪表板 | Ubuntu Server 22.04 LTS | `192.168.56.102` | | Metasploitable2 | 故意存在漏洞的受害者 | Ubuntu 8.04 (自定义) | `192.168.56.103` | ## 仓库结构 ``` soc-threat-hunting-course/ ├── README.md ← you are here ├── 00-Environment-Setup/ │ ├── README.md ← build the 3-VM lab network + ELK │ └── media/ ← your screenshots for this phase ├── Lab-01-SSH-Bruteforce-Detection/ │ ├── README.md │ └── media/ ├── Lab-02-Port-Scan-Detection-Engineering/ ├── Lab-03-Reverse-Shell-Network-Detection/ ├── Lab-04-SOC-Investigation-Simulation/ ├── Lab-05-Custom-Log-Based-IDS-Script/ ├── Lab-06-Beaconing-Traffic-Detection/ ├── Lab-07-Exploitation-Visibility-Analysis/ ├── Lab-08-Web-Attack-Detection-SIEM/ └── Lab-09-Baseline-vs-Attack-Deviation/ ``` 每个实验文件夹都是独立的:其 `README.md` 是完整的操作手册,其 `media/` 文件夹仅包含该实验的截图。 ## 本课程中媒体文件的使用方式 你永远不需要录制或编辑视频。在学习每个实验时,本课程会明确告诉你: - **捕获什么**(特定的终端输出、Kibana 面板、Wireshark 过滤结果等) - **文件如何命名**(统一的命名规范,例如 `lab01-03-hydra-bruteforce-running.png`) - **它放在哪里**(放在哪个 `media/` 文件夹,以及嵌入在该实验 `README.md` 的哪一行——我会提供给你精确的 Markdown 以便粘贴) 命名规范:`lab