Linux应急响应 - 14.6 勒索病毒应急

勒索病毒(Ransomware)应急响应指南

勒索病毒是最具破坏性的安全事件之一,处置不当可能导致数据永久丢失

关联:09-历史记录与时间线分析 | 29-取证工具

勒索病毒概述

Linux 勒索病毒现状

Linux 勒索病毒近年来显著增长,主要针对服务器和虚拟化平台

高价值目标:数据库服务器、文件服务器、虚拟化主机(ESXi)

攻击者往往在植入勒索前已经在内网潜伏数天甚至数周

常见 Linux 勒索家族

家族 目标 加密方式 特征扩展名
LockBit Linux ESXi/Linux 服务器 AES+RSA .lockbit
BlackCat/ALPHV Linux/ESXi AES .sykffle 等随机
RansomEXX Linux 服务器 AES-256 .ransomexx
Hive Linux/FreeBSD Golang 实现 .hive
Babuk ESXi/NAS Sosemanuk+ECDH .babyk
HelloKitty ESXi/Linux AES+ECDH .crypt
AvosLocker Linux/ESXi AES-256-CBC .avos2

感染途径

SSH 暴力破解后手动部署

Web 应用漏洞 → 提权 → 部署勒索

供应链攻击

内网横向移动(Windows 域控被攻陷后扩散到 Linux)

虚拟化管理平台漏洞(ESXi)

第一响应原则(黄金规则)

最重要的事

不要重启!不要重启!不要重启!

重启可能导致:

内存中的加密密钥丢失

正在加密的进程重新启动

某些勒索病毒在重启后才开始加密

立即隔离(断网或限制网络),但不要关机

第一响应清单

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
# 1. 网络隔离(不要关机/重启)
# 物理断网或:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -s <你的管理IP> -j ACCEPT
iptables -A OUTPUT -d <你的管理IP> -j ACCEPT

# 2. 立即取证(保存易失性数据)
# 内存 dump
dd if=/dev/mem of=/tmp/memdump.raw bs=1M count=1024 2>/dev/null
# 或使用 LiME 内核模块
# insmod /path/to/lime.ko "path=/tmp/mem.lime format=lime"

# 3. 进程快照
ps auxef > /tmp/ir-ps.txt
ss -antlp > /tmp/ir-net.txt
ls -la /proc/*/exe 2>/dev/null > /tmp/ir-proc-exe.txt

# 4. 检查加密是否仍在进行
iostat -x 1 3 # 查看磁盘 I/O
lsof | grep -iE "\.(lockbit|crypt|encrypted|enc)" | head 20

# 5. 如果加密仍在进行,立即杀掉加密进程
# 先识别勒索进程
top -bn1 -o %CPU
# 杀掉高 CPU + 高 I/O 的可疑进程

识别勒索病毒

加密特征检测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查找被加密的文件(常见加密扩展名)
find / -type f \( \
-name "*.lockbit" -o -name "*.crypt" -o -name "*.encrypted" \
-o -name "*.enc" -o -name "*.hive" -o -name "*.babyk" \
-o -name "*.avos*" -o -name "*.ransomexx" \
\) 2>/dev/null | head 50

# 查找赎金通知文件
find / -type f \( \
-name "README*" -o -name "RECOVER*" -o -name "DECRYPT*" \
-o -name "HOW_TO*" -o -name "RESTORE*" -o -name "!*READ*" \
\) -newer /etc/os-release 2>/dev/null

# 检查文件是否真的被加密(熵值分析)
file /path/to/suspected_file # 加密文件显示为 "data"
# 计算文件熵值(接近 8 表示高熵/加密)
ent /path/to/suspected_file 2>/dev/null

勒索信分析

勒索信中通常包含:

勒索家族名称/标识

加密文件列表

联系方式(Tor 洋葱网址、邮箱)

支付地址(BTC/XMR 地址)

唯一受害者 ID

1
2
# 查找并查看勒索信
find / -name "README*" -newer /etc/os-release -exec cat {} \; 2>/dev/null

在线识别工具

ID Ransomware(上传赎金信或加密文件样本)

No More Ransom 项目(检查是否有解密工具)

这些工具不需要 URL,搜索即可找到

取证与分析

确定加密范围

1
2
3
4
5
6
7
8
# 统计被加密的文件数量
find / -name "*.lockbit" 2>/dev/null | wc -l

# 按目录统计
find / -name "*.lockbit" 2>/dev/null | sed 's|/[^/]*$||' | sort | uniq -c | sort -rn | head 20

# 检查哪些目录未被加密(可能有备份)
find /home /var /opt /srv -maxdepth 2 -type d 2>/dev/null

勒索进程分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查找勒索进程(高 CPU + 高 I/O)
top -bn1 -o %CPU | head 20

# 查找打开大量文件的进程
lsof | awk '{print $1, $2}' | sort | uniq -c | sort -rn | head 10

# 查看可疑进程的详细信息
ls -la /proc/PID/exe
cat /proc/PID/cmdline | tr '\0' ' '
ls -la /proc/PID/fd/ | wc -l # 文件描述符数量

# 如果进程还在运行,保存二进制文件
cp /proc/PID/exe /tmp/ransomware_sample
strings /tmp/ransomware_sample | head 100
md5sum /tmp/ransomware_sample # 用于 VirusTotal 查询

入侵路径还原

勒索部署前攻击者通常已经在系统中,需要追溯初始入侵点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 检查认证日志
grep "Accepted" /var/log/auth.log | tail 50

# 检查最近创建的用户
grep "useradd\|adduser" /var/log/auth.log

# 检查 bash history
cat /root/.bash_history
for u in /home/*; do cat "$u/.bash_history" 2>/dev/null; done

# 检查最近修改的文件(勒索程序本身)
find / -type f -executable -mtime -3 2>/dev/null | grep -v "/proc\|/sys"

# 检查网络连接(可能还有 C2 连接)
ss -antlp | grep ESTAB

恢复策略

恢复优先级

  1. 检查备份 — 最可靠的恢复方式

验证备份是否完整且未被加密

离线备份优先

  1. 检查快照 — 虚拟化环境

VMware/KVM 快照

LVM 快照

ZFS/Btrfs 快照

  1. 检查解密工具 — No More Ransom 项目

部分勒索家族有免费解密工具

需要匹配正确的版本

  1. 检查卷影副本 — 虽然攻击者通常会删除

LVM thin provisioning 快照

  1. 文件恢复 — 如果加密只是覆盖

ext4 的 journal 可能有部分数据

extundelete / photorec

备份验证

1
2
3
4
5
6
7
8
9
10
11
# 检查是否有未被加密的备份
find /backup /mnt/backup /srv/backup -type f ! -name "*.lockbit" 2>/dev/null | head 20

# 检查 LVM 快照
lvs # 列出逻辑卷

# 检查 ZFS 快照
zfs list -t snapshot 2>/dev/null

# 检查 cron 中的备份任务(确认备份位置)
grep -r "rsync\|tar\|backup\|dump" /etc/cron* /var/spool/cron/ 2>/dev/null

处置流程

完整处置步骤

  1. 隔离 — 网络隔离,防止扩散

  2. 取证 — 保存内存、进程、网络、日志等证据

  3. 识别 — 确定勒索家族和加密范围

  4. 止血 — 杀掉加密进程(如果仍在运行)

  5. 评估 — 确定数据恢复可能性

  6. 恢复 — 从备份/快照/解密工具恢复

  7. 溯源 — 还原入侵路径

  8. 加固 — 修复入侵漏洞,增强防护

  9. 监控 — 持续监控确保攻击者未留下其他后门

不建议支付赎金

支付不保证解密

资助犯罪活动

可能被标记为”容易付款的目标”,招致再次攻击

解密过程可能损坏文件

预防措施

关键防护策略

3-2-1 备份规则

3 份数据副本

2 种不同存储介质

1 份离线/异地备份

最小权限原则

SSH 密钥认证

限制 root 远程登录

服务以低权限运行

网络分段

核心数据库与外网隔离

管理网络独立

及时补丁

定期更新操作系统和应用

关注高危漏洞公告

监控告警

文件完整性监控(AIDE, Tripwire)

异常登录告警

异常 I/O 告警

实战练习

配套实验环境:labs/07-ransomware-sim/

练习场景

你收到告警:某文件服务器大量文件被加密

排查目标:

  1. 识别勒索病毒家族
  2. 确定加密范围
  3. 找到勒索进程(如果还在运行)
  4. 还原入侵路径
  5. 评估恢复可能性

关键排查命令汇总

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 1. 确认加密情况
find / -name "*.enc" -o -name "*.lockbit" -o -name "*.crypt" 2>/dev/null | head 20
find / -name "README*" -newer /etc/os-release 2>/dev/null

# 2. 查找勒索进程
top -bn1 -o %CPU | head 10
ps auxef | grep -v "\[.*\]" | sort -nrk3 | head 10

# 3. 保存勒索样本
cp /proc/PID/exe /tmp/sample 2>/dev/null
md5sum /tmp/sample

# 4. 溯源入侵路径
grep "Accepted" /var/log/auth.log
cat /root/.bash_history
find / -executable -mtime -7 -type f 2>/dev/null | grep -v /proc

# 5. 检查备份
lvs; zfs list -t snapshot 2>/dev/null
find /backup -type f 2>/dev/null | head 10

上一章 目录 下一章
14.5-挖矿病毒应急 Linux应急响应 14.7-供应链攻击检测