vCenter获取锁屏Hash之volatility

声明

出品|先知社区(ID:LeeH)

以下内容,来自先知社区的Bamboo作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。

前言

VMware vCenter ESXI中经常会装一些非常重要的业务虚拟服务器,Linux一般都是登录状态的,但是Windows机器锁屏较多,想要获取服务器权限,一般需要把vmem文件下载下来,用内存分析工具进行hashdump等,以突破其锁屏获取服务器权限。笔者在对volatility工具进行了解后,对分析vmem文件的手法进行了一定优化,可以提升解决锁屏问题的效率。

思路

在了解了volatility内存取证工具后,想到了几种办法:

python3版本

  • VMware vCenter ESXI中自带了python3.6.8,可以尝试直接在esxi中部署volatility3项目;

  • 利用pyinstaller将volatility3进行打包,生成可执行文件拖到esxi中使用。根据打包环境不同,又有两种思路:

  • 在esxi上部署volatility3项目后,打包出来的会更适用;

  • 在其他Linux中部署volatility3项目(环境尽可能接近esxi),打包出来用。

python2版本:

最一开始对项目了解的不够深入,没注意到项目团队已经把volatility2制作成了可执行文件,导致前期一直在死磕打包volatility3,后来在小伙伴的提醒下,发现3gstudent师傅研究了利用volatility2进行Windows锁屏问题解决,在此先膜拜下师傅。

不过官方团队并没有打包volatility3的可执行程序,原因写的是打包出来的packages会被识别为恶意软件,解决了这个问题就会出可执行程序了。

过程

思路一、直接在esxi中部署volatility3项目

Linux环境下的esxi,这个思考很快就被证明不太可行了,volatility3需要多个系统库和pip库:

yum install zlib &&\yum install zlib-devel &&\yum install bzip2-devel &&\yum install ncurses-devel &&\yum install sqlite-devel &&\yum install readline-devel &&\yum install gcc &&\yum install libffi &&\yum install libffi-devel &&\yum install gcc-c++\yum install openssl-devel\yum install tk-devel

需要pip3

yum install xz-develyum install epel-releaseyum install python35-devel

需要n多个系统依赖以及n多个pip依赖

pip3 install pefile==2018.8.8  -i http://pypi.douban.com/simple --trusted-host pypi.douban.compip3 install backports.lzma -i http://pypi.douban.com/simple --trusted-host pypi.douban.compip3 install pycryptodomepip install importlib-metadata==0.6

思路二、打包Vol进行后利用

1.选好合适的系统

CentOS 7.9跟exsi的GLIBC库版本一致,自带python3.6,比较合适。

安装编译后续可能会用到的依赖::

yum install zlib &&\yum install zlib-devel &&\yum install bzip2-devel &&\yum install ncurses-devel &&\yum install sqlite-devel &&\yum install readline-devel &&\yum install gcc &&\yum install libffi &&\yum install libffi-devel &&\yum install gcc-c++ &&\yum install openssl-devel &&\yum install tk-devel

2.下载Volatility3项目

GitHub地址:https://github.com/volatilityfoundation/volatility3

3.安装pip依赖

正常安装到yara的时候应该会报错,需要安装python-dev库才行

CentOS系统:# 安装EPEL源yum install epel-release -y# 默认安装python3.6开发包yum install python3-devel -yUbuntu系统:apt-get install python3-dev

装好python-dev之后,安装依赖即可。

pip3 install -r requirements.txt

也可以这么安装

pip3 install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

4.安装Volatility3

需要先更新下setuptools不然等下安装编译 Python的相关包安装会报错:

pip3 install --upgrade setuptools

安装Volatility3

python3 setup.py install

完成安装后,测试是否能正常使用

python3 vol.py

查看运行是否有异常提示:

python3 vol.py -vv

测试功能是否正常

python3 vol.py -f xxx.vmem windows.infopython3 vol.py -f xxx.vmem windows.hashdump

5.安装pyinstaller

pip3 install pyinstaller==3.6

6.打包Volatility3

修改spec,默认只有vol.py,增加了hashdump和yarascan;还增加了vol_coll使打包出来的是一个文件夹。打包,默认是放在dist目录下。

pyinstaller vol-new.spec

需要把打包完成的vol文件夹中base_library.zip解压一下,解压至当前目录即可。

7.使用

从CentOS7中把vol压缩下,搞到目标esxi服务器上解压,给好权限应该就能用了。

PS:Volatility3做Windows内存文件分析时,需要联网到微软网站那边下一个字符库,所以需要目标esxi能出网。

8.踩坑过程

8.1. GLIBC版本问题

使用Ubuntu16及kali之类的系统,打包出来的vol在exsi中无法运行

查看esxi的GLIBC版本,发现为2.17:

尝试将高版本的so文件拷贝到esxi系统中,尝试将libc-2.27.so修改为libc.2.17.so,系统立马就GG了,还好mobax的sftp还能用:

需要找GLIBC版本一致,或更低版本的系统,打包vol才可以运行:

centos6.6服务器的glibc默认版本为2.12

centos7系统的默认glibc版本已经升级2.17

其中vultr中默认的CentOS7版本就可以:

strings /usr/lib64/libc.so.6 | grep GLIBC

以及centos7.9版本也是可以的

8.2. No module named 'encodings'

在esxi中运行打包好的vol会提示No module named 'encodings'

解决办法,把base_library.zip解压出来即可,注意需要解压到当前目录,不能解压到base_library文件夹里。

8.3. spec打包问题

左边是打包为单一文件,右边是打包为一个文件夹

8.4. 正常打包后功能异常

解决方法:

其实就是作者写vol.spec的时候,有些pip库没有打包上,增加上hashdump和yarascan就行了。

vol_analysis = Analysis(['vol.py',                        'volatility3/framework/plugins/windows/hashdump.py',                        'volatility3/framework/plugins/yarascan.py'],

9. 联网问题

在esxi中直接运行打包好的Volatility,在联网的情况下,已经可以完成hashdump。但是在无法联网的时候,无法下载到symbols文件,也就是pdb(program

database)文件,且该文件无法直接通过浏览器下载到。通过对项目的深入了解,发现作者有提供了下载pdb文件的解决办法。

作者并没有在readme中写明下载pdb文件的方法,在断网状态下调试脚本运行过程的时候,才发现作者留的小惊喜,上述调试信息中,关键点是:

Symbol file could not be downloaded from remote serverRequired symbol library path not found: ntkrnlmp.pdb\118018959D8D7CA5AAB45B75AED5A976-1The symbols can be downloaded later using pdbconv.py -p ntkrnlmp.pdb -g 118018959D8D7CA5AAB45B75AED5A9761

也就是说用pdbconv.py可以下载到所需的pdb文件:

将下载好的symbols文件放入以下目录,重新运行vol.py进行hashdump即可:

/tmp/vol/volatility3/framework/symbols/windows/ntkrnlmp.pdb/

坑点

这里遇到了个小问题就是pycharm可以正常运行该脚本进行下载,但是本地命令行运行脚本会提示No module named 'volatility3',网上搜了下说是环境变量的问题,加上打印环境变量的语句,pycharm和命令行分别运行了下,确实是pycharm多了些路径:

print("当前工作目录:",os.getcwd())print("python搜索模块的路径集合:",sys.path)

定位到问题后,根据网上的解决办法,在pdbconv.py中加上缺少的路径即可正常使用该脚本:

sys.path.append("D:\\PythonDev\\project\\volatility3-develop")sys.path.append("D:\\Program\\PyCharm\\PyCharm 2022.2.3\\plugins\\python\\helpers\\pycharm_display")sys.path.append("D:\\Program\\PyCharm\\PyCharm 2022.2.3\\plugins\\python\\helpers\\pycharm_matplotlib_backend")

总结

目前不出网状态解一个windows的hash大概需要3-7分钟,如果优化这个工具确实有很高实用价值,后续会继续进行优化,争取能3分钟解决战斗。发现问题,解决问题,总结经验,分享方法,共同进步。

欢迎关注长白山攻防实验室微信公众号

定期更新优质文章分享

<think>好的,我现在需要解决用户提出的vCenter无法获取部署状态的问题。首先,我需要理解用户的问题背景。用户可能在安装或部署vCenter Server时遇到了问题,无法获取部署状态,导致安装失败或无法继续进行。接下来,我需要根据已有的知识和参考资料,找出可能的原因和解决方案。 首先,参考用户提供的引用内容[^1],里面提到vCenter Server Appliance是基于Linux的虚拟机,可能存在单点故障问题。这可能意味着在部署过程中,某些组件未能正确启动或配置,导致状态无法获取。另外,引用中还提到vCenter由多个组件组成,部署前需要了解这些组件,所以问题可能出在某个组件的配置或依赖服务上。 接下来,我需要列出常见的导致vCenter无法获取部署状态的原因。可能包括网络问题(如DNS解析失败、防火墙阻止端口)、服务依赖问题(如某些关键服务未启动)、配置文件错误(如错误的IP或主机名)、资源不足(如内存、CPU不足)、证书问题等。 然后,针对这些可能的原因,逐一给出排查步骤。例如,检查网络连接是否正常,确认DNS解析是否正确,检查防火墙设置是否允许必要端口通信,查看服务状态是否正常,检查部署日志以发现具体错误信息等。此外,还需要指导用户如何访问日志文件,例如/var/log/vmware/vcf/deployer下的日志,以及如何重启部署服务或重新安装部署工具。 同时,需要提醒用户注意资源分配是否足够,特别是内存和存储空间是否满足vCenter的最低要求。如果部署过程中出现超时,可能需要调整超时设置或重新尝试部署。如果问题依然存在,建议备份日志并联系VMware支持。 最后,生成相关问题,帮助用户进一步解决可能遇到的其他问题,比如如何检查vCenter服务状态、如何重新初始化部署环境等。 在整理这些步骤时,需要确保语言简洁明了,结构清晰,用户能够按照步骤逐步排查问题。同时,要避免使用过于技术化的术语,或者在必要时进行解释,确保用户能够理解每个步骤的目的和操作方法。</think>### vCenter无法获取部署状态的解决方案 #### 1. 检查网络与DNS配置 - **现象**:部署过程中因网络中断或DNS解析失败导致状态获取失败。 - **操作步骤**: 1. 确认部署节点与ESXi主机之间的网络连通性,使用`ping`或`traceroute`测试。 2. 检查DNS正向/反向解析是否一致,执行以下命令验证: ```bash nslookup <vCenter_IP> nslookup <vCenter_FQDN> ``` 3. 确保防火墙未阻止必要端口(如443、5480、9443)[^1]。 #### 2. 验证服务依赖项 - **关键服务**:部署依赖服务如`vmware-vpxd`、`vsphere-ui`等。 - **操作步骤**: 1. 通过SSH登录vCenter Server Appliance。 2. 使用命令检查服务状态: ```bash service-control --status --all ``` 3. 重启异常服务: ```bash service-control --restart <服务名> ``` #### 3. 分析部署日志 - **日志路径**: - 部署工具日志:`/var/log/vmware/vcf/deployer/*.log` - 安装程序日志:`/var/log/vmware/installer/vcsa_install.log` - **操作步骤**: 1. 使用`tail -f`实时跟踪日志: ```bash tail -f /var/log/vmware/vcf/deployer/deploy.log ``` 2. 搜索关键词`ERROR`或`FAILED`定位具体错误。 #### 4. 重新初始化部署环境 - **适用场景**:部署中断后残留配置导致冲突。 - **操作步骤**: 1. 停止部署服务: ```bash systemctl stop vcf-deployer ``` 2. 清理残留文件: ```bash rm -rf /var/log/vmware/vcf/deployer/* ``` 3. 重新运行部署向导并选择**强制清理**选项。 #### 5. 验证资源分配 - **最低要求**:vCenter Server需至少8GB内存、20GB存储(小型环境)[^1]。 - **操作步骤**: 1. 在ESXi主机检查虚拟机资源分配: ```bash esxcli vm process list | grep "vCenter" ``` 2. 通过vSphere Client调整CPU/内存配置。 #### 6. 证书问题排查 - **现象**:证书过期或自签名证书不被信任。 - **操作步骤**: 1. 检查证书有效期: ```bash openssl x509 -in /etc/vmware/vmware-vpxd/vpxd.crt -noout -dates ``` 2. 替换证书后重启服务: ```bash /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store TRUSTED_ROOTS ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值