viernes, diciembre 23, 2011

Un día de viaje: El blues (de la WiFi) del autobús

La disponibilidad de tecnologías WiFi “abiertas” cara al público que provén de Internet de forma gratuita, se ha convertido en una de las mayores facilidades que se le puede ofrecer a un usuario malintencionado para que lleve a cabo cualquier tipo de ataque sin dejar rastro de la identidad del mismo. Lugares como universidades, bibliotecas, restaurantes, bares, aeropuertos, etcétera, ofrecen conexión a los usuarios para que naveguen a sus anchas.

No hace mucho tiempo, volviendo en autobús de un viaje que tuve que realizar por motivos de trabajo, me dio por ojear el servicio WiFi que ofrecía la empresa para conectarse a Internet durante la duración del trayecto (que no era poco). Y como era de esperar existían multitud de direcciones IP (usuarios) que estaban utilizando dicho servicio.

Dejando de lado la multitud de ataques que se podrían realizar a los usuarios que están utilizando el servicio, ya que se supone que la WiFi precisamente se encuentra “abierta” para que todos los usuarios del autobús puedan conectarse y navegar sin ningún problema, decidí mirar qué “cacharro” era el que nos estaba ofreciendo el servicio y qué medidas de seguridad implementaba.

Figura 1: Portal del Router de Internet Móvil

Al primer intento de una de las contraseñas por defecto, ya me di cuenta que la respuesta se ofrecía por JavaScript y sin realizar ninguna petición a otra página, por lo que, la contraseña debería estar “incrustada” en el propio código de la página de acceso.

Figura 2: Alerta de contraseña incorrecta por Javascript

Con la ayuda de Firebug y un par de búsquedas vamos a intentar localizar la cadena exacta que nos interesa. Identificamos cómo existen varios tags “iframe” que están apuntando a distintos portales, los cuales pueden contener la cadena que estamos buscando. Entre ellos existe el fichero “/en/logo_idx.asp” que es el que contiene toda la parte de login.

Figura 3: Inclusión del iframe de autenticación

Cargamos el portal “/en/logo_idx.asp” dentro de nuestro navegador y visualizamos dónde se encuentra la cadena “Introduce tu contra..”, ya que se encontrará cerca de la zona del botón de submit, del que nos interesa saber qué función está realizando con la contraseña que introducimos nosotros en el “textbox”.

Figura 4: Función que se ejecuta cuando se envía la contraseña

Como se puede observar en la imagen anterior, al realizar el evento “onclick” del botón “Entrar” se está ejecutando a una función JavaScript llamada “LoginForm()”. Si buscamos dicha función en la pestaña de Scripts de Firebug, nos encontraremos con el siguiente código.

Figura 5: Contenido de la función JavaScript "LoginForm()"

Vemos que se está validando mediante la función “IF” el valor del elemento “password” con una variable llamada “admin_passwd”, la cual se encontrará inicializada en alguna parte del código. Mediante una simple búsqueda del nombre de la variable, damos con el valor que se inicializa la misma y con el correspondiente password del router.

Figura 6: Inicialización de la variable "admin_passwd"

A partir de aquí ya podemos acceder al portal del router y visualizar y/o modificar los parámetros de configuración.

Figura 7: Configuración Avanzada del Router Internet Móvil de Huawei

Y seguro que con toda esta información a muchos de vosotros se os ocurren muchos ataques man in the middle que se pueden realizar a los compañeros de viaje, pero ya bastante cansado es un viaje en autobús, como para que encima te roben la cuenta de Twitter, Tuenti o Facebook.

Figura 8: Usuarios conectados al servicio, potenciales víctimas

Como ya habréis leído y/o escuchado centenares de veces, la seguridad de las redes WiFi “abiertas” que ofrecen servicio a cualquier usuario sin ningún tipo de protección son de alto riesgo para los usuarios, pero quedan mucho más en entredicho si ni el propio fabricante del dispositivo utilizado para motarlas se preocupa de con qué grado de seguridad se están desarrollando sus dispositivos.

Un Saludo!! ;)

Autor: Daniel Romero, consultor de seguridad en Informática64

20 comentarios:

  1. Muy buen post!! En Mexico sucede algo similar, con todas la redes abiertas. Y mas en ese tipo de autobuses que viajan varios ejecutivos y gente de cuello blanco, con información sensible. Un man in the middle y puedes dañar mucho. Se necesita mas educación a la capa 8 =) Saludos Malignos.

    ResponderEliminar
  2. Mucho más facil que todo eso, haciendo pruebas en el modelo e690 de vodafone, la diferencia entre un usuario estandar y el administrador es el parametro ?user=..

    Eliminandolo de la url nos da acceso como administrador.

    ResponderEliminar
  3. unos mientras viajan descansan .. chema comprueba la seguridad de la wifi . .que maquina..... saludos chema .....

    ResponderEliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  5. Dios!! Que cagada! Cualquier programadorcillo de poca monta sabe que un dato importante NO se puede poner en el HTML (ni como JS ni nada).

    A veces, aunque la contraseña se verifique en servidor, si el que da o no acceso es JS se podría acceder sin tener que saber la contraseña siquiera. Basta con poner un punto de interrupción en el firebug y en el momento de comprobar la contraseña, cambiar el valor de "admin_passwd" por el mismo que se escribió (incluso se podría obtener el valor de la contraseña en ese mismo momento sin tener que ir a buscar la declaración de la variable).

    Las comprobaciones SIEMPRE en servidor y si no se desvelan datos privados, se puede usar a JS para ayudar al usuario pero nunca tomar lo que diga JS como bueno.

    ResponderEliminar
  6. @Carlos, ¿vienes aquí a decirnos que las comprobaciones siempre en servidor?, ¿porque no vas a enseñar esto a chavalitos de elhacker.net o gente así?, serías un crack 'bro'.

    ResponderEliminar
  7. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  8. Tengo una duda, si llego a estar conectado a esa Wifi y entro en gmail, facebook u otro que veo que es https ¿es cierta garantía de seguridad o ya estoy perdido? Es la única comprobación que hago antes de conectarme a un sitio.

    ResponderEliminar
  9. ¡¡A robar cuentas de facebooooook, que no hay dinero para comeeeeer!! BUUUURRRPPPTTTRRrrr

    ResponderEliminar
  10. A los Trolls... iros a mordor hombre a dar por c***

    Referente a que pasaria si entraras a tu correo y demas... bueno pues el atacante podria capturar todas tus credenciales, tokens, cookies... TODO lo que circule por ESE punto de acceso...

    Una pregunta para ti chema, en linux se me ocurren hasta scripting para obtener las IPs validas conectadas a mi RED (punto publico en este caso) pero que sistemas conoces de windows que me permitan explorar sin tener que scriptear a mano/fuerza bruta que IPs estan conectadas a la misma red?
    Osea que programa/app me recomiendas para de forma rapida, una exploracion de maquinas conectadas en mi red cuando me muevo a puntos de acceso sobre los que no tengo privilegios?

    Un abrazo, y gracias!

    Q.

    ResponderEliminar
  11. @QuaSaR: Si dices que sabes hacerlo en linux, pero no en windows... ¡es que no tienes ni puta idea! JA JA JA. Es un tema de redes, no de sistemas operativos ni programación. A QuaSaR se le ve el plumeroooooooo... BUrlURRLUUUUUPPPTTTRrrrrr

    ResponderEliminar
  12. Esto pasa cuando contratas a un aficionado para que te monte un servicio de wifi.

    ResponderEliminar
  13. Como se nota que este no es un post de Chema. Tiene nivel técnico y no es un dibujo mal hecho de Chemita Alonso...
    Es una pena con lo que fue Chema y en lo que se ha convertido...
    Aunque es de entender con la edad que ya tiene.
    Un saludo y ánimo.

    ResponderEliminar
  14. @Anonimo, dedicarte 10 años a seguridad informática, escribir papers y publicarlos en revistas y congresos internacionales, viajar por todo el mundo presentando tu trabajo en seguridad informática, escribir durante 5 años artículos en tu blog y recibir un comentario de un subnormal que dice que solo dibujas y que no eres capaz de saltarte una validación por javascript: Priceless!

    Feliz navidad subnormal!

    ResponderEliminar
  15. Amigo Chema, no soy ninguno de los que escribieron antes.

    Deberías tener paciencia con los comentarios aunque imagino que debe ser harto difícil controlarse (yo me enciendo con excesiva facilidad) pero creo que así quedas "a pre", no es tan negativo y de algún modo es justo.

    Quiero decir que, al igual que recibes comentarios de "Lamers" diciéndeto que eres la leche por algún "chorri-artículo" (sin acritud eh!, que también los hay buenos, y también de los otros...) tienes que joderte aguantar que otro se crea que programar JS sea más o menos como controlar una central nuclear y sólo esté al alcance de unos pocos privilegiados. Así que creo que te lo mereces "las gallinas que entran por las que salen..." y todo queda equilibrado.

    Feliz Navidad a tod@s

    ResponderEliminar
  16. @anónimo último, llevas razón. Lo que pasa es que llegar en nochebuena contento y con un par de copas y ver que hay un troll que se cree con nivel técnico y catadura moral como para evaluar todo mi trabajo con un comentario anónimo, comomsi conociera todo lo que he hecho de memoria, sacó al más maligno que llevo dentro.

    Ya paso validaciones de mi trabajo en los CFP de congresos académicos con revisión ciega y en las conferencias hacker con validación entre peers, como para aguantar a tontos en Navidad.

    Solo fue eso, un arrebato maligno. Felices fiestas amigo.

    ResponderEliminar
  17. En este caso lo más útil que se podría hacer es tirar a todos y decir al dhcp que la puerta de enlace es una ip inexistente... La cobertura 3G de esos bichos es bastante mala...

    Y chema no te enfades que sabes que en el fondo el anónimo de antes tiene razón... Tu blog no es lo que era. Tengas los papers que tengas tu blog ya no es ni la mitad de la mitad de bueno que antes, aunque de vez en cuando haya algún post bueno como este.
    Un saludo Chema.
    Manuel Montesinos

    ResponderEliminar
  18. @Manuel Montesinos, creo que no llevas razón, y te invito a que lo pruebes. }:))

    Verás, este blog nunca fue mejor, de hecho, creo que fue bastante peor. Sin embargo es como cuando alguien dice: "Los Hombres G ya no son lo que eran". No han cambiado los Hombres G, habéis cambiado algunos de vosotros.

    No sé desde cuando lees este blog, pero a la izquierda tienes la cronología mes a mes de todos los años que lo llevo escribiendo. Elige un mes al azar del año que más te guste, y verás que tiene el mismo porcentaje de experiencias personales, dibujos, chorradas, noticias comentadas, faltas de ortografía y artículos técnicos.

    De hecho, yo hago ese ejercicio desde hace mucho tiempo, veo lo que publiqué para encontrar todo lo que se puede mejorar, e intento que cada vez sea mejor.

    Antes, cuando tenía 1.000 lectores, y ahora con su más de 20.000 lectores diarios, siempre he tenido críticas de que no tengo ni puta idea, de que esto es una mierda, de que el blog es un asco, etc... Están los comentarios sin borrar, así que encontrarás alguno incluso en el que me dicen que parezco un gitano y que tengo cara de "sudaca".

    Sin embargo, los que habéis aprendido mucho con vuestra experiencia profesional, o lleváis mucho tiempo leyendo mi blog, habéis perdido esa capacidad de que os sorprendan las cosas que publico en este blog. Ya conocéis mis chistes malos, y los artículos ya os aportan poco....

    ...pero yo no puedo hacer más.

    En la parte técnica este blog ha ido publicando pequeños aportes, con el BSQLi, con el LDAP, los metadatos, la FOCA, etc... y poco más, pero ha sido así siempre, solo tienes que mirarlo mes a mes para darte cuenta de que ha sido así siempre.

    A mí me alegra mucho que este post de un compañero os haya gustado tanto. No pensé que una validación por javascript os empalmara tanto, pero me encanta que así sea. Así que intentaré que Dani publique más cosas, porque yo no abarco todo. Yo como seguir con el Terminal Services, el Citrix, la FOCA, los metadatos, y mis cadenas de conexión ya tengo bastante tajo, como para meterme en más.

    Así que seguiré publicando lo mismo hasta que me canse, cierre el blog, y me retire a dibujar. Cuando pierda definitivamente la paciencia y aguantar chorradas no me apetezca, cerraré mi blog, y me dedicaré a mis cosas, pero mientras tanto seguirá siendo más o menos lo mismo, y si puedo mejor, pero bajo mi prisma, que me ha funcionado muy bien ser yo mismo todos los años que llevo trabajando en esto.

    Un saludo Manuel, y a ver si un día charlamos en persona.

    ResponderEliminar
  19. @Troll
    No se hijo... puede k en linux si me deje hacer un ping 255.255.255.255 -b tranquilamente desde consola sin problemas y con windows no... hasta aki mi simplisimo conocimiento de tecnicoless si kieres... pero posiblemente en perl o en algun lenguaje podria implementar un sencillo script para windows, pero no lo se... por eso a diferencia de ti, pregunto, asi a lo mejor el proximo dia se algo mas, pero en tu comentario de adivina lo infeliz de tu existencia. No se chico... con decir con nmap lo puedes hacer directamente hubiera bastado...

    ResponderEliminar
  20. La gente no tiene ni la menor idea de a lo que se exponen usando redes wifi abiertas.

    ResponderEliminar