
核心要点(TL;DR)
- top命令查看CPU占用,挖矿进程常伪装成系统进程但CPU异常高。
- netstat -antp关联PID,发现异常外联矿池地址。
- 隐藏进程可通过对比/proc与ps结果或使用unhide工具发现。
- 清除时先kill进程,再删除文件、检查定时任务与启动项。
服务器CPU莫名飙升,负载居高不下,但用top却看不到明显异常进程?这很可能是挖矿木马在作祟。攻击者通过隐藏进程、伪装进程名等手段逃避检测,导致运维人员难以快速定位。本文将手把手教你使用top与netstat这对经典组合,结合实战技巧,精准揪出隐藏的挖矿进程,并给出完整的清除与防护步骤。
一、挖矿木马的常见隐藏手段
挖矿木马为了长期驻留,通常会采取以下隐藏措施:
- 进程名伪装:将进程名改为kworker、sshd、dbus等系统进程名,混淆视听。
- 路径隐藏:将恶意文件放在/tmp、/dev/shm、/var/tmp等临时目录,或使用点号开头的隐藏目录。
- 内核级隐藏:通过rootkit内核模块隐藏进程和文件,使ps、top等命令无法显示。
- 定时任务持久化:通过crontab、systemd服务、rc.local等实现开机自启。
了解这些手段后,我们才能有针对性地进行排查。
二、用top命令发现CPU异常与可疑进程
top是查看系统资源占用最直观的工具。执行以下命令:
top -c -o %CPU参数说明:-c显示完整命令行,-o %CPU按CPU使用率排序。观察输出,重点关注:
- CPU占用率长期高于80%的进程,尤其是那些名称看似系统进程但CPU异常高的。
- 命令行中包含矿池地址(如stratum+tcp://)或异常参数。
- 进程用户为nobody、www-data等非root用户,但占用大量CPU。
如果发现可疑进程,记录其PID,然后使用以下命令查看详细信息:
ls -l /proc/PID/exe
cat /proc/PID/cmdline | tr '' ' '
echo检查可执行文件路径是否在/tmp、/dev/shm等异常目录,命令行是否包含矿池信息。
注意:如果top中看不到高CPU进程,但整体CPU使用率很高,可能是进程被隐藏。此时可以对比ps aux与/proc目录下的进程ID:
ps aux | awk '{print }' | sort -n > /tmp/ps_pids
ls /proc | grep -E '^[0-9]+$' | sort -n > /tmp/proc_pids
diff /tmp/ps_pids /tmp/proc_pids若diff输出中存在仅出现在/proc中的PID,则极可能是隐藏进程。
三、用netstat追踪异常网络连接
挖矿木马需要连接矿池获取任务,因此网络连接是重要线索。使用以下命令查看所有网络连接及对应进程:
netstat -antp参数说明:-a显示所有连接,-n以数字形式显示地址和端口,-t仅显示TCP连接,-p显示进程PID和名称。
重点关注:
- 状态为ESTABLISHED的连接,尤其是目标端口为3333、5555、7777、8888等常见矿池端口。
- 目标IP为境外地址或已知矿池IP(可通过威胁情报平台查询)。
- 进程名可疑或PID对应的进程路径异常。
如果netstat未显示进程信息,可能是权限不足,请使用root执行。若进程被隐藏,netstat可能也无法显示PID,此时可结合lsof命令:
lsof -i -n -P | grep ESTABLISHED找到可疑连接后,记录目标IP和端口,使用whois查询归属,或通过在线沙箱分析。
四、分步清除挖矿木马
确认恶意进程后,按以下步骤清除:
- 终止进程:kill -9 PID,若进程反复重启,先检查定时任务。
- 删除恶意文件:根据/proc/PID/exe找到文件路径,删除文件。同时检查/tmp、/dev/shm、/var/tmp等目录。
- 清理持久化机制:检查crontab(crontab -l)、systemd服务(systemctl list-units --type=service)、/etc/rc.local、~/.bashrc等,删除恶意项。
- 检查SSH公钥:查看~/.ssh/authorized_keys是否有陌生公钥。
- 重启服务器:确保所有恶意进程终止,并验证清除效果。
清除后,再次使用top和netstat确认无异常。
五、防护建议与检查清单
为防止再次中招,建议采取以下措施:
- 定期更新系统和应用补丁,修复已知漏洞。
- 使用强密码,禁用root远程登录,限制SSH访问IP。
- 部署主机安全软件,如AegisX,可实时监控进程行为与网络连接,自动阻断挖矿木马。
- 定期检查系统日志(/var/log/secure、/var/log/cron)和异常文件。
检查清单:
| 检查项 | 命令/方法 |
|---|---|
| CPU异常进程 | top -c -o %CPU |
| 隐藏进程 | diff 常见问题(FAQ)top命令看不到异常进程,但CPU还是很高,怎么办?可能是进程被隐藏。尝试使用top -c查看完整命令行,或使用ps aux与/proc对比。也可用unhide或rkhunter检查。另外,挖矿木马可能通过内核模块隐藏,需检查lsmod和dmesg。 netstat显示大量ESTABLISHED连接,如何确定是挖矿?挖矿木马通常会连接矿池地址(如stratum+tcp://pool.example.com:3333)。用netstat -antp查看连接,结合whois或威胁情报查询IP归属。若连接端口为3333、5555等常见矿池端口,且进程名可疑,基本可判定。 如何防止挖矿木马再次植入?建议定期更新系统和软件,使用强密码,限制SSH访问IP,安装防病毒软件。同时监控CPU使用率与网络连接,设置告警。使用AegisX可实时检测异常进程与连接,自动阻断挖矿行为。 清除挖矿木马后,需要重启服务器吗?建议重启。因为木马可能注入内核或修改系统库,重启可确保恶意进程彻底终止,并验证清除效果。重启后再次检查top和netstat确认无异常。 top命令中的进程名被篡改为常见系统进程,如何识别?对比进程的路径和命令行。用top -c查看完整命令,或ls -l /proc/PID/exe查看可执行文件路径。若路径为/tmp或/dev/shm等临时目录,或命令行包含矿池地址,则为恶意进程。 |