【技术原创】渗透技巧——从VMware ESXI横向移动到Windows虚拟机
2022-9-21 12:1:42 Author: 嘶吼专业版(查看原文) 阅读量:24 收藏

假定以下测试环境:我们获得了内网VMware ESXI的控制权限,发现VMware ESXI上安装了Windows域控服务器。

本文仅在技术研究的角度介绍从VMware ESXI横向移动到该Windows域控服务器的方法,结合利用思路,给出防御检测的方法。

本文将要介绍以下内容:

· 利用思路

· 常用命令

· 实现方法

通过VMware ESXI管理虚拟机,创建快照文件,从快照文件中提取出有价值的信息。

1.查看虚拟机版本

vmware -vl

2.用户信息相关

(1)查看所有用户

esxcli system account list

(2)查看管理员用户

esxcli system permission list

(3)添加用户

esxcli system account add -i test1 -p [email protected] -c [email protected]

(4)将普通用户添加成管理员用户

esxcli system permission set -i test1 -r Admin

(5)启用内置管理员账户

默认配置下,dcui是管理员用户,但是不允许远程登录,可以通过修改配置文件的方式设置dcui用户的口令并启用远程登录。

设置dcui用户口令为Ballot5Twist7upset,依次输入:

passwd dcui

Ballot5Twist7upset

Ballot5Twist7upset

一键设置dcui用户口令:sed -i 's/dcui:\*:13358:0:99999:7:::/dcui:$6$NaeURj2m.ZplDfbq$LdmyMwxQ7FKh3DS5V\/zhRQvRvfWzQMSS3wftFwaUsD9IZuxdns.0X.SPx.59bT.kmJOJ\/y3zenTmEcoxDVQsS\/:19160:0:99999:7:::/g' /etc/shadow

启用dcui用户远程登录:

修改文件/etc/passwd,将dcui:x:100:100:DCUI User:/:/sbin/nologin修改为dcui:x:100:100:DCUI User:/:/bin/sh

一键启用dcui用户远程登录:sed -i 's/dcui:x:100:100:DCUI User:\/:\/sbin\/nologin/dcui:x:100:100:DCUI User:\/:\/bin\/sh/g' /etc/passwd

开启ssh:

vim-cmd hostsvc/enable_ssh

3.虚拟机相关

(1)查看所有虚拟机

(2)查看指定虚拟机的状态

(3)开启指定虚拟机,可用于开机和从挂起状态恢复

(4)挂起指定虚拟机

(5)关闭指定虚拟机

(6)查看指定虚拟机的操作日志

4.虚拟机快照相关

(1)查看指定虚拟机的快照信息

(2)新建快照

示例1:

< includeMemory >设置为true,表示包括内存,否则无法生成.vmem文件。

示例2:

这个命令等价于vim-cmd vmsvc/snapshot.create 1 test "" false false,不包括内存,不会生成.vmem文件。

(3)删除快照

1.获得虚拟机的vmid

测试环境下,从输出中获得虚拟机Windows域控服务器的vmid为1

2.查看虚拟机的快照信息

测试环境下没有虚拟机快照。

3.为虚拟机创建快照

测试环境下,从输出中获得虚拟机Windows域控服务器的snapshotIndex为1

4.使用volatility分析快照文件

volatility是一款开源的取证分析软件。

Python2版本的地址:https://github.com/volatilityfoundation/volatility

Python3版本的地址:https://github.com/volatilityfoundation/volatility3

volatility和volatility3的命令语法不同,功能基本相同,最新版本为volatility3,但这里选择volatility,理由如下:

· volatility有独立的可执行程序,volatility3需要自己编译

· volatility3有mimikatz插件,可以从lsass进程提取数据,volatility3不支持这个插件

(1)定位镜像文件

搜索后缀名为vmem的文件,命令如下:

测试环境下,获得镜像文件位置为./vmfs/volumes/62a735a8-ad916179-40dd-000c296a0829/DC1/DC1-Snapshot1.vmem

(2)上传volatility_2.6_lin64_standalone

volatility_2.6_lin64_standalone的下载地址:

http://downloads.volatilityfoundation.org/releases/2.6/volatility_2.6_lin64_standalone.zip

分析快照文件需要.vmem文件作为参数,而.vmem文件通常很大,为了提高效率,这里选择将volatility上传至VMware ESXI,在VMware ESXI上分析快照文件。

(3)查看镜像信息

通过镜像信息获得系统版本,命令如下:

(4)从注册表获得本地用户hash

命令如下:

测试环境下,输出结果:

(5)从注册表读取LSA Secrets

命令如下:

测试环境下,输出结果:

(6)导出所有域用户hash

需要下载ntds.dit、SYSTEM文件和SECURITY文件。

定位ntds.dit文件,命令如下:

输出:

提取ntds.dit文件,命令如下:

依次再提取出SYSTEM文件和SECURITY文件,导出所有域用户hash可以使用secretsdump,命令为:secretsdump -system SYSTEM -security SECURITY -ntds ntds.dit local

(7)加载mimikatz插件,读取lsass进程中保存的凭据

volatility_2.6_lin64_standalone不支持加载mimikatz插件,这里可以选择将整个快照文件(DC1-Snapshot1.vmem)下载至本地,搭建volatility环境,加载mimikatz插件。

kali安装volatility的方法:

1. 安装

2. 测试volatility

3. 添加mimikatz插件

下载地址:https://github.com/volatilityfoundation/community/blob/master/FrancescoPicasso/mimikatz.py

将mimikatz.py保存至

4.安装mimikatz插件的依赖

这里不能直接使用pip2 install construct,construct版本过高会导致在加载mimikatz.py时报错AttributeError: 'module' object has no attribute 'ULInt32'

5.测试插件

输出:

安装成功。

加载mimikatz插件的命令如下:

输出结果:

补充:

读取lsass进程中保存的凭据还可以使用以下方法:

1. 将镜像文件转成Crash Dump文件

详细方法可参考之前的文章《渗透技巧——使用Mimilib从dump文件中导出口令》

5.删除快照

1. 防御

内网VMware ESXI及时更新补丁

关闭内网VMware ESXI的ssh登录功能

2. 检测

查看内网VMware ESXI登录日志

查看虚拟机快照镜像标志snapshotIndex是否异常,对于新的虚拟机,新建快照标志snapshotIndex从1开始累加,删除快照镜像不会影响snapshotIndex,例如删除snapshotIndex为1的快照,再次创建快照时snapshotIndex为2`

本文在技术研究的角度介绍了从VMware ESXI横向移动到该Windows域控服务器的方法,使用volatility分析镜像文件,提取关键信息,结合利用思路,给出防御检测的方法。


文章来源: http://mp.weixin.qq.com/s?__biz=MzI0MDY1MDU4MQ==&mid=2247550739&idx=1&sn=15440c91b391911a2a5771f3c05b6e80&chksm=e915d729de625e3f789159d490cf9693f5decd7e3f0fb785f864b8f82913463042c918f5c462#rd
如有侵权请联系:admin#unsafe.sh