Descargo de responsabilidad: no soy abogado, por lo que mi consejo no es válido.
No hay una manera a prueba de fallas para mantener la memoria en un estado específico. Sin embargo, hay una forma de argumentar que un volcado de memoria se puede reproducir y / o argumentar que se puede decir qué partes de la memoria pueden haber cambiado.
táctica propuesta
En el momento en que está realizando un volcado de memoria completo, se están ejecutando varios procesos y un núcleo los está programando. Y, además, es posible que esté intercambiando páginas de memoria entre la memoria física y un área de disco (intercambio).
Entonces, lo primero que necesita es obtener el volcado de memoria y el intercambio está en un punto en el tiempo. En segundo lugar, necesita obtener el estado de los registros de la CPU (volveré en un momento)
Estoy pensando en términos de una máquina Linux porque es el sistema operativo con el que estoy más familiarizado. Para ese sistema operativo, puede volcar /dev/mem
y dd
las áreas de intercambio, o usar algo como LiME. Para otros sistemas operativos hay varias alternativas .
Ahora, para poder argumentar que el volcado de memoria se puede reproducir, deberá buscar y analizar la Tabla de paginación global (PT). Esa tabla reside en la memoria y vincula el acceso a la memoria del kernel con las partes reales de la memoria. La ubicación de la tabla debe estar en un registro (no lo recuerdes, lo siento. Pero es por eso que necesitas los registros, todos ellos no solo RAX, RBX, RCX, RDX, R5, R6, RSP, etc.), por lo que la unidad de CPU responsable de la paginación puede acceder a ella.
Es viable argumentar que si puedes hacer un índice del PT, puedes decir qué parte de la memoria puede actualizarse. ¿Cómo?
- El PT contiene páginas en la memoria física y también en el intercambio, por lo que su índice cubre toda la memoria.
- DLP (parte del PT) le dirá qué páginas son propiedad del núcleo y cuáles son propiedad de los procesos del usuario.
Ahora, en función de lo que hace la máquina, puede saber qué páginas de memoria se han visto afectadas y cuáles no. Por ejemplo, conectar una unidad de lápiz (asumiendo que la máquina no realiza una regla inteligente udev
o similar) solo debería cambiar las páginas del núcleo (bueno, casi, sistemas de archivos virtuales, por ejemplo, /proc
también se actualizaría).
Verificación de la realidad pesimista
Desafortunadamente, la mayoría de los sistemas operativos actuales ejecutarán demonios que explorarán periódicamente el espacio de usuario de la parte visible del kernel y actuarán sobre él. Posiblemente se desordene considerablemente el espacio del usuario (DLP 3). Definitivamente, necesitará un control físico de la máquina y un análisis de lo que sucede (en lo que respecta al espacio del usuario) cuando le hace algo a la máquina.
Notas optimistas
En el lado positivo, cuando tiene el volcado de memoria dividido en páginas, puede reproducir el estado de la máquina (en buena medida). Por ejemplo, puede iniciar una máquina virtual, iniciar un depurador del núcleo y sobrescribir todas las páginas de memoria una por una.
La forma en que lo vería un tribunal, aún puede depender de puntos forenses más clásicos. Por ejemplo, ¿cómo prueba que el volcado de memoria en cuestión es de la máquina que dice ser? Pero eso es algo que puede resolverse mediante procedimientos que documentan exactamente cómo se realizó el análisis forense en la máquina.
Referencias / Relacionado