miércoles, 1 de octubre de 2014

Herramientas de volcado de memoria

Saludos BugBu5t3r5

Hace un par de días Hecky y yo platicábamos acerca del futuro del cómputo forense, los dos llegamos a la conclusión de que debido a tecnologías como SSD y las capacidades de los discos la forma tradicional de hacer cómputo forense ha cambiado, el futuro de las metodologías, procesos y herramientas  pronto giraran en torno al análisis de los componentes volátiles, sé que este punto es discutible y muchos examinadores tienen sus dudas en cuanto a la adquisición y análisis de memoria, se preguntan si será admisible en la corte o cuestionan el impacto que muchas herramientas tienen sobre la integridad de la evidencia.

Sin embargo estoy convencido que el análisis de memoria volátil es una de las áreas en donde podemos encontrar más elementos de evidencia. Es por eso que decidí hacer de mi primer post una lista de las herramientas que están disponibles para poder obtener memoria, ojala que al leer este post si aún tienes dudas de si debes tomar la memoria en tus casos, pierdas el miedo y lo hagas!

Empecemos por establecer cuáles son los PLUS de obtener la memoria volátil:




  1. Todo lo que se encuentra dentro de nuestros OS en algún momento interactúa con RAM. Nos da la oportunidad de identificar malware en su estado vivo (incluyendo rootkits).
  2. Podemos obtener: contraseñas, llaves de cifrado (si el contendor está montado y obtención de llave de cifrado de una imagen de memoria por ejemplo con Passware), caches, clipboards.
  3. Archivos abiertos.
  4. Configuraciones de hardware y software (recuerden que algunas de algunos hives de Windows Registry son volátiles).
  5. Información de red (sockets, IP´s, URL´s)
  6. Procesos.
  7. Obtención de evidencia a pesar de la utilización de técnicas anti forenses (inprivate browsing, chats cifrados, etc.)
  8. Actividad de internet.
  9. Obtención remota de la memoria.
  10. Obtener una copia de la MFT desde la memoria.
  11. Obtención de una copia de la memoria RAM de un sistema post mortem desde el archivo hiberfile.sys 

Como pueden ver las ventajas son muchas y las herramientas para poder obtener una imagen de la memoria también abundan. Estas son algunas de las herramientas que están disponibles, ¿Lo mejor? Son libres:


FTK Imager

Download: http://www.accessdata.com/support/product-downloads

Comencemos con una herramienta ya conocida por la mayoría de los que estamos en este negocio; Access Data proporciona una versión portable (74.7 MB) de su gratuito FTK Imager Lite el cual nos permite obtener una imagen de la memoria mediante point and click:


Una vez que dimos click en la opción de “capturar memoria” en la siguiente ventana aparecerán todas las opciones, son bastante claras, damos una ruta y un nombre y ¡Listo! 

Una opción extra que se nos presenta y que en lo personal yo incluyo es que el dump incluya al archivo pagefile.sys ya que hay un mundo de información que se puede parcear dentro de este archivo.


Todas las opciones listas y cuestión de dar click en Capturar Memoria y el proceso comenzaran de forma automática.





DumpIt


Hace no mucho Moonsols nos sorprendió poniendo de forma gratuita una de sus aplicaciones del Windows Memory Toolkit, DumpIt esta herramienta es una fusión de win32dd y win63dd lo que la hace en mi opinión una de las herramientas más sencillas de utilizar.
Para realizar un volcado de memoria basta poner una sola letra y listo. Uno de los contras de la sencillez de esta herramienta es que no tienes mucha libertad de configuración. Pero si vas empezando en esto del análisis a la memoria y aun no te tienes mucha confianza DumpIt es la herramienta que quieres utilizar,

Es ideal también para ponerla dentro de un USB (202 KB) y aquí viene otra parte que tal vez es uno de sus puntos en contra, la imagen en formato raw se escribirá en donde el DumpIt.exe resida así que checa bien que lleves una USB de suficiente espacio para que toda la memoria que vayas a obtener pueda ser adquirida.






Mandiant Redline

Veamos una herramienta mucho más configurable y más poderosa, Mandiant Redline nos permite crear un “recolector” de memoria el cual podemos configurar dependiendo de las necesidades de nuestros casos, en mi laboratorio tenemos más de un recolector disponible.

Redline nos permite también realizar análisis de memoria en vivo, pero eso lo veremos en otro post, por ahora nos concentraremos en cómo crear un recolector.




Redline nos ofrece la opción de crear dos tipos de recolectores:


  • Un recolector standard el cual nos permite obtener la información necesaria para llevar a cabo un análisis enfocado en la memoria.
  • Un recolector integral el cual de forma predeterminada tiene seleccionadas casi todas las opciones de la información que Redline puede obtener, la única opción que no viene incluida es la de obtener strings, el seleccionar esta opción incrementara considerablemente el tiempo de que tomara la herramienta para volcar la memoria.

Es mi sugerencia que puedan tener más de un recolector listo para los diferentes incidentes que pudieran enfrentar. 

Una vez que han seleccionado el tipo de recolector verán la siguiente pantalla:


En esta pantalla tienen la oportunidad de seleccionar "Adquirir Imagen de Memoria", esto es porque el recolector de Redline nos generara una carpeta con el nombre de "Sessions\AnalysisSession1" y dentro un archivo con extensión ".mans" el cual solo podrá ser abierto en Redline pero si quisiéramos revisar nuestra memoria en algún otro software como Volatility o Rekall necesitaríamos una imagen en crudo. 

Podemos ver las opciones a configurar en nuestro recolector al dar click en "Edit your script", en la imagen vemos las opciones para un recolector integral y no voy a poner una imagen de cada una de las pestañas disponibles es solo para que sepan que aquí puede ser configurado que queremos que Redline obtenga al ejecutar el recolector.


Por último en esta ventana hay una opción en la esquina superior derecha que dice "Show Advanced Parameters" esta opción la he utilizado cuando voy a escanear el universo de sistemas en mi red por un proceso que ya sé que es malicioso y quiero verificar si se encuentra presente en algún otro sistema, ya que esta opción te permite especificar cosas como el PID y el Process Name.


Una vez configurado el recolector le damos una ruta y se generara una carpeta con el siguiente contenido:

De lo que nos da Redline como resultado final cabe resaltar que se nos da un recolector tanto para x86 así como para x64.


Winpmem

Aquí tenemos una herramienta hecha por Michael Cohen, Winpmem, esta herramienta no nos  permite tanta configuración como Redline pero si ofrece mayor velocidad en cuanto a la adquisición de la memoria y un par opciones extras que la hacen una herramienta muy interesante, Rekall no ofrece solamente una herramienta de adquisición de memoria, es todo un framework para poder analizar los volcados que realicemos...Es como Volatility, sin embargo en este post NO entraremos en detalles del análisis de los volcados.

Personalmente me es necesario trabajar más con esta herramienta que promete mucho ya que entre sus opciones nos permite crear un ELF coredump para que podamos mandar por la red el volcado y hacer remapping.



 Por ultimo...

¿Qué hay de la memoria volátil de una máquina virtual? ¿Cómo podemos adquirir esa memoria?

Una técnica practica seria suspender la máquina virtual y forzar una copia de la memoria.


Sin embargo hay productos como VirtualBox que únicamente presenta la memoria que está activa y no el total de memoria asignada a la máquina virtual, en este caso y como último recurso podrían ejecutar alguna de las herramientas ya mencionadas. Algo que también es importante recordar es que software como VMware nos permite realizar snapshots y cada uno de estos snapshots contiene su propia copia de memoria, estos archivos de memoria virtual pueden ser analizados por ejemplo con Volatility el cual tiene un módulo que reconocerá las diferentes extensiones de productos de virtualización.


Leyendo hace un tiempo un News Bites de SANS hablaban precisamente de esto, de cómo obtener memoria de máquinas virtuales, en el post compartieron las rutas para encontrar los archivos de memoria de las diferentes plataformas de virtualización:


Sé que hay muchas herramientas más que adquieren memoria sin embargo solo puedo hablar de las herramientas con las que he trabajado y he probado en diferentes ambientes. recuerden que como forensicators no podemos casarnos con una sola herramienta, tenemos que ser competentes utilizando diferentes herramientas en diferentes situaciones.

Espero les haya gustado este primer post. Empezamos con esto que es básico y pronto empezaremos ya a entrar en materia.

Muchas gracias por leernos y éxito BugBu5t3rS.

 -Bu5t3r-

1 comentario:

  1. Excelente información Bu5t3R5

    Solo para adicionar a la entrada:

    .- La suite de rekall ofrece binarios para obtener la memoria RAM en otros OS.
    .- Para móviles existe LiME
    .- Así mismo debemos tener algunas consideraciones al sacar información volátil antes y después..Pero creo eso lo trataremos en otro post.

    Saludos ;)

    ResponderEliminar

Déjanos tu opinion