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, 安全, 库, 应急响应, 应用安全, 漏洞验证, 超时处理