编辑于【2021年9月25日】:
此病毒的处理方法详见:杀毒成瘾–继续linux服务器挖矿病毒的查杀
一、现象
近期服务器上面不知从哪里感染了病毒,导致CPU占用率特别高,中间临时处理过,由于不是专业处理,只能手动查看进程并结束进程ID号。
但手动的办法只能临时解决,病毒会再次启动,占用服务器cpu资源,查看定时任务,也没有相关任务记录。
crontab -l
#无相关定时任务列表显示,如下图
二、经验
昨天刚处理过一台云服务器的kthreaddk病毒程序,处理方法简单记录如下:
1、查看异常进程,并kill掉,例如异常进程pid为26525
[root@hostname /]# kill -9 26525
2、查看定时任务列表,找到病毒的定时任务文件
[root@hostname /]# crontab -l
* * * * * /etc/default/6tepmg
3、通过du -b命令查看对应文件大小
[root@hostname /]# du -b /etc/default/6tepmg
3502028 /etc/default/6tepmg
4、查找对应大小的文件,并删除
#查找文件,其中3502028换成上一步查看对应文件的大小,后面再加上c
[root@hostname /]# find / -size 3502028c -type f
/etc/depmod.d/6tepmg
find: ‘/proc/24396/task/24396/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/24396/fdinfo/5’: 没有那个文件或目录
#删除文件
[root@hostname /]# rm -rf /etc/depmod.d/
#查找并删除可整合成一个命令如下:
[root@hostname /]# find / -name 3502028c -type f -exec rm {} \;
5、删除定时任务,并关闭定时任务服务(如果不需要)
[root@hostname /]# crontab -r
[root@hostname /]# crontab -l
no crontab for root
[root@hostname /]# systemctl stop crond
6、检查其他相关安全防护配置,如防火墙端口、相关服务的账号及密码等。
以上为云服务器中毒后的简易处理过程记录,经过处理后,病毒没有再次启动程序并占用资源。
本来想参考另一台服务器的病毒处理过程的方法,来处理这台感染顽固病毒的服务器,但无奈没有查找到定时任务列表,也没有其他可操作办法,后来想通过另一种方式和病毒共存,即使用定时任务,反向查找病毒进程ID,然后再定时kill掉这个进程。
三、实验
操作过程也与上面类似,要先找到异常进程,然后再kill掉,并找到进程规律,修改命令中的参数,并设置定时任务。
1、通过top、ps、grep等命令,分析确认出异常进程ID
top查看显示程序名称为-bash,进程ID为32567
ps查看的-bash程序进程ID与top查看ID不同
而system程序的进程ID与top查到的-bashID相同,
由此猜测实际进程名称为system
并经过多次等待病毒重复启动进行确认。
top查看截图
ps查看截图
2、结合以上分析,确认实际进程名称为system后,
可通过一组命令结合的方式,直接查到异常程序的进程ID号
[root@MiWiFi-R2D-srv ~]# ps -ef|grep -w system|grep -v grep|grep -v systemd|awk '{print $2}'
1
700
32567
#上面命令的解释
# ps -ef |grep -w system|grep -v grep
# 使用ps命令查找精确匹配(-w)名称为system的程序,
# 并且不包含(-v)名称为grep和systemd的进程;
# awk '{print $2}'
# 显示查上面查找到的信息项,第二列($2)的值,即进程ID
[root@MiWiFi-R2D-srv ~]# pidof system
32567
#上面命令的解释
# pidof system
# 查找system程序的pid值
ps及awk查找进程截图
3、结束进程,确认无误后,写脚本,内容如下:
[root@MiWiFi-R2D-srv ~]# cat kill-bash-cron.sh
#! bin/sh
# 手动设置定时删除病毒-bash的进程ID号
# 实际进程名称为system
# @author chen
# @date 2021年9月24日
#
# 方式一,通过ps命令查找进程id
ps -ef|grep -w "system"|grep -v "grep"|grep -v "systemd"|awk '{print $2}'|xargs kill -9
# 方式二,通过pidof命令查找进程id
# pidof system | xargs kill -9
# xargs kill -9 固定格式,根据上一步提取的进程id参数结束该进程
3.1、优化shell脚本
#! bin/bash
# 手动设置定时删除病毒-bash的进程ID号
# 实际进程名称为system
# @author chen
# @date 2021年9月24日
#
# 方式一,通过ps命令查找进程id
# ps -ef|grep -w "system"|grep -v "grep"|grep -v "systemd"|awk '{print $2}'|xargs kill -9
#
# 如果没有此进程的判断
if [ $(ps -ef|grep -w "system"|grep -v "grep"|grep -v "systemd"|awk '{print $2}') ]; then
ps -ef|grep -w "system"|grep -v "grep"|grep -v "systemd"|awk '{print $2}'|xargs kill -9
fi
# 方式二,通过pidof命令查找进程id
# pidof system | xargs kill -9
4、设置可执行权限
[root@MiWiFi-R2D-srv ~]# chmod +x kill-bash-cron.sh
5、设置定时任务
[root@MiWiFi-R2D-srv ~]# crontab -e
[root@MiWiFi-R2D-srv ~]# crontab -l
30 * * * * sh /root/kill-bash-cron.sh
四、跟踪
完成以上工作后,还需要跟踪一段时间,以确保此方法不会影响服务器其他的正常服务使用。
此方法不能完全清除病毒,只能定时30分钟查找并关闭异常进程。
以后还需要找到清除病毒的办法。
记录于【2021年9月24日】