运维日常踩坑——处理挖矿病毒攻击

苦逼网管

CYQ April 21, 2020 views 1317 words

当网管其实是一件很苦逼的事情≧ ﹏ ≦

日前经济不景气,挖矿的人估计也就白嫖人家机器铁定不亏钱了。

现象

CPU占用异常升高,50%的CPU被完全吃满(整整齐齐吃满固定比例的CPU是明显有问题的,多半是为了不过于瞩目)。但是htoptop显示并没有任何不正常的高占用进程。

实际上,电脑已经被用来挖矿了(具体是比特币还是门罗币啥的就不知道了,下次眼疾手快的话我会试试给它来个逆向工程)。

此时,所有的系统命令已经全部被劫持,所有与病毒有关的进程信息都会被劫持后的命令隐藏。因此整个系统所有依赖动态链接库的命令结果已经全部不可信

这时就要用到busybox这个静态链接的一套命令了。

处理方式

  1. 首先busybox通过top可查看病毒进程,kill掉,cpu占用立即恢复正常

  2. 排查以下文件并删除

    • /preload/etc/ld.so.preload:这俩是用来劫持系统命令的,我个人感觉除了隐藏病毒信息之外应该还干了更坏的事情(比如窃取密码,密钥)。如果使用bash,zsh无法删除(也被劫持了)的话可用sh删

      1
      2
      
      sudo sh -c 'echo "" > /etc/ld.so.preload'
      sudo rm -f /preload
      
    • /usr/bin/sendmail:这个目录里本来是没这个文件的,如果怕删掉系统文件可以看看修改时间,应该是最近。自己找一台正常机器对比,就会发现正常应该没这文件。 该文件也可逆向分析,不过由于始作俑者似乎字符串都没整加密,直接就能看出其功能是从某个网站下载病毒脚本

    • /etc/cron.d/mail/etc/cron.weekly/mail:这两个是用来定时执行上面的sendmail的,整个文件夹一起删了就OK。如果不删的话,根据原理也能看出这玩意儿 会死灰复燃。

  3. 重启,更改所有管理员的密钥,密码

有人会问了,那病毒本身挖矿的脚本不用管了吗?其实机器第一次被入侵的时候我还差点看到了,不过后来病毒似乎学会启动进程之后就自毁了,因此是看不到的。病毒在启动之后会删除所有跟挖矿直接相关脚本的痕迹。

该病毒还会创建大量名为syslog的进程,怕你给他删了,其实这名字就是个幌子,每个进程都是在跟远程机器通信。

一些措施……

该病毒通过9832端口传播,如果还没有执行上面的第三步的话,可以看看你所在的网络与你通信的被感染机器

1
sudo netstat -anlp | grep 9832

防火墙开规则拦一下被感染的机器。以及,直接禁掉9832端口的输入输出也是极好的。

后记

其实第2,3步是后来才发现的,因为发现禁掉9832端口、分发脚本的IP和删除文件后,机器仍然主动向外发出链接(虽然病毒脚本是肯定拿不到了),怀疑病毒有残留的定时启动或者开机启动项,检查后才最终确定。

按最近修改时间排序找病毒文件着实有用。毕竟病毒肯定要改或创建一些文件,什么都放内存里岂不是重启就凉了哈哈哈

1
ls -atrl /