新的一天的开始
周五早上刚到公司,同事来问我系统为啥打不开了?我第一反应就是肯定 Nginx 服务器挂了呗,立马就去登录服务器看看,但此时发现已经完全远程登录不上这台部署了 Nginx 和 Redis 的服务器了,此刻心理活动如下:
难道服务器欠费了?
难道服务器到期了?
都不对阿,一起买的一堆服务器就单单这一台有问题,肯定是这台服务器挂了吧?
同事马上登录美团云管理后台看了下,当时我们也猜测估计是什么软件占用了系统大量内存或CPU,果然在管理后台发现这台机器 CPU 使用率巨高。
在完全远程登录不上服务器的情况下,此刻是无法做任何操作的,除了通过管理后台重启这一条路可走之外,所以我们选择重启了服务器。重启完各种软件后并没发现没有任何异常,这时候我们部门不仅人美技术也牛的花姐说了一句这么开玩笑的话,大家都哈哈一笑后就开开心的去吃中午饭了。
中午睡了一觉后
吃完中午饭,我睡了一会儿,梦里好像看到黑客在对我笑,醒来看到花姐说的那个 gpg-agentd 进程比较高后,就随手搜了一下这个进程,卧槽,流弊阿...
看到这个后,我丢在了群里后,大家震惊了,原来服务器真的在用来挖矿了。随后就和不仅开车 666 修 bug 也是老司机的 Jack 一起与挖矿脚本进行了斗争,我们首先在网络上找了一篇类似的文章:记一次Redis数据库漏洞被入侵现象,这哥们儿和我们遇到的是同一个被黑的套路,简单总结具体黑客操作如下:
利用了 redis 特性可以把缓存内容写入本地文件的漏洞,他就可以随便在服务器的
/root/.ssh/authorized_keys
文件中写入公钥,在用本地的私钥去登陆被写入公钥的服务器,就无需密码就可以登陆,登录之后就开始定期执行计划任务,下载脚本,更牛逼的是,他还可以利用
masscan 进行全网扫描redis 服务器 6379 的端口,寻找下一个个肉鸡,如果你的 redis
端口是默认6379,并且还没有密码保护,很容易就被攻破解,最后也就是说这个脚本会迅速在全网裂变式增加。
那么问题来了,我们的服务器 redis 是有密码的,到底是怎么在 authorized_keys 写入公钥的?
首先猜到的肯定就是密码泄漏了呗,看了眼我们密码,大小写加数字随机生成的,不容易破解阿,暴力破解?敲了个 lastb 命令看了一眼后,被扫了五十万次次次,我们信了这个暴力破解暴力破解暴力破解 。。。
黑客到底是怎么黑进来的?
找到了原因,但还没清楚黑客到底是怎么黑进来的?入侵后具体都做了什么事,下面就大概还原下黑客视角入侵全过程,首先看到的就是多了个定时任务。
然后,curl 命令请求下这个地址后,发现这个脚本(这个脚本简直 666 )全内容如下:
第一步,先在/root/.ssh/authorized_keys
文件中生成ssh公钥,黑客以后无需密码就可以登录了,简直给自己铺路搭桥666;
第二步,建立定时任务,作用是每20分钟去他们服务器再次下载这个脚本,然后执行,这一步简直就是让自己杀不死;
第三步,开机启动项也加入下载脚本命令,也就是你重启后会自动下载,fuck...
接下来,又改了 hosts、limits
限制,最重要的是这个脚本还记得去清除上述所有操作,不留下痕迹,佩服!!!
这个脚本执行完,后面再去执行其他三个脚本,把这个几个脚本都下载下来后,我们接着分析
这个脚本,只有一个作用,就是去下载真正的挖矿文件,也就是占用 CPU 居高的那个 gpg-agentd
,操作也是很流弊的,删除所有操作记录和文件,这个黑客也是处女座?不留下一丝痕迹。
正常人来干这挖矿这件事的话,应该到这一步就可以打完收工了,因为已经安装成功挖矿软件了。那你要这么想、这么做,你不适合当黑客。更流弊的操作来了!!!
第三个脚本,这里他就是贴心的给你安装、升级 gcc、libpcap 和 apt-get 等软件命令,他真的这么好么?其实他是为了顺手下载了一个名字叫 masscan 的软件,然后装了上去,同时也顺手做了处理现场操作,在下佩服!!
那这个 masscan 是干嘛的呢?
据说 masscan 是最快的互联网端口扫描器,最快可以在六分钟内扫遍互联网。
第四个脚本来了,这个脚本就是用masscan来扫redis 的 6379端口,对redis进行配置,利用了redis把缓存内容写入本地文件的漏洞,在/root/.ssh/authorized_keys
文件中写入公钥,登录之后就开始定期执行计划任务,下载脚本。
总结一下
看完整个脚本操作,最后也就是说黑客不仅仅是用了你电脑挖矿这一件事,还把你电脑作为攻击者,去寻找另外的服务器,所以这个脚本会迅速在全网裂变式让服务器中招,这波操作也更 666 了...
最近在学习区块链相关知识,感兴趣可以关注下我自己的号。
看完这波操作,我突然也想去试试挖矿了...