服务器挖矿程序排查
一、检查
下面的检查项可以使用 miner-check.sh 脚本检查(检查用户登录日志暂时没有在脚本中实现)
1.1 检查定时任务
# 比较全面的查看定时任务(只用这个命令查看也可以)
find /var/spool/cron /etc/cron* -type f -exec cat {} \;
## 可以使用下面的命令区分定时任务分别是哪个文件当中的
find /var/spool/cron /etc/cron* -type f \( -exec echo "--- {}: " \; \) -a -exec cat {} \;
# 查看系统级别的定时任务
cat /etc/crontab
# 查看服务器所有用户的定时任务
awk -F':' '{printf "crontab -l -u %s\n",$1}' /etc/passwd | bash




1.2 检查程序资源使用情况
# 查看 CPU 使用最高的进程
ps aux --sort -pcpu | head
ps -eo pid,ppid,pmem,pcpu,comm,command --sort -pcpu | head
# 查看内存使用最高的进程
ps aux --sort -pmem | head
ps -eo pid,ppid,pmem,pcpu,comm,command --sort -pmem | head

1.3 检查文件
可以根据前面两个检查的环节来大致定位恶意文件的目录,或者常见的临时目录检查一下
ls -la /tmp /var/tmp


1.4 检查系统服务
查看是否有恶意的系统服务
systemctl list-unit-files --type=service


1.5 检查用户登录日志
# Ubuntu/Debian
less /var/log/auth.log
# CentOS
less /var/log/secure
查看下面的/var/log/auth.log中的异常日志,以 root 用户在flink的目录下执行/usr/sbin/sysctl kernel.nmi_watchdog=0命令,随后所有连接到服务器上的用户全部断开

随后检查定时任务,发现服务器上出现了如下定时任务:

并且出现了如下文件

二、针对可自动恢复的恶意程序处理
对于发现的一个叫做kdevtmpfsi的程序,CPU 占用率为 4891%

尝试kill -9 <pid>杀掉进程、删除/tmp/kdevtmpfsi文件,但是过几分钟会自动再次出现。
这个时候要看下是否存在定时任务(参考命令:find /var/spool/cron /etc/crontab /etc/cron.* -type f -exec cat {} \;),把这些定时任务删除

通过systemctl status <pid>查看信息

尝试kill -9 <pid>杀掉进程、删除/tmp/kdevtmpfsi//etc/kinsing文件
三、解决方式总结
- 删除找到的恶意定时任务
- 封IP/域名。有的可以看到是从某个IP或域名下载恶意脚本,需要将对应的IP加入黑名单
- 在防火墙配置只允许白名单中的IP访问服务器
- 删除病毒程序文件。删除病毒程序文件、systemd service 文件