vCenter获取锁屏Hash之volatilit
发布时间: 2023-07-11

文章转载自先知社区:

作者:Bamboo

前言

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

思路

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

python3版本

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

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

python2版本:

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

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

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

需要pip3

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

展开全文

思路二、打包Vol进行后利用 1.选好合适的系统

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

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

2.下载Volatility3项目

GitHub地址:

3.安装pip依赖

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

Ubuntu系统:apt- getinstallpython3-dev

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

也可以这么安装

4.安装Volatility3

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

安装Volatility3

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

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

测试功能是否正常

5.安装pyinstaller

6.打包Volatility3

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

importos importsys

fromPyInstaller.building.api importPYZ, EXE,COLLECT fromPyInstaller.building.build_main importAnalysis fromPyInstaller.utils.hooks importcollect_submodules, collect_data_files, collect_dynamic_libs

block_cipher = None

binaries = []try: importcapstone

binaries = collect_dynamic_libs( 'capstone') exceptImportError: pass

# Volatility must be findable in sys.path in order for collect_submodules to work# This adds the current working directory, which should usually do the tricksys.path.append(os.path.dirname(os.path.abspath(SPEC)))

vol_analysis = Analysis([ 'vol.py', 'volatility3/framework/plugins/windows/hashdump.py', 'volatility3/framework/plugins/yarascan.py'], pathex = [],binaries = binaries,datas = collect_data_files( 'volatility3.framework') + \ collect_data_files( 'volatility3.framework.automagic', include_py_files = True) + \ collect_data_files( 'volatility3.framework.plugins', include_py_files = True) + \ collect_data_files( 'volatility3.framework.layers', include_py_files = True) + \ collect_data_files( 'volatility3.schemas') + \ collect_data_files( 'volatility3.plugins', include_py_files = True), hiddenimports = collect_submodules( 'volatility3.framework.automagic') + \ collect_submodules( 'volatility3.framework.plugins') + \ collect_submodules( 'volatility3.framework.symbols'), hookspath = [],runtime_hooks = [],excludes = [],win_no_prefer_redirects = False, win_private_assemblies = False, cipher = block_cipher,noarchive = False)

vol_pyz = PYZ(vol_analysis.pure, vol_analysis.zipped_data,cipher = block_cipher)vol_exe = EXE(vol_pyz,vol_analysis.s,[( 'u', None, 'OPTION')], exclude_binaries= True, name = 'vol', icon = os.path.join( 'doc', 'source', '_static', 'favicon.ico'), debug = False, bootloader_ignore_signals = False, strip = False, upx = True, runtime_tmpdir = None, console = True) vol_coll = COLLECT(vol_exe,vol_analysis.binaries,vol_analysis.zipfiles,vol_analysis.datas,strip= False, upx= True, upx_exclude=[],name = 'vol')

打包,默认是放在dist目录下。

需要把打包完成的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.

微信