wojtekn24/Threat-detection-and-incident-response

GitHub: wojtekn24/Threat-detection-and-incident-response

一套包含六个动手实验的威胁检测与事件响应课程项目,从日志分析逐层构建到可运行的 SIEM 检测堆栈。

Stars: 0 | Forks: 0

# 🛡️ 威胁检测与事件响应实验 ![Labs](https://img.shields.io/badge/Labs-6-brightgreen?style=for-the-badge) ![Focus](https://img.shields.io/badge/Focus-Detection_%26_Response-red?style=for-the-badge) ![Stack](https://img.shields.io/badge/Stack-ELK_%7C_Suricata_%7C_Metasploit-blue?style=for-the-badge) 来自某大学课程关于威胁检测与事件响应的六个实践实验 —— 逐层构建检测堆栈,从原始日志/流量分析,一直到通过模拟攻击验证可运行的 SIEM。 **日志与流量可见性 → 端点保护 → 网络 IDS → 漏洞扫描 → 漏洞利用 → SIEM 关联与攻击模拟**
## 🔧 工具与技术 `Wireshark` · `Windows Event Viewer` · `Windows Defender` · `ClamAV` · `Suricata` · `Nmap` · `Metasploit` · `Metasploitable2` · `Elasticsearch` · `Kibana` · `Sysmon` · `Winlogbeat` · `Atomic Red Team` · `rsyslog` · `NXLog` ## 📁 目录 - [实验 02 — 日志与网络流量分析](#lab-02--log--network-traffic-analysis) - [实验 04 — 端点检测与响应](#lab-04--endpoint-detection--response) - [实验 06 — 使用 Suricata 进行网络入侵检测](#lab-06--network-intrusion-detection-with-suricata) - [实验 08 — 蓄意脆弱主机的漏洞发现](#lab-08--vulnerability-discovery-on-a-deliberately-vulnerable-host) - [实验 10 — 使用 Metasploit 进行扫描与漏洞利用](#lab-10--scanning--exploitation-with-metasploit) - [实验 12 — SIEM 部署与攻击模拟](#lab-12--siem-deployment--attack-simulation) ## 实验 02 — 日志与网络流量分析 模拟了真实的端点活动 —— 创建用户账户、安装/卸载软件、传输和删除文件、浏览网页 —— 同时从双向捕获由此产生的证据:使用 **Wireshark** 捕获网络流量,并使用原生 OS 日志记录主机活动,涵盖了一台 Windows 主机和一台 Linux 主机。 ![Wireshark 捕获实时流量](https://static.pigsec.cn/wp-content/uploads/repos/cas/8d/8db652a7b5586155c1222666229d40e3cba8d85177f72bfc6d988be97a9ebd65.png) 故意触发了失败的 SSH 登录(错误的用户名/密码),随后进行了一次成功的登录,以观察日志中的对比: ![日志中捕获的成功 SSH 登录](https://static.pigsec.cn/wp-content/uploads/repos/cas/b0/b0c88917b98f388741018bda38c0956eee85546001533847958b758eb1d93925.png) 定位并审查了每个 OS 存放日志的位置 —— Windows 上的 **Event Viewer**,Linux 上的 `/var/log/`(`/var/log/syslog`、`/var/log/apache2/`、`/var/log/vsftpd.log`)—— 并通过 Linux 上的 `tcpdump`/`tcpflow` 和 Windows 上的 `pktmon` 在两者上启用了实时捕获。 ![Windows Event Viewer — 系统、应用程序和安全日志](https://static.pigsec.cn/wp-content/uploads/repos/cas/ba/ba9ac5a2fb7f59a5b858dad3233fc5f4b4e0bf27eb655946934a874b77b18141.png) 检查了每个 OS 上正在运行并设置为自动启动的服务/应用程序: ![Linux 主机上的活动服务](https://static.pigsec.cn/wp-content/uploads/repos/cas/d2/d29ba608a908325e76959574cc3eff6e7bbe9dce054cd42b31643b345661b391.png) **集中化日志:** 在 Kali 主机上配置了 `rsyslog`,以接收来自 Linux 服务器(TCP/UDP)的日志,并通过 **NXLog** 接收来自 Windows 主机的日志 —— 此外还配置了 `logrotate`(`daily`、`rotate 10`、`compress`、`missingok`、`notifempty`),以便随着时间的推移保持日志易于管理。 ![接收远程主机日志的集中式 rsyslog 配置](https://static.pigsec.cn/wp-content/uploads/repos/cas/6f/6f99581bdff94e32f7abc9385b51b57857b255c3b992c746723e5436d1291bfa.png) **核心结论:** 确认了每个 OS 默认日志记录开箱即用*能*捕获和*不能*捕获的内容 —— 例如,默认情况下两个 OS 都不记录文件复制/删除操作,而 Windows 需要 Local Security Policy / `auditpol` 才能进行更深层的身份验证日志记录 —— 这正是集中式日志记录 + SIEM(见[实验 12](#lab-12--siem-deployment--attack-simulation))旨在弥补的差距。 ## 实验 04 — 端点检测与响应 探索了 Windows 内置的 EDR(**Windows Defender**)和一种开源替代方案(**ClamAV**)在对抗真实和模拟恶意软件时的实际表现 —— 而不仅仅是理论。 ![Windows Defender 威胁防护设置](https://static.pigsec.cn/wp-content/uploads/repos/cas/7b/7bad79fa4b4d52605adf3bfbf303a1a42eb92ab8ae54e033ab4137400667eb2f.png) **第一轮 — EICAR 测试文件:** 下载了行业标准 [EICAR 测试文件](https://www.eicar.org/) 以确认基线特征码检测。 ![Windows Defender 标记 EICAR 测试文件](https://static.pigsec.cn/wp-content/uploads/repos/cas/d6/d635d9c571482346fc28adc888f7f47b8b1e4a0f612432a6979be0eaffcf9464.png) **第二轮 — 一个“干净”的 zip:** 第一个压缩包解压时没有任何 Defender 反应 —— 直到直接打开其中一个包含的文件,此时 Defender 悄无声息地删除了它。这表明 Defender 是对*访问*做出反应,而不仅仅是对磁盘上的存在做出反应。 **第三轮 — 一批 30 个伪装的恶意软件样本:** 解压第二个包含 30 个文件(重命名的已知恶意软件样本)的压缩包引发了一波检测: ![Windows Defender 对包含多个威胁的批量解压做出反应](https://static.pigsec.cn/wp-content/uploads/repos/cas/09/094b4816e6a06e2b0ab4182cd41a2464b4066da534dd251c9d1d207618cdb417.png) Windows Defender 漏掉了 30 个文件中的 10 个。将同一组文件与 **VirusTotal** 进行交叉比对,发现几乎所有 30 个文件实际上都被那里的至少一个 AV 引擎标记了(主要是木马/后门),这凸显了经典的**单引擎盲点**:没有任何单一的 AV/EDR 产品能提供全面覆盖 —— 分层检测(或像 VirusTotal 这样的多引擎服务)捕获的数量明显多于任何单一产品。 **第四轮 — Linux 上的 ClamAV:** 安装了 **ClamAV**,使用 `clamscan -r` 扫描相同的 30 个文件批次,并比较了结果。 ![ClamAV 对同一恶意软件样本集的扫描结果](https://static.pigsec.cn/wp-content/uploads/repos/cas/dc/dcb57012729c7e7638b58305748dbff491c3835d5f36214ba39d9f6407e1f7da.png) ClamAV 检测出了 30 个中的 15 个 —— 包括一些针对 Windows 的恶意软件家族(`Win.Dropper`、`Win.Trojan`)—— 并通过特征码正确标记了 EICAR 文件。 **核心结论:** 两个独立的 AV/EDR 引擎,在针对相同文件集进行测试时,产生了不同(且都不完整)的检测率 —— 这是分层/EDR 加网络检测策略之所以存在的具体、第一手证据。 ## 实验 06 — 使用 Suricata 进行网络入侵检测 将 **Suricata** 部署为网络 IDS,演练了它的三种操作模式,然后根据真实攻击流量构建并验证了自定义规则集。 ![Suricata 在 sniffer 模式下运行,实时解码流量](https://static.pigsec.cn/wp-content/uploads/repos/cas/34/34881d97e5fdadc47ce9b3a9f9224eabea21e27dc0f8ec413b98c0323ed31c3e.png) | 模式 | 用途 | |---|---| | **Sniffer** (`-v`) | 实时读取并将数据包打印到控制台 | | **Packet Logger** (`-l`) | 将捕获的数据包写入磁盘以供日后分析 | | **NIDS** | 根据规则匹配流量并生成警报 | **编写自定义规则**(`local.rules`),涵盖 12 个不同的检测场景,包括: ``` alert icmp any any -> any any (msg:"Ping detected"; sid:1000001; rev:1;) ``` - 端口扫描检测(端口 1–1024) - FTP 暴力破解(3 次以上失败登录) - SMB DoS / 缓冲区溢出模式 - 通过 Telnet/RDP 进行的 Shellcode 注入 / 可疑的 `sudo`、`su`、`runas` - 畸形 HTTP 方法和 HTTP 500/302 响应 - SQL 暴力破解(MySQL/PostgreSQL/SQLite) - 异常的 TCP 标志组合(`URG`、`PSH`、`RST`) ![在 Suricata 中配置的自定义检测规则](https://static.pigsec.cn/wp-content/uploads/repos/cas/1c/1c1f5363cbf666f3f6e713155452c5470c0c68f12c667726e279431bb02ae2d6.png) 还通过 **MISP** 风格的规则源集成了外部威胁情报 —— **URLhaus**(恶意 URL 黑名单)和 **SSL Blacklist**(标记与僵尸网络 C2 关联的恶意 TLS 证书 / JA3 指纹)。 **根据真实攻击流量验证检测**(使用 `nmap` 和 `netcat` 生成): | 攻击 | 结果 | |---|---| | TCP Connect 扫描 | ✅ 已检测 | | SYN(隐蔽)扫描 | ✅ 已检测 | | Shellcode / 命令注入 | ✅ 已检测 | | 暴力破解登录尝试 | ✅ 已检测 | | 自定义/畸形 TCP 标志 | ✅ 已检测 | | HTTP 方法枚举 | ✅ 已检测 | | 畸形 HTTP 方法 | ❌ 未检测到 | ![TCP Connect 扫描触发警报](https://static.pigsec.cn/wp-content/uploads/repos/cas/51/512a36967208e08603f168424d4429b3a7140de84da2c72dc0c0734c9e2d9efa.png) ![SYN 扫描触发警报](https://static.pigsec.cn/wp-content/uploads/repos/cas/84/849d8eee00dade32c52087c4da26e9c1a51c7133349a048fa01b9eb71a715984.png) ![Shellcode/命令注入尝试触发警报](https://static.pigsec.cn/wp-content/uploads/repos/cas/96/96762a730dd940c4431003b1337fc7c0fbdfef54faa5b049b46df70a05b6dc1c.png) ![暴力破解尝试触发警报](https://static.pigsec.cn/wp-content/uploads/repos/cas/cf/cfbc96963c49c0f834787095a91239a1d7c05fcd0bd5564411341c38cfc4620d.png) **核心结论:** 编写规则只是工作的一半 —— 验证每个规则是否真正能在真实流量中触发(并理解*为什么*某个规则没有触发),才是区分看起来正确的规则集和真正有效的规则集的关键。 ## 实验 08 — 蓄意脆弱主机的漏洞发现 搭建了 **Metasploitable2** 作为一个故意脆弱的目标,并从 Kali 攻击主机上对其进行手动枚举 —— 这是在[实验 10](#lab-10--scanning--exploitation-with-metasploit) 中进行漏洞利用的侦察基础。 ![确认 Kali 攻击者与脆弱目标之间的连通性](https://static.pigsec.cn/wp-content/uploads/repos/cas/95/959f243ccfa1d9fc2877e8ee42907ca094800232f5738f326b8887c89c072e2d.png) 手动枚举涵盖: - 监听服务和端口:`ss -tulnp` - 系统/内核及已安装的软件包版本 - 用户账户和密码策略信息 - 提权面:`find / -perm -4000 -type f` (SUID)、`find / -perm -2000 -type f` (SGID) 以及全局可写(`777`)文件 ![在目标上枚举的开放端口](https://static.pigsec.cn/wp-content/uploads/repos/cas/46/460983d32280859f25f94a6118470c8277d9f70a0a931a260c13abef9b0958a0.png) ![在目标上发现的 SUID 二进制文件](https://static.pigsec.cn/wp-content/uploads/repos/cas/12/126f165b78a2d9ff6ef45367f7e4d5d803aff06e0948829e90850c21b60ee5b9.png) - 服务 banner 抓取(FTP、SSH、SMTP 版本)和 `nmap --script vuln` 扫描,发现了多个已知漏洞 —— 包括 **FTP 匿名登录**: ![确认 FTP 匿名登录漏洞](https://static.pigsec.cn/wp-content/uploads/repos/cas/25/25aadeaf89500793f6343cff6991e319dbb0f6455b7387f8019d8ea01840b64f.png) 还执行了 FTP 暴力破解,以确认弱/默认凭证暴露情况。 **核心结论:** 本实验是漏洞评估中“侦察 → 发现列表”的半程;实验 10 将针对同一目标,将每个发现转化为概念验证漏洞利用。 ## 实验 10 — 使用 Metasploit 进行扫描与漏洞利用 实验 08 的漏洞利用对应部分:使用 Metasploit 自带的辅助扫描器扫描 **Metasploitable2**(与早期的 Nmap/vuln 脚本结果交叉核对),然后针对 **8 个不同的漏洞**构建了可运行的概念验证漏洞利用,最后验证了每个漏洞是否都可以被缓解。 ![Metasploit 辅助扫描结果](https://static.pigsec.cn/wp-content/uploads/repos/cas/81/8146687489597d0949ea44bdf2a3883d9030ee70db7e080cca1d6763b0c21f1d.png) | # | 漏洞 | 端口 | CVSS | 影响 | |---|---|---|---|---| | 1 | vsftpd 2.3.4 后门 | 21 | 9.8 | 远程 shell | | 2 | VNC 默认凭证 | 5900 | 10.0 | 身份验证绕过 ("password") | | 3 | Ingreslock 后门 | 1524 | — | 未经身份验证的 root shell | | 4 | rexec/rlogin 配置错误 | 512–514 | 10.0 | 无密码登录 | | 5 | Java RMI Server | 1099 | — | RCE + 文件访问 | | 6 | PostgreSQL | 5432 | — | 未经授权的文件访问 | | 7 | UnrealIRCd 3.2.8.1 后门 | 6667 | — | root 访问权限 | | 8 | Samba `usermap_script` | 139/445 | — | 以 root 身份执行 RCE | **每个漏洞的概念验证:** ![vsftpd 2.3.4 后门 — 获取远程 shell](https://static.pigsec.cn/wp-content/uploads/repos/cas/d7/d7bbbb7a5344cbff3077c029a536b7b3fa4c953a955346ba1b8958393b6e8077.png) ![VNC — 使用默认 "password" 凭证登录](https://static.pigsec.cn/wp-content/uploads/repos/cas/d5/d57c951329912d153cfe4d17062d1dca6a8a2ce6c11bf63c1fa2b0f619a7de65.png) ![Ingreslock 后门 — 端口 1524 上的未经身份验证的 root shell](https://static.pigsec.cn/wp-content/uploads/repos/cas/1e/1e45078c88190d60afcaaf52efb0165ce8231a11598f2466828e18c9eddcee78.png) ![rlogin — 完全无密码完成身份验证](https://static.pigsec.cn/wp-content/uploads/repos/cas/dc/dcb546d8304929a12f5a079885a16e1dce9c835c3649f347a7faa8ad3e595c1e.png) ![利用 Java RMI Server 执行远程代码](https://static.pigsec.cn/wp-content/uploads/repos/cas/17/170506d035d781a5fd421b5ccf2a89285135bf67c69d31fbfa1d896c400048a3.png) ![利用 PostgreSQL 进行未经授权文件访问](https://static.pigsec.cn/wp-content/uploads/repos/cas/d8/d865022827079313629df4954492071cb10427ecbe7f9eab1b89fb1a03cfa832.png) ![UnrealIRCd 3.2.8.1 后门 — root shell](https://static.pigsec.cn/wp-content/uploads/repos/cas/d5/d56310d1f665b54bb138d741998796b347954eef8766ebb540db3a5f977e1816.png) ![Samba usermap_script — RCE 及 root shell](https://static.pigsec.cn/wp-content/uploads/repos/cas/62/6229be506e59f646196307e029eadb7fcbbd913cc66855b68fc3ca5417add1a6.png) 从 vsftpd shell 中,读取了 `/etc/passwd` 和 `/etc/shadow` 以确认全系统影响。 **修复与复测** —— 随后对每个漏洞进行了缓解,并重新运行相同的漏洞利用以确认其不再有效: - **vsftpd** —— 移除了受损的软件包 - **VNC** —— 使用 `vncpasswd` 更改了默认密码 - **Ingreslock / rlogin** —— 注释掉了 `/etc/inetd.conf` 中的相关服务条目 - **Java RMI** —— 在防火墙处阻止了该端口:`sudo iptables -A INPUT -p tcp --dport 1099 -j DROP` - **PostgreSQL** —— 更改了默认数据库密码 - **UnrealIRCd** —— 阻止了该端口:`sudo iptables -A INPUT -p tcp --dport 6667 -j DROP` - **Samba** —— 注释掉了脆弱的 `usermap_script` 配置条目 打补丁后,所有 8 次后续漏洞利用尝试均告失败,从而确认了修复效果。 ## 实验 12 — SIEM 部署与攻击模拟 从零开始构建了一个可运行的 SIEM pipeline,然后使用 **Atomic Red Team** 对其进行红队测试,以查看它能捕获和无法捕获的内容。 **构建:** 在 Linux 主机上安装 Elasticsearch + Kibana,并配置为单节点运行: ``` # elasticsearch.yml cluster.name: my-cluster xpack.security.enabled: false discovery.type: single-node network.host: 0.0.0.0 ``` ``` # kibana.yml server.name: kibanaserver server.host: "0.0.0.0" elasticsearch.hosts: ["http://localhost:9200"] ``` **遥测:** 在 Windows 主机上部署了 **Sysmon** + **Winlogbeat**,指向 Elasticsearch/Kibana 实例,然后加载了 SIEM 仪表板。 ![Kibana 仪表板实时运行并接收数据](https://static.pigsec.cn/wp-content/uploads/repos/cas/5c/5c8d0ec049b3e3a3760230aef0de7398c06a0ecd6fdfeeb20e844d4608806cb6.png) **使用 Atomic Red Team 进行攻击模拟** —— 在受监控的 Windows 主机上运行真实的 MITRE ATT&CK 映射技术,并检查 SIEM 是否捕获了它们: | 技术 | 结果 | |---|---| | LSASS 内存转储(凭证访问) | ✅ 已检测 — 捕获了完整的命令行 | | 系统网络配置发现 | ✅ 已检测 | | PowerShell 执行策略绕过 | ✅ 已检测 | | 端口扫描 (Nmap) | ❌ 未检测到 | | SMB 暴力破解 | ❌ 未检测到 | | 本地用户/组创建 | ❌ 未检测到 | ![SIEM 中浮现的 LSASS 内存转储尝试](https://static.pigsec.cn/wp-content/uploads/repos/cas/a4/a46fd439a56a044b8a4911a2252ae19457aa6a1ff052e424afd4579dfb0a732e.png) ![从日志中恢复的模拟攻击者执行的确切命令行](https://static.pigsec.cn/wp-content/uploads/repos/cas/60/60084cd73cf878ea87feeb3a16005f1a46fc974e6e1ac1c4b3ad6a02e987dcf0.png) ![检测到的网络侦察活动](https://static.pigsec.cn/wp-content/uploads/repos/cas/03/0343db1bc4112d6b8e1c41d65ac1747ab7c9f51bf0d6a5aa7b8158c9b2241c0b.png) **核心结论 —— 也是最真实的一条:** 大约一半的模拟技术未被检测到,这很可能是因为端点审计策略/遥测源存在差距,而不是 SIEM/查询问题。这个差距本身就是有用的结果:它表明**部署 SIEM ≠ 拥有检测覆盖范围** —— 你必须针对每种技术验证覆盖范围,而不是想当然。 ## 🎯 展示的技能 - 将 Windows Event Logs 与网络数据包捕获 (Wireshark) 相关联 - 使用 rsyslog / NXLog 集中跨平台日志,并保持良好的日志轮转习惯 - 跨两个独立引擎实证评估 AV/EDR 的检测效能 - 根据真实攻击流量编写、调整和验证 Suricata NIDS 规则 - 集成外部威胁情报源(MISP 风格:URLhaus、SSL Blacklist) - 手动漏洞枚举(服务、SUID/SGID、凭证、banner) - 使用 Metasploit 利用 8 个真实漏洞,随后验证修复效果 - 从零开始构建 SIEM pipeline(Elasticsearch、Kibana、Sysmon、Winlogbeat) - 使用 Atomic Red Team 对 SIEM 进行紫队测试,并如实评估检测差距
标签:CTI, Elastic Stack, Metaprompt, 入侵检测系统, 安全数据湖, 流量重放, 网络安全实验, 越狱测试