服务器CPU飙到100%?手把手揪出挖矿木马进程并彻底清理的实战全记录

一、半夜收到告警:你的服务器正在“替别人打工”

💡 推荐阅读:云服务器带宽选1M还是3M?实测数据告诉你,别再为“够用”交智商税了

相信不少站长都有过这种经历:大半夜正睡得香,手机突然被阿里云/腾讯云的CPU告警短信轰炸。打开后台一看,CPU使用率直接拉满到100%,但自己明明没有跑任何高负载的业务。这时候,十有八九是服务器被入侵,植入了挖矿木马。

挖矿木马最典型的特征就是疯狂占用CPU资源去计算哈希值,为攻击者挖取门罗币(XMR)等匿名加密货币。它们不仅拖垮你的业务响应速度,还会产生高昂的电费和云资源费用。笔者曾在一个月内处理过三次类似的入侵事件,积累了一些实战排查经验。今天就把这套“从发现到清除”的完整思路分享出来,希望能帮你少走弯路。

二、动手前的准备:两个必须知道的前提

🔥 【限时特惠福利】高性价比独享云服务器限时 1 折起

搭建网站或部署容器推荐选择高稳定性独享云服务器。限时特惠通道开放中,点击即可领取专属满减代金券与特惠折扣:

👉 立刻领取云服务器限时优惠券

💡 延伸阅读:SSH 总是被爆破?手把手教你用 Fail2ban 自动封禁暴力破解的黑客 IP,从此日志清净了

在开始敲命令之前,请务必确认以下两点:

  1. 立刻快照备份:在不停止进程的情况下,先去云控制台给磁盘打一个快照。万一后续操作失误,还能有后悔药吃。
  2. 断开外网(可选但推荐):如果你有独立IP,且能通过VNC或内网登录,建议先在安全组里暂时封掉出口流量(或直接断外网)。这能防止木马在清理过程中再次从远端下载新的恶意载荷。

另外,建议准备一台靠谱的云服务器作为跳板机或临时分析环境。毕竟生产环境越干净越好,别把分析工具都装在被入侵的机器上。如果你还没有合适的机器,选择正规大厂的按量付费实例会更稳妥。

三、核心排查实操:五步定位“元凶”

💡 深度技术指南:WordPress 评论风暴与Pingback漏洞,我用这5招彻底根治,亲测有效!

第一步:用 top 找出最吃CPU的进程

登录服务器,第一时间执行:

top -c

按一下键盘的 P 键(大写P),让进程按CPU使用率降序排列。通常你会看到某个进程的CPU占用率高达几百甚至上千百分比(多核情况下)。记下这个进程的 PID(进程号)。

这里有个小技巧:top -c 能显示完整的命令行,而不仅仅是进程名。很多木马会伪装成 kworker[kthreadd] 或者随机字符串,只有看到完整路径才能判断是否异常。

第二步:查看进程详情与可执行文件路径

假设我们看到的异常PID是 2333,执行:

ls -l /proc/2333/exe
cat /proc/2333/cmdline | tr '\0' ' '

/proc/2333/exe 是一个软链接,直接指向该进程实际运行的二进制文件路径。如果路径指向 /tmp/var/tmp/dev/shm 或者 /root/.ssh 等敏感目录,基本可以实锤是恶意程序。

同时,查看该进程的工作目录和打开的文件:

ls -l /proc/2333/cwd
ls -l /proc/2333/fd | head -50

这一步能帮你找到木马释放的隐藏脚本或者日志文件。

第三步:顺藤摸瓜,揪出守护进程与定时任务

挖矿木马通常有“守护”机制,你杀了进程它马上又会复活。这背后往往是定时任务(Crontab)或者Systemd服务在捣鬼。

立即检查当前用户的定时任务和系统级定时任务:

crontab -l
cat /etc/crontab
ls -l /etc/cron.d/
cat /var/spool/cron/root

重点看有没有奇怪的URL(http://xxx.xxx/xxx.sh)或者Base64编码的字符串。常见的套路是:定时任务每隔几分钟就从远程服务器下载一个 update.sh 并执行。

接着检查Systemd服务,防止它注册成开机自启:

systemctl list-units --type=service --state=running | grep -v 'systemd'

逐一排查名字奇怪的服务,比如 dbus-helper.service 这种。用 systemctl cat 服务名 查看其ExecStart路径。

第四步:检查SSH后门与网络连接

很多挖矿木马是通过SSH暴力破解进来的。检查一下SSH密钥文件是否被篡改或新增了陌生的公钥:

cat ~/.ssh/authorized_keys
ls -la ~/.ssh/

如果看到一串你不认识的公钥,立刻删除。同时,查看当前的网络连接,找到木马回连的C2(控制端)地址:

netstat -antp | grep ESTABLISHED

或者使用 ss -antp。看到连接外部IP的异常进程PID,再回头对照一下是否是刚才那个挖矿进程。

第五步:彻底清除与加固

确认所有恶意文件后,按以下顺序操作(注意:先禁用定时任务,再杀进程):

# 1. 删除恶意定时任务(先注释或清空)
crontab -r
sed -i '/恶意路径/d' /etc/crontab

# 2. 停止并禁用恶意服务
systemctl stop 恶意服务名
systemctl disable 恶意服务名

# 3. 强制杀死挖矿进程
kill -9 2333

# 4. 删除恶意文件(根据前面查到的路径)
rm -rf /tmp/.X11-unix/ /var/tmp/... /root/.ssh/authorized_keys

删除文件后,建议再执行一遍 top 观察几分钟,确认CPU恢复正常。如果又出现新进程,说明还有隐藏的Rootkit内核模块后门,那就需要检查 lsmod 并考虑重装系统了。

四、避坑清单:这些细节决定成败

根据笔者的血泪经验,以下几点非常容易被忽略,导致清理不彻底或者误伤业务:

  • 别急着kill进程:先看 /proc/PID/exefd,否则你删了二进制文件,但进程还在内存里运行,过一会儿又通过其他漏洞重新写入。
  • 注意隐藏权限:有些木马文件被设置了 chattr +i 不可修改属性。删除前先执行 lsattr 文件名,如果是 i 属性,需要先 chattr -i 文件名 再删除。
  • 修改所有密码:包括root密码、数据库密码、FTP密码。因为攻击者可能已经通过键盘记录器拿到了你的凭据。
  • 修补漏洞入口:检查是不是Redis未授权、Docker API未授权或者Weblogic反序列化漏洞导致的入侵。如果漏洞不补,清理完第二天又会中招。
  • 升级内核与软件:老版本内核的漏洞是重灾区,尤其是脏牛(Dirty COW)这类提权漏洞。

五、总结:防患于未然比亡羊补牢更重要

排查挖矿木马的过程,本质上是一场与攻击者的时间赛跑。通过 top 定位异常进程、/proc 文件系统深挖文件路径、crontabsystemd 清除持久化后门,这套组合拳能解决90%以上的常见挖矿病毒。

但说实话,服务器安全的核心在于“预防”。与其每次被入侵后花几个小时清理,不如在初期就做好基础防护:购买云服务器时选择正规服务商,并开启安全组防火墙;注册域名时用隐私保护,避免个人信息泄露被社工;日常运维中尽量使用密钥登录而非密码,并关闭不必要的端口。

希望这篇实战记录能帮你在遇到CPU飙高时不再慌张。如果你有更奇葩的清理经历,欢迎在评论区交流讨论。

相关技术专题与延伸阅读

📦 【资源免费领】本文全套实操配置文件与避坑手册下载

本文涉及的全套 Docker Compose 配置文件、服务器运维避坑清单及 AI 提效指令库已完整打包,可免费极速转存:

👉 点击前往夸克网盘免费极速转存(手机端领 1TB 空间)

💡 提示:推荐使用手机【夸克网盘 App】打开保存,新用户首月免费赠送 1TB 超大空间与免流量极速下载特权。

滚动至顶部