应急响应实战笔记:一次挖矿病毒事件的完整处置过程

举报
yd_221669320 发表于 2026/11/07 18:25:34 2026/11/07
【摘要】 一、事件背景某天下午,运维同学发现一台对外提供测试服务的 Linux 服务器 CPU 使用率长期维持在 300% 以上(多核),SSH 登录明显卡顿,且监控平台告警"出站流量异常"。初步判断疑似被植入挖矿程序,遂启动应急响应流程。受影响资产:1 台 CentOS 7 测试服务器(公网 IP 暴露,SSH 使用弱口令)事件等级:一般安全事件(未涉及核心业务与敏感数据)处置目标:2 小时内完成抑...

一、事件背景

某天下午,运维同学发现一台对外提供测试服务的 Linux 服务器 CPU 使用率长期维持在 300% 以上(多核),SSH 登录明显卡顿,且监控平台告警"出站流量异常"。初步判断疑似被植入挖矿程序,遂启动应急响应流程。

受影响资产:1 台 CentOS 7 测试服务器(公网 IP 暴露,SSH 使用弱口令)
事件等级:一般安全事件(未涉及核心业务与敏感数据)
处置目标:2 小时内完成抑制与根除,恢复业务,输出复盘报告


二、应急响应流程总览

应急响应遵循 PDCERF 模型:

  1. 准备(Preparation):工具、权限、联系人提前就位

  2. 检测(Detection):确认事件真实性

  3. 抑制(Containment):阻断扩散,保护现场

  4. 根除(Eradication):清除恶意程序与后门

  5. 恢复(Recovery):业务回归正常

  6. 复盘(Follow-up):总结改进


三、检测与研判

3.1 现场保护原则

先取证,后处置。 在动手杀进程之前,先保存关键证据,避免破坏现场:

bash
# 保存进程快照
ps auxf > /tmp/ir_ps_$(date +%F_%H%M).txt

# 保存网络连接
ss -antp > /tmp/ir_net_$(date +%F_%H%M).txt

# 保存登录记录
last -a > /tmp/ir_last.txt

3.2 定位可疑进程

bash
top -c          # 按 CPU 排序,发现名为 kdevtmpfsi 的进程占用 300%+
ps -ef | grep kdevtmpfsi

发现两个可疑进程:kdevtmpfsi(挖矿主程序)和 kinsing(守护/下载进程),这是典型的 Kinsing 挖矿家族特征。

3.3 排查持久化机制

bash
# 检查定时任务
crontab -l
cat /etc/crontab
ls -la /etc/cron.*/

# 检查 systemd 服务
systemctl list-unit-files | grep -iE "kinsing|kdev|miner"
ls -la /etc/systemd/system/

# 检查启动项
cat /etc/rc.local

在 /var/spool/cron/root 中发现恶意定时任务,会定期从远程地址下载脚本并重启挖矿进程。

3.4 排查账号与登录痕迹

bash
# 检查异常账号
awk -F: '$3==0{print $1}' /etc/passwd
cat /etc/passwd | grep -v nologin

# 检查 SSH 登录记录
grep "Accepted" /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

# 检查 SSH 公钥后门
cat ~/.ssh/authorized_keys

发现 authorized_keys 中被植入了陌生公钥,且 secure 日志显示存在大量来自境外 IP 的 SSH 爆破成功记录——入口基本确认为 SSH 弱口令爆破。

3.5 排查恶意文件

bash
# 查找近期修改的文件
find / -mtime -3 -type f -name "*.sh" 2>/dev/null

# 查找常见恶意路径
ls -la /tmp /var/tmp /dev/shm

在 /tmp 与 /var/tmp 下发现 kdevtmpfsi、kinsing 二进制文件及下载脚本。


四、抑制

原则:先隔离,再清除。避免攻击者察觉后触发破坏行为。

  1. 网络隔离:通过安全组/防火墙临时封禁该服务器除运维 IP 外的所有入站访问,切断攻击者回连。

  2. 封禁恶意 IOC:在边界防火墙上封禁挖矿矿池域名/IP 及下载源地址。

  3. 保留现场:对关键目录做打包备份,供后续分析:

bash
tar czf /root/ir_evidence_$(date +%F).tar.gz /tmp/kdevtmpfsi /tmp/kinsing \
    /var/spool/cron/root ~/.ssh/authorized_keys /var/log/secure

五、根除

5.1 终止恶意进程

bash
# 先杀守护进程,再杀挖矿进程,防止被拉起
kill -9 <kinsing_pid>
kill -9 <kdevtmpfsi_pid>

5.2 清除持久化

bash
# 清除恶意定时任务
crontab -r    # 确认无业务任务后执行,或手动编辑删除恶意行

# 删除恶意 systemd 服务(如有)
systemctl disable --now <恶意服务名>
rm -f /etc/systemd/system/<恶意服务名>.service

# 清理 SSH 后门公钥
vi ~/.ssh/authorized_keys   # 删除陌生公钥

5.3 删除恶意文件

bash
rm -f /tmp/kdevtmpfsi /tmp/kinsing
# 注意:部分变种会给文件加 chattr +i 属性,需先解锁
lsattr /tmp/kdevtmpfsi
chattr -i /tmp/kdevtmpfsi && rm -f /tmp/kdevtmpfsi

5.4 加固账号

bash
# 修改 root 及所有业务账号密码(强口令)
passwd root

# 禁用不必要的登录账号
usermod -L <可疑账号>

六、恢复

  1. 验证清除效果:观察 30 分钟以上,确认无进程被重新拉起、CPU 恢复正常、无异常外连。

  2. 恢复网络访问:按最小化原则放开安全组策略。

  3. 业务验证:确认测试服务功能正常。

  4. 加强监控:对该主机临时提高监控频率,关注异常进程与出站连接。

说明:若服务器承载核心业务或数据敏感,建议重装系统而非原地清除,彻底消除隐藏后门风险。本次为测试机,原地清除 + 加固即可。


七、加固与整改



风险项 整改措施
SSH 弱口令 强制 12 位以上复杂口令,禁用 root 远程登录,改用密钥认证
公网暴露 SSH 安全组限制源 IP,或通过堡垒机接入
无入侵检测 部署 HIDS/EDR,配置异常进程与 Cron 变更告警
无日志集中 接入 SIEM,保留登录与命令审计日志 ≥ 6 个月
补丁滞后 建立月度补丁更新机制

八、复盘总结

时间线:

  • T+0:监控告警,启动应急

  • T+15min:确认挖矿进程,完成现场取证

  • T+30min:网络隔离,封禁 IOC

  • T+60min:清除进程、持久化与后门

  • T+90min:业务恢复,监控验证

  • T+120min:输出事件报告

经验教训:

  1. 取证先行是应急响应的铁律,先保存再动手,否则事后无法溯源。

  2. 挖矿病毒往往"进程 + 定时任务 + 公钥后门"三件套齐全,清除时要逐项排查,漏一项就会复发。

  3. 本次入口是 SSH 弱口令,边界暴露面收敛是最具性价比的防护手段。

  4. 应急不是终点,整改闭环才是。


附:常用应急排查命令速查

bash
# 进程与网络
ps auxf | sort -nrk 3 | head -20
ss -antp | grep ESTAB
lsof -i :<port>

# 持久化
crontab -l; ls -la /etc/cron.*/; systemctl list-unit-files
cat /etc/rc.local; ls -la ~/.ssh/

# 账号与登录
awk -F: '$3==0' /etc/passwd
last -a | head -20
grep -i "failed\|accepted" /var/log/secure | tail -50

# 文件排查
find / -mtime -7 -type f -perm -u+x 2>/dev/null | grep -vE "^/(proc|sys)"
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。