《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > vSphere开发指南2——vSphere Web Services API

vSphere开发指南2——vSphere Web Services API

2021-07-13
来源:嘶吼专业版
关键词: vSphere 开发指南

  0x00 前言

  在上篇文章《vSphere开发指南1——vSphere Automation API》介绍了通过vSphere Automation API实现vCenter Server同虚拟机交互的方法,但是vSphere Automation API有些操作不支持低版本的vCenter(<vSphere7.0U2),导致通用性不够,本文将要介绍更为通用的实现方法——vSphere Web Services API。

  0x01 简介

  本文将要介绍以下内容:

  · vSphere Web Services API开发细节

  · 已开源工具SharpSphere的分析

  · 开源代码vSphereWebServicesAPI_Manage.py

  0x02 vSphere Web Services API开发细节

  参考文档:

  https://code.vmware.com/apis/968

  https://code.vmware.com/docs/11721/vmware-vsphere-web-services-sdk-programming-guide

  Python实现代码的参考资料:

  https://github.com/vmware/pyvmomi-community-samples

  为了提高效率,这里我们基于Python SDK pyvmomi进行实现

  具体细节如下:

  (1)登录操作

  调用SmartConnect,传入用户名和明文口令。

  具体细节可在安装pyvmomi后,从文件/lib/site-packages/pyVim/connect.py中查看。

  (2)查看虚拟机配置

  通过创建ContainerView托管对象进行查询。

  相比于vSphere Automation API,获得的内容更加全面。

  例如,vsphere-automation-sdk-python不支持获得每个虚拟机对应的UUID,但可以通过pyvmomi获得。

  (3)向虚拟机发送文件

  使用方法InitiateFileTransferToGuest,需要传入以下六个参数:

  · vm,指定要操作的虚拟机

  · auth,登录虚拟机的凭据

  · guestFilePath,向虚拟机发送的文件保存路径

  · fileAttributes,向虚拟机发送的文件属性

  · fileSize,文件大小

  · overwrite,指定是否覆盖

  执行成功后,返回文件对应的uri。

  使用PUT方法访问uri,data字段为发送的文件内容,这里的文件内容需要使用二进制格式进行发送。

  具体实现代码如下:

微信图片_20210713142258.jpg

  (4)从虚拟机下载文件

  使用方法InitiateFileTransferFromGuest,必须传入以下三个参数:

  · vm,指定要操作的虚拟机

  · auth,登录虚拟机的凭据

  · guestFilePath,需要下载的虚拟机文件路径

  执行成功后,返回指定文件对应的uri。

  使用GET方法访问uri,在获取文件内容时需要区分文本格式和二进制格式,文本格式可以使用r.text读取,二进制格式可以使用r.content读取。

  具体实现代码如下:

微信图片_20210713142301.jpg

  0x03 已开源工具SharpSphere的分析

  https://github.com/JamesCooteUK/SharpSphere

  c#开发,与Cobalt Strike兼容。

  支持以下功能:

  · 作为C2服务器

  · 代码执行

  · 文件上传

  · 文件下载

  · 查看虚拟机配置

  · Dump内存

  其中,Dump内存的实现流程如下:

  · 获得虚拟机快照,如果没有就创建快照文件(。vmem)

  · 将快照下载到本地,通过创建文件uri的方式进行下载

  · 通过WinDbg和Mimikatz解析快照文件,导出lsass进程中的凭据

  目前暂不支持对Linux虚拟机的操作。

  在实际使用过程中,如果遇到以下错误:

微信图片_20210713142306.jpg

可以尝试添加以下代码解决:

微信图片_20210713142310.jpg

  0x04 开源代码

  完整的开源代码已上传至github,地址如下:

  https://github.com/3gstudent/Homework-of-Python/blob/master/vSphereWebServicesAPI_Manage.py

  代码适用版本:没有限制。

  支持以下功能:

  · 读取虚拟机的配置

  · 查看虚拟机文件

  · 删除虚拟机文件

  · 向虚拟机上传文件

  · 从虚拟机下载文件

  · 在虚拟机中执行命令

  具体命令如下:

  · ListVM

  · GetVMConfig

  · ListHost

  · ListVMProcess

  · CreateVMProcess

  · KillVMProcess

  · ListVMFolder

  · DeleteVMFile

  · DownloadFileFromVM

  · UploadFileToVM

  其中,对于虚拟机的操作,支持Windows和Linux系统。

  0x05 小结

  本文介绍了通过vSphere Web Services API实现vCenter Server同虚拟机交互的方法,开源实现代码vSphereWebServicesAPI_Manage.py,记录开发细节。

  对于vSphere Web Services API,通用性更强,但是由于基于SDK进行开发,导致编译出来的工具体积较大。




电子技术图片.png

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。