
Herramienta de Windows para volcar archivos PE de malware desde la memoria al disco para su análisis.
Process Dump es una herramienta de línea de comandos de ingeniería inversa para Windows que permite volcar componentes de memoria de malware de vuelta al disco para su análisis. A menudo, los archivos de malware están empaquetados y ofuscados antes de ejecutarse para evitar los escáneres antivirus; sin embargo, cuando estos archivos se ejecutan, suelen desempaquetar o inyectar una versión limpia del código malicioso en la memoria. Una tarea común para los investigadores de malware al analizar muestras es volcar este código desempaquetado desde la memoria al disco para escanearlo con productos antivirus o analizarlo con herramientas de análisis estático como IDA.
Process Dump funciona en sistemas operativos Windows de 32 y 64 bits y puede volcar componentes de memoria de procesos específicos o de todos los procesos en ejecución. Permite crear y usar una base de datos de hashes limpios, de modo que se pueda omitir el volcado de archivos limpios como kernel32.dll. Sus principales características incluyen:
Mantengo una versión compilada oficial en mi sitio web aquí: https://split-code.com/processdump.html
Puede descargar la última versión compilada de Process Dump aquí:
Está diseñado para Visual Studio 2019 y funciona con la edición Community gratuita. Simplemente abra el archivo del proyecto con VS2019 y compile, ¡debería ser así de fácil!
Process Dump se puede utilizar para volcar todo el código desconocido de la memoria (bandera '-system'), volcar procesos específicos, o ejecutarse en un modo de monitoreo que vuelca todos los procesos justo antes de que terminen.
Antes del primer uso de esta herramienta, en una estación de trabajo limpia, la base de datos de hashes de exclusión limpia se puede generar mediante:
Ejemplos de uso:
Los argumentos de línea de comandos se pueden agrupar de la siguiente manera:
Opciones generales de volcado
Opciones de base de datos de hashes limpios
Opciones de salida
| Opción | Descripción |
|---|---|
| -v | Modo detallado donde se imprimirán más detalles para depuración. |
| -nh | No se imprime ningún encabezado en la salida. |
Opciones avanzadas
Claro, aquí hay una versión más simplificada de la información:
Al usar Process Dump en un sandbox automatizado o para investigación manual de antimalware, los siguientes pasos pueden ser útiles. Asegúrese de ejecutar todos los comandos como Administrador en un entorno limpio.
Construir la base de datos de hashes limpios: Ejecute pd64.exe -db gen o, para un proceso más rápido pero menos completo, use pd64.exe -db genquick. Dependiendo de su situación, es posible que desee tomar una instantánea de su máquina virtual después de crear esta base de datos de hashes limpios para no tener que repetirlo cada vez.
Iniciar el monitor de terminación de Process Dump: Mantenga pd64.exe -closemon ejecutándose en segundo plano. Volcará todos los procesos intermedios utilizados por el malware.
Ejecutar el archivo de malware: Monitoree la instalación del malware. pd64.exe volcará automáticamente cualquier proceso que intente cerrarse.
Volcar el malware en ejecución de la memoria: Cuando esté listo, use pd64.exe -system para volcar todos los procesos.
Los componentes volcados se encontrarán en el directorio de trabajo de pd64.exe. Para cambiar la ruta de salida, use la bandera -o.
Ejemplos de nombres de archivos volcados:
| Opción | Descripción |
|---|
| -system | Vuelca todos los módulos que no coinciden con la base de datos de hashes limpios de todos los procesos accesibles en el directorio de trabajo. |
| -pid <pid> | Vuelca todos los módulos que no coinciden con la base de datos de hashes limpios del PID especificado en el directorio de trabajo actual. Use un prefijo '0x' para especificar un PID hexadecimal. |
| -closemon | Se ejecuta en modo monitor. Cuando algún proceso esté terminando, Process Dump volcará primero ese proceso. |
| -p <nombre de proceso regex> | Vuelca todos los módulos que no coinciden con la base de datos de hashes limpios del nombre de proceso que coincida con el filtro, en el directorio de trabajo actual. |
| -a <dirección base del módulo> | Vuelca un módulo en la dirección base especificada desde el proceso. |
| -o <ruta> | Establece la carpeta raíz de salida predeterminada para los componentes volcados. |
| Opción | Descripción |
|---|
| -db gen | Procesa automáticamente algunas carpetas comunes, así como todos los procesos en ejecución, y agrega los hashes de los módulos encontrados a la base de datos de hashes limpios. Agregará todos los archivos de forma recursiva en: %WINDIR%, %HOMEPATH%, C:\Program Files\, C:\Program Files (x86)\, así como todos los módulos en todos los procesos en ejecución. Estos hashes limpios se agregarán al archivo clean.hashes en el directorio de la aplicación. Durante futuros comandos de volcado de procesos, estos módulos conocidos no se volcarán. Se recomienda ejecutar este comando una vez en un sistema limpio antes de usar la herramienta para no volcar demasiados módulos de la memoria. |
| -db genquick | Igual que el anterior, pero solo agrega los hashes de todos los módulos en todos los procesos a la base de datos de hashes limpios. Esta es una forma mucho más rápida de construir la base de datos de hashes limpios, pero será menos completa. |
| -db add <dir> | Agrega todos los archivos en el directorio especificado de forma recursiva a la base de datos de hashes limpios. |
| -db rem <dir> | Elimina todos los archivos en el directorio especificado de forma recursiva de la base de datos de hashes limpios. |
| -nr | Deshabilita la recursividad en los comandos de agregar o eliminar directorios de la base de datos de hashes. |
| -db clean | Limpia la base de datos de hashes limpios. |
| -db ignore | Ignora la base de datos de hashes limpios al volcar un proceso esta vez. Todos los módulos se volcarán incluso si se encuentra una coincidencia. |
| -cdb <ruta de archivo> | Ruta completa al archivo de base de datos de hashes limpios que se usará en esta ejecución si desea anular el valor predeterminado de clean.hashes. |
| -edb <ruta de archivo> | Ruta completa al archivo de base de datos de hashes de punto de entrada para esta ejecución. |
| -esdb <ruta de archivo> | Ruta completa al archivo de base de datos de hashes cortos de punto de entrada para esta ejecución. |
| Opción | Descripción |
|---|
| -g | Fuerza la generación de cabeceras PE desde cero, ignorando las cabeceras existentes. |
| -eprec | Fuerza la reconstrucción del punto de entrada, incluso si parece existir uno válido. |
| -ni | Deshabilita la reconstrucción de importaciones. |
| -nc | Deshabilita el volcado de regiones de código sueltas. |
| -nt | Deshabilita el multihilo. |
| -nep | Deshabilita el hashing del punto de entrada. |
| -t <número de hilos> | Establece el número de hilos a utilizar (predeterminado 16). |
| Comando | Descripción |
|---|
pd64.exe -db genquick | Construye rápidamente la base de datos de módulos limpios basada en los procesos en ejecución actuales. Process Dump en tareas posteriores solo volcará módulos no reconocidos. |
pd64.exe -system | Vuelca todos los módulos y fragmentos ocultos de todos los procesos ignorando los módulos limpios. |
pd64.exe -closemon | Ejecuta el modo monitor de terminación. Esto volcará todos los procesos cuando intenten terminar. |
pd64.exe -pid 0x18A | Vuelca módulos y fragmentos ocultos de un ID de proceso específico. |
pd64.exe -p .\*chrome.\* | Vuelca módulos y fragmentos ocultos por nombre de proceso. |
pd64.exe -db gen | Construye una base de datos de hashes limpios de módulos conocidos. Esto se utiliza para evitar volcar módulos buenos conocidos en tareas posteriores. |
pd64.exe -pid 0x1a3 -a 0xffb4000 | Vuelca código desde una dirección específica en el PID. Esto generará dos archivos para análisis, con cabeceras PE reconstruidas de 32 y 64 bits: notepad_exe_x64_hidden_FFB40000.exe y notepad_exe_x86_hidden_FFB40000.exe. |