Linux应急响应

Linux 应急响应 —— 系统化学习指南

系列简介

应急响应(Incident Response, IR) 是指在安全事件发生后,通过系统化的方法对入侵行为进行 检测、分析、遏制、根除和恢复 的全过程

作为一名安全工程师,你可能擅长渗透测试或代码审计,但当真正的安全事件发生时——服务器被挖矿、数据被加密、后门被植入——你需要的是一套完整的应急响应能力

本系列笔记的目标:

建立 体系化 的 Linux 应急响应知识框架

从基础命令到高级取证,从单点排查到全链路溯源

结合 Java Web 安全 背景,重点覆盖 Tomcat / Spring / Dubbo 等场景

每个知识点配套 Docker 实验环境,学完即可上手练习

为什么需要体系化学习?

碎片化的知识在真正的应急事件中会手忙脚乱

遗漏一个排查点可能导致后门残留、攻击者重新进入

体系化的 checklist 和方法论能让你在高压环境下保持冷静和高效

与已有笔记的关联

本系列与以下笔记存在知识关联,建议交叉阅读:

00-前置知识 —— Java 内存马的前置知识,与 Tomcat/Spring 应急场景密切相关

01-内存马概述 —— 理解内存马原理有助于在应急中识别无文件攻击

02-Servlet型内存马 —— Servlet 型内存马的检测是 Java Web 应急的重要环节

03-Spring型内存马 —— Spring Controller/Interceptor 型内存马检测

04-Agent型内存马 —— Java Agent 型内存马,最隐蔽的内存马类型

05-反序列化与内存马 —— 反序列化漏洞常作为内存马注入的入口

学习路线概览

路线图(ASCII Art)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
┌─────────────────────────────────────────────────────────────────────┐
│ Linux 应急响应学习路线 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 基础篇 │───▶│ 排查篇 │───▶│ 实战篇 │───▶│ 后门篇 │ │
│ │ 00 ~ 03 │ │ 04 ~ 09 │ │ 10 ~ 14 │ │ 15 ~ 27 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │
│ │ ┌──────────┐ │ │
│ └─────────▶│ 工具篇 │◀─────────────────────────┘ │
│ │ 28 ~ 31 │ │
│ └──────────┘ │
│ │ │
│ ▼ │
│ ┌───────────┐ │
│ │ 综合实验 │ │
│ │ Labs │ │
│ └───────────┘ │
│ │
│ 建议学习周期:7 周(每周 8~12 小时) │
│ 前置要求:Linux 基础操作、网络基础、Java Web 基础 │
└─────────────────────────────────────────────────────────────────────┘

学习节奏建议

周次 模块 核心内容 预计时间
第1周 基础篇 系统基础、排查命令、日志分析 8h
第2周 入侵排查篇 账户、进程、文件、计划任务、服务 10h
第3周 实战场景上 SSH暴力破解、Tomcat、Nginx/Apache 10h
第4周 实战场景下 Redis、MySQL、挖矿、勒索、供应链 12h
第5周 持久化后门上 Crontab、SSH、Systemd、Bashrc 10h
第6周 持久化后门下 LD_PRELOAD、PAM、Rootkit、SUID等 12h
第7周 工具+综合 工具使用、YARA规则、综合实验 10h

完整页面索引

模块一:基础篇(00-03)

打好基础是一切排查的前提。这个模块覆盖 Linux 系统基础知识、核心排查命令、日志分析方法。

编号 标题 核心内容
00 学习路线 IR流程、PDCERF模型、技能树、学习规划
01 系统基础与关键目录 /etc /var /proc /tmp 等关键目录作用
02 排查命令速查 ps/netstat/ss/lsof/find 等核心命令
03 日志分析基础 syslog/auth.log/secure/journalctl

00-学习路线

应急响应定义与流程、PDCERF 模型、技能树、学习路径规划、通用排查 checklist

01-系统基础与关键目录

Linux 文件系统层次结构(FHS)、/etc 配置文件详解、/var/log 日志目录、/proc 伪文件系统、/tmp 与 /dev/shm 临时目录、关键安全文件(passwd/shadow/sudoers)

02-排查命令速查

进程排查命令(ps/top/htop)、网络排查命令(netstat/ss/lsof)、文件排查命令(find/stat/file/md5sum)、用户排查命令(who/w/last/lastb)、系统信息命令(uname/uptime/dmesg)

03-日志分析基础

Linux 日志体系概述、rsyslog 配置与日志轮转、auth.log / secure 登录日志分析、syslog / messages 系统日志、journalctl 使用技巧、日志时间线重建方法

模块二:入侵排查篇(04-09)

系统化的入侵排查方法论,从账户到进程到文件,逐层深入。

编号 标题 核心内容
04 账户安全排查 异常用户、权限提升、SSH密钥
05 进程与网络分析 恶意进程、异常连接、隐藏进程
06 文件系统取证 可疑文件、时间戳分析、文件完整性
07 计划任务审计 crontab、at、anacron、systemd timer
08 服务与启动项审计 systemd服务、init.d、rc.local
09 历史记录与时间线分析 bash_history、时间线重建

04-账户安全排查

/etc/passwd 与 /etc/shadow 分析、异常 UID 0 用户检测、sudo 权限审计、SSH authorized_keys 审查、最近登录记录分析、账户锁定与清理

05-进程与网络分析

进程树分析(pstree)、隐藏进程检测、/proc/[pid] 深度分析、异常网络连接排查、端口监听分析、进程与文件关联(lsof)、恶意进程特征识别

06-文件系统取证

可疑文件搜索策略、最近修改文件排查、隐藏文件与目录检测、文件类型验证(file/binwalk)、文件哈希校验、RPM/DPKG 完整性验证、Webshell 文件特征

07-计划任务审计

用户级 crontab 排查、系统级 cron 目录审计(/etc/cron.d、/etc/cron.daily 等)、at 任务排查、anacron 审计、systemd timer 排查、隐蔽的定时任务技巧

08-服务与启动项审计

systemd 服务审计(systemctl list-units)、自启动服务排查、init.d 脚本检查、rc.local 审计、systemd generator、服务文件篡改检测

09-历史记录与时间线分析

bash_history 分析技巧、多用户历史记录收集、history 时间戳配置、时间线(timeline)重建方法、MAC 时间分析、事件关联与攻击路径还原

模块三:实战场景篇(10-14.7)

针对常见入侵场景的专项应急响应方案,每个场景包含攻击原理、排查方法、修复建议。

编号 标题 核心内容
10 SSH暴力破解与未授权访问 SSH日志分析、暴力破解检测、防护加固
11 Tomcat与Java-Web应急 Tomcat日志、Webshell检测、内存马排查
12 Nginx与Apache应急 Web日志分析、恶意请求识别
13 Redis未授权访问应急 Redis利用方式、写入SSH密钥/Webshell/Crontab
14 MySQL入侵分析 MySQL日志、UDF提权、慢查询分析
14.3 挖矿病毒应急 挖矿特征、进程排查、清除方法
14.5 勒索病毒应急 勒索识别、应急处置、数据恢复
14.7 供应链攻击检测 依赖投毒、恶意包检测

10-SSH暴力破解与未授权访问

SSH 登录日志分析(/var/log/auth.log)、暴力破解特征识别、攻击 IP 提取与统计、fail2ban 配置、SSH 安全加固(密钥认证、端口修改、AllowUsers)、案例分析

11-Tomcat与Java-Web应急

Tomcat 日志体系(catalina.out/access log/manager log)、Java Webshell 检测方法、JSP 型 Webshell 特征分析、内存马检测(结合 00-前置知识 )、war 包分析、Java 反序列化攻击痕迹、Tomcat Manager 弱口令利用排查

12-Nginx与Apache应急

Nginx access.log 分析、Apache access_log 与 error_log 分析、恶意请求特征(SQL注入/XSS/路径遍历)、Web 攻击时间线还原、CC 攻击 / DDoS 识别、配置文件后门检测

13-Redis未授权访问应急

Redis 未授权访问原理、写入 SSH 公钥利用、写入 Crontab 反弹 Shell、写入 Webshell、Redis 主从复制 RCE、排查与修复方法

14-MySQL入侵分析

MySQL 日志体系(general log/slow log/error log/binlog)、UDF 提权排查、INTO OUTFILE 写 Webshell、MySQL 账户审计、SQL 注入痕迹分析

Linux应急响应/14.3-挖矿病毒应急

挖矿病毒特征(CPU 占用、矿池连接、特定进程名)、挖矿进程排查、挖矿木马清除流程、持久化机制清理、入侵溯源、加固建议

Linux应急响应/14.5-勒索病毒应急

勒索病毒识别(加密文件特征、勒索信)、应急隔离措施、常见勒索家族识别、数据恢复可能性评估、备份检查、事后加固

14.7-供应链攻击检测

供应链攻击类型(依赖投毒、typosquatting、恶意更新)、Maven/Gradle 依赖审计、npm/pip 包审计、CI/CD 管道安全、检测工具与方法

模块四:持久化后门篇(15-27)

攻击者在拿下服务器后会植入各种后门以维持访问,这个模块详解 13 种常见 Linux 后门技术及其检测方法。

编号 标题 核心内容
15 Crontab后门 定时任务后门植入与检测
16 SSH-authorized_keys后门 SSH公钥后门
17 Systemd-Service后门 恶意服务单元
18 Bashrc与Profile后门 Shell初始化文件后门
19 LD_PRELOAD劫持 动态链接库劫持
20 PAM后门 认证模块后门
21 Rootkit检测 内核/用户态Rootkit
22 SUID后门 SUID权限滥用
23 Alias后门 命令别名劫持
24 Vim-Modeline后门 Vim模式行代码执行
25 SSH软链接后门 sshd软链接绕过认证
26 inetd与xinetd后门 超级守护进程后门
27 反弹Shell技术与检测 各种反弹Shell方式

15-Crontab后门

crontab 后门原理、用户级与系统级 crontab 后门、隐蔽写法(Base64编码、管道执行)、检测方法、清除与加固

16-SSH-authorized_keys后门

authorized_keys 文件作用、后门植入方式、command= 选项利用、隐蔽的密钥后门、检测方法、权限加固

17-Systemd-Service后门

systemd service 文件结构、恶意服务创建方式、ExecStart/ExecStartPre 利用、定时触发(OnCalendar)、检测方法

18-Bashrc与Profile后门

Shell 初始化文件加载顺序、.bashrc/.bash_profile/.profile 后门、/etc/profile.d/ 全局后门、环境变量劫持、检测方法

19-LD_PRELOAD劫持

动态链接基础、LD_PRELOAD 机制、/etc/ld.so.preload 后门、函数劫持示例、检测方法(strace/ltrace/ldd)

20-PAM后门

PAM 认证框架、PAM 配置文件结构、恶意 PAM 模块编写、万能密码后门、登录凭证窃取、检测方法

21-Rootkit检测

Rootkit 分类(用户态/内核态)、用户态 Rootkit 原理(LD_PRELOAD/GOT Hook)、内核态 Rootkit 原理(系统调用表劫持/LKM)、检测工具(rkhunter/chkrootkit/LKML)、手动检测方法

22-SUID后门

SUID/SGID 机制、SUID 后门原理、常见 SUID 提权利用(find/vim/nmap/python等)、SUID 后门检测、GTFOBins 资源

23-Alias后门

Shell alias 机制、alias 后门植入(替换常用命令)、持久化方式(写入 .bashrc)、隐蔽技巧、检测方法

24-Vim-Modeline后门

Vim modeline 功能、modeline 代码执行漏洞、后门利用方式、检测方法、Vim 安全配置

25-SSH软链接后门

sshd 软链接后门原理、PAM 认证绕过、任意密码登录实现、检测方法、端口排查

26-inetd与xinetd后门

inetd/xinetd 超级守护进程、后门服务配置、绑定 Shell 到端口、检测方法

27-反弹Shell技术与检测

反弹 Shell 原理、Bash 反弹、Netcat 反弹、Python/Perl/PHP 反弹、加密反弹 Shell(OpenSSL)、检测方法(网络连接+进程分析)

模块五:工具篇(28-31)

工欲善其事必先利其器,这个模块介绍应急响应中常用的专业工具。

编号 标题 核心内容
28 日志分析工具 GoAccess/ELK/awk/grep 技巧
29 取证工具 volatility/dd/foremost
30 YARA规则 恶意文件特征匹配
31 自动化排查脚本 一键排查脚本编写

28-日志分析工具

GoAccess 实时日志分析、ELK Stack 日志聚合、awk/sed/grep 高级用法、日志可视化、大规模日志处理技巧

29-取证工具

磁盘取证(dd/dcfldd)、内存取证(Volatility/LiME)、文件恢复(foremost/scalpel)、网络取证(tcpdump/Wireshark)、取证镜像制作与保存

30-YARA规则

YARA 规则语法、恶意文件特征提取、Webshell 检测规则编写、挖矿程序检测规则、Rootkit 检测规则、规则管理与自动化扫描

31-自动化排查脚本

应急响应自动化思路、Bash 排查脚本编写、信息采集脚本、异常检测脚本、报告生成、开源排查工具(GScan/LinPEAS/LinEnum)

实验环境

Lab-README

实验环境总览、Docker 环境搭建、各场景实验指南、实验数据说明

配套实验环境

环境概述

所有实验环境基于 Docker 构建,位于 /Users/lucy/Desktop/AI/应急响应/ 目录

实验环境的设计原则:

隔离性:每个场景独立的 Docker 容器,互不影响

可重复性:docker-compose up 即可启动,docker-compose down 即可销毁

真实性:模拟真实攻击场景,包含真实的攻击痕迹和日志

目录结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
/Users/lucy/Desktop/AI/应急响应/
├── labs/ # 实验环境 docker-compose 文件
│ ├── ssh-bruteforce/ # SSH暴力破解场景
│ ├── tomcat-webshell/ # Tomcat Webshell场景
│ ├── redis-unauth/ # Redis未授权访问场景
│ ├── mining-malware/ # 挖矿病毒场景
│ ├── backdoor-lab/ # 后门综合实验
│ └── ...
├── scripts/ # 排查脚本
│ ├── ir-collector.sh # 信息采集脚本
│ ├── check-backdoor.sh # 后门检测脚本
│ └── ...
└── answers/ # 实验参考答案

快速开始

安装 Docker Desktop(macOS):

1
2
3
4
5
# 使用 Homebrew 安装
brew install --cask docker
# 启动 Docker Desktop 后验证
docker --version
docker-compose --version

启动实验环境:

1
2
3
4
5
6
7
8
9
# 以 SSH 暴力破解场景为例
cd /Users/lucy/Desktop/AI/应急响应/labs/ssh-bruteforce/
docker-compose up -d

# 查看容器状态
docker ps

# 进入容器开始排查
docker exec -it ssh-victim /bin/bash

销毁实验环境:

1
2
3
4
5
6
7
8
# 停止并删除容器
docker-compose down -v

# 如需清理所有实验环境
cd /Users/lucy/Desktop/AI/应急响应/labs/
for dir in */; do
(cd "$dir" && docker-compose down -v 2>/dev/null)
done

实验注意事项

实验环境仅用于学习目的,请勿将攻击手法用于未授权的系统

每次实验前建议先 docker-compose down -v 确保环境干净

部分实验需要宿主机的特定端口,注意避免端口冲突

实验过程中的笔记可以直接记录在对应的 Logseq 页面中

前置知识要求

必备知识

Linux 基础操作

熟悉 Shell 基本命令(cd/ls/cat/grep/find/chmod/chown)

理解 Linux 文件权限模型(rwx/SUID/SGID/Sticky)

了解 Linux 进程管理(前台/后台/信号)

熟悉 vi/vim 基本操作

网络基础

理解 TCP/IP 协议栈

熟悉常见端口与服务(22/80/443/3306/6379 等)

了解 DNS 解析过程

能够使用 tcpdump/Wireshark 进行基本的抓包分析

Web 安全基础

理解常见 Web 漏洞(SQL注入/XSS/RCE/文件上传等)

了解 HTTP 协议

熟悉 Web 日志格式(CLF/Combined)

加分知识(你已具备)

Java 安全

Java 反序列化漏洞原理与利用

Tomcat / Spring Boot 架构

Java 内存马原理与检测(参见 00-前置知识

Maven 依赖管理

容器技术

Docker 基本操作

docker-compose 使用

容器网络与存储

建议补充的知识

如果以下知识不够扎实,建议在学习过程中同步补充:

Shell 脚本编程

变量、条件判断、循环

文本处理三剑客(grep/sed/awk)

正则表达式

Linux 系统管理

systemd 服务管理

用户与权限管理

日志系统(rsyslog/journald)

包管理(apt/yum/dnf)

密码学基础

对称加密 / 非对称加密

哈希算法(MD5/SHA)

SSL/TLS 证书

快速导航

按场景查找

服务器被挖矿了?

→ Linux应急响应/14.3-挖矿病毒应急

05-进程与网络分析

服务器被勒索了?

→ Linux应急响应/14.5-勒索病毒应急

06-文件系统取证

SSH 被暴力破解?

10-SSH暴力破解与未授权访问

04-账户安全排查

Tomcat 被 getshell?

11-Tomcat与Java-Web应急

02-Servlet型内存马

Redis 被未授权访问?

13-Redis未授权访问应急

怀疑有后门?

15-Crontab后门 ~ 27-反弹Shell技术与检测(逐个排查)

31-自动化排查脚本(一键排查)

需要做取证?

29-取证工具

09-历史记录与时间线分析

按技能查找

日志分析03-日志分析基础28-日志分析工具

进程分析05-进程与网络分析

文件取证06-文件系统取证29-取证工具

后门检测15-Crontab后门 ~ 27-反弹Shell技术与检测

恶意软件分析30-YARA规则

自动化排查31-自动化排查脚本

学习建议

学习方法

理论 + 实践结合:每学完一个知识点,立即在 Docker 实验环境中实践

建立自己的 checklist:在学习过程中,逐步完善自己的应急响应排查清单

案例驱动:从实战场景出发,带着问题去学习基础知识

笔记整理:在 Logseq 中记录自己的心得,与本系列笔记形成交叉引用

学习原则

先广度后深度:先过一遍所有模块,建立全局视角,再深入单个主题

重视基础命令:ps/netstat/lsof/find 这些命令要练到条件反射

关注攻击者视角:理解攻击者的思路,才能更好地检测和防御

持续更新:安全领域变化快,持续关注新的攻击技术和检测方法

与 Java 安全知识的结合

作为有 Java 安全背景的工程师,你有独特的优势:

Java 反序列化知识 → 快速识别反序列化攻击痕迹

Tomcat 架构理解 → 更高效地分析 Java Web 应急场景

内存马知识 → 能检测传统 Webshell 扫描器漏掉的内存马

Maven 依赖理解 → 供应链攻击检测更有针对性

在学习每个模块时,思考如何将已有的 Java 安全知识与 Linux 应急响应结合

常见入侵场景速查表

按攻击类型分类

Web 攻击类

攻击类型 常见入口 排查重点 参考页面
SQL 注入 Web 应用参数 Web日志中的注入特征、数据库异常操作 12-Nginx与Apache应急
文件上传 上传功能 Webshell 文件、Web目录新增文件 11-Tomcat与Java-Web应急
命令执行 反序列化/SSTI/RCE 异常进程、反弹Shell连接 05-进程与网络分析
内存马 反序列化/文件上传 Java进程内存分析 01-内存马概述

服务漏洞类

攻击类型 常见入口 排查重点 参考页面
SSH 暴力破解 SSH 服务(22端口) auth.log 失败登录、成功登录 10-SSH暴力破解与未授权访问
Redis 未授权 Redis 服务(6379端口) SSH密钥、crontab、webshell 13-Redis未授权访问应急
MySQL 入侵 MySQL 服务(3306端口) UDF文件、outfile、慢查询 14-MySQL入侵分析
Tomcat 弱口令 Manager 后台(8080端口) war包部署记录、manager日志 11-Tomcat与Java-Web应急

恶意软件类

攻击类型 典型特征 排查重点 参考页面
挖矿木马 CPU占用高、矿池连接 异常进程、网络连接、定时任务 Linux应急响应/14.3-挖矿病毒应急
勒索病毒 文件被加密、勒索信 加密文件特征、入侵时间点 Linux应急响应/14.5-勒索病毒应急
Rootkit 进程/文件/网络被隐藏 rkhunter、系统命令校验 21-Rootkit检测
反弹Shell 异常外联连接 网络连接、进程分析 27-反弹Shell技术与检测

按异常现象分类

CPU 异常

现象:CPU 使用率持续 90% 以上

排查思路:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 查看高CPU进程
top -bn1 -o %CPU | head -20
ps aux --sort=-%cpu | head -10

# 2. 分析可疑进程
ls -la /proc/<PID>/exe
cat /proc/<PID>/cmdline | tr '\0' ' '

# 3. 查看进程的网络连接(判断是否为挖矿)
lsof -p <PID> -i
ss -tnp | grep <PID>

# 4. 常见挖矿进程名
# kdevtmpfsi, kinsing, xmrig, ld-linux-x86-64
# 但名字可能被伪装为正常进程

参考:Linux应急响应/14.3-挖矿病毒应急 → 05-进程与网络分析

异常登录

现象:发现陌生 IP 登录记录或登录失败告警

排查思路:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 查看登录记录
last -n 50
lastb -n 50

# 2. 统计失败登录IP
grep "Failed password" /var/log/auth.log | \
awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20

# 3. 查看是否有成功登录
grep "Accepted" /var/log/auth.log | tail -20

# 4. 检查是否新增了用户
awk -F: '$3>=1000{print $1,$3,$7}' /etc/passwd
awk -F: '$3==0{print $1}' /etc/passwd

参考:10-SSH暴力破解与未授权访问04-账户安全排查

文件被篡改

现象:网站页面被篡改、出现不明文件

排查思路:

1
2
3
4
5
6
7
8
9
10
11
# 1. 查找最近修改的文件
find /var/www -mtime -7 -type f 2>/dev/null
find /opt/tomcat/webapps -mtime -7 -type f 2>/dev/null

# 2. 查找可疑的脚本文件
find /var/www -name "*.php" -exec grep -l "eval\|base64_decode\|system\|exec" {} \;
find /opt/tomcat -name "*.jsp" -exec grep -l "Runtime\|exec\|ProcessBuilder" {} \;

# 3. 检查文件完整性
rpm -Va 2>/dev/null # CentOS
dpkg -V 2>/dev/null # Ubuntu

参考:06-文件系统取证11-Tomcat与Java-Web应急

异常网络连接

现象:出现大量外联连接或异常端口监听

排查思路:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 查看所有监听端口
ss -tlnp

# 2. 查看已建立的外联连接
ss -tnp state established

# 3. 查看连接目标IP的地理位置
# 可使用 whois 或在线IP查询

# 4. 查看异常端口对应的进程
lsof -i :<端口号>

# 5. 检查DNS查询记录(如果有)
# 恶意软件常使用DGA域名

参考:05-进程与网络分析27-反弹Shell技术与检测

Linux 后门检测速查矩阵

检测矩阵

后门类型 检测命令 关键文件/位置 难度
Crontab crontab -l -u <user> /var/spool/cron/, /etc/cron.d/
SSH密钥 find / -name authorized_keys ~/.ssh/authorized_keys
Systemd服务 systemctl list-unit-files /etc/systemd/system/, /run/systemd/
Bashrc/Profile cat ~/.bashrc ~/.bash_profile ~/.bashrc, /etc/profile.d/
LD_PRELOAD cat /etc/ld.so.preload /etc/ld.so.preload, $LD_PRELOAD
PAM find /lib/security/ -mtime -30 /etc/pam.d/, /lib/security/
Rootkit rkhunter --check 内核模块, 系统调用表
SUID find / -perm -4000 任意位置的SUID文件
Alias alias ~/.bashrc 中的 alias 定义
Vim Modeline grep modeline 任意文本文件末尾
SSH软链接 find / -type l -name sshd /tmp/su 等异常位置
inetd/xinetd cat /etc/inetd.conf /etc/inetd.conf, /etc/xinetd.d/
反弹Shell ss -tnp + lsof -i 网络连接 + 进程分析

一键排查脚本示例

以下是一个简化版的后门排查脚本框架:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash
# Linux 后门快速排查脚本
# 详细版本参见 [31-自动化排查脚本](/2026/04/04/Linux应急响应-31-自动化排查脚本/)

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

echo -e "${YELLOW}[*] Linux 后门快速排查${NC}"
echo "========================================="

# 1. Crontab 排查
echo -e "\n${YELLOW}[1] Crontab 排查${NC}"
for user in $(cut -d: -f1 /etc/passwd); do
cron=$(crontab -l -u "$user" 2>/dev/null)
if [ -n "$cron" ]; then
echo -e "${RED}[!] $user 的 crontab:${NC}"
echo "$cron"
fi
done
echo "--- /etc/cron.d/ ---"
ls -la /etc/cron.d/ 2>/dev/null

# 2. SSH 密钥排查
echo -e "\n${YELLOW}[2] SSH authorized_keys 排查${NC}"
find / -name "authorized_keys" -exec echo -e "${RED}[!] Found: {}${NC}" \; \
-exec cat {} \; 2>/dev/null

# 3. 异常 SUID 文件
echo -e "\n${YELLOW}[3] SUID 文件排查${NC}"
find / -perm -4000 -type f 2>/dev/null | while read f; do
rpm -qf "$f" &>/dev/null || dpkg -S "$f" &>/dev/null || \
echo -e "${RED}[!] 非系统包SUID文件: $f${NC}"
done

# 4. LD_PRELOAD
echo -e "\n${YELLOW}[4] LD_PRELOAD 排查${NC}"
if [ -f /etc/ld.so.preload ]; then
echo -e "${RED}[!] /etc/ld.so.preload 存在:${NC}"
cat /etc/ld.so.preload
fi
[ -n "$LD_PRELOAD" ] && echo -e "${RED}[!] LD_PRELOAD 环境变量: $LD_PRELOAD${NC}"

# 5. 异常网络连接
echo -e "\n${YELLOW}[5] 异常网络连接排查${NC}"
ss -tnp state established | grep -v "127.0.0.1" | grep -v "::1"

# 6. 异常用户
echo -e "\n${YELLOW}[6] 异常用户排查${NC}"
awk -F: '$3==0 && $1!="root"{print "[!] UID 0 用户: "$1}' /etc/passwd
awk -F: '$7!~/nologin|false/{print $1" "$7}' /etc/passwd

echo -e "\n${GREEN}[*] 排查完成。详细排查请参考完整版脚本。${NC}"

应急响应常见误区

误区一:发现异常立即杀进程

错误做法:看到可疑进程马上 kill -9

正确做法:先采集证据(/proc/PID/ 下的信息),再杀进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 正确的处理流程
# Step 1: 采集进程信息
PID=12345
mkdir -p /tmp/evidence/$PID
ls -la /proc/$PID/exe > /tmp/evidence/$PID/exe_link.txt
cp /proc/$PID/exe /tmp/evidence/$PID/malware_sample 2>/dev/null
cat /proc/$PID/cmdline | tr '\0' ' ' > /tmp/evidence/$PID/cmdline.txt
cat /proc/$PID/environ | tr '\0' '\n' > /tmp/evidence/$PID/environ.txt
ls -la /proc/$PID/fd/ > /tmp/evidence/$PID/fd_list.txt
cat /proc/$PID/maps > /tmp/evidence/$PID/maps.txt
cat /proc/$PID/status > /tmp/evidence/$PID/status.txt

# Step 2: 采集网络连接
ss -tnp | grep $PID > /tmp/evidence/$PID/network.txt
lsof -p $PID > /tmp/evidence/$PID/lsof.txt

# Step 3: 确认无遗漏后再杀
kill -9 $PID

误区二:只排查当前发现的问题

错误做法:发现挖矿进程 → 杀掉 → 结束

正确做法:挖矿只是表象,必须追溯入侵路径、排查所有后门

完整的排查链:

1
2
发现挖矿 → 杀进程 → 排查定时任务 → 排查启动项 → 排查SSH密钥 
→ 排查用户账户 → 溯源入侵路径 → 修复漏洞 → 清除所有后门

误区三:直接格式化重装

格式化重装看似最安全,但存在问题:

丢失了所有取证证据

无法确认攻击路径,可能被同样方式再次入侵

无法确认数据泄露情况

无法满足合规要求(需要事件报告)

正确做法:先取证 → 再分析 → 确认清除 → 必要时才重装

误区四:忽略时间同步

在做日志分析和时间线重建时,时间准确性至关重要

1
2
3
4
5
6
# 检查时间配置
timedatectl
date

# 如果时间不准,记录偏差
# 在分析日志时需要考虑时间偏差

误区五:在被入侵的系统上运行系统自带工具

如果系统已被 Rootkit 感染,ps/netstat/ls 等工具可能被替换

正确做法:使用自己准备的静态编译工具,或从可信源挂载

1
2
3
4
5
# 验证系统命令是否被篡改
rpm -Vf $(which ps) # CentOS
dpkg -V coreutils # Ubuntu
md5sum $(which ps) $(which netstat) $(which ls)
file $(which ps) # 检查是否为正常的ELF文件

Java 安全工程师专项学习路径

Java Web 应急能力矩阵

基于你已有的 Java 安全知识,以下是需要重点建设的应急能力:

已有能力 需要建设的应急能力 对应页面
Java 反序列化原理 反序列化攻击日志痕迹识别 11-Tomcat与Java-Web应急
Tomcat 架构 Tomcat 日志分析、war包取证 11-Tomcat与Java-Web应急
Servlet 内存马 内存马检测工具使用 02-Servlet型内存马
Spring 框架 Spring Boot Actuator 排查 11-Tomcat与Java-Web应急
Maven 依赖 供应链投毒检测 14.7-供应链攻击检测

Tomcat 应急专项重点

作为 Java 工程师,Tomcat 应急是你的主战场,需要重点掌握:

日志分析

catalina.out 异常堆栈分析

access log 恶意请求识别

manager 部署日志审计

Webshell 检测

JSP Webshell 文件特征(Runtime.exec、ProcessBuilder、ClassLoader)

冰蝎/哥斯拉/蚁剑等工具的流量特征

Class 文件反编译分析

内存马检测

1
2
3
4
5
6
7
8
9
10
// Java 内存马检测核心思路:
// 1. 获取所有注册的 Filter/Servlet/Listener
// 2. 检查是否存在没有对应 class 文件的组件
// 3. 检查 class 是否包含恶意代码

// Arthas 排查示例:
// sc -d *Filter # 搜索所有Filter类
// sc -d *Servlet # 搜索所有Servlet类
// jad <class_name> # 反编译可疑类
// watch <class_name> <method> # 监控可疑方法调用

反序列化痕迹

1
2
3
4
5
6
7
8
# 检查 Tomcat 日志中的反序列化异常
grep -r "java.io.ObjectInputStream" /opt/tomcat/logs/
grep -r "InvokerTransformer\|ChainedTransformer" /opt/tomcat/logs/
grep -r "ysoserial\|CommonsCollections\|Jdk7u21" /opt/tomcat/logs/

# 检查可疑的序列化数据传输
# Content-Type: application/x-java-serialized-object
grep "java-serialized" /opt/tomcat/logs/localhost_access_log.*.txt

推荐学习顺序(Java 工程师优化版)

对于有 Java 安全背景的工程师,建议调整部分学习顺序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1周:基础篇(与通用路线相同)

2周:入侵排查篇(与通用路线相同)

3周:优先学习 Tomcat/Java Web 应急(你的强项领域)
├── SSH 暴力破解(快速过)
├── Tomcat 与 Java Web 应急(重点!深入学习)
└── 结合内存马系列笔记交叉学习

4周:其他实战场景
├── Redis(重点:写入 Webshell 到 Tomcat)
├── MySQL(重点:UDF 和 JDBC 反序列化)
├── 挖矿(重点:Java 进程挖矿排查)
└── 供应链(重点:Maven 依赖投毒)

5-6周:后门篇(与通用路线相同)

7周:工具 + 综合实验(增加 Java 专项实验)

版本与更新记录

日期 版本 更新内容
2026-04-02 v1.0 初始版本,完成框架搭建

如有内容纠错或补充建议,直接在对应页面中添加笔记即可


下一章
00-学习路线