开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情
前言
最近国家对于疫情的态度慢慢放开了。三年了!这一刻我等了三年!
疫情的封控是放开了,可是发现身边熟悉的人中阳性的也慢慢增多,甚至我的云服务器也“阳”了,中了kthreaddk挖矿病毒,当然这是句玩笑话。
好了,不扯远,我们来看看到底怎么个事。
最近几天阿里云总是给我发信息,说我的云服务器进行挖矿活动。。。
啊?我的云服务器啥也没做呀,平时基本也不维护,怎么就挖矿了?于是并没有在意没去管他。
直到今天,阿里云给我打电话并发送如下信息,才发现事情并没有那么简单了,必须得登上服务器看下了。
这不看不要紧,一看吓一跳,我的服务器的CPU直接被拉满。。。
kthreaddk是啥
既然我的服务器CPU直接拉满,用top命令看看到底是哪个进程占满了CPU
发现一个名叫kthreaddk的进程几乎占满了CPU。
百度了一下,kthreaddk原来是一个挖矿病毒,他会调用你服务器的所有算力来运行虚拟货币的特殊算法,自然就会拉满CPU。说的通俗点,这个病毒会利用你的服务器给他打工,为他挣钱。
解决kthreaddk病毒思路
既然这个病毒这么恶劣,我们如何解决呢?
首先想到的就是执行kill -9命令,强制停止程序。
可是过个几秒钟,kthreaddk进程又自动重启并且重新占满CPU。
所以问题出在了哪?
我想会不会还有个定时任务来达到kthreaddk的自动重启呢?
于是执行crontab -l命令。果然还有个定时任务。
我们用crontab -r命令把这个定时任务删除,再kill kthreaddk进程试试效果怎么样
然而并不怎么样,kthreaddk进程依旧自动重启,并且定时任务也被重新写入,而且定时任务那个脚本的地址还变了。。。
既然定时任务删除又会被重写,那我想自然有个守护线程一直在检测这个定时任务:当发现定时任务停止了;再执行相应的逻辑去重新写入定时任务。
我们用netstat -ntpl命令查看下端口的占用情况
果然发现了一个特别的程序名5emy3b监听了51801端口,我想问题应该就是出在这了。
于是我们再使用ps -ef|grep 30283命令来查看下这个程序所在的位置
再执行删除命令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最高的进程idkill -9强制停止这个进程crontab -l查看定时任务crontab -r删除恶意的定时任务
文中如有不足之处,欢迎指正!一起交流,一起学习,一起成长 ^v^