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!

Comentarios

Publicar un comentario