黑客用我们服务器挖矿了

新的一天的开始

周五早上刚到公司,同事来问我系统为啥打不开了?我第一反应就是肯定 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 了...
最近在学习区块链相关知识,感兴趣可以关注下我自己的号。

redis中毒的更多相关文章

  1. linux查杀病毒的几个思路

    1.  tmp 目录下面 2. 定时任务查找一下 crontab -e 3. 病毒要下载 ps -ef|egrep "curl|wget"  查看是否有下载的命令 4. top 一 ...

  2. 记一次Linux服务器因redis漏洞的挖矿病毒入侵

    中毒原因,redis bind 0.0.0.0 而且没有密码,和安全意识太薄弱. 所以,redis一定要设密码,改端口,不要用root用户启动,如果业务没有需要,不要bind 0.0.0.0!!!!! ...

  3. 记一次redis攻击

    服务器挖矿病毒的排查过程 事情起因:朋友的一台阿里云主机,登录特别卡,找我看看 这一看就感觉出问题了,机器特别卡,top看了一眼,cpu几乎是100%运行 但是奇怪的是用top命令完全看不出来哪个进程 ...

  4. 如何更有效的消灭watchdogs挖矿病毒?华为云DCS Redis为您支招

    漏洞概述 近日,互联网出现watchdogs挖矿病毒,攻击者可以利用Redis未授权访问漏洞入侵服务器,通过内外网扫描感染更多机器.被感染的主机出现 crontab 任务异常.系统文件被删除.CPU ...

  5. 使用redis构建可靠分布式锁

    关于分布式锁的概念,具体实现方式,直接参阅下面两个帖子,这里就不多介绍了. 分布式锁的多种实现方式 分布式锁总结 对于分布式锁的几种实现方式的优劣,这里再列举下 1. 数据库实现方式 优点:易理解 缺 ...

  6. Ignite性能测试以及对redis的对比

    测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ...

  7. mac osx 安装redis扩展

    1 php -v查看php版本 2 brew search php|grep redis 搜索对应的redis   ps:如果没有brew 就根据http://brew.sh安装 3 brew ins ...

  8. Redis/HBase/Tair比较

    KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式    支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...

  9. Redis数据库

    Redis是k-v型数据库的典范,设计思想及数据结构实现都值得学习. 1.数据类型 value支持五种数据类型:1.字符串(strings)2.字符串列表(lists)3.字符串集合(sets)4.有 ...

随机推荐

  1. Delphi 设置时间格式

    // 设置WINDOWS系统的短日期的格式SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, 'yyyy-MM-dd'); Applicat ...

  2. 一些常用JS 函数总结

    搜索url参数 /** * 搜索url参数 * @param {String} name 参数键名 * @return {String} 对应值 */ function getQueryVariabl ...

  3. 腾讯云会话服务器node+nginx

    1.除了一个正常的服务器还需要一个会话服务器(websocket),利用node加socket.io来做 2.正常安装Nginx yum install nginx 3.Nginx的配置内容略微不同( ...

  4. PostgreSQL配置文件--WAL

    3 WAL WRITE AHEAD LOG 3.1 Settings 3.1.1 fsync 字符串 默认: fsync = on 开启后强制把数据同步更新到磁盘,可以保证数据库将在OS或者硬件崩溃的 ...

  5. FL2440 rt3070模块ap模式移植

    ---------------------------------------------------------------------------------------------------- ...

  6. ElasticSearch 数据类型

    1.范围数据类型 支持以下范围类型: integer_range : 一系列带符号的32位整数,最小值为,最大值为 float_range:一系列单精度32位IEEE 754浮点值. long_ran ...

  7. MyEclipse中快捷键

    ------------------------------------- MyEclipse 快捷键1(CTRL) ------------------------------------- Ctr ...

  8. Druid对比Vertica

    怎么比较Druid和Vertica? Vertica 类似与之前介绍的ParAccel/Redshift(Druid-vs-Redshift). 不是实时注入数据: 提供SQL的全部语法支持 另外一个 ...

  9. Spark集群数据处理速度慢(数据本地化问题)

    SparkStreaming拉取Kafka中数据,处理后入库.整个流程速度很慢,除去代码中可优化的部分,也在spark集群中找原因. 发现: 集群在处理数据时存在移动数据与移动计算的区别,也有些其他叫 ...

  10. Gitlab备份、迁移、恢复和升级

    Gitlab备份.迁移.恢复和升级 自建的Gitlab服务器常常会因为使用时间的增长,其空间容量等硬件需求都需要升级,或者迁移至更高配置的服务器上.备份.迁移.恢复.升级过程如下 1.gitlab备份 ...