躲过了COVID-19 没躲过挖矿病毒

病毒通过 Redis 入侵服务器强制挖矿的真实经历

问题发现

首先是阿里云官方疯狂给我发短信,提示服务器遭受攻击被限制访问部分端口,于是上了阿里云控制台查看了报警提示,显示如下,大致一看还没发现什么。

截屏2020-07-21 下午8.53.58

于是去提示的高风险安全组看了下,意识到6379Redis的默认端口,风险提示的用户名也是 Redis,但是服务器目前并没用 Redis 服务。好吧,也可能是 Redis 被攻击了。

截屏2020-07-21 下午8.51.10

简单处理

早上起床,查了简单的解决方案,将redis卸载掉,封掉6379端口。

本以为能够解决问题,才发现 too young too naive

阿里云的短信仍然在轰炸我的手机,去到服务器后台查看监控,如下:

截屏2020-07-21 下午8.00.20

好家伙,CPU爆掉了,于是通过top指令,查询如下:

截屏2020-07-21 下午8.01.39

这个已经不是最新的记录图了,原图应该是有两个redis用户的进程,有一个 sysupdate 进程占用了 CPU 51.2%,另外还有一个进程 networkservice 占用了 47.8% 。这两个加起来,就已经占用了 99% 了。

于是反复用 kill指令查杀这两个进程,完全没有小效果,进程过几分钟就会重新启动。裂开了~

一顿疯狂搜索知道了是蠕虫病毒通过 Redis 未设置密码的服务进行入侵,将公钥写入目标主机,然后入侵。最终服务器被沦为挖矿的肉鸡,虽然只是个 1核2G的服务器,也难逃这悲惨的命运。

也只能是怪自己之前开 Redis 服务的时候图方便没有设置密码,小白遭受病毒的拷打,脸很痛啊。

问题解决

  1. 通过 systemctl status {进程号} 查看一下networkservice的状态信息,以及有没有相关联的进程。

  2. 通过 ls -l proc/{进程号}/exe 命令查看它具体的位置。最后发现都在 /etc 目录下。绿油油的颜色就发现他们是一伙儿的。

    截屏2020-07-21 下午8.02.57

  3. 有一个 update.sh ,里边肯定写了一些病毒执行相关的命令,简单可以知道如SELINUX 系统被关闭了,我的 authorized_keys文件也被加入了病毒公钥,竟然无耻的还把 wgetcurl 等命令改了名字;

  4. 删除定时任务

通过 crontab -l查看。 没想到却都没有发现,如果有的话 ,删除 /var/spoool/cron/目录下的所有文件。或者执行crontab -r命令,清空任务列表。

  1. 杀掉进程,删除病毒文件

    kill -9 {进程号} 把上边的两个进程都杀掉,然后删除 /etc 目录下的那五个文件。

    注意删除文件时,直接用普通的 rm -rf 不能行。因为病毒文件被锁定了,需要通过 chattr -i {文件名} 解锁之后,再删除。如果还是不行,改用sudo rm -rf可以删掉;

  2. 删除 authorized_keys 文件

    这个文件里记录了可以通过 ssh 免密登录的所有终端的公钥。路径在 ~/.ssh/authorized_keys ,同样采用上面的方法进行删除。

  3. 恢复 wgetcurl 命令

    which cur之后发现,只存在 /bin下,/usr/bin/不存在

    1
    2
    3
    4
    mv /bin/wge /bin/wget
    mv /bin/cur /bin/curl
    mv /usr/bin/wge /usr/bin/wget
    mv /usr/bin/cur /usr/bin/curl
  4. 修复 SELINUX

    SELinux 是 linux 的一个安全子系统。可以通过命令 getenforce 查看服务状态。

    其实从 update.sh 文件中也可以看到此服务被关闭了。

    修改 /etc/selinux/config 文件,将 SELINUX=disabled 修改为 SELINUX=enforcing

    修改完成后,需要重启服务器才能生效。

回顾

回想自己在几个月前熟悉 Redis 服务时,开了服务,没有设置密码,才导致这次的病毒感染。

最终服务器回归了往日的平静,过程中有一种国土被侵略的感觉,很是炸裂!

截屏2020-07-21 下午9.29.35

在自己解决问题的过程中,部分过程没有详细截图记录,解决方案的描述也是作为一个参考吧。

最终的问题解决指导方案参照【作者:烟雨星空 链接:https://segmentfault.com/a/1190000023279128

希望接下来的日子再也没有病毒!