如何检测 VPS 是否被植入挖矿木马或后门

文章导读
发现服务器异常时,第一动作是隔离网络并排查高占用进程,不要急于重启,以免丢失入侵痕迹。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 参考来源
A A

发现服务器异常时,第一动作是隔离网络并排查高占用进程,不要急于重启,以免丢失入侵痕迹。

先说结论:CPU 持续满载且存在未知进程通常是挖矿迹象,需立即排查进程、网络连接及定时任务。

  • 先确认:检查系统负载与异常进程名称,确认是否为非业务进程占用资源。
  • 优先做:断开可疑网络连接,终止恶意进程,清理定时任务与启动项。
  • 再验证:观察资源占用是否回落,检查是否有残留文件或异常账号。

命令速用版

# 查看占用 CPU 最高的进程
top
# 查找占用 CPU 超过 80% 的进程
ps -aux | awk '$3>80 {print}'
# 检查定时任务
crontab -l
# 查看最近登录记录
last
# 检查异常网络连接
netstat -antp

为什么会这样

挖矿木马的核心目的是窃取计算资源,因此最直观的表现是 CPU 或内存占用率异常升高,甚至达到 100%。攻击者通常会通过漏洞入侵服务器,植入后门程序,并利用定时任务确保持续运行。即使你删除了文件,如果定时任务或启动项未清理,木马也会自动下载并重新执行。此外,部分木马会伪装成系统进程名称,或通过隐藏文件权限来逃避检查。

分步处理

1. 定位异常进程
使用 top 或 ps 命令查看进程列表。重点关注进程名是否为已知挖矿程序(如 xmrig、kdevtmpfsi、ddgs)或乱码字符。若发现某个非业务进程 CPU 占用持续在 90% 以上,记录其 PID。

如何检测 VPS 是否被植入挖矿木马或后门

2. 阻断网络连接

挖矿程序需要与矿池通信。使用 netstat 或 ss 命令查看网络连接,若发现未知外部 IP 的异常连接,可在防火墙层面暂时阻断该端口或 IP。

3. 清理持久化机制
检查定时任务(crontab -l),查找是否有每 15 分钟自动执行下载命令的任务(如包含 curl 或 wget 的脚本)。同时检查 init.d 文件夹及系统启动项,删除多余的启动文件。

如何检测 VPS 是否被植入挖矿木马或后门

4. 排查用户与日志
检查/etc/passwd 文件,查看是否有新增的异常用户(特别是 UID 为 0 的特权账户)。查看 history 命令历史,确认攻击者执行过哪些恶意命令。检查/var/log/secure 或 auth.log 中是否有异常登录记录。

怎么验证是否生效

处理完成后,再次运行 top 命令,确认 CPU 负载是否恢复正常水平。使用 netstat 检查是否还有可疑的外联连接。观察一段时间(如 30 分钟),确认恶意进程没有自动重启。若服务器装有安全中心类软件,查看是否仍有安全告警产生。

常见坑

1. 只杀进程不删文件:终止进程后若未删除源文件及定时任务,木马会通过守护进程或计划任务再次启动。
2. 忽略隐藏文件:攻击者常将文件隐藏在/tmp、/var/tmp 或.dev/shm 目录,或使用隐藏属性,需使用 ls -la 仔细排查。
3. 盲目重启服务器:重启可能导致内存中的痕迹丢失,增加后续分析难度,建议先取证再重启。
4. 忽视账号安全:若未修改弱密码或清理异常账号,攻击者可能再次通过 SSH 登录。

参考来源

  • 挖矿木马自查指南:你的服务器正在偷偷挖币吗?7 个关键症状与排查命令
  • Linux 后门排查与木马清除实战:彻底清理入侵痕迹,守住服务器最后防线
  • 服务器被入侵了怎么办?如何排查?服务器被入侵的排查指南
  • 检测响应的常见问题及解决方案 - 云安全中心 (Security Center)-阿里云帮助中心
  • 如何排查服务器是否有被黑客入侵的迹象?