20 de noviembre de 2008

RAM Dumping!

Días antes de esta jornada de “huelga”, aunque quizás sería más correcto decir que de protesta, por que muy pocos han sido los profesionales que se han unido a la misma (por unas u otras razones). Comentaba como Silverhack nos había explicado cositas de Análisis Forense en memoria RAM. Los que veáis su blog periódicamente habréis visto que ya ha comentado como volcar un proceso en un fichero y como extraer las cadenas posteriormente. Mi idea inicial era explicar justamente eso, a modo de resumen se necesitaban tres herramientas que Microsoft proporciona gratuitamente:

El Process Dumper es una aplicación que permite volcar un proceso a un fichero en tiempo de ejecución y sin matarlo, tienen un setup de configuración muy básico:


Con esta aplicación escribiendo userdump –p tendremos la lista de procesos con su PID, si por ejemplo queremos extraer todo el contenido del firefox de PID 592 pondremos userdump 592. Con ello tendremos el volcado. Ahora toda extraer las cadenas de texto que todo proceso maneja, para ello la herramienta Strings nos ayudará. Escribiendo strings firefox.dmp > anita.txt tendremos todas las cadenas de ese fichero en otro de texto. Normalmente no se aconseja abrir los .txt con el blog de notas por que suelen ser de varios megas y tendremos problemas. Por ello es mucho más sencillo utilizar las herramientas find o findSTR y buscar cadenas como “password”, “clave”, “http” o lo que se nos ocurra, así obtendremos todo tipo de información que le navegador maneja muy jugosa :)



Un consejo para el manejo de estas aplicaciones, si no quereis tener que estar copiando y moviendo archivos basta con que añadais strings y userdump a las variables del sistema (si tenéis XP, en propiedades de Mi PC – Opciones Avanzadas) y así desde cualquier lugar del sistema las ejecutareis sin problema.

Cambiando un poco de tercio surgió el debate sobre Análisis Forense con estos volcados de memoria, surgió por varias razones:

  • Necesitas ser administrador de la máquina.
  • Alteras la memoria RAM.
  • No sirve como prueba en un juicio.

Los dos primeros puntos están claros, se puede volcar la memoria de una máquina en red, o mediante multitud de herramientas comerciales (enCase, Volatile Framework) y no tan comerciales (dd /DEV/ en Unix nos podría valer), sin embargo en caso de que sean herramientas del sistema nunca tendremos la garantía de que no hayan sido corrompidas por un rootkit u otros, si hibernamos el equipo (toda la RAM se vuelca al disco duro) corremos el riesgo de que sea detectado por el malware y aproveche para eliminarse. Aun con todo el hecho de volcar la RAM siempre implicará una modificación de la misma, de ello hay varios debates interesantes en Internet, es preciso recordar que una modificación de la RAM aunque sea en un bit implica una alteración de una prueba, y un abogado un poco perspicaz en el uso de las nuevas tecnologías nos la echará atrás fácilmente.

Ahora bien, el problema persiste, ¿cómo copiar una RAM sin alterarla? Repasando nuestros conceptos de Sistemas Operativos tenemos un problema grave, pues o paramos el procesador o la RAM se alterará continuamente, pero si lo paramos no podemos volcarla, es la pescadilla que se muerde la cola. Por suerte encontré un paper con una solución interesante, sus autores son Brian. D. Carrier y Joe Grand y en resumidas cuentas explica el problema y propone como solución incorporar una tarjeta PCI que detenga el procesador, tome el control del bus y sea capaz de ejecutar las instrucciones precisas para volcar la RAM:


El único requisito es que la tarjeta debe estar instalada previamente en la máquina. Lo que la hace interesante para servidores críticos.

Finalmente y para dejaros pensando un poco, ¿tendríamos este problema en Servidores Virtuales?

Salu2!

2 comentarios:

Anónimo dijo...

¡Hola!

Muy interesante la entrada, y con el aliciente de abrir boca para el fin de semana... La opción propuesta en el paper es muy ingeniosa, pero imagino que en servidores virtuales el problema, existiendo, podría solventarse de alguna otra forma. El SO hospedado podría ser accedido desde el anfitrión para realizar el volcado de memoria, de la misma forma que lo haría la tarjeta PCI de la solución propuesta. ¿Pero es posible hacerlo con las herramientas disponibles a día de hoy? Yo no conozco ninguna... ¿y vosotros?

Volviendo a insistir, me ha gustado el post :)

¡Un saludo, y buen finde!

GigA ~~ dijo...

Muy bien encaminado Myth! Vamos, que has dado en el clavo casi. Quisiera "buscarlas" o al menos hacer un ejemplo y mostraroslo, pero ando muy atareado estos dias.

En cuanto pueda, te / os cuento.

Salu2!