欢迎来到腾讯云+社区获取更多腾讯海量技术实践的干货~自从被非授权获取Linux系统root权限的攻击方式公开以来Redis问题,由于其易用性,利用该问题入侵Linux服务进行挖矿和扫描的黑客层出不穷;而在众多利用该问题入侵服务器进行黑产的案例中,有一类利用该问题进行挖矿,并且会使用pnscan自动扫描感染其他机器;这种类型的攻击一直存在,只是最近呈现出数量增加的趋势,并且最近多次被抓获。我们将对其进行具体分析。Linux系统root权限攻击方式公开后,由于其易用性,利用该问题入侵Linux服务进行挖矿、扫描的黑客层出不穷;而在很多利用该问题入侵服务器进行黑产的案例中,有一类挖矿就是利用该问题进行挖矿,使用pnscan自动扫描感染其他机器;这类攻击一直存在,只是最近呈现出增多的趋势,而且最近被抓到过很多次。下面我们就对其进行具体分析。2.漏洞说明首先对被利用的漏洞进行说明。默认情况下,Redis将绑定到0.0.0.0:6379。如果不使用防火墙进行屏蔽,Redis服务会暴露在公网中。如果不启用身份验证,则任何用户如果可以访问目标服务器,则可能无法访问Redis并读取Redis数据。攻击者可以利用Redis的相关方法,在未授权访问Redis的情况下,成功将自己的公钥写入目标服务器~/.ssh文件夹下的authorized_keys文件中,进而可以直接登录目标服务器;如果Redis服务是Startwithrootprivileges,可以利用这个问题直接获取服务器的root权限。相关漏洞详情请参考:https://www.seebug.org/vuldb/...在ZoomEye和SHODAN上搜索后发现公网开放了很多Redis服务,而这些服务可能成为攻击目标。3.入侵分析通过分析捕获到的事件,我们发现整个入侵过程大概包括以下环节:扫描开放6379端口的Linux服务器(后续感染扫描网段为1.0.0.0/16到224.255.0.0/16)尝试通过redis-cli连接Redis,执行.dat文件中预设的utilization命令将Redis数据文件修改为/var/spool/cron/root,然后将数据插入Redis中下载并执行脚本写入crontab任务通过脚本实现上述相关行为,完成植入并启动挖矿程序,编译安装pnscan,继续扫描感染下一个目标。它是基于通过Redis问题在crontab任务中下载并执行的.cmd脚本实现的。通过它的分析,我们基本上可以得到整个过程的所有细节。这是一个基本脚本,我们通过解释来分析它。相关功能。这部分代码只要是用于重复执行的判断,就使用.mxff0文件作为mark文件。如果文件存在,说明脚本已经在本机执行完毕,直接退出。否则写入.mxff0文件,进行下一步;设置预设动作,脚本退出后删除相关文件和脚本本身;这部分主要是修改系统配置,前两行关闭SELINUX;然后清空/var/spool/cron,然后判断系统DNS服务器是否存在8.8.8.8,如果不存在则添加;然后清空系统tmp目录,删除相关文件;同时清除系统缓存,最后修改/etc/security/limits.conf更新系统资源限制;这里进一步增加iptables限制6379端口只允许本地访问,同时杀掉相关进程包括挖矿、redis客户端、爬虫等进程。这里的目的比较简单,避免被其他黑客再次入侵,同时清除其他黑客可能启动的进程;清除相关登录日志和命令操作历史;这一长串的内容主要是为了下载编译安装pnscan。从内容中可以看出对不同操作系统的判断,然后安装依赖的相关模块。然后我们从github上下载pnscan的源码进行编译安装;至于为什么编译安装的形式是猜测的,因为它兼容不同的系统,每次编译生成的pnscan的MD5都不一样,避免形成固定特征;这部分主要是下载挖矿程序并重命名为.gpg,增加执行权限,执行后删除,同时重新上传到https://transfer.sh/获取新链接;而这部分主要是生成一个新的.dat文件,包括将原来.cmd脚本中挖矿程序的下载地址替换为上传到https://transfer.sh/获取的新地址,以及相关语句由Redis使用;第一步调用pnscan扫描1.0.0.0/16到224.255.0.0/16子网段打开6379端口,操作系统为Linux的target,然后使用redis-cli执行.dat中的命令即可感染下一个目标;这里pnscan的-W参数值为'2a310d0a24340d0a696e666f0d0a'转换后的内容'*1rn$4rnINFOrn'是向目标Redis服务发送请求获取各种信息和统计值Redis服务器的,然后通过-R参数值'6f733a4c696e7578'(转换后的内容为os:Linux)判断是否为Linux系统。最后是收尾工作,清除相关日志和命令执行历史。同时,当脚本退出时,会触发陷阱开头脚本预设的动作,删除相关文件和脚本本身(rm-rfm.cmdtmp..r.dat$0).通过脚本的解读,我们基本了解了整个蠕虫的行为和入侵过程,也就是我们一开始描述的过程。另外,通过阅读脚本我们发现,虽然整个入侵过程并不是很复杂,但脚本其实有很多“工程”细节需要考虑,不得不惊叹入侵者的“周到”:使用.mxff0文件重复执行检查避免重复执行脚本为了增加成功率,一些环境的预处理:关闭SELINUX,添加8.8.8.8DNS,清空tmp目录,清空系统缓存,修改系统资源限制痕迹,并在脚本执行完成后使用trap预设动作删除相关文件和脚本,重复清除登录和命令执行历史等相关日志。对等防御使用iptables来防止Redis服务在公网开放,导致再次入侵。清除可能遗留的同伴入侵。杀掉相关进程系统兼容性判断操作系统,用于系统执行相关命令,安装依赖包,最大化pnscan编译安装成功率,关闭SELINUX,通过setenforce和修改的方式实现下载并执行Crontab编写脚本的任务/etc/sysconfig/selinux.confcurl、wget、lynx实现Pnscan扫描,增加操作系统判断,减少不必要的感染尝试,去除特征,存活Pnscan采用安装编译的方式,既提高了不同系统下的兼容性,又避免了形成固定的MD5使用https://transfer.sh传输特征,每次感染都会产生一个新的连接,避免了形成固定链接形成固定特征。下载到系统的相关文件使用随机生成的文件名。他的入侵感染成功率可以达到一定程度。5、安全建议病毒清理和系统恢复我们主要参考脚本的相关行为来恢复和删除相应的行为:关闭SELINUX,根据原系统环境和业务需要重新开启SELINUX,清除/var/spool/cron,按照原来的清空备份和恢复。修改/etc/resolv.conf添加DNS服务8.8.8.8。如果没有影响,可以忽略,或者删除修改系统资源限制(/etc/security/limits.conf),根据备份情况恢复。新增6379如果端口iptables规则不影响业务,建议保留查杀相关进程,查看是否包含业务需要的进程,根据情况恢复安装相关包。具体名单见上文。可以根据情况删除,如果没有影响,可以保留编译安装pnscan后,可以删除/usr/local/bin/pnscan,清除相关日志和tmp目录,对系统无影响。可以忽略挖矿进程的启动和pnscan扫描感染。进程:.gpg、pnscan、directkill还包括了一些中间文件。虽然脚本中包含相关删除操作,但建议全局搜索确认:.mxff0,.x112,.gpg,.dat,.cmd,.r.xx.xx.o/l,tmp.xxxxRedis服务加固主要入侵的原因是未授权访问Redis的问题。因此,如果要抑制入侵,就需要对Redis服务进行加固,防止黑客通过这种方式入侵并植入挖矿蠕虫。如非必要,修改绑定项,不要绑定Redis到0.0.0.0,避免外网开启Redis服务。可以使用iptables或者腾讯云用户通过安全组来限制访问源。在不影响业务的情况下,不要使用root启动Redis服务。同时建议修改默认端口6379,大部分针对Redis未授权问题的入侵都是默认端口配置AUTH,并加入密码验证,这样即使在公网开放,如果不是弱口令,黑客也无法访问Redis服务进行相关操作。使用rename-commandCONFIG"RENAME_CONFIG"对相关命令进行重命名,这样即使黑客连接到未经授权的Redis服务,也只能在不知道命令的情况下获取相关数据,而无法进一步利用其他建议。腾讯云公有云和私有云用户可以安装腾讯云主机安全产品——云镜像。被入侵植入木马后,第一时间得到提示,及时止损。建议激活云镜专业版,可以提前发现服务器的安全漏洞,及时修复,避免被VI利用。附录IOCs脚本https://transfer.sh/MIpIA/tmp...挖矿程序https://transfer.sh/MIpIA/tmp...矿池域名http://jb.chakpools.com/相关文件名.mxff0,.x112,.gpg,.dat,.cmd,.r.xx.xx.o/l,tmp.xxxx链接示例https://www.virustotal.com/#/...Pnscan项目地址https://github.com/ptrrkssn/p...漏洞描述https://www.seebug.org/vuldb/...漏洞利用demohttps://v.qq.com/x/page/u0661...云镜产品官网https://cloud.tencent.com/pro...Q&A如何避免开放重定向漏洞,安全重定向成功登录?相关阅读HadoopYarnRESTAPI未授权漏洞利用挖掘分析黑客是如何实现数据库勒索的?2018云+未来峰会圆桌对面:用网络安全建设国家,
