rehmanwaraich07/Network-Security-Monitoring-and-Threat-Hunting-Lab
GitHub: rehmanwaraich07/Network-Security-Monitoring-and-Threat-Hunting-Lab
一个集成了IDS、NSM、SIEM和SOAR的网络安全监控实验室,通过多层检测与自动化响应pipeline实现了对C2通信、DNS隧道和数据外泄等威胁的高效猎杀与处置。
Stars: 0 | Forks: 0
# 网络安全监控与威胁狩猎实验室
我构建了一个高级的**网络威胁狩猎与自动化响应实验室**,利用**多层检测和 SOAR pipeline**,能够实时检测 C2 beaconing、DNS tunneling 和数据外泄等复杂攻击。
该系统结合了用于基于签名检测的 **Suricata IDS**、用于行为分析的 **Zeek NSM**、用于关联的 **Splunk** 以及用于自动化但经分析师批准的响应的 **Tines SOAR**,将总响应时间从 **20-30 分钟缩短至 5 分钟以内**。
[查看代码](#)

## 问题背景
现代网络攻击使用**自定义 C2 框架、隐蔽通道和 DNS tunneling**,可以轻松逃避纯粹的基于签名的 IDS。在许多 SOC 中:
- **分析师每个事件耗费 20-30 分钟**,手动在各种工具之间切换,丰富 IP/域名信息,并请求防火墙更改。
- **仅基于签名的检测**会漏掉未知工具和低速慢速的数据外泄。
- **误报率 (15%+)** 会导致警报疲劳,并拖慢真正的调查进度。
- **响应是手动的** – 即使在检测到之后,工程师也必须手动构建防火墙规则并记录操作。
该实验室旨在展示 **多层检测 + 自动化响应** 的方法如何以类似于真实 SOC 的方式填补这些空白。
## 解决方案
我实现了一个端到端的 **网络流量捕获 -> 签名检测 (Suricata) -> 行为分析 (Zeek) -> SIEM 关联 (Splunk) -> SOAR 自动化 (Tines) -> 自动化响应 (PowerShell + Windows 防火墙)** pipeline,并对关键控制操作实施了**人工审批**。
**主要成果:**
- 总响应时间减少 **75%+** (20-30 分钟 -> < 5 分钟)
- 15 个攻击场景下的检测率达到 **93%**
- **误报率从约 15% 降至约 3%**
- 分析师重复性工作量减少 **85%**
- 能够在无公开签名的情况下**检测未知的 C2 流量**
## 实验室架构
- **攻击者 – Kali Linux**
- 自定义 Python C2 服务器
- 用于生成 C2 beaconing、DNS tunneling 和数据外泄的工具
- **监控端 – Ubuntu 24.04 Server**
- **Suricata** 用于基于签名的 IDS
- **Zeek** 用于网络安全监控和行为分析
- **Splunk Enterprise** 作为中央 SIEM
- **受害者 – Windows 10 / 11**
- **Sysmon** 用于提供丰富的端点遥测数据
- 启用 **PowerShell Remoting (WinRM)**
- Windows 防火墙用于自动化 IP 封锁
支持资源(位于仓库中):
- `public/Network_Analysis_Lab/overview.svg` – 架构概述
- `public/Network_Analysis_Lab/lab-setup-overview.png` – 实验室环境布局
## 分步实现
### 阶段 1:网络安全监控设置
我在 Ubuntu 上部署了 **Suricata IDS** 和 **Zeek NSM**,以捕获并分析镜像的网络流量:
- 配置监控接口为混杂模式,以进行完整的数据包捕获。
- 安装并配置了 Suricata,使用了 **Emerging Threats** 规则集以及自定义规则。
- 部署了 Zeek 用于协议分析和行为检测。
- 验证了这两个工具都在主动捕获和记录流量。
截图(存储在 `public/Network_Analysis_Lab` 下):
- `suricata-installed.png` – Suricata 安装完成
- `suricata-configurations.png` – 针对监控接口的 Suricata 配置
- `suricata-started-after-configurations.png` – 配置后运行中的 Suricata
- `zeek-installed.png` – Zeek 安装成功
- `zeek-network-configurations-.png` – Zeek 网络接口配置
- `zeek-deploy&started-after-scripts.png` – 使用自定义脚本部署并启动 Zeek
- `can-see-zeek-current-logs.png` – 验证实时 Zeek 日志
### 阶段 2:SIEM 集成与日志关联 (Splunk)
我安装了 **Splunk Enterprise**,并使用 **Splunk Universal Forwarders** 将其与 Suricata 和 Zeek 集成:
- 为 `suricata_alerts`、`zeek_conn` 和 `zeek_dns` 创建了自定义索引。
- 在 Ubuntu 监控主机上配置了 forwarder(并在需要时配置了 Windows)。
- 构建了关联搜索用于:
- C2 beaconing 模式(固定间隔、一致的数据包大小)
- DNS tunneling 指标(长子域名、高查询量)
- 数据外泄(大出站传输、异常目标)
相关截图:
- `splunk-downloaded.png` – Splunk 包安装
- `splunk-dashboard-accessed.png` – 验证 Splunk UI 访问
- `splunkforwarder-installed-on-windows.png` – 在 Windows 上部署的 Forwarder
- `splunkforwarder-configurations.png` – 针对日志源的 Forwarder 配置
- `enable-forwarding-splunk.png` – 启用日志转发
- `restarting-splunkforwarder-after-configurations.png` – 更改后重启 Forwarder
- `can-see-logs-in-splunk-dashboard.png` – Splunk 中可见的网络安全数据
- `IOCs-query-at-splunk.png` – 搜索 IOC 和关联的检测
### 阶段 3:自定义 C2 服务器开发
为了避免依赖商业红队工具,我构建了一个**基于 Python 的 C2 服务器**和一个简单的 PowerShell 代理:
- C2 服务器:
- 实现具有可配置间隔和 jitter 的 HTTP/HTTPS beaconing。
- 跟踪代理 ID、主机名和最后看到的时间戳。
- 文件:`public/Network_Analysis_Lab/c2_server.py`
- PowerShell 代理 (Windows):
- 定期的 HTTP POST beacon,附带主机和系统元数据。
- 可配置的间隔和 jitter,以模拟真实的恶意软件 C2。
截图:
- `running-c2-server.py-in-kali.png` – Kali 上运行的 C2 服务器
- `success-beacon-at-kali.png` – C2 服务器接收到的成功 beacon
- `sucess-beacon-on-windows-victim-machine.png` – 确认来自 Windows 受害者的 beaconing
支持检测脚本:
- `c2-beaconing-script(zeek).txt` – 用于 C2 beacon 检测的 Zeek 脚本
- `detect-data-exfil-script(zeek).txt` – 用于外泄模式检测的 Zeek 脚本
### 阶段 4:威胁检测测试
我在 **15 个攻击场景**中验证了检测质量,包括:
- 具有不同间隔和 jitter 配置的 C2 beaconing
- 带有编码 payload 的 DNS tunneling 尝试
- 使用 HTTP 和其他协议的数据外泄
- 基于 Nmap 的端口扫描和基本的横向移动指标
截图:
- `perform-nmap-scans-on-both-vms.png` – 在 Kali 和 Windows 之间进行扫描
- `can-see-nmap-packets-from-kali-to-win-vm.png` – 捕获的扫描流量
- `suricata-custom-rules.png` – 针对这些攻击的自定义 Suricata 规则集
- `suricata-detected-logs.png` – 恶意流量触发的 Suricata 警报
- `can-see-zeek-detected-logs.png` – Zeek 检测到的异常行为
### 阶段 5:使用 Tines 进行 SOAR 自动化
随后,我构建了一个自动化的 **Tines SOAR** 工作流,它使用 Splunk 警报并协调信息丰富、通知和响应:
- Splunk 通过 webhook/HEC 将高保真警报转发给 Tines。
- Tines 解析 payload 并运行自动化故事。
- 警报包含所有必需的上下文(源/目标 IP、签名、严重性以及映射的技术)。
关键截图:
- `creating-alert-at-splunk.png` – Splunk 关联搜索和警报配置
- `fetched-data-from-splunk-using-webhook.png` – Tines 接收警报 payload
- `automation-workflow-overview.png` – 显示阶段和决策的完整 Tines 工作流
- `user-prompt-box-in-automation.png` – 自动化内部的人工批准提示
### 阶段 6:警报分发 (Slack & Email)
为了实现分析师可见性和快速决策,我集成了:
- **Slack** – 主要的 SOC 通知通道,提供包含丰富上下文的消息。
- **Email** – 用于正式可见性的补充通知路径。
截图:
- `slack-notifications.png` – 带有事件详细信息的 SOC 通道警报
- `notification-sent-to-slack.png` – Tines -> Slack 通知示例
- `received-alert-at-email.png` – 带有事件元数据的电子邮件警报
### 阶段 7:自动化响应实施
我通过 **PowerShell Remoting 和 Windows 防火墙**实施了自动化响应:
- 在 Windows 受害者上启用 WinRM 和 PSRemoting。
- 创建了一个 PowerShell 脚本,该脚本:
- 使用专用服务账户远程连接。
- 创建命名 Windows 防火墙规则以封锁恶意 IP。
- 记录操作(时间戳、分析师、IP、规则名称)以供审计。
- Tines 仅在 Slack 中获得**分析师明确批准**后才会触发此脚本。
截图:
- `enable-PSremoting-to-block-ip.png` – PSRemoting 配置和验证
- `block-ip-script-confiugration-on-windows.png` – 脚本和防火墙规则配置
- `sysmon-installed-on-windows.png` – 安装 Sysmon 以实现端点可见性
## 结果与影响
| 指标 | 自动化前 | 自动化后 | 提升 |
|-----------------------|-------------------|------------------|------------------|
| 检测时间 | 5-10 分钟 | < 30 秒 | 提升约 95% |
| 信息丰富时间 | 10-15 分钟 | < 10 秒 | 提升约 98% |
| 响应时间 | 15-20 分钟 | < 1 分钟 | 提升约 95% |
| 总响应时间 | 30-45 分钟 | < 5 分钟 | 提升约 83% |
| 误报率 | ~15% | ~3% | 降低约 80% |
| 检测率 | 未知 | 93% | 已量化 |
其他成果:
- 分析师手动工作量减少约 85%
- 在无公开签名的情况下可靠检测自定义 C2 流量
- 跨事件的一致、可审计的响应
- 行为分析填补了签名留下的空白
## 展示的关键能力
- **网络安全监控** – 部署和调试 Suricata IDS 和 Zeek NSM
- **检测工程** – 用于 C2、DNS tunneling 和数据外泄的自定义 Suricata 规则和 Zeek 脚本
- **威胁狩猎** – 针对自定义 C2 和脚本化攻击场景主动验证检测
- **SIEM 管理** – Splunk 索引设计、数据接入和关联搜索
- **SOAR 开发** – 具有人工参与自动化(human-in-the-loop)的 Tines 故事设计
- **红队模拟** – 用于真实对手模拟的 Python C2 和 PowerShell 代理
- **自动化响应** – PowerShell Remoting 和 Windows 防火墙规则自动化
- **警报调优** – 通过规则和基线细化减少误报
- **MITRE ATT&CK 映射** – 将检测映射到真实入侵中使用的常见技术
## 工具与技术
- **检测与监控**
- Suricata IDS
- Zeek NSM
- Sysmon
- **SIEM**
- Splunk Enterprise(包含 Universal Forwarders 和 HEC)
- **SOAR 与自动化**
- Tines SOAR
- PowerShell Remoting (WinRM)
- Windows 防火墙
- Slack + Webhooks
- **基础设施**
- Ubuntu 24.04 LTS(监控主机)
- Windows 10/11(端点)
- Kali Linux(攻击者)
- Python(C2 服务器)
- PowerShell(C2 代理和响应脚本)
## 实际应用
该实验室展示了**生产级 SOC 能力**:
- **多层检测** – 结合签名和行为分析来捕获已知和未知的威胁。
- **企业可扩展性** – 可扩展至 1000+ 端点和多个网络段的架构。
- **集成的威胁情报和关联** – 在 Splunk 中实现集中视图,在 Tines 中进行协调响应- **合规性就绪工作流** – 针对诸如 NIST、SOC 2 和 ISO 27001 等框架的完整决策和操作审计跟踪。
- **减少警报疲劳** – 显著降低误报,将分析师的时间集中在真正的威胁上。
## 未来增强功能
为该实验室的下一阶段演进计划的改进:
- 添加 **Elastic Security (ELK Stack)** 作为备用 SIEM,用于比较和冗余。
- 与 **MISP** 集成以进行自动化的威胁情报共享。
- 对高严重性警报实施**自动化取证收集**(PCAP、内存映像、关键日志)。
- 探索基于 Zeek 和 Suricata 数据的**机器学习异常检测**。
- 将覆盖范围扩展到**云环境**(AWS、Azure)和混合架构。
- 与**工单系统**(ServiceNow/Jira)集成以进行事件跟踪。
- 添加**自动隔离控制**选项,例如 VLAN 隔离或 EDR 隔离。
## 重要提示:实验室环境
该项目是在**受控的家庭实验室**中构建和测试的,而不是在实时的生产 SOC 中。自定义 C2 服务器和攻击流量**仅用于教育和防御性测试目的**。
在真正的生产部署中,我会:
- 加固 PSRemoting 和 WinRM 并应用严格的 RBAC。
- 对所有 API 密钥和凭据使用密钥管理器。
- 全面强制执行 TLS,并为监控组件添加 HA/DR。
- 实施正式的变更管理和事件响应流程。
- 在实时环境中启用自动化操作之前,进行广泛的测试和法律/合规性审查。
本案例研究旨在强调我在真实但安全的实验室环境中具备的**网络检测工程、威胁狩猎、SIEM/SOAR 集成以及自动化事件响应**技能。
标签:AI合规, IP 地址批量处理, Metaprompt, SOAR自动化, 安全运营中心(SOC), 网络安全, 逆向工具, 隐私保护