解决服务器满CPU被当矿机问题

    最近服务器碰到反应速度变慢问题。一看进程,有个进程名字为乱码的9-10位英文的进程(例如rrgjpvryri),一直在满CPU在跑。并且启动方式是绑定基本的系统指令(例如top,ls等指令)启动的。

  

    并且不断kill之后,过一小段时间又会产生一个新的另一个名字的进程继续跑。在网上查找了一些资料,发现是自己的服务器中了病毒,被别人当成矿机在挖bitcoin了。

     解决问题的方法:

     第一步: 查看与该进程相关联的文件

root@ubuntu:~# lsof -p 24183
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
rrgjpvryr 16137 root  cwd    DIR  252,0     4096 29622273 /root
rrgjpvryr 16137 root  rtd    DIR  252,0     4096        2 /
rrgjpvryr 16137 root  txt    REG  252,0   625878  8920905 /usr/bin/rrgjpvryri
rrgjpvryr 16137 root    0u   CHR    1,3      0t0        6 /dev/null
rrgjpvryr 16137 root    1u   CHR    1,3      0t0        6 /dev/null
rrgjpvryr 16137 root    2u   CHR    1,3      0t0        6 /dev/null
rrgjpvryr 16137 root    3u  sock    0,8      0t0 32843925 protocol: UDP

    可以看出来,这个进程的启动文件是在/usr/bin/下面,然后通过UDP与对方(挖矿的人)保持连接的。

    第二步: 检查/etc/crontab

    这种病毒大多数是通过定时任务来启动的。检查/etc/crontab,会发现这里有个每3分钟定时启动的gcc.sh (刚看到这个文件完全不敢相信这是病毒文件)    

                   

      将这句话注释掉。然后我们来看一下gcc.sh下到底是什么内容:

     

       像这种头部没注释(一般系统文件都会带有较长的注释,还有License之类的),创建时间又不长的文件,极大概率就是病毒。然后可以看见,这个文件将 libudev.so 不断复制,这么来看,病原体主要就是这个文件。

      了解后将/etc/cron.hourly下的gcc.sh删除。注意删除gcc.sh之后不要直接kill掉挖矿进程,这样gcc.sh又会重新出现

    

       第三步:处理libudev.so

        找到病原体之后,尝试将libudev.so删除,但是已删除之后,立马又会出现一个新的libudev.so。这时候检查gcc.sh还是被删除的状态。我怀疑是现在正在跑的挖矿进程在监视这个文件,一旦删除立马新建一个这样的.so文件。于是我尝试直接kill掉rrgjpvryri进程,但是这样又会出现一个新的乱码挖矿进程继续跑,并且这时候再看/etc/cron.hourly下面,gcc.sh又再次出现。

        这样看来,这个病毒是自己组成了一个环路,一旦运行起来之后互相不断创建。所以想要解决问题,只能说是减断某条道路,让他们不能组成一个环路。

        成功的步骤:

        1. 删除gcc.sh,如步骤一。

        2. 删除所有的病毒系统启动项

                    这个病毒把自己添加到了开机启动的目录中。检查/etc/init.d目录,/etc/rc#.d/目录下的所有文件,通过创建日期和进程名判断该启动项是否为病毒。也可以通过内容查看是否为病毒,一般病毒文件里面内容短小,并且写法一样,如下图:

        

            然后/bin目录下的所有病毒启动文件最好也一并删除,一般启动文件都是当天创建的,把/bin目录下的当天创建的启动项删掉就好:

             

            以上这些当天创建的启动文件都是病毒创建的,通过命令:

    find /bin -mtime -1 -file f -print | xargs rm -rf

            记住一定要加 -file f, 要不它会把/bin下面的所有文件删掉(我就照着某傻逼知道来做,然后全删了gg,系统命令用不了,没想到最后靠git曲线救国了)。

            3. 重启服务器

                   到这里按道理一开始病毒没有通过守护进程开机启动的话,就不会再启动了,这时候再把libudev.so删掉,就没有问题了。注意要按照顺序来,要不生生死死轮回不止。。。

            中间还有用到一些限制更改之类的操作,如果中间某个步骤跟预想的不符的话,可以试试:

    chattr +i /etc/init.d/
    chattr +i /lib/libudev4.so 

            4. 检查

             重启之后再检查一下进程。到这里应该是没问题了。

思考:

        这个病毒是怎么进来的呢?阿里云服务器上似乎有很多人都遭遇了这个问题,这个问题是由于Redis的漏洞造成的。要把未授权的redis服务设置密码,修改端口号,修改root密码等,防止再次被入侵。


猜你喜欢

转载自blog.csdn.net/yinanmo5569/article/details/79940788
今日推荐