文章详情
您当前的位置:首页 >新闻资讯 > 全部资讯 > 详情

Linux Redis自动化挖矿感染蠕虫分析及安全建议

文章作者:caokun 更新时间:2018-05-22 点击次数: 4352 所属分类: 威胁情报

一、 背景


首先针对利用的漏洞做个说明,Redis 默认情况下,会绑定在 0.0.0.0:6379,在没有利用防火墙进行屏蔽的情况下,将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下利用Redis的相关方法,可以成功将自己的公钥写入目标服务器的 ~/.ssh 文件夹的authotrized_keys 文件中,进而可以直接登录目标服务器;如果Redis服务是以root权限启动,可以利用该问题直接获得服务器root权限。

https://www.seebug.org/vuldb/ssvid-89715

以下为漏洞利用演示:



经过对捕获的事件进行分析,我们发现整个入侵流程大概是包含以下几个环节:


  1. 整个入侵利用以及后续的感染的实现,最主要的功能都是基于通过Redis问题写入crontab任务中下载执行的.cmd脚本来实现的,通过对它的分析,我们基本能够得到整个流程的所有细节,这是一个base脚本,我们通过解读来分析下它的相关功能。

    这部分代码只要是用作重复执行的判断,将.mxff0文件作为标记文件,如果存在该文件则代表机器上已执行脚本,直接退出,否则写.mxff0文件并进行下一步动作;

    设置预置动作,在脚本退出后删除相关文件和脚本自身;

    这部分主要是修改系统的配置,开头两行为关闭SELINUX;然后清空/var/spool/cron,进而判断系统DNS服务器是否存在8.8.8.8,没有则添加;接着清空系统tmp目录和删除相关文件;同时清空系统缓存,而最后修改/etc/security/limits.conf来更新系统的资源限制;

    清除相关登录日志、命令操作历史;

    这部分主要是下载挖矿程序并重命名为.gpg,增加执行权限,执行后删除,同时重新上传到https://transfer.sh/ 获取新的链接;

    而步主要是调用pnscan去扫描子网段1.0.0.0/16到224.255.0.0/16中开放6379端口并且操作系统为Linux的目标,然后利用redis-cli执行.dat中的命令,进行下个目标的感染;这里pnscan的-W参数值'2a 31 0d 0a 24 34 0d 0a 69 6e 66 6f 0d 0a'转换后内容'*1\r\n$4\r\nINFO\r\n',是向目标Redis服务发送请求获取Redis服务器的各种信息和统计数值,再通过-R参数值'6f 73 3a 4c 69 6e 75 78'(转换后内容为os:Linux)判断是否Linux系统。


    利用.mxff0文件做重复执行检验,避免脚本的重复执行



      病毒清理和系统恢复


    1. 关闭SELINUX,根据系统原环境和业务需要重新开启SELINUX

    2. 清空了/var/spool/cron,根据原先备份清空恢复

    3. 修改/etc/resolv.conf增加DNS服务8.8.8.8,如无影响可不处理,或者删除

    4. 修改了系统资源限制(/etc/security/limits.conf),可根据备份情况恢复

    5. 增加了对6379端口的Iptables规则,如果不影响业务,建议保留

    6. Kill了相关进程,检查是否包含业务所需进程,根据情况恢复

    7. 安装了相关包,具体列表见上文,可根据情况删除或者如无影响可保留

    8. 编译安装了pnscan,可删除/usr/local/bin/pnscan

    9. 清除了相关日志和tmp目录,对系统无影响,可忽略

    10. 启动了挖矿进程和pnscan扫描感染,进程:.gpg、pnscan,直接kill

    还包含了一些中间文件,虽然脚本包含相关删除操作,但建议还是全局查找确认:



  2. 导致入侵的主要原因是Redis未授权访问问题,所以如果要扼制入侵的入口,需要针对Redis服务进行加固,避免黑客通过该途径进行入侵植入挖矿蠕虫。

  3. 如无必要,修改bind项,不要将Redis绑定在0.0.0.0上,避免Redis服务开放在外网,可以通过iptables或者腾讯云用户可以通过安全组限制访问来源

  4. 在不影响业务的情况,不要以root启动Redis服务,同时建议修改默认的6379端口,大部分针对Redis未授权问题的入侵都是针对默认端口进行的

  5. 配置AUTH,增加密码校验,这样即使开放在公网上,如果非弱口令的情况,黑客也无法访问Redis服务进行相关操作

  6. 使用rename-command CONFIG "RENAME_CONFIG"重命名相关命令,这样黑客即使在连接上未授权问题的Redis服务,在不知道命令的情况下只能获取相关数据,而无法进一步利用

其他建议



  1. IOCs


    1. <p style="margin-top:0px;margin-bottom:0px;padding:0px;max-width:100%;clear:both;min-height:1em;color:#333333;font-family:-apple-system-font, BlinkMacSystemFont, " font-size:17px;letter-spacing:0.544px;text-align:justify;white-space:normal;background-color:#ffffff;box-sizing:border-box="" !important;"="">


    2. 转自:https://mp.weixin.qq.com/s?__biz=MzU3ODAyMjg4OQ==&mid=2247483874&idx=1&sn=06baad6c0a11a3ee2c3e5bba13fd69c2&chksm=fd7afd64ca0d7472c1b6663c66a91c7ee72db665feba2c417721a7e4655c66f3bb7df3de9394&mpshare=1&scene=1&srcid=0522eAeWAmU8err4lOH54Y52#rd