Análisis de volcado de memoria en investigaciones forenses computacionales

human brain on white background

Los atacantes informáticos mejoran sus técnicas día con día para lograr penetrar, incluso en los sistemas informáticos mejor protegidos, los cuales son custodiados fuertemente por una gran cantidad de controles administrativos, técnicos y por un equipo de administradores especialistas en respuesta y análisis de incidentes informáticos. En esta carrera, solo triunfarán aquellos con la capacidad para dominar los métodos, técnicas y herramientas más avanzadas para superar a los adversarios.

Algunas de las armas más poderosas de los atacantes son los rootkits, que son malware que permite ocultar los procesos maliciosos, puertas traseras y archivos que se utilizan para tomar control de los sistemas comprometidos. Según Hoglund y Butler,[1] los rootkits consisten en uno o más programas y código que permiten mantener acceso permanente e indetectable en una computadora. Jesse D. Kornblum[2], uno de los pioneros del análisis forense computacional, indica que son programas maliciosos que subvierten silenciosamente un sistema operativo para ocultar procesos, archivos y actividad.

Hay dos tipos de rootkits: los de nivel de usuario y los de nivel de kernel. Algunos investigadores[3] consideran otros tipos adicionales: los que afectan el BIOS (bootkit) y los basados en virtualización. Sin embargo, nos enfocaremos a tratar los dos primeros.

Los rootkits a nivel de usuario tienen como objetivo reemplazar programas del sistema por versiones modificadas que ocultan información relacionada con la actividad maliciosa del intruso informático. Por ejemplo, un rootkit de nivel de usuario puede ser un programa llamado “netstat”, especialmente diseñado para ocultar una conexión de red que es utilizada como puerta trasera por el atacante. Este tipo de rootkits son fácilmente detectados por programas como TripWire, que revelan modificaciones en los programas del sistema.

Los rootkits a nivel de kernel alteran estructuras clave ubicadas en el espacio de kernel (como la tabla de llamadas al sistema), así no requieren modificar los programas del sistema para alterar el resultado que éstos muestran al usuario final. Esta característica dificulta que sean detectados por herramientas de seguridad, administradores de sistemas y especialistas en seguridad informática.

¿Cómo detectar estas perversas y poderosas herramientas?

Existen tres opciones: la primera -y más sencilla- es ejecutar programas especializados en la detección de rootkits, como Rootkit Hunter, Chkrootkit (para sistemas basados en UNIX) o rootkitrevealer (para Windows XP y Server de 32 bits). Algunos de estos programas, además de ser capaces de detectar rootkits conocidos, incorporan alguna funcionalidad genérica para detectar nuevas amenazas. Sin embargo, no existe la seguridad de que un nuevo rootkit utilice esas funcionalidades genéricas, por lo tanto, no hay garantía de que estas herramientas logren detectarlos.

Para explicar la segunda opción, es necesario  mencionar la forma en la que se ligan los programas, los cuales pueden estar compilados de forma dinámica o estática.

De forma dinámica, los programas usan bibliotecas del sistema, que son porciones de código externas ubicadas en el sistema operativo. Si por el contrario, están compilados estáticamente, los programas contienen en sí mismos todo el código necesario para su funcionamiento.volcadosmem2

La forma de compilación más común es la dinámica, pues diferentes programas comparten alguna biblioteca del sistema, y esto permite optimizar el espacio en disco.  Sin embargo, si alguna de las bibliotecas compartidas es alterada por malware (incluyendo rootkits), el resultado de ejecutar un programa que haga uso de dicha biblioteca, también se vería afectado por esta alteración.

Realizar un diagnóstico, utilizando programas de auditoría compilados de forma estática, evitará que el resultado que producen sea alterado por rootkits a nivel de usuario que hayan alterado bibliotecas del sistema. Pero esta técnica no es efectiva contra rootkits a nivel de kernel.

La tercera y última opción, además de ser la que ofrece una mayor posibilidad de detectar rootkits a nivel de kernel, es el análisis del volcado de memoria[4]. Para explicar cómo funciona, recordaremos algunos conceptos de arquitectura de computadoras.

Una computadora tiene dos tipos de memorias, principal y secundaria. La primera es la de mayor velocidad de lectura, intercambia datos constantemente con el procesador y es de menor tamaño que la memoria secundaria. Almacena la información de forma temporal mientras la computadora se encuentra encendida y, en cuanto se apaga, la información se pierde.

Volcar la memoria consiste en copiar el contenido de la memoria principal en un archivo, el cual puede ser analizado posteriormente para obtener información del estado de la computadora en el momento del volcado.

volcadosmem3

¿Por qué es tan importante incluir el análisis de volcado de memoria en una investigación forense computacional hacia atacantes informáticos de alto perfil? Porque este tipo de intrusos utilizan el cifrado y ofuscación para protegerse. Los más sofisticados, incluso utilizan herramientas que nunca escriben información en memoria secundaria. Sin importar qué tan perfeccionadas sean las técnicas empleadas por los atacantes informáticos, todo programa que se ejecuta en una computadora, en algún momento se almacena en memoria principal. Por esa razón, es muy probable que el volcado de memoria contenga los programas utilizados por los atacantes informáticos o, al menos, rastros de ellos.

Desde hace años, los analistas forenses computacionales han capturado el contenido de la memoria. Su análisis consistía en la extracción de cadenas de texto para luego buscar direcciones IP o URLs que podían dar un gran contexto al investigador forense, pero no se lograba obtener otras estructuras de la memoria.

En 2007 se creó Volatility, una herramienta para interpretar el contenido de la memoria, que va mucho más allá de las técnicas tradicionales de búsqueda de cadenas de texto. Este poderoso programa tiene la capacidad de interpretar las estructuras internas de memoria que almacena, entre otras cosas, la información de los procesos en ejecución y conexiones de red que estaban activas en el momento en que se capturó la memoria. Incluso proporciona información de conexiones de red y procesos ya finalizados para el momento en que se realizó la captura. Los cuales pueden ser indicios claves para resolver un caso.

En sistemas operativos Windows, particularmente, esta herramienta tiene la capacidad de mostrar  las sentencias exactas ejecutadas en la terminal de comandos cmd.exe que, en la mayoría de las ocasiones, no es posible obtener con el análisis de memoria secundaria, ya que no se encuentra habilitado de forma predeterminada ninguna bitácora que almacene esta información.

revista17btn_descarga(opt)_3Entre otras herramientas se encuentra Red Line, la cual tiene interfaz gráfica desarrollada por la compañía Mandiant. Ésta se enfoca exclusivamente al análisis de volcados de memoria de sistemas operativos Windows. También está Volatility, que es una herramienta de código abierto con interfaz por línea de comandos desarrollada en el lenguaje Python que permite analizar volcados de memoria de sistemas operativos Windows, GNU/LINUX, Mac OS y Android. Gracias a que esta herramienta es de código abierto, tiene una gran comunidad de desarrolladores que extienden continuamente su capacidad por medio de módulos o plugins[5].

No cabe duda de que, tanto los atacantes informáticos como los investigadores forenses digitales, tendrán que mejorar sus técnicas, métodos y herramientas constantemente, con el fin de mantener la ventaja en la guerra cibernética, la guerra de la era digital.

El análisis de volcado de memoria será cada vez más importante para resolver con éxito los casos de intrusiones informáticas avanzadas.

Referencias

Greg Hoglund y James Butler, “Rootkits, Subverting the Windows Kernel”, Addison-Wesley, 2009, ISBN 0-321-294319-9.

Kornblum, Jesse, Exploiting the Rootkit Paradox with Windows Memory Analysis , en: http://www.utica.edu/academic/institutes/ecii/publications/articles/EFE2FC4D-0B11-BC08-AD2958256F5E68F1.pdf

Pär Österberg Medina, Detecting Rootkits in Memory Dumps, en: http://www.terena.org/activities/tf-csirt/meeting27/oesterberg-rootkits.pdf

http://code.google.com/p/volatility/

http://code.google.com/p/volatility/wiki/Plugins

http://code.google.com/p/volatility/wiki/VolatilityIntroduction


[1] Hoglund y James Butler, “Rootkits, Subverting the Windows Kernel”, Addison-Wesley, 2009.

[2] Kornblum, Exploiting the Rootkit Paradox with Windows Memory Analysis  http://www.utica.edu/academic/institutes/ecii/publications/articles/EFE2FC4D-0B11-BC08-AD2958256F5E68F1.pdf

[3] Pär Österberg Medina, Detecting Rootkits in Memory Dumps, http://www.terena.org/activities/tf-csirt/meeting27/oesterberg-rootkits.pdf

[4] Kornblum, Jesse,  Ibidem.

[5] http://code.google.com/p/volatility/wiki/Plugins Volatility Project

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s