Z43vi97d 400x400 José Alejandro Gago
Cyber Security Consultant and Digital Forensics Writer ✔
Creado 7 meses | leído hace menos de 1 minuto

Análisis forense reconstruyendo imágenes desde dumps de memoria.

Post33 nn

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

1.- pslist.PNG

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'

2.-memdump -p 2956.PNG

Dump del proceso mspaint.exe PID 2956.


Al hacer dump de proceso, 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.

3.-data - gimp.png

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.

4.-0xffd8 -0xffd9.PNG

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, con ayuda de un plugins 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'

5.-volatility -f path --profile=profile screenshot -D path.PNG

6.-volatility -f path --profile=profile screenshot -D path.PNG

Reconstrucción de la 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.


7.-Torbe-VirtualMachine.PNG

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.

8.-session_1.WinSta0.Default.png

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.

José Alejandro Gago. Ingeniero en informática. Microsoft Certified Professional Security & Development - DBA. Twitter: @jalejandrogago


Artículos que te pueden interesar

12063705 10207273024561428 5910637785024423418 n %282%29 Felipe Barrios
Creado 3 meses | leído hace alrededor de 2 horas

Reprogramando tu cerebro con Elixir.

Post43 nn

Elixir es un lenguaje que se ejecuta en la máquina virtual de Erlang. Por lo que tiene todas las ventajas, probado en batalla y puede u...

Leer más

Perfil Samuel Esteban
Creado más de 1 año | leído hace alrededor de 1 hora

¿Cómo realizar un Pentesting sigiloso con Nmap?

Post1

Para realizar un Pentesting es importante dejar la menor cantidad de rastros, por esta razón a continuación se explicará, como realizar...

Leer más

Z43vi97d 400x400 José Alejandro Gago
Creado 3 meses | leído hace 1 día

Obteniendo las cuentas cifradas con análisis forense de memo...

Post45 nn

Esta publicación se me ocurrió debido a que esta semana leí la noticia PSA: LastPass Does Not Encrypt Everything In Your Vault básicame...

Leer más