redis中毒
黑客用我们服务器挖矿了
新的一天的开始
周五早上刚到公司,同事来问我系统为啥打不开了?我第一反应就是肯定 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中毒的更多相关文章
- linux查杀病毒的几个思路
1. tmp 目录下面 2. 定时任务查找一下 crontab -e 3. 病毒要下载 ps -ef|egrep "curl|wget" 查看是否有下载的命令 4. top 一 ...
- 记一次Linux服务器因redis漏洞的挖矿病毒入侵
中毒原因,redis bind 0.0.0.0 而且没有密码,和安全意识太薄弱. 所以,redis一定要设密码,改端口,不要用root用户启动,如果业务没有需要,不要bind 0.0.0.0!!!!! ...
- 记一次redis攻击
服务器挖矿病毒的排查过程 事情起因:朋友的一台阿里云主机,登录特别卡,找我看看 这一看就感觉出问题了,机器特别卡,top看了一眼,cpu几乎是100%运行 但是奇怪的是用top命令完全看不出来哪个进程 ...
- 如何更有效的消灭watchdogs挖矿病毒?华为云DCS Redis为您支招
漏洞概述 近日,互联网出现watchdogs挖矿病毒,攻击者可以利用Redis未授权访问漏洞入侵服务器,通过内外网扫描感染更多机器.被感染的主机出现 crontab 任务异常.系统文件被删除.CPU ...
- 使用redis构建可靠分布式锁
关于分布式锁的概念,具体实现方式,直接参阅下面两个帖子,这里就不多介绍了. 分布式锁的多种实现方式 分布式锁总结 对于分布式锁的几种实现方式的优劣,这里再列举下 1. 数据库实现方式 优点:易理解 缺 ...
- Ignite性能测试以及对redis的对比
测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ...
- mac osx 安装redis扩展
1 php -v查看php版本 2 brew search php|grep redis 搜索对应的redis ps:如果没有brew 就根据http://brew.sh安装 3 brew ins ...
- Redis/HBase/Tair比较
KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式 支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...
- Redis数据库
Redis是k-v型数据库的典范,设计思想及数据结构实现都值得学习. 1.数据类型 value支持五种数据类型:1.字符串(strings)2.字符串列表(lists)3.字符串集合(sets)4.有 ...
随机推荐
- system表空间爆满解决方法
分类: Oracle 问题描述: 对数据库做检查,发现system表空间持续占满99%.使用如下语句查看: SQL> select b.tablespace_name "表空间&q ...
- shell用法 (cat << EOF)
下面的语句会创建不存在的secure.config,如果存在直接追加,然后把多行内容: [database] password = gerrit 写入文件secure.config ca ...
- ubuntu i3 xterm中文输入显示问题解决
i3config 配置 !启动fcitx输入法管理 exec fcitx -d Xresource配置 !设置输入法管理器为fcitx xterm*inputMethod: fcitx !设置英文字体 ...
- Java中Vector与ArrayList的差别具体解释
首先看这两类都实现List接口,而List接口一共同拥有三个实现类.各自是ArrayList.Vector和LinkedList.List用于存放多个元素,可以维护元素的次序,而且同意元素的反复. 3 ...
- libevent2源码分析之四:libevent2的消息泵
Dispatch类似于一个消息泵,在一个死循环中,不停地检查IO的状态(可以想像成不断从消息队列中读取消息),将状态的改变变成事件,再进行事件的响应. 主要代码如下: [event.c] int ev ...
- Eclipse 安装应用SVN地址
SVN插件下载地址及更新地址,你根据需要选择你需要的版本.现在最新是1.8.xLinks for 1.8.x Release:Eclipse update site URL: http://subcl ...
- (转)jquery图片左右滚动
<!DOCTYPE HTML> <html> <head> <title>基于jQuery的控制左右滚动效果_自动滚动版本</title> ...
- MATLAB 的通用命令
MATLAB 的通用命令 1.MATLAB 的标点符号及其特殊功能. 2.MATLAB 的键盘按键及其特殊功能. ↑或者Ctrl+p:调用上一次的命令 ↓或者Ctrl+n:调用下一行的命令 ←或者Ct ...
- 8、Linux设备驱动的并发控制
一.并发与竞争 并发是指多个 多个执行单元同时执行,而这对对共享的资源,比如硬件的资源.软件的全局变量.静态变量 的访问,很容易导致竞态, 1.1.中断屏蔽 在单核的 CPU 里,避 ...
- Velocity写法注意
1.$Proerty与$!{Property}的区别 比如: 简单的key-value数据格式情况下 a.<C_APP_NME>$Applicant_CAppNme</C_APP_N ...