
La herramienta de adquisición de memoria multiplataforma.

WinPmem ha sido el controlador de adquisición de memoria de código abierto predeterminado para Windows durante mucho tiempo. Antes formaba parte del proyecto Rekall, pero recientemente se ha separado en su propio repositorio.
Esta es la versión de Windows. La versión de Linux, Linpmem, está en: https://github.com/Velocidex/Linpmem
Este código fue desarrollado originalmente dentro de Google, pero fue publicado bajo la Licencia Apache.
WinPmem es una herramienta de adquisición de memoria física con las siguientes características:
Código abierto
Soporte para Win7 - Win 10, x86 + x64. WDK7600 podría usarse para incluir soporte para WinXP. Por defecto, los ejecutables de WinPmem proporcionados se compilarán con WDK10, admitiendo Win7 - Win10, y con un código más moderno.
Tres métodos de lectura independientes, con dos métodos para crear un volcado completo de memoria. Un método debería funcionar siempre incluso ante rootkits en modo kernel.
Soporte de imágenes de volcado de memoria en bruto (RAW).
Se utiliza una interfaz de dispositivo de lectura en lugar de escribir la imagen desde el kernel como otros programas de imagen. Esto permite tener un software de imagen complejo en espacio de usuario (por ejemplo, copia a través de la red, hash, etc.), así como ejecutar análisis en el sistema en vivo (por ejemplo, se puede ejecutar directamente en el dispositivo).
Los archivos en este directorio (incluyendo las fuentes de WinPmem y los binarios firmados) están disponibles bajo la siguiente licencia: Apache License, Version 2.0
Hay dos ejecutables de WinPmem: winpmem_mini_x86.exe y winpmem_mini_x64.exe. Ambas versiones contienen ambos controladores (versiones de 32 y 64 bits).
El 'mini' en el nombre del binario se refiere a que este software de imagen es simple y sencillo: solo puede producir imágenes en formato RAW. En el pasado lanzamos un software de imagen WinPmem basado en AFF4, pero aún no se ha actualizado al nuevo controlador. Por favor, háganos saber si necesita el software de imagen basado en AFF4.
El programa Python está actualmente en construcción, pero funciona como una demostración de cómo se puede usar el software de imagen desde Python.
Este programa es el más fácil de usar para la respuesta a incidentes, ya que no requiere más dependencias que el propio ejecutable. El programa cargará el controlador correcto (32 bits o 64 bits) automáticamente y es autónomo.
winpmem_mini_x64.exe physmem.raw
Escribe una imagen en bruto en physmem.raw utilizando el método de adquisición predeterminado.
winpmem_mini_x64.exe
Invoca la impresión de uso / manual breve.
Para adquirir una imagen en bruto usando específicamente el método MmMapIoSpace:
winpmem.exe -1 myimage.raw
¡El controlador se descargará automáticamente después de adquirir la imagen!
Debido a cómo Microsoft diseñó la función MJ READ, la lectura de memoria física fallará en Winpmem con STATUS_INVALID_PARAMETER si se especifica una dirección física mayor que la mitad del valor máximo de un UINT64. Por ejemplo, esto ocurre si alguien quiere leer en partes superiores de la memoria física y tiene una memoria física gigante (más de 9,223,372,036,854,775,807). Esto suena muy improbable, pero los tamaños de RAM actuales continúan aumentando.
El código fuente de WinPmem admite la escritura en memoria además de la lectura. Esta capacidad es una gran herramienta de aprendizaje, ya que muchas técnicas de ocultación de rootkits pueden ser emuladas escribiendo directamente en la memoria.
¡Esta funcionalidad debe usarse con extrema precaución!
NOTA: Dado que esta es una capacidad bastante peligrosa, los controladores binarios firmados tienen el soporte de escritura deshabilitado. Puede reconstruir los controladores para producir binarios firmados de prueba si desea usar esta función. Los binarios no firmados (en realidad autofirmados con un certificado de prueba) no pueden cargarse en un sistema normal debido a que son autofirmados de prueba, pero puede permitir que los controladores no firmados se carguen en un sistema de prueba emitiendo (ver https://docs.microsoft.com/en-us/windows-hardware/drivers/install/the-testsigning-boot-configuration-option:
Bcdedit.exe -set TESTSIGNING ON
y reinicie. Verá un pequeño texto "Modo de prueba" en el escritorio para recordarle que esta máquina está configurada para controladores firmados de prueba.
Además, el soporte de escritura también debe habilitarse en el momento de la carga:
winpmem.exe -w -l
Esto cargará los controladores y activará el soporte de escritura.
Winpmem, así como Linpmem, no existirían sin el trabajo de nuestros predecesores del proyecto REKALL (ahora retirado): https://github.com/google/rekall.
Este proyecto tampoco sería posible sin el apoyo de la comunidad DFIR en general:
Nuestros contribuyentes de código abierto: