Obteniendo los hashes de las contraseñas de máquinas virtuales suspendidas o snapshots mediante Volatility
En este post vamos a ver una interesante técnica que hace unos días nos mostraba Mark Baggett en el blog de pentesting de SANS mediante la cual podemos obtener los hashes de las contraseñas de los usuarios de una máquina virtual VMWare suspendida o de su snapshot.
Lo primero que vamos a hacer es obtener un volcado de memoria (memory dump) a partir de los ficheros de memoria .vmem de la máquina virtual y de los ficheros .vmss (estado suspendido) o .vmsn (snapshot). Para ello ejecutaremos la herramienta vmss2core que VMWare distribuye por defecto y que podréis encontrar normalmente en "C:\Archivos de programa\VMware\VMware Workstation" o, si tenéis Mac OS X, en "/Library/Application Support/VMware Fusion". El comando es muy sencillo:
$ vmss2core -W Windows7.vmss Windows7.vmem
Durante el proceso podréis observar que el SO de la máquina virtual es un Windows 7 SP1:
vmss2core: Log: Win: ntBuildLab=7601.17803.x86fre.win7sp1_gdr.120330-1504
Al final obtendremos como resultado el fichero memory.dmp, normalmente de un tamaño considerable.
Ahora vamos a analizar el volcado con Volatitity. Lo primero es verificar el tipo de imagen con la que estamos trabajando mediante imageinfo:
$ python vol.py -f memory.dmp imageinfo
Volatile Systems Volatility Framework 2.0
Determining profile based on KDBG search...
Suggested Profile : Win7SP1x86, Win7SP0x86
AS Layer1 : JKIA32PagedMemory (Kernel AS)
AS Layer2 : FileAddressSpace (/Users/vmotos/Desktop/memory.dmp)
PAE type : No PAE
DTB : 0x185000
KDBG : 0x8196cbe8
KPCR : 0xffdf000L
KUSER_SHARED_DATA : 0xffdf000L
Image date and time : 2012-08-13 23:30:28
Image local date and time : 2010-08-13 23:30:28
Number of Processors : 2
Image Type :
Una vez confirmado el profile, a continuación, mediante hivelist localizaremos las direcciones de memoria de los grupos de claves del registro o registry hives:
$ python vol.py --profile=Win7SP1x86 -f memory.dmp hivelist
Apuntamos los offsets de \REGISTERY\MACHINE\SYSTEM y \SystemRoot\System32\Config\SAM, y los pasamos al plugin hashdump de Volatility:
$ python vol.py --profile=Win7SP1x86 -f memory.dmp --sys-offset=0x87ela248 --sam-offset=0x8e77e008 hashdump
¡Y ya está! Ya tenemos los hashes de la máquina virtual VMware, listos para ser crackeados o utilizados en ataques pass-the-hash. También podremos utilizar el plugin lssadump de Volatility (offsets de SYSTEM y SECURITY) para obtener las credenciales usadas por DPAPI, la clave pública RDP o la contraseña por defecto en sistemas con autologin.
pd. Si tu máquina virtual funciona bajo Microsoft Hyper-V, probablemente puedas hacer lo mismo con vm2dmp + Volatility. ¡No dudes en comentar si ya lo has probado!
Lo primero que vamos a hacer es obtener un volcado de memoria (memory dump) a partir de los ficheros de memoria .vmem de la máquina virtual y de los ficheros .vmss (estado suspendido) o .vmsn (snapshot). Para ello ejecutaremos la herramienta vmss2core que VMWare distribuye por defecto y que podréis encontrar normalmente en "C:\Archivos de programa\VMware\VMware Workstation" o, si tenéis Mac OS X, en "/Library/Application Support/VMware Fusion". El comando es muy sencillo:
$ vmss2core -W Windows7.vmss Windows7.vmem
Durante el proceso podréis observar que el SO de la máquina virtual es un Windows 7 SP1:
vmss2core: Log: Win: ntBuildLab=7601.17803.x86fre.win7sp1_gdr.120330-1504
Al final obtendremos como resultado el fichero memory.dmp, normalmente de un tamaño considerable.
Ahora vamos a analizar el volcado con Volatitity. Lo primero es verificar el tipo de imagen con la que estamos trabajando mediante imageinfo:
$ python vol.py -f memory.dmp imageinfo
Volatile Systems Volatility Framework 2.0
Determining profile based on KDBG search...
Suggested Profile : Win7SP1x86, Win7SP0x86
AS Layer1 : JKIA32PagedMemory (Kernel AS)
AS Layer2 : FileAddressSpace (/Users/vmotos/Desktop/memory.dmp)
PAE type : No PAE
DTB : 0x185000
KDBG : 0x8196cbe8
KPCR : 0xffdf000L
KUSER_SHARED_DATA : 0xffdf000L
Image date and time : 2012-08-13 23:30:28
Image local date and time : 2010-08-13 23:30:28
Number of Processors : 2
Image Type :
Una vez confirmado el profile, a continuación, mediante hivelist localizaremos las direcciones de memoria de los grupos de claves del registro o registry hives:
$ python vol.py --profile=Win7SP1x86 -f memory.dmp hivelist
Apuntamos los offsets de \REGISTERY\MACHINE\SYSTEM y \SystemRoot\System32\Config\SAM, y los pasamos al plugin hashdump de Volatility:
$ python vol.py --profile=Win7SP1x86 -f memory.dmp --sys-offset=0x87ela248 --sam-offset=0x8e77e008 hashdump
¡Y ya está! Ya tenemos los hashes de la máquina virtual VMware, listos para ser crackeados o utilizados en ataques pass-the-hash. También podremos utilizar el plugin lssadump de Volatility (offsets de SYSTEM y SECURITY) para obtener las credenciales usadas por DPAPI, la clave pública RDP o la contraseña por defecto en sistemas con autologin.
pd. Si tu máquina virtual funciona bajo Microsoft Hyper-V, probablemente puedas hacer lo mismo con vm2dmp + Volatility. ¡No dudes en comentar si ya lo has probado!
hola amigo el vmss2core se cierra cual pude ser el problema
ResponderEliminar