jueves, octubre 16, 2008

Web Browsing Fingerprinting

Las técnicas de fingerprinting permiten sacar información mediante reacción del sistema ante pruebas específicas. Es como jugar al quién es quién e ir recorriendo un árbol de decisiones que indican cual es la siguiente prueba a realizar para ir descartando candidatos hasta que sólo queda uno.

En servidores web las firmas de fingerprinting se sacan en función de la info que pone en los banners o en la posición en que devuelve los códigos. Hernán Racciatti escribió hace tiempo sobre esto (HTTP Server Fingerprinting) y hoy en día hay herramientas como httpRecon.

En el lado de los navegadores web esto no estaba trabajado en el mes de Junio, cuando a Pedro Laguna se le ocurrió que podía ser chulo descubrir la versión del navegador sin tener en cuenta el valor de USER-AGENT enviado.

El impacto de esto puede ser grande, ya que una forma de intentar detener los exploits del navegador dirigido podría ser cambiar el valor de USER-AGENT, que es la información que utilizan hoy en día para lanzar el exploit adecuado. Es decir, a día de hoy los exploits comprueban el valor de USER-AGENT para saber que deben hacerte y si se cambia podría dejar de funcionar.

Esto no tiene demasiado sentido a largo plazo, pues al final, cambiar el USER-AGENT puede significar problemas en la navegación y en cuanto la industria del malware detectara esos cambios podría aplicar técnicas de fuerza bruta o heurísticas para lanzar el exploit al navegador.

Sin embargo, sigue siendo una forma chula de recoger información de los navegadores para poder hacer mapas de red de una empresa o detectar incluso a los que se saltan políticas de navegación.

La idea de Pedro me gustó mucho, así que decidimos trabajar en ella y enviamos un paper y una prueba de concepto en el mes de agosto a un congreso académico: La Conferencia Ibero-Americana WWW de Internet 2008. En septiembre recibimos el correo en la que nos confirmaban que nos aceptaron el trabajo que será presentado en Lisboa en Diciembre y publicado en las actas del congreso.

Para hacer las cosas bien queríamos esperar hasta diciembre para hacerlo público a todo el mundo y sólo los alumnos del curso de FTSAI de Junio y Julio de 2008, los asistentes a la Lancelona Party 2008 y a la NavarParty 2008 han podido ver la POC funcionando.

Pero… en el proyecto Metasploit han añadido un módulo con la misma idea, es decir, generar un javascript que detecte la versión del navegador, así que hemos decidido liberar la POC con el código para detectar la versión del navegador.

En WBfingerprinting se detectan actualmente los siguientes navegadores:

- Internet Explorer 7.0+
- Mozilla Firefox 2.0
- Mozilla Firefox 3.0.
- Opera 9.5
- Safari 3
- Internet Explorer 6.0
- Google Chrome



WBFingerprinting

Y seguimos trabajando en nuevas firmas para detector más navegadores, más versiones, y sacar más información, pero, ya puedes jugar con la herramienta e intentar entrar en WBFingerprinting con uno de esos navegadores y no ser detectado.

El código de esta POC lo tienes disponible en WBfingerpinting.js

Saludos Malignos!

4 comentarios:

  1. Chapó por la herramienta chicos, me parece realmente útil.

    ResponderEliminar
  2. Muy interesante.

    Aquí teneis una mega web con tropocientos UserAgents, incluyendo hasta de moviles.

    http://www.zytrax.com/tech/web/browser_ids.htm

    ResponderEliminar
  3. Buena idea! gracias por compartir el codigo de la criatura.

    ResponderEliminar
  4. Un día estuve hablando con Pedro de esto, y me pareció muy interesante. También me había comentando la utilidad thumbando. Poco a poco van saliendo las cosas :)

    ResponderEliminar