- 发布于
服务器清除 xmrig 后门程序记录
- 作者
- 姓名
问题发现
服务器一直在用 NodeQuery 的运行情况监测,当服务器无响应或者资源占用过大时会邮件通知,之前只是偶尔会收到因为服务器网络问题导致的服务器无响应的邮件,但最近几天主服务器却开始频频收到资源占用过大的邮件。
刚开始并未在意,因为有其他事情也没有去一探究竟,在被几十封邮件轰炸之后,我仔细的看了一下到底是什么在占用资源:
如上图所示,是一个叫xmrig
的进程占用了 100% CPU,搜索了一下这个进程,发现竟然是一个门罗币挖矿程序:
进一步搜索才发现,自己是中了木马被劫持成了挖矿的肉鸡,真是岂有此理,必须马上修复。
问题分析
服务器被入侵这个可能性几乎不存在,仔细思考了一下,好像是在服务器上安装了Kubernetes 之后开始频繁报警的,在 Google 搜索了一下 Kubernetes xmrig
果然有发现,原来这是一起因为 Kubernetes 所开放的默认 API 权限过高而导致的后门事件:
这篇文章非常详细的分享了整个过程,并指出:
As it turns out, our coworker’s server was also publicly exposing the kubelet ports (tcp 10250, tcp 10255). Although the problem here was obvious, it should raise some questions about your own Kubernetes deployment, as it did for us.
If your users have network access to your nodes, then the kubelet API is a full featured unauthenticated API backdoor to your cluster.
攻击者应该就是利用这一缺陷不断扫描服务器的 10250 和 10255 端口,发现之后就植入后门。
也可以参考这篇文章,不过内容基本只是对上一篇文章内容的翻译。
问题修复
木马创建了一个叫做java123
的容器,无论是停止还是删除,该容器都会马上创建并启动,肯定是使用了系统的定时命令,经检查,木马在/etc/crontab
创建了定时器:
从图上可以看到拉取的镜像地址,搜索一下关键字就可以在 Docker Hub 上找到,可以看到光这一个地址被拉取的次数就已经超过了60万次,可见该木马泛滥的程度:
由于缺乏必要知识,也没有进一步深究细节,只对木马进行了简单的清除。
删除定时期
修改 /etc/crontab
文件内容,只保留原始内容,删除木马增加的内容:
删除/etc/cron.monthly )
下方的所有行,保存退出。
删除容器
停止并删除木马运行的容器:
docker stop java123
docker rm java123
删除残留文件
出于心理洁癖,将木马拉取的包含有xmrig
的镜像进行了删除。
后记
至此,木马清理完毕,总算是不会再收到烦人的邮件了,整个过程除了服务器资源被长期占用并未造成什么不良影响,但实际上只是因为木马的仁慈而已,取得了以root权限运行容器的能力木马完全可以为所欲为,以后必须更加重视服务器的安全了。
另外,暂时删除了 k8s
,采用默认配置竟然会存在如此之大的风险,这个不能不说是其责任。Kubernetesl固然强大,但暂时也并没有这个需求,日后再说。