documentationprincess/LuckyShot-Linux-DFIR
GitHub: documentationprincess/LuckyShot-Linux-DFIR
一份完整的 Linux 端点入侵取证调查实践报告,追踪 SSH 暴力破解攻击的完整路径并将发现映射到 MITRE ATT&CK 框架。
Stars: 0 | Forks: 0
# LuckyShot:Linux 端点入侵调查
## 执行摘要
本项目记录了一次针对受损 Linux 工作站的模拟数字取证和应急响应调查。用户报告公司文件丢失和被修改。我分析了实时响应输出、身份验证日志、登录记录、shell 历史记录、文件哈希、systemd 单元、SSH 配置、shell 启动文件和 cron 工件,以重建此次入侵。
证据表明这是一起针对 SSH 的暴力破解/凭据猜测攻击,攻击源为 `192.168.161.198`。在对多个用户名进行反复尝试失败后,攻击源最终在 `2025-02-10T19:39:03.232692+02:00` 成功通过了 `administrator` 的身份验证。
入侵后的活动包括:
- 本地账户和权限发现
- 下载并使用凭据恢复工具
- 通过 SCP 窃取凭据文件
- 执行 `sys_monitor.sh`
- 通过伪装的 systemd 服务实现 root 级别的持久化
- 攻击者提供的 SSH 授权密钥
- 创建高权限本地账户
- 使用网络监听器实现 shell 启动持久化
- 一次尝试通过 cron 获取 payload 的操作失败,原因是 cron 语法无效
本次调查最核心的部分并非某一条命令。而是随着更完善的证据出现,及时修正了现有推论。
## 攻击路径
```
flowchart TD
A["Repeated SSH failures from 192.168.161.198"] --> B["Password accepted for administrator"]
B --> C["Host and privilege discovery"]
C --> D["Credential tooling: LaZagne and mimipenguin"]
D --> E["Credential-file exfiltration through SCP"]
E --> F["Malicious script execution: sys_monitor.sh"]
F --> G["Persistence: systemd, SSH key, account, shell files"]
G --> H["Cron payload rejected by parser"]
```
## 调查方法
1. **对收集的信息进行分类。** 我审查了实时响应类别,并优先处理了登录、进程、网络和系统工件。
2. **验证初始假设。** USB 清单仅包含 VMware 虚拟设备和 Linux 根集线器,因此不支持可移动介质访问。
3. **确定访问路径。** `lastb` 的输出显示,来自同一源的 SSH 登录在针对多个用户名时反复失败。
4. **确认首次成功登录。** 汇总的 `last` 输出指向 `19:41`,但 `auth.log` 显示在 `19:39:03` 密码已被接受。
5. **重建攻击者行为。** 受损用户的 Bash 历史记录显示了侦察、工具传输、凭据访问、SCP 数据窃取和脚本执行过程。
6. **验证持久化。** 我关联了 systemd 配置、服务日志、SSH 密钥、账户创建记录、shell 启动工件和 cron 文件。
7. **检查持久化是否实际生效。** Syslog 显示恶意的 cron 定义存在错误的分钟字段,已被忽略。
## 关键发现
| 发现 | 证据 | 评估 |
| --- | --- | --- |
| 初始访问 | 反复的 SSH 登录失败,随后来自同一 IP 的 `Accepted password` | 高可信度 |
| 受损账户 | `administrator` | 高可信度 |
| 首次成功身份验证 | `2025-02-10T19:39:03.232692+02:00` | 高可信度 |
| 来源与数据外发目的地 | `192.168.161.198` | 高可信度 |
| 权限检查 | `groups administrator` | 高可信度 |
| 凭据工具 | 克隆并运行了 LaZagne;下载了第二个 Linux 凭据脚本 | 高可信度 |
| 文件外发 | `Passwords_Backup.txt` 和 `Server_Credentials.txt` 通过 SCP 传输 | 高可信度 |
| 恶意脚本 | `sys_monitor.sh` | 高可信度 |
| 脚本 SHA-1 | `3ae5dea716a4f7bfb18046bfba0553ea01021c75` | 强关联性;从与执行路径不同的清单路径中恢复 |
| Systemd 持久化 | `systemd-networkm.service` 以 root 身份运行了 `/tmp/sys_monitor.sh` | 高可信度 |
| 攻击者身份线索 | SSH 密钥注释 `kali@kali` | 佐证线索,非真实世界归属 |
| 持久化账户 | `Regev`,被添加到 `sudo` 和 `adm` | 高可信度 |
| 账户创建 | `2025-02-10T20:11:21.783367+02:00` | 高可信度 |
| 计划任务 payload | `/etc/cron.d/syscheck` 获取、反转、解码 Pastebin payload,并将其通过管道传递给 Bash | 工件已确认 |
| 计划执行 | Cron 因无效的分钟字段而拒绝执行该文件 | 确认失败 |
| Shell 启动持久化 | Root 的 `.bashrc` 和 `.profile` 配置了在端口 `7575` 和 `9000` 上的 Ncat 监听器 | 对配置的高可信度;未捕获运行时监听器状态 |
## 关键时间线
| 时间 (`+02:00`) | 事件 |
| --- | --- |
| `2025-02-10 19:38-19:39` | 来自 `192.168.161.198` 针对多个用户名的反复 SSH 登录失败 |
| `2025-02-10 19:39:03.232692` | `administrator` 的密码被接受 |
| `2025-02-10 19:39:03.273657` | SSH 会话开启 |
| `2025-02-10 19:41:10.248386` | 来自同一来源的第二次密码身份验证成功 |
| `2025-02-10 20:11:20.692742` | `systemd-networkm.service` 启动 |
| `2025-02-10 20:11:21.731285` | 为 `Regev` 调用了高权限的 `useradd` 命令 |
| `2025-02-10 20:11:21.783367` | 新的本地用户成功创建 |
| `2025-02-10 20:12:01.149469` | Cron 记录了 `bad minute` 并忽略了 `/etc/cron.d/syscheck` |
## 核心证据
### SSH 凭据攻击
失败历史显示,来自同一主机的 SSH 尝试在针对包括 `administrator`、`admin`、`default`、`ubuntu` 和 `root` 在内的用户名时反复失败。

### 入侵后的命令历史
Bash 历史记录在一个工件中串联了侦察、工具下载、凭据访问、SCP 数据窃取和恶意脚本执行过程。

### 伪装的 root 级别服务
攻击者创建了 `systemd-networkm.service`,这个名字类似于合法的 `systemd-networkd` 服务。它的 `ExecStart` 指令启动了 `/tmp/sys_monitor.sh`,以 root 身份运行,并被配置为自动重启。

### Root shell 启动持久化
Root 的 `.bashrc` 和 `.profile` 被修改以启动 Ncat 监听器。`.bashrc` 条目使用较低端口 `7575`,而 `.profile` 使用 `9000`。

### 失败的 cron 持久化
发现 cron 文件并不能证明其已执行。Syslog 显示该定义因语法无效而被拒绝。

## MITRE ATT&CK 概览
| 行为 | 技术 |
| --- | --- |
| 反复的 SSH 密码尝试 | [T1110.001 - 密码猜测](https://attack.mitre.org/techniques/T1110/001/) |
| 通过 SSH 进行远程访问 | [T1021.004 - SSH](https://attack.mitre.org/techniques/T1021/004/) |
| 存储的凭据恢复 | [T1555 - 来自密码存储的凭据](https://attack.mitre.org/techniques/T1555/) |
| SCP 数据外发 | [T1048.002 - 通过非对称加密非 C2 协议外发](https://attack.mitre.org/techniques/T1048/002/) |
| Root 级别的 systemd 服务 | [T1543.002 - Systemd 服务](https://attack.mitre.org/techniques/T1543/002/) |
| Root SSH 密钥 | [T1098.004 - SSH 授权密钥](https://attack.mitre.org/techniques/T1098/004/) |
| 创建高权限本地账户 | [T1136.001 - 本地账户](https://attack.mitre.org/techniques/T1136/001/) |
| 基于 cron 的执行尝试 | [T1053.003 - Cron](https://attack.mitre.org/techniques/T1053/003/) |
| 反转和 Base64 编码的 payload | [T1140 - 对文件或信息进行反混淆/解码](https://attack.mitre.org/techniques/T1140/) |
| 访问 `/etc/passwd` 和 `/etc/shadow` | [T1003.008 - `/etc/passwd` 和 `/etc/shadow`](https://attack.mitre.org/techniques/T1003/008/) |
请参阅[完整的 ATT&CK 映射](docs/05-mitre-attack.md),包括证据以及已观察与已尝试的状态对比。
## 检测与响应建议
- 当单一来源针对多个用户名产生 SSH 登录失败并随后成功通过身份验证时,触发警报。
- 优先使用基于密钥的 SSH 身份验证,限制源网络,禁用直接 root 登录,并添加速率限制或锁定控制。
- 监控 `useradd` 的执行,特别是当新账户被加入到 `sudo` 或 `adm` 时。
- 对 `/etc/systemd/system`、`/etc/cron.d`、`/root/.ssh/authorized_keys` 以及 root shell 启动文件应用文件完整性监控。
- 对可疑的管道命令(如 `curl | rev | base64 -d | bash`)进行警报。
- 监控涉及凭据文件或异常目标地址的出站 SCP 和 HTTP POST 活动。
- 隔离受影响的主机,禁用受损和攻击者创建的账户,移除未经授权的密钥和持久化机制,轮换暴露的凭据,并在相关系统中搜寻相同的入侵指标。
## 仓库指南
| 路径 | 用途 |
| --- | --- |
| [docs/01-investigation.md](docs/01-investigation.md) | 完整的基于证据的叙述 |
| [docs/02-troubleshooting.md](docs/02-troubleshooting.md) | 弯路、纠正和验证 |
| [docs/03-command-reference.md](docs/03-command-reference.md) | 按问题分类整理的所用命令 |
| [docs/04-evidence-index.md](docs/04-evidence-index.md) | 截图来源、含义及局限性 |
| [docs/05-mitre-attack.md](docs/05-mitre-attack.md) | 详细的 ATT&CK 映射 |
| [docs/06-learning-next.md](docs/06-learning-next.md) | 针对性的后续学习大纲 |
| [docs/publishing-checklist.md](docs/publishing-checklist.md) | 发布前检查关卡 |
| [LINKEDIN-POST.md](LINKEDIN-POST.md) | 少剧透的项目发布声明 |
## 范围
这是一次基于 Hack The Box Sherlock **LuckyShot** 的模拟训练调查。此处描述的所有系统、账户、地址和活动均属于实验室场景。
标签:BurpSuite集成, Cutter, SSH暴力破解, 域环境安全, 库, 应急响应, 攻击溯源, 数字取证, 网络安全, 自动化脚本, 防御加固, 隐私保护