勒索病毒(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
|
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
dd if=/dev/mem of=/tmp/memdump.raw bs=1M count=1024 2>/dev/null
ps auxef > /tmp/ir-ps.txt ss -antlp > /tmp/ir-net.txt ls -la /proc/*/exe 2>/dev/null > /tmp/ir-proc-exe.txt
iostat -x 1 3 lsof | grep -iE "\.(lockbit|crypt|encrypted|enc)" | head 20
top -bn1 -o %CPU
|
识别勒索病毒
加密特征检测
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
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
| 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
|
入侵路径还原
勒索部署前攻击者通常已经在系统中,需要追溯初始入侵点
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
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"
ss -antlp | grep ESTAB
|
恢复策略
恢复优先级
- 检查备份 — 最可靠的恢复方式
验证备份是否完整且未被加密
离线备份优先
- 检查快照 — 虚拟化环境
VMware/KVM 快照
LVM 快照
ZFS/Btrfs 快照
- 检查解密工具 — No More Ransom 项目
部分勒索家族有免费解密工具
需要匹配正确的版本
- 检查卷影副本 — 虽然攻击者通常会删除
LVM thin provisioning 快照
- 文件恢复 — 如果加密只是覆盖
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
lvs
zfs list -t snapshot 2>/dev/null
grep -r "rsync\|tar\|backup\|dump" /etc/cron* /var/spool/cron/ 2>/dev/null
|
处置流程
完整处置步骤
隔离 — 网络隔离,防止扩散
取证 — 保存内存、进程、网络、日志等证据
识别 — 确定勒索家族和加密范围
止血 — 杀掉加密进程(如果仍在运行)
评估 — 确定数据恢复可能性
恢复 — 从备份/快照/解密工具恢复
溯源 — 还原入侵路径
加固 — 修复入侵漏洞,增强防护
监控 — 持续监控确保攻击者未留下其他后门
不建议支付赎金
支付不保证解密
资助犯罪活动
可能被标记为”容易付款的目标”,招致再次攻击
解密过程可能损坏文件
预防措施
关键防护策略
3-2-1 备份规则
3 份数据副本
2 种不同存储介质
1 份离线/异地备份
最小权限原则
SSH 密钥认证
限制 root 远程登录
服务以低权限运行
网络分段
核心数据库与外网隔离
管理网络独立
及时补丁
定期更新操作系统和应用
关注高危漏洞公告
监控告警
文件完整性监控(AIDE, Tripwire)
异常登录告警
异常 I/O 告警
实战练习
配套实验环境:labs/07-ransomware-sim/
练习场景
你收到告警:某文件服务器大量文件被加密
排查目标:
- 识别勒索病毒家族
- 确定加密范围
- 找到勒索进程(如果还在运行)
- 还原入侵路径
- 评估恢复可能性
关键排查命令汇总
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| find / -name "*.enc" -o -name "*.lockbit" -o -name "*.crypt" 2>/dev/null | head 20 find / -name "README*" -newer /etc/os-release 2>/dev/null
top -bn1 -o %CPU | head 10 ps auxef | grep -v "\[.*\]" | sort -nrk3 | head 10
cp /proc/PID/exe /tmp/sample 2>/dev/null md5sum /tmp/sample
grep "Accepted" /var/log/auth.log cat /root/.bash_history find / -executable -mtime -7 -type f 2>/dev/null | grep -v /proc
lvs; zfs list -t snapshot 2>/dev/null find /backup -type f 2>/dev/null | head 10
|