Linux挖矿病毒(kswapd0进程使cpu爆满)
一、摘要
事情起因:有台测试服务器很久没用了,突然监控到CPU飙到了95以上,并且阿里云服务器厂商还发送了通知消息,【阿里云】尊敬的xxh: 经检测您的阿里云服务(ECS实例)i-xxx存在挖矿活动。因此很明确服务器中挖矿病毒。
二、排查病毒
1.检查服务器的CPU和内存使用率 top
也可以通过阿里云的监控平台查看进程的CPU和内存的占用率,并且还可以告知你进程目录。
发现进程(kauditd0)占用很高的CPU。并且test用户从来没创建过,而且直接通过kill 命令杀死进程之后不到一分钟又会启动。
2.检查系统登录日志
# 系统日志一般在 /var/log 目录
# 查看登录日志 可能是auth.log 或 securexx.log相关日志,都可以查看
# 此命令是检查登录失败的信息
more /var/log/auth.log | grep "Failed password"
# 此命令是检查登录成功的信息
more /var/log/auth.log | grep "Accepted password"
从上图可知,有人一直在尝试登录系统。
从此图可知,这个test用户已经破解并成功登录。
3.找病毒服务
(1)查找异常IP 命令:netstat -natp
再查询IP地址,果然不对劲。
(2)通过ps -ef|grep kauditd0 找到进程ID
(3)查看病毒如何启动服务
通过systemd 管理的服务或者进程状态,来看一下该病毒到底是如何被启动的。命令:
systemctl status 进程ID
查看输出的CGroup段信息,可以看到一个后缀为.service
的服务,该服务就是病毒的启动服务
4.找病毒文件目录
(1)查找病毒文件,从陌生的test用户入手
1)切换到test 用户的家目录下,查找隐藏目录
# 切换到test用户家目录
cd /home/test
# 查看当前所有目录
ls -a
那么找病毒文件目录就依次查找test用户目录下的文件 最终在.configrc7 目录下。并且进程和阿里云监控平台进程一致,说明就是这个就是病毒文件目录。
(2)直接通过病毒的进程号查找
到/proc/目录下查找对应的pid号,即/proc/进程ID。可以在这目录下找到kswapd0进程的详细信息。
ll /proc/进程ID
(3)分析该目录下的执行文件
拿到执行文件的MD5值发现基本均为挖矿病毒文件。 通过MD5值可以检测病毒的工具:https://s.threatbook.com/
可以确定感染了挖矿病毒。
5.排查系统定时任务
通过命令 crontab -l 可以查看是否有其他的定时任务。
再查看某个用户的定时任务 命令:crontab -l -u test
存在定时任务,将定时任务清除。进入文件 crontab -e -u test 保存并退出。
OK,现在定时任务删除成功。
6.关闭病毒服务(可优先处理)
为了服务的安全考虑,先把病毒服务关闭,再来清理病毒服务文件。
# 终止病毒启动服务
systemctl stop cron.service
# 终止挖矿服务的开机自启
systemctl disable cron.service
杀死病毒进程,kill -9 进程ID 。观察 kauditd0 进程并且CPU也恢复正常了 。
三、处置病毒
1.处理登录密钥
切换 test 账号,因为我们有root账号 切换test不需要输入密码。
# 切换test
su test
# 切换到家目录
cd ~
# 查看.ssh目录下的密钥文件
cat .ssh/authorized_keys
删除密钥 rm -rf authorized_keys
2.删除病毒文件
在排查病毒的时候,我们已经找到了相关的病毒文件 在/home/test/.configrc7/a 目录。
通过命令直接删除 rm -rf ./* 表示删除当前目录下所有的文件。
在通过 find 命令查找是否还有其他的文件,找到之后直接删除。
再删除/home/test/目录下所有的文件(这个目录下存在定时执行的相关任务)。目录下都是隐藏文件
rm -rf /home/test/.*
3.处理test账号
下图可知目前test账号和用户组信息。
(1)删除 test 账号
# 删除test用户及其目录
userdel -r test
此图说明test账号还有个进程2162,将其杀死即可。
kill -9 2162
(2)验证
说明:test账号已经删除成功。
4.善后
可以修改Linux相关登录账号,限制服务器的访问的IP,修改ssh端口等。
参考:linux服务器挖矿病毒处理方案-CSDN博客
Linux挖矿应急响应处置_workminer-CSDN博客