Jhatchi/NexaCorp-DFIR-INC-2026-003
GitHub: Jhatchi/NexaCorp-DFIR-INC-2026-003
一个 DFIR 培训结业项目,对虚构企业三起关联事件进行跨事件攻击链取证分析,涵盖横向移动、权限提升与持久化机制。
Stars: 0 | Forks: 0
# NexaCorp DFIR: INC-2026-003 - 横向移动与持久化
对 NexaCorp 位于列日(Liege)文件服务器(`lge-files-01`)上的横向移动与持久化事件进行取证评估。2026年5月24日,已在布鲁塞尔应用服务器(`bru-app-01`,源自 INC-2026-002)上立足的攻击者在不使用新漏洞的情况下,转移到了 `lge-files-01`:他们使用一把窃取的 `svc_api` SSH 密钥(该密钥同时被授权用于 `svc_backup` 账户),以 `svc_backup` 身份登录,通过 Python 解释器上的 `sudo NOPASSWD` 规则提权至 root,并安装了两个持久化机制:一个后门管理员账户(`sysupdate`)和一个每五分钟向外部服务器发送信标的 cron 任务(在报告时仍处于活跃状态)。本项目作为 BeCode 布鲁塞尔蓝队与红队训练营(任务 03)的个人实践独立完成,是 [INC-2026-001](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-001) 和 [INC-2026-002](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-002) 的延续。本仓库还包含了整合后的**第一个月评估报告**(INC-2026-001 至 003)。
[](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-003/actions/workflows/ci.yml)
[](#方法论)
[](https://attack.mitre.org/)
[](#项目背景)
[](LICENSE)
[](https://www.linkedin.com/in/johan-emmanuel-hatchi/)
本仓库记录了作为 BeCode 网络安全训练营(2025-2026届)一部分的 SOC 分析师实践工作。这是一个评估实验室:包含取证调查与报告,但不提供检测规则(第二阶段)的交付物。这是 NexaCorp DFIR 系列中的第三个事件,也是第一个月的结业项目。
## 目录
- [运维须知](#operational-notice)
- [概览](#at-a-glance)
- [项目背景](#engagement-context)
- [执行摘要](#executive-summary)
- [攻击链摘要](#kill-chain-summary)
- [如何阅读本仓库](#how-to-read-this-repository)
- [方法论](#methodology)
- [检测工程](#detection-engineering)
- [仓库布局](#repository-layout)
- [可复现性](#reproducibility)
- [已知限制](#known-limits)
- [NexaCorp DFIR 系列](#nexacorp-dfir-series)
- [致谢](#acknowledgments)
- [关于](#about)
- [许可证](#license)
## 运维须知
这是针对虚构基础设施进行的训练项目。NexaCorp Industries 是一个虚构的客户,用作 BeCode 布鲁塞尔训练营的演练场景。主机 `bru-app-01` 和 `lge-files-01` 是隔离的实验室虚拟机。没有任何真实的组织、网络或个人遭到攻击。
此处引用的所有 IP 地址、主机名、账户和密钥指纹(`34.251.89.142`、`185.220.101.62`、`lge-files-01`、`bru-app-01`、`svc_backup`、`svc_api`、`sysupdate` 等)均为本地实验环境产物,并非真实的威胁情报。请勿将其作为 IOC 输入到生产环境 SIEM 中。
经 BeCode 实验室教练 (Thomas B.) 于 2026-05-17 授权发布,用于个人作品集展示。完整的保密声明见调查报告。
## 概览
| 字段 | 值 |
|---|---|
| 编号 | INC-2026-003 |
| 受影响主机 | lge-files-01 (NexaCorp 列日文件服务器, 192.168.10.30) |
| 跳板来源 | bru-app-01 (192.168.10.20, 在 INC-2026-002 中被攻陷) |
| 根本原因 | 跨服务账户的 SSH 密钥重用 (同一把密钥同时授权给了 svc_api 和 svc_backup) |
| 结果 | 获取第三台服务器的 root 权限,建立后门账户 + 激活 C2 cron (未确认发生数据泄露) |
| 报告日期 | 2026-05-25 |
| 交付日期 | 2026-05-29 |
| 阶段 | 仅第一阶段评估 (取证调查,无检测工程阶段) |
| 相关事件 | INC-2026-001, INC-2026-002 (同属一次攻击行动) |
| 调查输出项 | 数值 |
|---|---|
| 发现数 | 3 (2 个严重, 1 个高危) |
| 横向移动 | 重用的 svc_api 密钥被用于 svc_backup 身份验证 (指纹 SHA256:Cx3hNuyZ...) |
| 提权 | /usr/bin/python3 上的 sudo NOPASSWD (GTFOBins) |
| 持久化 | 后门账户 sysupdate + cron /etc/cron.d/system-update |
| C2 | 34.251.89.142 (HTTP /update?h=lge-files-01), 捕获到 4 次信标 |
| 证据来源 | auth.log, sshd_journal.log, sudo_journal.log, audit_filtered.log, audit.log, syslog, pcap |
## 项目背景
**场景(虚构)。** NexaCorp Industries 报告了三周内的第三起事件。在发生 INC-2026-001(列日服务器上的 FTP 后门)和 INC-2026-002(转移至布鲁塞尔应用服务器、SUID 提权、建立后门账户、窃取 SSH 密钥)之后,新证据表明攻击者已到达列日文件服务器 `lge-files-01` 并安装了持久化机制,其中一项机制在事件被报告时仍在运行。由 Marc Wauters(IT 基础设施经理)于 2026-05-25 报告;审查主管为 Sarah Chen,高级 SOC 分析师。
**范围。** 仅对证据包进行取证分析。这是一个评估实验室:没有第二阶段的实时检测验证阶段。调查的攻击窗口为欧洲中部夏令时间 (CEST) 2026年5月24日星期日 12:31 至 13:05。
**结业项目。** 本次实践还将本月的三起事件(INC-2026-001 至 003)整合到了[第一个月评估报告](reports/Month1_Assessment_Report.md)中,以供管理层审阅。
**教育背景。** 作为任务 03 在 BeCode 布鲁塞尔蓝队与红队训练营(2025年11月至2026年9月)期间交付。
## 执行摘要
2026年5月24日,已在 `bru-app-01` 上立足(源自 INC-2026-002)的攻击者在不利用新漏洞的情况下,转移到了列日文件服务器 `lge-files-01`。攻击者使用一把窃取的 `svc_api` SSH 私钥(该密钥同时被授权用于 `svc_backup` 账户),以 `svc_backup` 身份登录,通过 Python 解释器上的 `sudo NOPASSWD` 规则提权至 root,并安装了两个持久化机制:一个后门管理员账户(`sysupdate`)和一个每五分钟向 `34.251.89.142` 发送信标的 cron 任务。在报告时,该信标仍处于活跃状态。
根本原因是跨服务账户的 SSH 密钥重用:一把私钥竟能在不同主机上打开不同的账户。这是第一个月攻击行动中的第三起事件;关于它如何作为一次连续操作与 INC-2026-001 和 INC-2026-002 衔接,请参阅第一个月评估报告。
## 攻击链摘要
1. **准备(bru-app-01)。** `it_support` 后门(源自 INC-2026-002)定位到 `svc_api` 私钥,确认其被授权用于 `svc_backup`,并将其暂存以备后用 (12:35-12:38 CEST)。
2. **横向移动 (12:39:54)。** 重用的密钥从 `bru-app-01` 成功通过 `lge-files-01` 的身份验证并登录为 `svc_backup`;该密钥指纹与合法的 svc_backup 基线不符。
3. **提权 (12:40)。** 滥用 `/usr/bin/python3` 上的 `sudo NOPASSWD` 以 root 身份运行命令 (审计显示 auid=1000, euid=0)。
4. **持久化 (12:40-12:41)。** 添加后门账户 `sysupdate` (加入 sudo 组),并创建 cron `/etc/cron.d/system-update`,每五分钟向 `34.251.89.142` 发送信标;捕获到四次信标通信。
## 如何阅读本仓库
| 如果您是... | 请从这里开始 | 时间 |
|---|---|---|
| **招聘人员或招聘经理** | 本 README + [报告](reports/INC-2026-003_Findings_Report.md)的执行摘要 | 5 分钟 |
| **管理层 / 董事会** | [第一个月评估报告](reports/Month1_Assessment_Report.md) (非技术性,侧重业务影响,将三起事件串联讲述) | 10 分钟 |
| **评估契合度的 SOC 分析师** | [报告](reports/INC-2026-003_Findings_Report.md)技术分析 + [`evidence-summary/ioc-summary.md`](evidence-summary/ioc-summary.md) | 20 分钟 |
| **DFIR 从业者** | 完整[报告](reports/INC-2026-003_Findings_Report.md) + [`methodology/attack-timeline.md`](methodology/attack-timeline.md) + [`methodology/three-incident-kill-chain.md`](methodology/three-incident-kill-chain.md) + [`notes/journal.md`](notes/journal.md) | 30 分钟 |
| **任何想要 grep、引用或对比差异的人** | [报告的 Markdown 源码](reports/INC-2026-003_Findings_Report.md) | 按需查阅 |
## 方法论
本项目遵循标准的事件响应框架:
- **NIST SP 800-61r2** (事件处理) 和 **NIST SP 800-86** (取证技术)。
- **SANS PICERL** : 识别阶段是本次取证评估的核心。
- **MITRE ATT&CK Enterprise v15** : 每一项发现都进行了映射 (见 [`methodology/attck-mapping.md`](methodology/attck-mapping.md))。
- 弱点分类 : CWE-522 (密钥重用), CWE-250/269 (sudo 配置不当), CWE-732 (cron 文件投放)。
**证据与时间戳。** 主机日志为 CEST (UTC+02:00) ;数据包捕获 (PCAP) 时间为原生 UTC。在引用捕获内容处会同时标出两者。
## 检测工程
**本项目不适用。** 这是一个没有第二阶段的评估实验室:未编写任何检测规则。尽管如此,该入侵行为依然可以通过行为分析被检测到,报告建议采取以下监控措施:监控来自意外源头或使用非基线密钥指纹的服务账户 SSH 登录;监控被添加到 `sudo` 组的新建本地账户;监控 `/etc/cron.d/` 中出现的新文件;以及监控从服务器连向未知外部主机的出站连接。
## 仓库布局
```
NexaCorp-DFIR-INC-2026-003/
├── README.md This file
├── LICENSE
├── .gitignore
├── .markdownlint.json
├── .github/
│ └── workflows/
│ └── ci.yml markdownlint + typography validation
├── reports/
│ ├── INC-2026-003_Findings_Report.pdf Incident findings report
│ ├── INC-2026-003_Findings_Report.md Markdown source of the report
│ ├── Month1_Assessment_Report.pdf Month 1 capstone (INC-2026-001 to 003), board audience
│ └── Month1_Assessment_Report.md Markdown source of the Month 1 report
├── evidence-summary/
│ └── ioc-summary.md Indicators of compromise
├── methodology/
│ ├── attack-timeline.md Incident timeline (CEST and UTC)
│ ├── attck-mapping.md MITRE ATT&CK mapping table
│ └── three-incident-kill-chain.md Cross-incident kill chain (INC-2026-001 to 003)
└── notes/
└── journal.md Investigation journal
```
这是一个评估实验室,因此没有 `detection/` 目录。
## 可复现性
证据包属于 BeCode 实验室资产,不对外分发。如果您拥有自己的副本,核心发现可以从日志和捕获文件中复现(`sshd_journal.log` 中的跳板记录、`audit_filtered.log` 中的提权记录、`sudo_journal.log` 中的持久化记录,以及数据包捕获中发往 34.251.89.142 的四次 C2 信标)。
## 已知限制
- **仅限取证。** 本次事件没有实时检测阶段;报告提出了行为检测建议,但未交付经过验证的规则。
- **范围限于捕获的窗口期。** 评估仅涵盖 5 月 24 日的证据;该窗口之外的活动不在范围内。
- **跨事件关联。** 与 INC-2026-001 和 002 的联系在第一个月评估报告中进行阐述;本调查报告的范围仅限于 lge-files-01 事件。
## NexaCorp DFIR 系列
- [INC-2026-001](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-001): Linux 基础设施入侵 (vsftpd 后门, Caldera C2)
- [INC-2026-002](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-002): 提权与持久化 (Tor SSH, SUID, 后门账户)
- **INC-2026-003**: 本仓库 (横向移动与持久化;第一个月结业项目)
- [INC-2026-004https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-004): SQL 注入 (Web 门户)
- [INC-2026-005](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-005): OS 命令注入与 Web Shell (Web 门户)
- [INC-2026-006](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-006): 存储型 XSS 与会话劫持 (NexaPortal)
- [INC-2026-007](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-007): IDOR 与访问控制失效 (NexaPortal;第二个月结业项目)
- [INC-2026-008](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-008): AD 侦察与 Kerberoasting (第三个月的第一起事件)
## 致谢
- **Thomas B.** (BeCode 实验室教练): 设计场景并授权发布用于个人作品集。
- **MITRE** 提供的 ATT&CK 知识库,用于对每一项发现进行映射。
## 关于
作为任务 03,在 [BeCode 布鲁塞尔](https://becode.org)蓝队与红队训练营(2025年11月至2026年9月)期间交付的个人 DFIR 实践项目。
作者: **[Johan-Emmanuel Hatchi](https://github.com/Jhatchi)** ([LinkedIn](https://www.linkedin.com/in/johan-emmanuel-hatchi/)).
本人对 2026 年 9 月起在比利时开始的网络安全实习机会持开放态度。正在寻找 SOC / DFIR / 检测工程相关的职位,期望工作范围能涵盖此类端到端任务(日志与流量取证、横向移动分析、正式的客户报告)。
## 许可证
[MIT](LICENSE), 2026 Johan-Emmanuel Hatchi.
报告文本与方法论笔记在 MIT 许可证下发布:可自由复制、改编和重用,但需注明出处。证据包、实验室基础设施以及原始的实践任务简报仍属于 BeCode 布鲁塞尔的财产,且不予重新分发。
标签:防御加固