
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
| 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. |
Opciones de base de datos de hashes limpios
| 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. |
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
| 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). |