ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

与挖矿病毒的斗争过程记录

2021-06-28 07:03:00  阅读:169  来源: 互联网

标签:tmp 容器 记录 IP ssh docker 挖矿 病毒


(1)发现问题:

6月23号周三上午接到同事电话,说一台服务器CPU使用率一直很高,像是中挖矿病毒了,让我帮忙登上去看看,并发给我三张截图:

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

看完截图,我马上连上服务器查看进程,查看/tmp下并没有kdevtmpfsi这个程序,于是df -hT查看了下挂载情况,发现/tmp被挂载了docker容器的文件系统(忘记截图)。

        

马上执行“docker ps”看一下,只是开启了一个ubuntu容器,进入容器使用ps -ef看开启了什么程序,发现确实是这个容器搞得鬼,执行了下面这条指令,并且在/tmp目录下发现了kdevtmpfsi

        28a5e5f539e6d37e7a8edea107133ab4.png

 

大致定位完,先不急着关闭和删除这个容器,因为从这里可能可以找到很多线索。接下来要做的事情和解决的疑惑先有个方向:

         1)这个容器是怎么被拉取并且运行的?

         2)这个容器下载并执行的脚本都做了什么?

 

(2)查找线索:

首先看看到底是怎么***进来的,于是

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

果然被删的很干净,不慌,再看看ssh的配置

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

看来是使用的秘钥方式登进来的,得想办法看看他啥时候进来过,last看看,居然没有找到异常的IP地址登入(不知道啥原因,暂时没有思路)。那就先把配置文件改回来:

         1)添加“PubkeyAuthentication  no”禁止使用秘钥方式登入

         2)将“AuthorizedKeysFile”和“Subsystem sftp”两项注释掉

         3)改完之后重启sshd

 

由于快下班了,先把容器关掉,不让它一直吃服务器资源。但是万万没有想到,不到几分钟docker服务又被启动起来,并且挖矿的容器也被run起来了。马上看看有没有定时计划和执行脚本。查看完,也是没有发现,服务器已经被植入***病毒(看来并没有这么简单)。

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

马上写个定时停止服务的脚本执行起来,先安心的过了今晚再说。

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

 

##容器下载并执行的脚本分析,后期这下面补充

 

 

 

 

(3)漏洞封堵

6月24号,等忙完手头工作空闲时间,继续昨天的分析。先看看链接建立情况:

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

好巧不巧在被我抓到了对方正在远程进来(看来是容器被关了,发现不给他工作,开始检查问题了,不能给他机会!!last查看依然没有记录,陷入沉思,我不是已经修改配置文件并且重启sshd了吗?看来authorized_keys也不能留,直接清空重启下sshd)防火墙禁掉“102.42.136.149”的所有连接。再netstat看看

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

恩~  原来后门还预备了一个,不过已经建立不起ssh的链接了。(这个IP也不能漏禁掉)

看来尝试了几次,就放弃了。

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

等等好像又有个奇怪的IP连接进来了(47.101.30.124)

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

恩~ 这个时间点,又是国内IP,看来这个人并不是国外的。

 

 

把昨天的关闭docker服务的脚本先关掉看看,docker服务马上又启动了,但这次ubuntu这个镜像并没有被拉起来(那就留后面再分析吧):

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

       

        96a5f96e7c100e2524785892db3f27b7.png

后门已经被堵死了,但是这个443是怎么回事?(作为一个服务器,居然一直访问别人的服务,是不是有点过分?禁掉!!)

这个IP(94.130.12.30)不能放过,先记录下来

         watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

好像再汇报自己在线的样子。。。。。。(ˇˍˇ) 想~

查看是什么程序启起来的“lsof -i:33707”。。。。。。。也没有输出  

 

直接防火墙断掉它

firewall-cmd --add-rich-rule 'rule family=ipv4 source address=94.130.12.30 drop'  

 

再netstat看还是“ESTABLISH”,恩~ 不生效?(忘记截图)

         百度起来(下面链接给了我思路)

         https://blog.csdn.net/weixin_33851177/article/details/88883412

 

先tcpkill工具搞起来,杀下:(有点效果,但是好像又多出其他莫名奇妙的ip,看了看,原来汇报的站点还有多个),

         watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

那就防火墙将443端口链接直接重置掉:(另起一个终端抓包看看)

iptables -A OUTPUT -p tcp --dport -j REJECT --reject-with tcp-reset

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

       watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

恩~ 看上面抓包情况和链接情况,已经被阻止了。

 

 

现在回到最初那个问题:容器是如何被拉取并运行的呢?在网上看了些资料:

         https://blog.csdn.net/xuegeweiwu/article/details/91350966  ,里面面提到:

—————————————————————————————————————————————————————————————————————————

         Docker Remote API未授权访问漏洞 :使用 docker swarm管理的  docker 节点上开放一个 TCP端口 2375 ,绑定 IP 为: 0.0.0.0, 且暴露在公网上。

        导致可以远程管理该主机的 docker 容器,启动、停止创建下载 镜像甚至删除上面的容器。

 

         通过 API 拉取镜像、开启一个容器后,虽然 docker 执行命令只能在container内部, 与宿主机是隔离的。但 docker 运行 container的时候,可以将宿主机文件或目录作为 volume olumeolume挂载到 container内,

        并且在 container内部对这些文件进行修改。比如 /tmp/. ssh , 然后修改 /tmp/. ssh /authorized_keys 文件,把自己的 public key写进去,修改权限为 600 。

 

         后面就可以通过 ssh 直借连接宿主机:

 

         总结:

         1、挖矿容器可以直接删除,但不保证宿主机还存在其他恶意文件,由于是测试机所以直接重装了系统。

         2、未正确使用 swarm,使Docker Remote API暴露在外网(2375端口)。禁止外访问或者设置白名单。如果只在内网访问,对于已经***进内网的***者,

         端口仍然处可以直接访问的状态,因此内网使用需设置严格的访问规则(白名单),甚至配TLSTLS 。

         3、利用漏洞部署挖矿程序或DDoS***,其中有挖矿***未尝试逃出docker容器,而是直接在新建容器里挖矿。

 

         关于Docker Remote API未授权访问漏洞可访问绿盟的公告:

         http://blog.nsfocus.net/docker-remote-api-unauthorized-access-vulnerability/

—————————————————————————————————————————————————————————————————————————

 

于是查看自己的docker服务状态:

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

确实是以-H tcp://0.0.0.0:2375方式启动的,先看看docker.service,暂时先清除掉保存:

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

最后再观察一段时间服务器的监听端口和链接建立情况:

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

(4)病毒查杀

首先是***程序的问题,想到之前用过的clamav(免费开源产品,支持多种平台),直接安装,扫扫看。Yum安装,报错(因为很多目录都已经被添加隐藏属性,使用lsattr查看,并chattr去掉。此处也忘记截图),安装完成,更新病毒库(又是报错,真实困难重重)

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

改手动下载(https://database.clamav.net/daily.cvd),并放入/var/lib/clamav

        watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

执行命令进行全盘扫描:clamscan -r -i / -l /var/log/clamav.log

        

扫描结果:

        b91329d23a0f7a7af9aeb1941bc294cc.png

 

将结果中发现的***和病毒直接清理。

          1)两个可执行***的删除:

                watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

          2)容器镜像数据的删除:

                watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

               watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

               这些都是受感染的容器镜像可以直接清空/data/docker/overlay2目录。

 

          3)再将ubuntu镜像删除:

               docker image ls

               docker image rm ubuntu

 

 

标签:tmp,容器,记录,IP,ssh,docker,挖矿,病毒
来源: https://blog.51cto.com/runcx/2950064

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有