应急响应与溯源

应急响应是安全运维的最后一道防线,当服务器被入侵、数据泄露或服务异常时,需要快速定位问题、止血、溯源和恢复。

1. 应急响应流程


发现异常(告警/用户报告)
    │
    ▼
初步研判(是否真实攻击/影响范围)
    │
    ▼
隔离止损(断网/封IP/下线服务)
    │
    ▼
取证分析(日志/内存/磁盘/网络)
    │
    ▼
溯源定位(攻击路径/入口点)
    │
    ▼
修复加固(打补丁/修复配置/更新规则)
    │
    ▼
恢复上线(验证服务正常/监控是否复发)
    │
    ▼
复盘总结(输出报告/改进防御)

2. Linux 入侵排查

2.1 查看异常登录


# 最近登录记录
last -20
lastlog

# 失败登录记录
lastb -20

# 当前登录用户
who
w

# SSH 密钥登录(非密码)
cat ~/.ssh/authorized_keys

2.2 查看异常进程


# 占用 CPU 最高的进程
top -c

# 所有进程(含隐藏进程)
ps aux --sort=-%cpu | head -20

# 进程树
pstree -ap

# 异常网络连接
netstat -tunlp
ss -tunlp

# 查看进程对应的可执行文件
ls -la /proc/PID/exe

2.3 查看异常文件


# 最近修改的系统文件(30分钟内)
find / -mmin -30 -type f 2>/dev/null | grep -v '/proc\|/sys\|/dev'

# SUID 权限的敏感文件(提权常用)
find / -perm -4000 -type f 2>/dev/null

# 计划任务(后门常见位置)
crontab -l
cat /var/spool/cron/crontabs/root
ls -la /etc/cron.d/

2.4 查看异常用户


# 所有用户(含隐藏)
cat /etc/passwd

# UID=0 的特权用户(正常只有 root)
awk -F: '($3==0){print}' /etc/passwd

# 最近添加的用户
tail -50 /etc/passwd

3. 内存取证

3.1 内存dump


# 安装 LiME(Linux Memory Extractor)
modprobe lime mode=direct path=/tmp/mem.lime format=lime

# 或使用 DD
dd if=/dev/fmem of=/tmp/mem.raw bs=1M count=1024

3.2 内存分析(Volatility)


# 分析系统信息
volatility -f mem.lime --profile=LinuxDebian10_5_0_1_AMD64 linux_pstree

# 查看网络连接
volatility -f mem.lime --profile=LinuxDebian10_5_0_1_AMD64 linux_netstat

# 查看历史命令
volatility -f mem.lime --profile=LinuxDebian10_5_0_1_AMD64 linux_bash

4. 日志分析

4.1 SSH 登录日志


# 登录成功
grep 'Accepted' /var/log/auth.log | tail -20
# 登录失败(暴力破解痕迹)
grep 'Failed' /var/log/auth.log | tail -20
# 统计失败次数TOP来源IP
grep 'Failed' /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -10

4.2 Web 访问日志(Nginx)


# 查看异常大量请求(扫描器特征)
grep -E '(\.php|\.asp|\.jsp|\.env)' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10

# 查找 SQL 注入尝试
grep -E "union.*select|order.*by|' OR '1'='1" /var/log/nginx/access.log

# 查找命令注入尝试
grep -E 'curl|wget|whoami|cat /etc/passwd|ping.*127\.0\.0\.1' /var/log/nginx/access.log

4.3 命令历史


cat ~/.bash_history | tail -100
# 查看被删除的命令(如果有 audit)
ausearch -k bash_history | tail -20

5. 勒索病毒应对


# 查看异常文件(加密后缀)
find / -name '*.encrypted' -o -name '*.locked' -o -name 'README_HOW_TO_DECRYPT*' 2>/dev/null

# 勒索特征(加密后文件头)
xxd /path/to/encrypted.file | head -5

# 立即断网,防止横向扩散
ip link set eth0 down

# 查看异常外联
ss -tunp | grep ESTABLISHED

6. 流量分析(Wireshark)


# 提取 HTTP 请求中的 URL
tshark -r capture.pcap -Y 'http.request' -T fields -e http.request.uri | sort -u

# 提取 DNS 查询(发现 C2 域名)
tshark -r capture.pcap -Y 'dns.qry.name' -T fields -e dns.qry.name | sort -u

# 提取明文密码(HTTP Basic Auth)
tshark -r capture.pcap -Y 'http.authbasic' -T fields -e http.authbasic

7. 下一步