Linux 挖矿病毒指南(检查 → 溯源 → 处理 → 防护)
一、挖矿病毒快速检查方法
1. 进程与资源占用检查
挖矿木马最典型特征是高 CPU/内存占用,优先排查:
bash
# 按 CPU 排序查看前20个进程
ps aux --sort=-%cpu | head -20
# 实时监控资源占用
top -o %CPU
# 过滤挖矿关键词(xmrig/miner/sys-mon等)
ps aux | grep -E "xmrig|miner|sys-mon|kdevtmpfsi|dbus-" | grep -v grep
2. 网络外联检查
挖矿进程会连接矿池,通过网络连接定位外联行为:
bash
# 查看所有网络连接,过滤 ESTABLISHED 状态
netstat -antlp | grep ESTABLISHED
# 或使用 ss 命令(更高效)
ss -tulnp | grep -v 127.0.0.1
# 查看指定进程的网络连接
lsof -Pan -p [可疑PID] -i
3. 定时任务与自启检查
挖矿木马常通过定时任务/服务自启复活:
bash
# 查看当前用户定时任务
crontab -l
# 查看系统级定时任务
cat /etc/crontab
ls /etc/cron.d/ /etc/cron.hourly/ /etc/cron.daily/
# 查看 systemd 自启服务
systemctl list-unit-files --type=service | grep enabled
ls /etc/systemd/system/
4. 文件与目录检查
挖矿木马常藏在临时目录或伪装成系统文件:
bash
# 检查临时目录
ls -la /tmp /var/tmp /dev/shm
# 查找可疑二进制文件
find / -name "*miner*" -o -name "*xmrig*" -o -name "*sys-mon*" 2>/dev/null
# 查看最近修改的文件(按时间排序)
find / -type f -mtime -1 2>/dev/null | head -30
二、溯源根因(定位主进程与启动入口)
1. 进程树溯源
通过进程树找到父进程/主进程,定位启动源:
bash
# 查看完整进程树
pstree -p
# 查看指定进程的父进程链
pstree -p [可疑PID]
# 查看进程的父PID
ps -o ppid= -p [可疑PID]
2. 内核模块检查(隐藏型挖矿)
部分高级木马会加载内核模块隐藏进程:
bash
# 查看已加载内核模块
lsmod
# 过滤可疑模块(名字异常、无说明)
lsmod | grep -v "_" | head -20
# 检查模块加载日志
dmesg | grep "module"
3. 可执行文件与启动配置溯源
找到恶意进程的真实路径与启动配置:
bash
# 查看进程对应的可执行文件
ls -l /proc/[可疑PID]/exe
# 查看进程的启动命令行
cat /proc/[可疑PID]/cmdline
# 检查 systemd 服务配置
systemctl status [可疑服务名]
cat /etc/systemd/system/[可疑服务名].service
4. 日志溯源(定位攻击入口)
通过系统日志找到攻击源与入侵路径:
bash
# 查看 SSH 登录日志(定位暴力破解)
cat /var/log/auth.log | grep -E "Failed password|invalid user"
# 查看系统日志
journalctl -xe --since "1 day ago"
# 查看 apt 操作日志(排查是否被篡改)
cat /var/log/apt/history.log
三、病毒处理与清除
1. 终止恶意进程
bash
# 强制终止进程(-9 不可忽略)
kill -9 [可疑PID]
# 批量终止所有相关子进程
pkill -f [恶意进程名]
2. 删除恶意文件与自启入口
bash
# 删除恶意可执行文件
rm -f /path/to/malicious/file
# 删除 systemd 服务
systemctl stop [恶意服务名]
systemctl disable [恶意服务名]
rm -f /etc/systemd/system/[恶意服务名].service
# 删除定时任务
crontab -e # 手动删除恶意行
rm -f /etc/cron.d/[恶意任务文件]
3. 清理残留与加固
bash
# 清理临时目录
rm -rf /tmp/* /var/tmp/*
# 检查并删除可疑用户
cat /etc/passwd | grep -E "miner|sys|logs"
userdel -r [可疑用户名]
# 重置 root 密码(防止后门)
passwd root
4. 恢复误删依赖(若清理时误删)
bash
# 从 apt 日志恢复本次 autoremove 误删的包
apt update && apt install -y $(grep -A500 "Command: apt autoremove" /var/log/apt/history.log | grep "Removing" | awk '{print $2}')
四、安装与使用杀毒软件
1. ClamAV(开源免费,适合服务器)
安装:
bash
apt update
apt install -y clamav clamav-daemon
# 更新病毒库
freshclam
使用:
bash
# 全盘扫描(推荐)
clamscan -r / --exclude-dir="^/sys" --exclude-dir="^/proc" --exclude-dir="^/dev"
# 扫描指定目录
clamscan -r /home /tmp
# 后台守护进程扫描
systemctl start clamav-daemon
systemctl enable clamav-daemon
2. rkhunter(检查 rootkit 与后门)
安装:
bash
apt install -y rkhunter
使用:
bash
# 检查系统
rkhunter --check
# 查看报告
cat /var/log/rkhunter.log
3. chkrootkit(轻量 rootkit 检测)
安装:
bash
apt install -y chkrootkit
使用:
bash
chkrootkit