场景
前几天搭建了个frp的访问通道,用来在外网访问自己的内网的一个集群,一开始无任何问题,但是呢,从昨天开始,集群的一些组件就无法启动或者丢失连接,并且主机列表里的心跳信息是好久之前的,本以为是服务器挂了,但是看了一下是好的,就是有点卡,以为是服务启用多了,内存或磁盘满了,然后看了下发现并没有,,然后就想看下CPU的情况,但是呢,top命令竟然无法使用:
到/usr/bin下边一看,top竟然没得咯,想想估计是误删吧,就从其他机器上scp一个过来,然而,其他机器上也没有,那只能先装个htop看下情况。
yum -y install epel-release
yum -y install htop
装好一看,cpu被占的满满登登啊:
占用的进程是top,但是明明没有top呀,先不管,重启下再说。重启之前,从一台正常的机器上scp过来了一份top命令。
重启后尝试使用top命令,依然无法使用,查看/usr/bin下之前scp来的top又没了,被删掉了,到这里已经意识到是中毒了,此top非彼top,一定是病毒伪装的。接下来就是排毒过程。
排查过程
-
首先尝试kill掉进程,无效,刚kill掉又会重新启动,那可能是有定时任务重启的;
-
查看定时任务:
果然这里藏了个top,先把定时任务停掉,然后删掉/lib32下的top,kill掉进程; -
再次htop,发现cpu正常了,过段时间依然正常
-
检查开机启动项,发现多了最后一行,把这行删掉:
-
顺着路径找过去,发现同一时间新增了几个文件:
查看正常的机器上边没有这些文件,把这些文件下载到windows上,用记事本打开直接报病毒。于是取消操作限制,全部删掉 -
检查定时任务,有没有可以的东西,发现有个pwnrig的任务,不知道什么东西,关掉它
-
重启
重启后一切正常了。
主机心跳也回来了,组件也能正常启动了:
分析
几台机器都弄完之后,就百度google一下还没有遇到过伪装top命令的现象,百度了下关键字"pwnrig",发现是个挖矿病毒:
和文章中描述的还是有所区别的,这次遇到的是会把top命令在开机启动的时候删除掉,并用病毒程序伪装为top,一方面起干扰作用,一方面阻止你查看cup信息。造成的现象和影响就是:top命令占满CPU,服务器无法正常运行。
总结
导致这个问题的根本原因还是安全控制没做好,为了偷个懒,把暴露在公网的端口没做IP验证,并且因为是内网的服务器,ssh密码设置过于简单,导致了这次问题。所以对公网端口,一定要做限制以及强验证,最大限度的减小被攻击的可能,并且对于常用端口更换为其他端口,这样也能减小被扫到的概率,减小中毒风险。