26 marzo 2013

Análisis forense en navegadores Mozilla

En este artículo vamos a realizar una introducción al análisis forense en navegadores web, centrándonos en esta ocasión en la familia Mozilla: Firefox / Seamonkey / Iceweasel / Otros forks.

Como sabemos, un análisis forense consiste en obtener toda la información posible de un determinado dispositivo o software, analizarla y posteriormente presentarla a quien la haya solicitado. Este tipo de análisis aplicado al navegador web puede probar u ofrecer pistas sobre ataques informáticos, robo de información, conversaciones, correos, datos personales, etc.

Para el análisis vamos a usar dos herramientas opensource que se complementan mutuamente: dumpzilla, herramienta en Python con la que vamos a poder extraer información sobre el funcionamiento / uso del navegador y MozCache, que nos permite explorar el contenido de la caché utilizada por el navegador. Tanto dumpzilla como MozCache pueden funcionar bajo sistemas Linux y Windows, pero se recomienda su utilización bajo entornos Unix. Estas aplicaciones, su configuración y la información sobre su funcionamiento se puede encontrar en sus respectivas páginas oficiales.


Directorios donde los navegadores Mozilla guardan sus perfiles según SO:
  • Linux: /home/user/.mozilla/firefox/xx.default
  • MacOS: /Library/Application Support/Firefox/Profiles/xx.default
  • Windows XP: C:\Documents and Settings\user\Datos de programa\Mozilla\Firefox\Profiles\xx.default
  • Windows Vista, 7 y 8: C:\Users\user\AppData\Roaming\Mozilla\Firefox\Profiles\xx.default
La información que podamos extraer del navegador dependerá de varios factores, no siempre se va a tener suerte y vamos a encontrar todo lo que nos gustaría. Son determinantes los hábitos de uso del usuario, versión del navegador, configuración del mismo y como no, el azar.

Veamos un ejemplo de lo que es capaz de obtenerse de un navegador después de que el usuario haya iniciado una sesión en el portal hotmail.com.

$ python3.2 dumpzilla.py xxx.default/ --History -url login.live.com

Last visit: 2013-03-17 17:37:05
Title: Iniciar sesión
URL: https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=1363538221&rver=6.1.6206.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=3082&id=64855&mkt=es-es&cbcxt=mai&snsc=1
Frequency: 1

Last visit: 2013-03-17 17:37:35
Title: Una contraseña no es suficiente
URL: https://account.live.com/Proofs/Manage?ru=https://login.live.com/login.srf%3flc%3d3082%26sf%3d1%26id%3d64855%26tw%3d18000%26fs%3d0%26ts%3d-1%26cbcxt%3dmai%26ntprob%3d-1%26snsc%3d1%26sec%3d%26mspp_shared%3d1%26seclog%3d0%26wa%3dwsignin1.0%26wp%3dMBI%26ru%3dhttp://mail.live.com/default.aspx&mkt=ES-ES&uiflavor=web&id=64855&lqsp=ntprob%3d-1&mpcxt=AFP&oru=http://mail.live.com/default.aspx&lmif=100
Frequency: 1

----------------------------------------

Este comando muestra que, efectivamente, el día 17 a las 17:37:35 alguien se autenticó en una cuenta de hotmail con ese navegador. Como se puede apreciar en el segundo párrafo, el portal le solicitó otros medios de autenticación para fortalecer la seguridad y facilitar la recuperación de la cuenta en caso de robo o perdida de credenciales.

Ahora nos interesaría saber qué cuenta fue accedida, aunque se podría ver también mediante el  historial, vamos a dirigir dumpzilla hacia la información de formularios que guarda el navegador.

$ python3.2 dumpzilla.py xxx.default/ --Forms -range_forms "2013-03-17 17:30:00"  "2013-03-17 23:00:00"

Le indicamos a dumpzilla que nos muestre lo que ha escrito el usuario en los formularios web entre las 17:30 y las 23:00 de ese día, obteniendo el siguiente resultado.

Formularios web
En la parte superior se ve la dirección de correo ("rrosanegra") y la respuesta a la pregunta secreta "iSecretAnswer", esta última solicitada por la página de hotmail con etiqueta “title”: "Una contraseña no es suficiente". Si seguimos analizando nos percatamos que poco después de autenticarse, el usuario decidió actualizar su perfil personal dando datos como la fecha de cumpleaños, teléfono, ciudad y otros datos de carácter personal.

Esta información, como cualquier texto insertado en formularios de páginas web, permanece guardada hasta que el usuario lo elimine por medio de las opciones de configuración del navegador.  En Firefox podemos borrar los datos de navegación pulsando sobre Preferencias > Privacidad > Limpiar su historial reciente > Todo. Otra alternativa es borrar el directorio de los perfiles, en Linux "$HOME/.mozilla", el cual nos dejaría el navegador como recién instalado, sin duda algo más radical.

Vamos a seguir analizando un poquito más este acceso al webmail para saber qué hizo el usuario antes de cerrar Firefox. Para ello usaremos la opción "--Session".

$ python3.2 dumpzilla.py Escritorio/hotmail_forensic --Session

Últimos movimientos en el navegador.
Parece ser, según podemos ver en la salida del comando, que durante su instancia en hotmail leyó un correo de un tal “focabugs” y quiso chatear con alguien por medio del messenger web de hotmail. Por supuesto las URLs también podemos encontrarlas en el historial, el cual ofrece una visión mucho más completa sobre qué hizo el usuario en esa sesión en cuanto a URLs se refiere.

La opción que muestra los últimos movimientos de la sesión del navegador da a conocer otro tipo de datos que mediante otras opciones sería imposible de localizar. Como por ejemplo los últimos textos escritos en el messenger web de hotmail o Gtalk. Estos no pueden ser visualizados con la opción "--Forms" porque no son formularios estándar, sino aplicaciones Ajax.

Ya hemos obtenido bastantes cosas con solo usar dumpzilla, ahora pasamos a analizar la caché del navegador con MozCache.

Lo primero que debemos hacer con la herramienta es especificarle la ubicación del fichero "_CACHE_MAP_" (Índice de la caché), que es el que contiene, entre otras cosas, las rutas a todos los ficheros cacheados por el navegador y a sus metadatos.

Ruta al archivo índice de la caché: xx.default/Cache/_CACHE_MAP_

La caché suele tener un tamaño considerable, ocupando cientos de megas de disco duro en forma de imágenes, códigos javascript, texto, ficheros multimedia y json entre otros. Como es de esperar, la herramienta permite buscar textos concretos y filtrar por tipo de archivo, también podemos ordenar la información obtenida por tiempos de acceso, tamaño, ubicación y URL.

Sabemos, porque lo vimos anteriormente, que el usuario había estado utilizando el messenger web de hotmail, por lo que sería interesante buscar algo al respecto en caché. Filtrando por determinadas palabras o bien buscando las fechas que vimos al principio, MozCache nos muestra ficheros que pueden resultar interesantes para nuestro análisis. Además el fichero cacheado con dominio "people.directory" que muestra MozCache tiene muchas papeletas de ser de nuestro interés.

Direcciones de los contactos del webmail.

Exportamos el archivo, lo abrimos con un editor de texto y vemos todas las direcciones de correo electrónico de sus contactos después de limpiarlo.

Para terminar veamos un último ejemplo. Dado el supuesto de que conocemos el "asunto" de un correo de la bandeja de entrada, podemos buscar ficheros con dicho "Subject", para el ejemplo usaremos la cadena "ESPRIT". Una vez nos muestre el fichero de la caché que contiene esa coincidencia, seguimos el mismo procedimiento mostrado anteriormente: Exportamos el archivo, lo abrimos con un navegador web y sorpresa, tenemos un html con su bandeja de entrada. De ahí sacamos información de emails recibidos, fechas, número de correos en spam, etc. Hay que decir que esto suele ser más habitual encontrarlo cuando el usuario deja la sesión web abierta.

Bandeja de entrada del webmail Yahoo.

No olvidemos tampoco que el uso de aplicaciones en modo texto facilita su integración con otro tipo de comandos y lenguajes de programación, un simple grep al historial podría ayudar bastante a encontrar determinados patrones de ataque:

$ python3.2 dumpzilla.py xxx.default/ --History | grep -B 1 -A 2 -i "\.\./\|select\|drop table\|%3C\|cmd=\|\.exe\|c99\.\|\/\*\*\/\|<?\|?>\|phpshell"

Búsqueda de URLs sospechosas.

Hemos visto muy por encima cómo se realiza un análisis forense al navegador web, dejando en el tintero muchas otras posibilidades de uso y funcionamiento de las herramientas mencionadas. Por nombrar algunas, podemos extraer también las cookies, visualizar los accesos a URLs y rutas en disco usadas por los addons y extensiones, configuración del proxy, certificados SSL añadidos, caché html5, ficheros javascript sospechosos, credenciales, etc. Incluso se podría usar una de las opciones de dumpzilla para auditar el uso de nuestro navegador en tiempo real con la opción "--Watch", como muestra el siguiente video:


[+] Página oficial de DumpZillahttp://www.dumpzilla.org/
--------------------------------------------------------------------------------

Artículo cortesía de Busindre

5 comments :

dude dijo...

Muy bueno el artículo!

Detalle pijotero: ¿los datos de las capturas son reales? Lo digo porque se ve el número de móvil y de casa de Cristina (de hecho, hasta le puedes ver la cara si lo pones en el whatsapp {ya que whatsappvoyeur está caido})

Cristina dijo...

Tienes mi Whatsapp, mi númeo de móvil, mi dirección de casa,... a qué esperas para llamarme y quedar? :P

dude dijo...

Entiendo :-)

Miguel Ángel Pérez H dijo...

Buen artículo gracias, gracias por iluminar.

Spike dijo...

Interesante análisis graicas por compartir