--以及修复系统权限、重置 root 密码的全过程。

背景简介

最近在日常运维中,发现 NAS 上 CPU 利用率飙升,进程列表中出现一个占用超高内存和 CPU 的 java 进程,风扇狂转,root无法登录。怀疑被植入了挖矿病毒,需要紧急定位并清除,同时修复后台留下的权限漏洞。

一、定位并删除可疑 Java 挖矿程序

  1. 发现异常进程 在顶层监控工具(如 top/htop)中,看到一条进程:
   PID   USER   ...   COMMAND
   1795749 root   ...   java

占用近 200% CPU,内存也超过 2 GB。

  1. 确认真实命令及可执行文件路径
   sudo ps -p 1795749 -o args=
   sudo readlink -f /proc/1795749/exe

结果显示:

   /var/tmp/.cache/java

说明这是某个自解压包在 /var/tmp/.cache 下解出的静态链接 Java 运行时。

  1. 分析可疑目录结构 切入 /var/tmp/.cache 目录,发现典型挖矿木马结构:
   a/      bash.pid  cron.d/  h32/  h64/  java  run  upd  x
  • java:静态编译的 ELF 抓矿二进制
  • cron.d/:可能用于自启动
  • bash.pid:记录挖矿子进程 PID
  1. 立即停掉挖矿进程
   sudo kill 1795749
   # 若不响应:
   sudo kill -9 1795749

确认 ps aux | grep [j]ava 中不再有高占用进程。

  1. 清理自启动脚本
   sudo rm -f /var/tmp/.cache/cron.d/*
   sudo crontab -u root -l      # 检查 root crontab
   sudo crontab -u root -e      # 删除任何指向 /var/tmp/.cache/run 的条目
  1. 删除挖矿缓存目录
   cd /          # 先切换到安全目录,避免 “getcwd” 错误
   sudo rm -rf /var/tmp/.cache
   sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

此时系统 CPU 和内存占用迅速回落,确认清除彻底。


二、修复 UID 冲突并重置 root 密码

  1. 检查 /etc/passwd 发现误将第二个账号也设成 UID 0:多个 UID 0 账户会让 PAM(可插拔认证模块)在认证时迷失方向,导致像 “su: 鉴定故障” 这样的错误
   root:x:0:0:root:/root:/bin/bash
   system:x:0:22::/home/system:/bin/sh

导致认证混乱,无法正常 su - root

  1. 修改冲突账号 UID 编辑 /etc/passwd,将第二行改为非 0:
   - system:x:0:22::/home/system:/bin/sh
   + system:x:1001:22::/home/system:/bin/sh
  1. 切换到安全目录避免 getcwd 错误
   cd ~
  1. 解锁并重设 root 密码
   sudo passwd -u root
   sudo passwd root

按提示输入新密码,确认无误后可用:

   su - root
  1. 重启并验证
   sudo reboot

系统重启后,su - root 应能正常进入;ps aux | grep javatop 均无异常挖矿进程。


三、后续安全加固建议

  • 定期审计 /var/tmp/tmpcron.d 目录,防止脚本植入。
  • 最小化 root 登录,仅通过 SSH key 认证,并关闭密码登录。
  • 安装入侵检测与防病毒软件(如 ClamAV、rkhunter 等),及时扫描可疑文件。
  • 定期备份 /etc/passwd/etc/shadow,并使用版本管理或快照。

通过上述步骤,完成了一次针对 NAS 挖矿病毒的完整应急响应:从定位挖矿进程、清理缓存与自启动脚本,到修复系统权限冲突、重置 root 密码并加固安全,确保系统恢复干净、长期可靠运行。