Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Linpmem — Controlador del kernel de Linux para la adquisición de memoria física, que permite acceso de lectura a cualquier dirección física, incluyendo memoria reservada y agujeros de memoria, con información de CR3 y servicios de traducción de virtual a físico. | Kitploit
Herramientas/GitHubGitHub/velocidex/linpmem
Forensia de MemoriaAnálisis ForenseForensia DigitalRespuesta a Incidentes
GitHubvelocidex/linpmem

Linpmem

Controlador del kernel de Linux para la adquisición de memoria física, que permite acceso de lectura a cualquier dirección física, incluyendo memoria reservada y agujeros de memoria, con información de CR3 y servicios de traducción de virtual a físico.

Ver Repositorio
1051211hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Linpmem -- una herramienta de adquisición de memoria física para Linux

alt text

Linpmem es una herramienta solo para Linux x64 para leer memoria física.

Al igual que su contraparte de Windows, Winpmem, esta no es una herramienta tradicional de volcado de memoria. Linpmem ofrece una API para leer desde cualquier dirección física, incluyendo memoria reservada y agujeros de memoria, pero también se puede usar para volcado de memoria normal. Además, el controlador ofrece una variedad de modos de acceso para leer memoria física, como modo de acceso byte, word, dword, qword y buffer, donde el modo de acceso buffer es apropiado en la mayoría de los casos estándar. Si la lectura requiere una lectura alineada de byte/word/dword/qword, Linpmem hará precisamente eso.

Actualmente, las características de Linpmem son:

  1. Leer desde dirección física (modo de acceso byte, word, dword, qword o buffer)
  2. Servicio de información CR3 (especificar proceso objetivo por pid)
  3. Servicio de traducción de dirección virtual a física

El Control de Caché se agregará en el futuro para soportar los modos de acceso de lectura especializados.

Tabla de resumen

  • Compilación del controlador del kernel
  • Carga del controlador
  • Uso
    • Código de demostración
    • Herramienta de línea de comandos
    • Biblioteca
    • Herramienta de volcado de memoria
  • Biblioteca
  • Distribuciones de Linux probadas
  • Manejo de Secure Boot
  • Problemas conocidos
  • En desarrollo
  • Trabajo futuro
  • Agradecimientos

Building the kernel driver

Al menos por ahora, debes compilar el controlador Linpmem tú mismo. Un método para cargar un controlador Linpmem precompilado en otros sistemas Linux está actualmente en desarrollo, pero aún no está terminado. Dicho esto, compilar el controlador Linpmem no es difícil, básicamente es ejecutar 'make'.

Paso 1 - obtener los encabezados correctos

Necesitas make y un compilador de C. (Recomendamos gcc, pero clang también debería funcionar).

Asegúrate de tener linux-headers instalado (usando el gestor de paquetes que tenga tu distribución de Linux). El nombre exacto del paquete puede variar según tu distribución. Una forma rápida (independiente de la distribución) de verificar si tienes el paquete instalado:

ls -l /usr/lib/modules/`uname -r`/

Eso es todo, puedes proceder al paso 2.

Sistema externo: Actualmente, si deseas compilar el controlador para otro sistema, por ejemplo, porque quieres crear un volcado de memoria pero no puedes compilar en el destino, debes descargar el paquete de encabezados directamente desde los repositorios de paquetes de la distribución de Linux de ese sistema. Verifica que la versión del paquete coincida exactamente con la versión de lanzamiento y kernel que se ejecuta en el sistema externo. Si el otro sistema utiliza un kernel compilado por uno mismo, debes obtener una copia del directorio de compilación de ese kernel. Luego, coloca la ubicación de cualquiera de los directorios en la variable de entorno KDIR.

export KDIR=path/to/extracted/header/package/or/kernel/root

Paso 2 - make

Compilar el controlador es simple, solo escribe:

make

Esto debería producir linpmem.ko en el directorio de trabajo actual.

Es posible que desees revisar precompiler.h antes y elegir si compilar para lanzamiento o depuración (por ejemplo, con impresión de depuración). No hay muchas otras configuraciones de precompilador en este momento.

Carga del controlador

El módulo linpmem.ko se puede cargar usando insmod path-to-linpmem.ko, y descargar con rmmod path-to-linpmem.ko. (Esto cargará el controlador solo para este tiempo de actividad). Si compilaste para depuración, echa un vistazo a dmesg.

Después de cargar, para comunicarte con el controlador, necesitas crear el dispositivo:

mknod /dev/linpmem c 42 0

Si no puedes comunicarte con el controlador, potencialmente verifica en el registro de dmesg para confirmar que '42' fue efectivamente el major registrado:

[12827.900168] linpmem: registered chrdev with major 42

Aunque normalmente el kernel intentaría asignar este número realmente.

Puedes usar chown en el dispositivo para asignarlo a tu usuario, si no quieres tener una consola de root abierta todo el tiempo. (O simplemente sigue usándola en una consola de root).

  • Observa la salida de dmesg. ¡Por favor, reporta errores si ves alguno!
  • Advertencia: si hay un mensaje de error de dmesg de Linpmem que indique reiniciar, es mejor hacerlo inmediatamente.
  • Advertencia: esta es una versión temprana.

Uso

Código de demostración

Hay un código de ejemplo que demuestra y explica (en detalle) cómo interactuar con el controlador. La referencia de la API de espacio de usuario también se puede encontrar en ./userspace_interface/linpmem_shared.h.

  1. cd demo
  2. gcc -o test test.c
  3. (sudo) ./test // <= necesitas sudo si no usaste chown en el dispositivo.

Este código es importante si quieres entender cómo interactuar directamente con el controlador en lugar de usar una biblioteca. También se puede usar como una prueba de función breve.

Herramienta de línea de comandos

Hay una herramienta de línea de comandos básica (opcional) para Linpmem, la herramienta CLI pmem. Se puede encontrar aquí: https://github.com/vobst/linpmem-cli. Además del código fuente, también hay una herramienta CLI precompilada, así como la biblioteca estática precompilada y los encabezados que se pueden encontrar aquí (firmados). Nota: esta es una versión preliminar, asegúrate de buscar actualizaciones, ya que muchas adiciones y mejoras seguirán pronto.

La herramienta CLI pmem se puede usar para probar las diversas funciones de Linpmem de una manera (relativamente) segura y conveniente. Linpmem también puede ser cargado por esta herramienta en lugar de usar insmod/rmmod, con algunas opciones adicionales en el futuro. Esto también tiene la ventaja de que pmem crea automáticamente el dispositivo correcto para uso inmediato. Es extremadamente portátil y se ejecuta en cualquier sistema Linux (y, de hecho, se ha probado incluso en un Linux 2.6).

$ ./pmem -h
Command-line client for the linpmem driver

Usage: pmem [OPTIONS] [COMMAND]

Commands:
  insmod  Load the linpmem driver
  help    Print this message or the help of the given subcommand(s)

Options:
  -a, --address <ADDRESS>            Address for physical read operations
  -v, --virt-address <VIRT_ADDRESS>  Translate address in target process' address space (default: current process)
  -s, --size <SIZE>                  Size of buffer read operations
  -m, --mode <MODE>                  Access mode for read operations [possible values: byte, word, dword, qword, buffer]
  -p, --pid <PID>                    Target process for cr3 info and virtual-to-physical translations
      --cr3                          Query cr3 value of target process (default: current process)
      --verbose                      Display debug output
  -h, --help                         Print help (see more with '--help')
  -V, --version                      Print version
Descargar herramienta