Ir al contenido principal

Análisis Forense - Extrayendo y reconstruyendo imágenes y sesión de usuario desde un volcado de memoria.

Obtener datos y pruebas que te ayuden en una investigación no es tarea fácil, hace unas noches atrás (Si de aquellas que te sientas a investigar y terminas viendo el reloj a las 4:45 AM) me preguntaba por las formas de obtener las imágenes que el usuario estaba visualizando en el momento in situ en el que estaba cometiendo algún tipo de delito, ilícito, etc. Las posibilidades son muchas no voy ahondar que hecho preciso pudo realizar, es por eso que prepare una VM arme el escenario y me puse a realizar las pruebas imaginando que este computador no fue apagado y esto nos permitió hacer rápidamente volcado de memoria y posteriormente hacer análisis forense a dicho volcado.
Lo primero que hice fue listar los procesos para ver cuáles serían mis objetivos a analizar.
volatility pslist -f '/media/sf_Desktop/Gagonotes/Win7SP1x64-20161031-015650.raw' --profile=Win7SP1x64
Lista de Procesos extraidos del volcado de memoria.
Esta vez había que obtener el dump de cada proceso por separado, entonces los fui obteniendo por los PID 2572, 1732, 2540, 2800, 1780 y 2959.
volatility -f '/media/sf_Desktop/Gagonotes/Win7SP1x64-20161031-015650.raw' --profile=Win7SP1x64 memdump -p [PID] --dump-dir='/root/Escritorio/dump'
Dump del proceso mspaint.exe PID 2956.
Al hacer dump de proceso el dump queda con extensión dpm por lo que se debe renombrar a data.
mv 2572.dpm 2572.data
…
…
mv 2959.dpm 2959.data

Hasta aquí todo bien, pero no siempre obtendrás el resultado y es por eso que concluyo que no es una tarea fácil, abrimos el dump *data y desplazo el offset hasta conseguir la imagen y no resulta siempre.
Aquí muestro 2 casos uno cerca de lograr la imagen y otro simplemente no lo logre, fueron muchas pruebas y volcados durante un par de madrugadas.
Resultados de offset de los dump de procesos.
En teoría una imagen jpeg tiene una secuencia de bytes de inicio 0xffd8 y final 0xffd9 entonces se podría extraer y armar la imagen desde el dump con algo más elaborado.
Secuencia de bytes 0xffd8 - 0xffd9 de un jpeg.
Por ahora esta tarea de chino, la dejare pausada debido a que tengo que investigar más profundamente, pero no es imposible y de seguro los más avezados de esta materia lo habrán hecho.
Finalmente, me hare ayuda de un “plug-in” que dibuja rectángulos de las ventanas en función de sus posiciones en el escritorio. El funcionamiento interno de este enumera las ventanas de la sesión por su orden de foco esto quiere decir de adelante hacia atrás, toma la parte izquierda, derecha, superior e inferior de las coordenadas de cada ventana y dibuja los rectángulos con Python Imaging Library. En fin, se aleja de la captura de imágenes del usuario, pero nos permite desde el punto de vista como investigador obtener información relevante.
volatility -f '/media/sf_Desktop/Gagonotes/Win7SP1x64-20161031-015650.raw' --profile=Win7SP1x64 screenshot -D '/root/Escritorio/screenshot'

Reconstrucción de las sesión de Windows 7.
Para quitar lo técnico y denso de este artículo, hicimos un volcado de memoria del computador de Ignacio Allende Fernández según Wikipedia Torbe, en primera instancia como él estaba utilizando el computador en el momento in situ donde preparaba su material nuevo.
Sesión del usuario original previo volcado de memoria.
En segunda instancia el resultado del volcado de memoria, como investigadores nos da indicio de que aplicaciones estaba utilizando:  el visor de Windows, Chrome, el title del website en donde se encontraba, la hora, etc.
Reconstrucción de la sesión del usuario extraída del volcado de memoria.
Por más que existan herramientas que automaticen los procesos, la recolección de evidencia sigue siendo un tema complejo, aquí logramos ver que el simple hecho de obtener imágenes en un peritaje no fue simple y nos exige como investigadores tener perseverancia, dedicación, mucha lógica para ir uniendo las piezas, las ideas, para transformar los pequeños fragmentos que vamos descubriendo en resultados, si bien existen más técnicas y formas de hacer las cosas aquí solo aborde con análisis de memoria una idea y pregunta y espero con esto contribuir al conocimiento colectivo y que me puedan ayudar a entender otras técnicas y formas, gracias.



Comentarios

Te sugiero las siguientes publicaciones 🙂🤙

Obteniendo strings de procesos en memoria con ReadProcessMemory().

Análisis Forense - Extracción de datos desde un dispositivo móvil Android para análisis lógico.