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 分钟以内**。 [查看代码](#) ![网络威胁狩猎实验室架构](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/cca9c58e91105530.svg) ## 问题背景 现代网络攻击使用**自定义 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), 网络安全, 逆向工具, 隐私保护