我的云服务器“阳”了-挖矿病毒kthreaddk

917 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情

前言

最近国家对于疫情的态度慢慢放开了。三年了!这一刻我等了三年!

疫情的封控是放开了,可是发现身边熟悉的人中阳性的也慢慢增多,甚至我的云服务器也“阳”了,中了kthreaddk挖矿病毒,当然这是句玩笑话。

好了,不扯远,我们来看看到底怎么个事。

最近几天阿里云总是给我发信息,说我的云服务器进行挖矿活动。。。

微信图片_20221212134940.jpg

啊?我的云服务器啥也没做呀,平时基本也不维护,怎么就挖矿了?于是并没有在意没去管他。

直到今天,阿里云给我打电话并发送如下信息,才发现事情并没有那么简单了,必须得登上服务器看下了。

微信图片_20221212134950.jpg

这不看不要紧,一看吓一跳,我的服务器的CPU直接被拉满。。。

image.png

kthreaddk是啥

既然我的服务器CPU直接拉满,用top命令看看到底是哪个进程占满了CPU

image.png

发现一个名叫kthreaddk的进程几乎占满了CPU。

百度了一下,kthreaddk原来是一个挖矿病毒,他会调用你服务器的所有算力来运行虚拟货币的特殊算法,自然就会拉满CPU。说的通俗点,这个病毒会利用你的服务器给他打工,为他挣钱。

解决kthreaddk病毒思路

既然这个病毒这么恶劣,我们如何解决呢?

首先想到的就是执行kill -9命令,强制停止程序。

image.png

可是过个几秒钟,kthreaddk进程又自动重启并且重新占满CPU。

所以问题出在了哪?

我想会不会还有个定时任务来达到kthreaddk的自动重启呢?

于是执行crontab -l命令。果然还有个定时任务。

image.png

我们用crontab -r命令把这个定时任务删除,再kill kthreaddk进程试试效果怎么样

然而并不怎么样,kthreaddk进程依旧自动重启,并且定时任务也被重新写入,而且定时任务那个脚本的地址还变了。。。

image.png

既然定时任务删除又会被重写,那我想自然有个守护线程一直在检测这个定时任务:当发现定时任务停止了;再执行相应的逻辑去重新写入定时任务。

我们用netstat -ntpl命令查看下端口的占用情况

1670813218391.png

果然发现了一个特别的程序名5emy3b监听了51801端口,我想问题应该就是出在这了。

于是我们再使用ps -ef|grep 30283命令来查看下这个程序所在的位置

1670813230273.png

再执行删除命令rm -rf /data/soft/redis-4.0.8/deps/jemalloc/test/include/test/5emy3b删除这个文件。我想现在定时任务被删应该不会被重写了吧。

我们再重复上述步骤,看看能否解决这个病毒的问题。

  • top命令找到占用CPU最高的进程id
  • kill -9 强制停止这个进程
  • crontab -l查看定时任务
  • crontab -r删除恶意的定时任务

经过上述的步骤,最终发现kthreaddk进程不会再重启了,并且CPU的占用状态恢复了之前正常的状态。

但实际上,我们还有最后一步没做,就是自启动脚本并没有从我们的服务器删除,还是有一定的隐患。

也就是上面提到的定时任务的脚本juj9hk

但这个文件每次生成的时候都会出现在不同的目录下,所以单纯的rm命令是无法全部删除这个文件的。

这时候可以使用这个命令,实现服务器的全局搜索并执行删除:find ./ -size  4099324c -type f -exec rm {} \; 4099324是文件大小。

现在应该是彻底解决了这个kthreaddk挖矿病毒了。

总结

上面说完了我的解决思路,最后做个总结吧。

  • 首先检查异常端口监听netstat -ntpl,找到文件位置并进行删除rm
  • top命令找到占用CPU最高的进程id
  • kill -9 强制停止这个进程
  • crontab -l查看定时任务
  • crontab -r删除恶意的定时任务

文中如有不足之处,欢迎指正!一起交流,一起学习,一起成长 ^v^