17 septiembre 2010

Análisis de la gestión de contraseñas en la UPM

En este artículo voy a exponer cómo se podría realizar un ataque contra los sistemas de recuperación de contraseñas de la UPM pudiendo modificar la contraseña del alumno y obteniendo acceso a todos los servicios que hagan uso de los mismos.

Antes de empezar quiero hacer referencia a otro artículo que trata del mismo tema, siendo éste Análisis de la gestión de contraseñas de la UCM, publicado en SecurityByDefault. Con respecto al mismo, decir que si intentamos acceder a los servicios “comprometidos” veremos que están cerrados, lo cual es una medida muy recomendable mientras se está tratando de solucionar.

Este artículo es un resumen, por lo que si queréis leer la versión completa tendréis que acudir al siguiente PDF. Además, aprovecho para adjuntar el enlace a una carpeta pública que he creado en Google Docs donde iré colgando todos los artículos en formato PDF. La carpeta en cuestión es Seguridad.

¡Comencemos!
Disclaimer:

No me hago responsable del mal uso que pueda darse a esta información. En ningún momento la intención del artículo es el incitar a que se produzcan ataques sobre las cuentas de los alumnos de la UPM, más bien su finalidad es la de concienciar al alumno/universidad de lo fácilmente explotables que son estos sistemas si no se toman todas las medidas de seguridad por ambas partes.

1. Introducción

El sistema que vamos a atacar es el de recuperación de contraseñas. A través de este sistema, podremos resetear la contraseña del alumno objetivo y acceder a todos los servicios que utilicen dichos credenciales (correo, campus virtual, etc).

Como ya comenté en el artículo sobre el sistema de la UCM, el ataque no es transparente al usuario por lo que nuestro intervalo de acción sobre la cuenta está limitado.

Con respecto a los credenciales, mediante este ataque podremos modificar la contraseña del alumno pero, ¿sabemos su nombre de usuario? En nuestro caso éste es la dirección de correo. Si no la sabemos, podemos aprovecharnos de un servicio-soplón el cual nos facilita la dirección de correo asociada a un alumno (a través de su DNI).

En este artículo voy a dar por sentado que ya hemos obtenido el DNI del alumno objetivo. En el caso de que no se tuviera, podéis acudir al artículo de la UCM en el que se explica brevemente algunas ideas de cómo podemos obtenerlo.

2. El sistema.

El sistema de recuperación de contraseñas de la UPM consta de una única etapa en la que hay que introducir el DNI del alumno y el código PIN (es el de la tarjeta universitaria, utilizado para la función monedero, consulta de expedientes, etc).

El sistema en sí no tiene ningún tipo de protección, por lo que podemos realizar el número de intentos que sean necesarios y, en un primer momento, no estaba monitorizado por lo que era muy difícil levantar sospechas. Además, en el artículo completo se explica cómo podemos reducir el ataque a un solo intento (olvidándonos de la fuerza bruta, de ahora en adelante FB, y de los posibles bloqueos que puedan implementar) o realizar el ataque sobre otro servicio vulnerable no monitorizado.

Sigo sin entender como, en servicios tan fácilmente explotables como éste, no se implantan medidas de seguridad. ¿Tanto cuesta introducir un CAPTCHA y/o un sistema de bloqueo preventivo?

3. Obteniendo el PIN.

En primer lugar, decir que el código PIN consta de cuatro caracteres numéricos. Con respecto a su generación para adjuntarlo en la petición, en principio no es necesario que contenga los cuatro dígitos, por lo que es igual de correcto introducir 10 que 0010.

Para obtener el PIN no tenemos más que hacer un ataque FB sobre el formulario de Olvido de contraseña. El ataque consistiría en hacer peticiones con el DNI y un PIN de la siguiente forma:
https://www.upm.es/gsr/correo_alumnos/olvido.upm?op=olvido
accion=validar&dni=DNI&contrasena=PIN

En el caso de que el PIN fuera incorrecto, nos devolverá un mensaje de error y en el caso de que acertemos, obtendremos el formulario para modificar la contraseña. Por lo tanto bastará con estar monitorizando la respuesta del servidor y, en el momento en el que no nos devuelva el error, podremos realizar la petición de cambio de contraseña. Esta petición ha de ser de la siguiente forma:
https://www.upm.es/gsr/correo_alumnos/olvido.upm?op=olvido
accion=final&contrasena=PASSWD&contrasena2=PASSWD
(ha de adjuntarse la cookie PHPSESSID validada)

Una vez modificada la contraseña habrá que esperar un par de minutos para que podamos acceder a todos los servicios sin problemas (véase el correo, el campus virtual, etc).
Como se ha dicho en la introducción, podríamos reducir el ataque a un solo intento. Podéis encontrar su explicación en el artículo completo.

4. El servicio soplón

El servicio-soplón no es ni más ni menos que el servicio a través del cual nos podemos crear una cuenta de correo de la UPM (del tipo @alumnos.upm.es).

Para crearnos una cuenta bastaría con realizar una petición a dicho servicio enviando el DNI del alumno y su PIN (claramente sólo es posible si el DNI corresponde a un alumno matriculado):

https://www.upm.es/gsr/correo_alumnos/solicitud.upm
accion=validar&dni=DNI&contrasena=PIN

¿Qué ocurre si el alumno ya tiene una cuenta asociada? Pues que el sistema nos devuelve una alerta mostrándonos su cuenta de correo y la fecha de creación.

Por lo tanto, en el caso de que tras obtener el PIN y modificar la contraseña, no supiéramos el usuario, bastaría con acudir a éste servicio para obtener el dato que nos faltaba.
¡Hasta aquí todo! Ya para terminar...

Aprovecho, ya que tienen relación entre sí, para enlazar el breve artículo PasswordFail de la UPM, en el que se demuestra que se guardan las contraseñas de los alumnos en texto plano, con el peligro que ello conlleva.

Como he dicho antes de empezar, no me hago responsable del uso que se haga de esta información.

La intención del artículo es concienciar a los usuarios y obligar a las universidades a prestar verdadera atención a todos los servicios que ofrecen y que éstos han de estar bien implementados pues los datos que manejan no son ninguna tontería.

Artículo cortesía de: Luis Delgado J.

6 comments :

fossie dijo...

Muy buen artículo, pero tengo una duda. Cuando dices que la clave es el PIN de la tarjeta universitaria supongo que te refieres a la clave inicial no? porque si cambias la clave no creo que la tarjeta universitaria cambia de PIN ¿verdad?

Esto me lleva a otro problema y es que independientemente que podamos cambiar el PIN de los servicios que se gestionan por internet si que podemos conocer el PIN actual que es el PIN de la tarjeta universitaria y, por tanto, la que se utiliza como monedero electrónico por lo que si alguien roba una de esas tarjetas podria utilizar el monedero electrónico ¿no?

Y que conste que no digo que nadie lo vaya a hacer... ¡¡¡NO LO HAGAIS!!! ;D

Anónimo dijo...

Como siempre, muy interesante el artículo.

Completamente innecesario mencionar el servicio del que se trata.


Un saludo,

Rodri

Luis dijo...

@fossie
Si se cambia el PIN desde la PV se modifica el de la tarjeta universitaria (es lo que pone en el formulario de modificacion, no lo he podido comprobar porque los PIUs siempre están apagados), lo que más me preocupa es, ¿que ocurre cuando la tarjeta es además de debito? yo espero que el PIN vaya separado...

@rodri
supongo que te refieres a las url y demas, ¿no? se podían haber omitido pero como se mencionaron en el de la UCM también se han puesto en este caso.

Anónimo dijo...

Intentando probar lo que dice tu articulo he estado probando con el "olvido de contraseña" metiendo mal el PIN, y al tercer intento me ha dicho que me bloqueaba el acceso. En concreto:

"
Número máximo de intentos de validación excedido. Por su seguridad y por la del resto de usuarios procedemos a bloquear el acceso .....
"

Luis dijo...

Nada mal, lo que no se ha hecho en 2 meses se hace tras la publicación del artículo... me alegro :)
Aun así sigue habiendo formas de explotar el sistema (como se comenta en el artículo completo)

Ole dijo...

Estuve alli hace 3 años y me parecio que todo estaba hecho con el culo. Incluso se seguia usando telnet en algunas lados, no me refiero que el servicio estuviera activo, sino que se usaba.

Estaba una vez estudiando en una biblioteca (me ahorrare dar mas detalles) cuando de repente oigo al lado mio "Escribe telnet..." a unos tios que no conozco de nada. Me viro con cara de haber visto un muerto (creo que no es para menos) y les digo "en serio aqui se usa telnet?!?!", me respondieron que si, les comente lo fuera de lugar que esta eso y, le instale wireshark al tipo del portatil, le dije que entrara con telnet... y le enseñe su contraseña y se quedaron :O y yo diciendo "dios mio, en donde me he metido", entonces cambie todas mis contraseñas en esa universidad... aun flipo