Jhatchi/NexaCorp-DFIR-INC-2026-005

GitHub: Jhatchi/NexaCorp-DFIR-INC-2026-005

一份针对 NexaCorp Web 入侵事件的 DFIR 调查报告,包含从命令注入到 SSH 跳板的完整取证分析和 5 条经过 PCAP 验证的 Suricata 检测规则。

Stars: 0 | Forks: 0

# NexaCorp DFIR:INC-2026-005 - OS 命令注入与 Web Shell 针对 Web 应用门户的 OS 命令注入、Web Shell 部署以及 SSH 跳板攻击。包含 Blue Team 取证调查与 Suricata 检测工程。 [![ci](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/97ac858f89235656.svg)](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-005/actions/workflows/ci.yml) [![方法论](https://img.shields.io/badge/methodology-NIST%20SP%20800--61r2-blue.svg)](#standards-and-frameworks) [![框架](https://img.shields.io/badge/framework-MITRE%20ATT%26CK-red.svg)](https://attack.mitre.org/) [![检测](https://img.shields.io/badge/Suricata-5%20rules%20validated-green.svg)](detection/local-cmdinjection.rules) [![CWE](https://img.shields.io/badge/CWE--78-OS%20Command%20Injection-orange.svg)](https://cwe.mitre.org/data/definitions/78.html) [![许可证](https://img.shields.io/badge/license-MIT-yellow.svg)](LICENSE) [![LinkedIn](https://img.shields.io/badge/LinkedIn-Johan--Emmanuel%20Hatchi-0A66C2?logo=linkedin&logoColor=white)](https://www.linkedin.com/in/johan-emmanuel-hatchi/) 本仓库记录了作为 BeCode 网络安全训练营(2025-2026 期)一部分的 SOC 分析师实战项目。它通过网络和日志证据重建了完整的入侵过程,并交付了一套经过验证的网络检测规则。这是 NexaCorp DFIR 系列的第五个事件。 ## 事件概览 | 字段 | 值 | |---|---| | 编号 | INC-2026-005 | | 受影响主机 | bru-web-01(员工自助服务门户) | | 攻击者 | 172.16.50.10(外部,curl/8.14.1) | | 根本原因 | 未经过滤的诊断输入存在 OS 命令注入(CWE-78) | | 后果 | 以 www-data 身份进行 RCE、窃取 /etc/passwd、Web Shell 持久化、SSH 跳板 | | 捕获窗口 | 2026 年 6 月 5 日,约 10 小时(08:00 至 15:47,UTC+02:00) | | 证据 | web_access.log、auth.log、attack.pcap | | 阶段 | 阶段 1 取证分析,阶段 2 Suricata 检测 | | 相关事件 | [INC-2026-004](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-004)(SQL 注入,同一主机) | ## Kill chain 概要 攻击者在约四个小时内分阶段进行了蓄意攻击,每一步都建立在前一步的基础之上: 1. **身份验证** 登录到门户(08:00:02)。 2. 针对“ping 设备”诊断工具进行 **命令注入**:先使用正常的 `ip=127.0.0.1` 值,随后在 `;` 分隔符后注入 shell 命令。 3. 通过注入进行 **侦察**:`id`、`whoami`、`cat /etc/passwd`、`ls -la /var/www/html/`、`uname -a`。 4. **敏感文件读取**:`/etc/passwd` 的内容在 HTTP 响应体中泄露,暴露了所有本地账户,包括 root 和 j.martin。 5. **Web Shell 部署**:通过命令注入的 POST 请求将 `/shell.php` 写入磁盘,建立了独立于门户会话的持久化。 6. **Web Shell 使用**:向 `/shell.php?cmd=` 发送 GET 请求,确认了以 www-data 身份进行可重复的 RCE。 7. **SSH 跳板**:从攻击者 IP(15:47)成功进行了三次以 j.martin 身份的 SSH 登录,从 Web 进程执行升级为交互式据点。 针对文件查看器的一组并行的五次 Local File Inclusion 尝试均告失败,每次都返回相同的 3868 字节默认错误页面。真正的数据泄露是通过命令注入而非 LFI 发生的。报告中的响应体证据确立了这一区别。 ## 关键指标 | 指标 | 值 | |---|---| | 攻击者请求 | 18(其子网中流量最低,与嘈杂的扫描器截然相反) | | 命令注入 POST | 7 | | 失败的 LFI 尝试 | 4(外加 1 次基线) | | Web Shell 调用 | 2 | | 成功的 SSH 登录(跳板) | 3 | | 编写的 Suricata 检测规则 | 5(SID 1000001 到 1000005) | | 命中捕获数据的规则 | 5 / 5 | | 映射的 MITRE ATT&CK 技术 | 跨越 5 个战术的 9 个技术 | ## 与以往事件的不同之处 INC-2026-005 是一次 **实时检测项目**,而不仅仅是一次单纯的取证评估。与 INC-2026-003(第一个月的总结,仅限取证)不同,本次事件包含了完整的阶段 2:编写了五条 Suricata 规则,并在确定性离线模式(`suricata -r`)下针对捕获的数据进行了验证,同时提供了逐条规则的逻辑、证明和误报分析。`detection/` 目录是本仓库的核心差异点。 这也是继 INC-2026-004(SQL 注入)之后,在同一主机上记录的第二个事件。几天之内在一台机器上出现两个不同的注入漏洞本身就是一个发现,这也推动了对全面的应用程序代码审查的建议。 ## 仓库布局 ``` NexaCorp-DFIR-INC-2026-005/ ├── README.md This file ├── LICENSE ├── .gitignore ├── .markdownlint.json ├── .github/ │ └── workflows/ │ └── ci.yml markdownlint + typography validation ├── reports/ │ ├── INC-2026-005_Findings_Report.pdf Full findings report (23 pages) │ └── INC-2026-005_Findings_Report.md Markdown source of the report, readable on GitHub ├── detection/ │ ├── local-cmdinjection.rules The 5 Suricata rules (SID 1000001-1000005) │ └── README.md Per-rule logic, offline proof, false-positive analysis ├── evidence-summary/ │ └── ioc-summary.md Indicators of compromise, SIEM-ingestible format ├── methodology/ │ ├── attack-timeline.md Full request-level timeline │ └── attck-mapping.md MITRE ATT&CK mapping table with section references └── notes/ └── journal.md Investigation journal (post-analysis reconstruction) ``` ## 检测工程亮点 五条规则,每条对应 Kill chain 的一个阶段,每条规则都针对符合其意图的 Suricata 缓冲区: | SID | 检测内容 | 缓冲区 | 匹配 | |---|---|---|---| | 1000001 | 注入中的系统文件定位 | http.request_body | POST 请求体中的 `etc` | | 1000002 | Web Shell 使用 | http.uri | `shell.php` + `cmd=` | | 1000003 | Web Shell 写入 | http.request_body | POST 请求体中的 `shell.php` | | 1000004 | 确认的 RCE(响应侧) | file_data | 响应中的 `www-data` | | 1000005 | 窃取 /etc/passwd(响应侧) | file_data | 响应中的 `root:x:0:0` | 两条响应侧规则(1000004、1000005)使用 `file_data` 缓冲区来捕获成功的漏洞利用,即服务器确认返回的内容,而不仅仅是攻击者的请求。计数值在离线状态下进行了确定性验证:在实验室接口上进行实时重放(MTU 1450,topspeed)会导致大型多分段响应的重组失败,从而产生不稳定的计数值。详见 `detection/README.md`。 ## 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](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-003):第一个月跨事件评估 - [INC-2026-004](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-004):SQL 注入(同一主机 bru-web-01) - **INC-2026-005**:本仓库 - [INC-2026-006](https://github.com/Jhatchi/NexaCorp-DFIR-INC-2026-006):存储型 XSS 与会话劫持(Web 门户) ## 标准与框架 NIST SP 800-61r2(事件处理),NIST SP 800-86(取证技术),SANS PICERL,MITRE ATT&CK Enterprise v15,CWE-78(OS 命令注入),CWE-22(路径遍历),OWASP Top 10 A03:2021(注入)。 *作者:Johan-Emmanuel Hatchi · BeCode 网络安全训练营 2025-2026 · [linkedin.com/in/johan-emmanuel-hatchi](https://linkedin.com/in/johan-emmanuel-hatchi)*
标签:HTTP工具, Metaprompt, Suricata, 入侵分析, 安全, 库, 应急响应, 现代安全运营, 规则检测, 超时处理, 防御加固