概述
近日,阿里云安全监测到Kinsing僵尸网络变种,除了沿用之前攻击手法,最新利用了Hadoop Yarn RPC未授权访问漏洞进行传播。
Hadoop作为一个分布式计算应用框架,种类功能繁多,而Hadoop Yarn作为其核心组件之一,负责将资源分配至各个集群中运行各种应用程序,并调度不同集群节点上的任务执行。Hadoop Yarn RPC未授权访问使得攻击者无需认证即可通过RPC通信执行恶意命令。Hadoop作为大数据计算基础组件往往集群化部署,一旦一台主机沦陷其整个集群都将受到威胁,其对外暴露端口服务会造成极大威胁。阿里云安全持续对该BOT进行监控,发现近期传播有所上升,提醒广大用户注意防护。
传播手段
Kinsing僵尸网络通过Hadoop Yarn RPC未授权访问和Hadoop Yarn Rest API未授权访问漏洞入侵和传播,利用f.sh脚本下载挖矿木马kinsing并执行挖矿。
Hadoop Yarn作为Hadoop核心组件之一,负责将资源分配至各个集群中运行各种应用程序,并调度不同集群节点上的任务执行。其官网(https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html)介绍: ResourceManager 和 NodeManager 构成了数据计算框架。ResourceManager 是在系统中的所有应用程序之间仲裁资源的最终权威。NodeManager 是每台机器的框架代理,负责容器、监控其资源使用情况(cpu、内存、磁盘、网络)并将其报告给ResourceManager/Scheduler。每个应用程序的 ApplicationMaster 实际上是一个特定于框架的库,其任务是协商来自 ResourceManager 的资源并与NodeManager 一起执行和监视任务。
如上介绍的ResourceManager功能,一旦远程命令执行代码被提交便会在各个节点中运行,入侵和感染路径如下图所示。
ATT&CK阶段分析
漏洞利用分析
Hadoop Yarn RPC未授权访问漏洞存在于Hadoop Yarn中负责资源管理和任务调度的ResourceManager,成因是该组件为用户提供的RPC服务默认情况下无需认证即可访问,因此把RPC服务暴露在公网上是非常危险的。
RPC服务利用这一问题会影响到部分有安全意识的用户。一部分用户基于过去几年中基于多种利用Hadoop的历史蠕虫已经意识到RESTful API的风险,通过配置开启了基于HTTP的认证,或通过防火墙/安全组封禁了RESTful API对应的8088端口,但由于他们没有意识到Hadoop同时提供RPC服务,并且访问控制机制开启方式跟REST API不一样,导致用户Hadoop集群中RPC服务所在的8032端口仍然可以未授权访问。
由于自行配置kerberos服务较为复杂,且如果集群已在运行需要重启集群使配置生效,因此许多用户会选择通过防火墙/安全组,使RPC端口不暴露在互联网的替代方案,具体漏洞解决方案可见安全建议。如图所示是Kinsing僵尸网络使用Hadoop Yarn RPC漏洞的Payload。
经测试可知,对于8032暴露在互联网且未开启kerberos的Hadoop Yarn ResourceManager,编写应用程序调用yarnClient.getApplications()即可查看所有应用信息,验证结果如下
Kinsing僵尸网络同时使用了早前披露且影响面较广的Hadoop Yarn Rest API未授权访问漏洞,Payload如下图所示。
详细分析
Kinsing僵尸网络通过Hadoop Yarn RPC未授权访问漏洞入侵后会下载Bash脚本进行安全终端卸载、关闭SELINUX、结束其他挖矿团伙进程、挖矿木马下载执行等操作,具体分析如下。
f.sh分析
Kinsing僵尸网络入侵主机后会通过IP、端口结束外联进程,例如常见443、23、3389等端口,争取更多的资源。
通过Docker命令发现主机内挖矿的进程和容器并结束,例如搜寻带有xmr、mine、monero关键字的Docker进程。
最终通过远程恶意下载源进行挖矿木马下载并执行。
kinsing分析
kinsing(7d468dd3257af321562dea36af00de62)是xmrig挖矿木马,入侵后存放在/var/tmp/文件目录下,启动执行后通过命令进行删除。
安全建议
1)阿里云安全发现该漏洞后第一时间向Apache、Hadoop做了邮件沟通,并得到了官方认可和相关处理建议,邮件中提及存储和计算节点在提交任务时最好通过Kerberos进行认证以保证其安全性。以下是邮件部分建议截图
依据官方建议开启Kerberos认证,配置后的Configuration如下
<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
<final>false</final>
<source>core-site.xml</source>
</property>
...
<property>
<name>hadoop.rpc.protection</name>
<value>authentication</value>
<final>false</final>
<source>core-default.xml</source>
</property>
开启Kerberos认证之后,Client端无法在非授权情况下访问,会返回SIMPLE authentication is not enabled异常,成功阻断非授权情况下的任意命令执行问题。
2)云防火墙利用大数据对互联网上最新出现RCE进行实时监控,从RCE披露到响应时间整体小于3小时,能够有效阻止客户资产被RCE漏洞攻击,其支持3-7层协议不仅满足对Web网站的HTTP协议的防护,同时支持4层大量非Web服务的防御。当前云防火墙默认支持对Hadoop Yarn RPC远程命令执行漏洞的防御。
3)云防火墙智能策略依据历史流量自学习,提供符合客户业务暴露面收敛的最佳实践,通过“一键下发”或“自主选择”可以实现资产的最大程度的互联网暴露收敛,避免端口对外不当暴露风险,同时有效阻止“重保模式”下网络空间测绘的扫描行为。
IOC
URL
http://114.214.169.174/kinsing
http://114.214.169.174/f.sh
IP
114.214.169.174
md5
7d468dd3257af321562dea36af00de62
参考
https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html
https://www.freebuf.com/articles/system/286885.html
https://hadoop.apache.org/cve_list.html
https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SecureMode.html#Configuration