George-Nyamao/soc-analyst-capstone

GitHub: George-Nyamao/soc-analyst-capstone

一个模拟 SOC 分析师在隔离实验室中调查旧版 Linux 服务器入侵事件的应急响应毕业项目,覆盖五阶段 IR 生命周期并强调对每个漏洞发现的严格手动验证与误报排除。

Stars: 0 | Forks: 0

# 旧版服务器入侵 — SOC 分析师期末综合调查 **角色:** 初级 SOC 分析师(模拟) · **环境:** 隔离的 VirtualBox 实验室 · **重点:** 检测、验证、遏制、根除、报告 **工具:** Nmap + Nmap Scripting Engine · netcat · iptables · Bash · NIST NVD / MITRE ATT&CK · AI "Virtual Analyst"(在手动验证指令下使用) 📄 [完整技术报告 (PDF)](./report/Capstone_Technical_Report.pdf) · 🗂️ [证据](./evidence) · 🧪 [健康检查脚本](./scripts/health_check.sh) ## TL;DR - 通过 **准备 → 检测与分析 → 遏制 → 根除与恢复 → 报告** 的流程,调查了一台被入侵的旧版 Ubuntu 服务器(基于 Metasploitable 2)。 - 确认了一个 CVE — distcc **CVE-2004-2687**(无需身份验证的 RCE)— 以及一个无需验证的 **root bindshell**、**明文 Telnet** 和 **匿名 FTP**。 - **排除误报:** 普遍认为存在的 vsftpd 2.3.4 后门(**CVE-2011-2523**)在该主机上*并不存在*。这已通过实时测试证明,并被记录为一次失败的验证,从调查结果中剔除。 - 在严格的 **全面验证指令** 下使用 AI 加速 CVE 研究 — 每一个发现都被 NVD 或实时目标确认后,才被作为事实处理。 ## 核心重点:验证胜于假设 一台 Metasploitable 级别的主机“应该”在 21 端口运行带有后门的 **vsftpd 2.3.4** — 因此教科书上的答案(以及 AI 的答案)是 **CVE-2011-2523**,一个严重的无需验证的 root 后门。我没有直接报告它,而是在实际环境中测试了这一假设: - `ftp-vsftpd-backdoor` NSE 脚本返回 **无漏洞状态**。 - 服务 Banner 是自定义的 `220 Welcome to LegacyServer FTP service` — **而不是** `vsFTPd 2.3.4`。 - 手动触发后门在 **6200 端口未产生任何 shell**。 该线索被作为 **误报驳回**,并记录为 *验证失败*, 攻击路径假设完全基于目标实际暴露的内容重新构建。 发现并记录误报 — 而不是将工具/AI 的输出直接作为事实传递 — 是 SOC 分流的核心工作,这也是我在本项目中最自豪的部分。 ## 场景 一家虚构公司的老旧 Ubuntu 服务器(`legacyserver`, `10.10.10.50`)因异常流量触发了 网络运营中心告警。作为被分配的分析师,我在隔离的 NAT 网络中通过 Kali Linux 工作站(`10.10.10.3`)调查了 入侵范围,在保存证据的同时遏制了威胁,根除了 安全隐患,并向技术和高管受众进行了汇报。 ## 方法论 — 五阶段 IR 生命周期 | 阶段 | 我所做的工作 | |-------|-----------| | **1 · 准备** | 搭建隔离实验室,验证连通性,通过全端口 Nmap 映射攻击面。 | | **2 · 检测与分析** | 针对性的 NSE 漏洞扫描,AI 生成的威胁画像,并 **对每一个 CVE 进行 NVD/MITRE 验证**。 | | **3 · 遏制** | 在应用精准的 `iptables` 遏制措施之前,保存易失性证据(已哈希,维护证据保管链)。 | | **4 · 根除与恢复** | 永久且重启后依然有效的补救措施;攻击面强化;自动化健康检查脚本。 | | **5 · 报告** | 汇总的技术报告,面向非技术领导层的执行摘要,以及调查结果演示。 | ## 已验证的调查结果 以下每一行均经过权威来源 **或** 实时目标的确认。 此处仅显示通过验证的调查结果。 | 服务 | 端口 | CVE / 弱点 | 严重程度 | 验证方式 | |---------|------|----------------|----------|--------------| | distccd v1 4.2.4 | 3632 | **CVE-2004-2687** | 高危 (CVSS v2 9.3) | NSE `distcc-cve2004-2687` → `VULNERABLE (Exploitable)`,返回 `uid=1(daemon)`;已在 NVD 确认 | | ingreslock bindshell | 1524 | 无 CVE (植入的后门) | 严重 | `nc` 连接端口 → root shell;`id` → `uid=0(root)` | | Telnet (telnetd) | 23 | 无 CVE (CWE-319, 明文) | 中危 | NSE `telnet-encryption` → "不支持加密" | | FTP (匿名) | 21 | 无 CVE (CWE-287, 配置错误) | 中危 | NSE `ftp-anon` → 允许登录 (FTP code 230) | | ~~vsftpd 2.3.4 后门~~ | 21 | ~~CVE-2011-2523~~ | — | ❌ **验证失败** — 不存在;已驳回(见上文) | *刻意声明“无 CVE”:明文协议和植入的后门是真实的调查结果,但不是软件 CVE。强行将 CVE 归咎于它们本身就是一种失败的验证。* ## 攻击路径假设 (MITRE ATT&CK) | 战术 | 技术 | 证据 | |--------|-----------|----------| | Initial Access (TA0001) | **T1190** — Exploit Public-Facing Application | 3632 端口上的 distcc **CVE-2004-2687**,确认可被利用 | | Execution (TA0002) | **T1059** — Command & Scripting Interpreter | 以 `uid=1(daemon)` 身份执行命令,已通过 NSE 确认 | | Persistence (TA0003) | **T1543** — Create/Modify System Process | 位于 1524 端口长期存在的无需验证 **root bindshell** | **推导链:** 开放的 3632 端口 → 漏洞 distccd v1 4.2.4 → 确认漏洞利用 (CVE-2004-2687, 以 `daemon` 身份的 RCE) → 提权 → 全面沦陷。1524 root bindshell 证实了之前已被入侵。报告中记录了一个关键的分析警告:因为 bindshell 必须由已经拥有代码执行权限的人 *安装*, 它可能 **早于此次事件** — 这意味着该主机可能在触发调查的 告警之前就已经被入侵。 ## 补救与强化 - **永久修复:** 排除了打补丁的可能(已停止支持的 Ubuntu 8.04,离线 repos),因此 在配置层禁用了暴露的服务,并验证它们在 **完全重启后依然保持关闭** — 证明该修复依赖于服务变更,而不是临时的 防火墙规则。 - **攻击面缩减:** 禁用了 Telnet(已被 SSH 取代)、匿名 FTP 服务,以及 ingreslock 后门集群(端口 21 / 23 / 1524)。 - **自动化验证:** 一个 Bash [`health_check.sh`](./scripts/health_check.sh) 探测 已修复的端口,并返回单一的 `SECURE` / `VULNERABLE` 判定结果,以及适合 调度的退出代码。 ## 负责任地使用 AI 本项目围绕 **在手动验证指令下将 AI 作为“Virtual Analyst”** 构建:AI 加速了 CVE 研究并起草了健康检查脚本,但在通过 NVD 或实时目标确认之前,**任何 AI 输出都不被信任**。上文中的 vsftpd 误报 是这种严谨性为何重要的最清晰例证 — AI(和教科书)自信地给出了错误答案,而验证抓住了这个错误。 ## 展示的技能 `Nmap / NSE scripting` · `CVE research & NVD/MITRE verification` · `MITRE ATT&CK mapping` · `Incident-response lifecycle` · `Evidence preservation / chain of custody` · `iptables` · `Bash scripting` · `False-positive triage` · `Responsible AI use` · `Technical + executive-level writing` ## 仓库结构 ``` . ├── README.md # you are here ├── report/ │ └── Capstone_Technical_Report.pdf ├── evidence/ # labeled screenshots, per phase │ ├── phase1_recon/ │ ├── phase2_detect/ │ ├── phase3_contain/ │ └── phase4_eradicate/ └── scripts/ └── health_check.sh ``` ## 免责声明 这是一次 **教育性实验室练习**,而非真实世界的测试任务。该目标是一个 故意设计为存在漏洞的基于 **Metasploitable 2** 的虚拟机,代表一家虚构的公司, 在隔离的 VirtualBox 网络中作为 Per Scholas "Cybersecurity with AI Tools" 期末项目的一部分完成。它以记录在案的实验室调查形式呈现,展示了 方法论和验证的严谨性。 ## 关于 **George Nyamao** — 网络安全分析师 🔗 [LinkedIn](https://www.linkedin.com/in/george-nyamao) · [作品集](https://github.com/George-Nyamao) · [电子邮件](mailto:gmnyamao@gmail.com)
标签:CISA项目, CTI, IP 地址批量处理, Maven, Metasploitable, 安全, 库, 应急响应, 应用安全, 漏洞验证, 超时处理