
核心要点(TL;DR)
- 挖矿木马常伪装成系统进程,通过CPU占用和网络连接异常可快速定位。
- 排查需检查进程、网络、定时任务、启动项及文件完整性。
- 清除时先隔离主机,再终止进程、删除文件、清理持久化后门。
- 修复漏洞并加固SSH、防火墙和监控是防止复发的关键。
凌晨收到告警:一台线上服务器CPU持续跑满,SSH登录缓慢,业务响应超时。登录后top显示一个名为kdevtmpfsi的进程占用300% CPU——这是典型的挖矿木马症状。面对突发入侵,如何快速排查、清除并加固?本文基于真实应急响应过程,整理出一套可复用的操作流程与命令清单,帮你从发现到根除,最大限度减少业务损失。
一、异常现象与初步判断
挖矿木马的核心特征是消耗大量计算资源。常见现象包括:CPU使用率异常飙升、服务器风扇狂转、业务响应变慢、SSH连接困难、出现陌生进程或网络连接。通过以下命令快速确认:
top -c # 查看CPU占用最高的进程
ps aux --sort=-%cpu | head -20 # 按CPU排序显示进程
netstat -antp | grep ESTABLISHED # 查看已建立的网络连接若发现进程名随机(如kdevtmpfsi、sysupdate)或伪装成系统进程但路径异常(如/tmp/...),基本可判定为挖矿木马。同时检查/tmp、/dev/shm等临时目录是否有可执行文件。
二、深入排查:进程、网络与持久化
1. 进程与文件定位
确定恶意进程PID后,查看其完整路径和打开的文件:
ls -l /proc/<PID>/exe # 查看进程可执行文件路径
lsof -p <PID> # 查看进程打开的文件
cat /proc/<PID>/cmdline # 查看进程命令行删除恶意文件前先备份样本(如cp /proc/<PID>/exe /root/backup/),便于后续分析。然后终止进程:kill -9 <PID>。
2. 网络连接分析
挖矿木马需要连接矿池,通过netstat -antp或ss -antp查看异常外连,常见矿池端口包括3333、5555、7777、14444等。使用iptables或firewalld临时封禁这些IP和端口,阻断通信。
3. 持久化机制排查
攻击者通常会留下后门确保木马重启后依然运行。必须检查以下位置:
- 定时任务:
crontab -l(所有用户)、/etc/crontab、/etc/cron.*/、/var/spool/cron/ - 系统服务:
systemctl list-unit-files --type=service,检查/etc/systemd/system/下可疑服务 - 启动脚本:
/etc/rc.local、/etc/init.d/、/etc/profile.d/ - SSH后门:
~/.ssh/authorized_keys是否有陌生公钥 - 动态链接库劫持:
cat /etc/ld.so.preload是否指向恶意so文件
使用find / -mtime -7 -type f -name "*.sh"查找近期修改的脚本,辅助发现异常。
三、清除与恢复:分步操作指南
确认所有恶意项后,按以下步骤清除:
- 隔离主机:断开网络或通过防火墙限制出入站,防止横向移动。
- 终止进程:
kill -9 <PID>,若进程自动重启,先清除持久化项。 - 删除文件:移除恶意可执行文件、脚本及配置文件,注意检查
/tmp、/var/tmp、/dev/shm。 - 清理持久化:删除恶意crontab条目、systemd服务文件、启动脚本中的注入代码,移除
authorized_keys中的陌生公钥,清空/etc/ld.so.preload。 - 修复漏洞:根据日志分析入侵入口(如Web漏洞、弱口令),更新补丁、修改密码。
- 重启验证:重启服务器,再次检查进程、网络连接和持久化项,确保无残留。
清除后使用rkhunter或chkrootkit进行扫描,确认无rootkit隐藏。
四、加固与防护建议
防止再次被入侵,需从边界到主机层层加固:
- SSH安全:禁用密码登录,使用密钥认证,修改默认端口,限制访问IP。
- 防火墙策略:仅开放业务必要端口,默认拒绝所有入站。
- 定期更新:及时修补系统和应用漏洞,尤其是Web中间件。
- 监控告警:部署进程监控和网络流量分析,对异常CPU、外连行为实时告警。可借助AegisX的入侵检测与漏洞管理能力,实现持续安全监控。
- 备份与恢复:定期备份关键数据,并确保备份离线存储。
五、应急响应检查清单
| 检查项 | 命令/位置 | 确认要点 |
|---|---|---|
| 恶意进程 | top, ps aux | CPU占用高、路径异常 |
| 网络连接 | netstat -antp | 外连矿池IP/端口 |
| 定时任务 | crontab -l, /etc/cron.* | 陌生下载或执行命令 |
| 系统服务 | systemctl list-unit-files | 可疑服务名或路径 |
| 启动脚本 | /etc/rc.local, /etc/profile.d/ | 注入的恶意代码 |
| SSH后门 | ~/.ssh/authorized_keys | 陌生公钥 |
| 预加载库 | /etc/ld.so.preload | 指向恶意so文件 |
行动建议:立即对线上服务器进行一轮安全排查,重点关注CPU异常和陌生外连。若发现挖矿木马,按上述流程清除并加固,同时考虑引入专业安全工具进行持续防护,避免业务中断和数据损失。
常见问题(FAQ)
服务器CPU占用突然100%,怎么判断是不是挖矿木马?
首先使用top或htop查看CPU占用最高的进程,若进程名可疑(如随机字符串、伪装成系统进程但路径异常),则高度怀疑挖矿木马。进一步用ps aux确认进程完整路径,用netstat或ss查看该进程的网络连接,若连接到矿池地址(常见端口3333、5555等),基本可确定。同时检查/tmp、/dev/shm等目录是否有异常可执行文件。
发现挖矿木马后,第一步应该做什么?
立即隔离服务器,断开网络连接(物理断开或防火墙封禁),防止木马继续通信或横向扩散。然后备份关键数据,但不要备份可疑文件。接着使用top、ps、netstat等命令收集证据,记录进程PID、网络连接、文件路径等信息,为后续清除和溯源做准备。切勿直接重启,以免丢失内存中的证据。
如何彻底清除挖矿木马的持久化机制?
挖矿木马常通过定时任务(crontab)、系统服务(systemd)、启动脚本(rc.local)、SSH公钥、LD_PRELOAD劫持等方式持久化。需检查所有用户的crontab(crontab -l -u username)、/etc/crontab、/etc/cron.*目录,检查systemctl list-unit-files和/etc/systemd/system/,检查~/.ssh/authorized_keys,检查/etc/ld.so.preload,并排查所有最近修改的文件。清除时逐一删除恶意项,并重启相关服务。
清除挖矿木马后,如何防止再次被入侵?
首先修复入侵入口,如更新Web应用漏洞、修改所有弱口令、关闭不必要的端口。然后加固SSH(禁用密码登录、修改默认端口、限制IP),配置防火墙只允许必要端口,安装防病毒软件或HIDS进行监控。定期检查日志和异常进程,建立安全基线。建议使用AegisX等工具进行持续安全监控和漏洞管理。