jueves, agosto 14, 2014

Google Authenticator NO te avisa de que te han robado tu contraseña

Últimamente me han llegado más mensajes sobre problemas de espionaje en cuentas de correo de Gmail de los que habitualmente recibo. A todos ellos, lo primero que les recomiendo es que instalen Google Authenticator para evitar riesgos innecesarios de que alguien acceda a tu cuenta al mismo tiempo que tú porque haya conseguido hacerse con las contraseña.

Con Google Authenticator alguien podría tener la contraseña, entrar, ver que le está solicitando el token OTP y quedarse ahí. El atacante seguiría teniendo la contraseña, que podría estar usando en otras identidades sin que lo supiera la víctima, y además tendría tiempo para preparar un ataque al OTP de Google Authenticator para robarlo. 

Figura 1: Se ha accedido con usuario y contraseña, y ahora se pide el OTP
de Google Authenticator. El dueño de la identidad no recibe ninguna alerta

Por supuesto no es tarea fácil, pero sí que es posible, sobre todo teniendo en cuenta que está asociado con una semilla que va con la instalación. No hay cuenta, ni sesión que caduque, y se puede hacer backup del terminal móvil completo con la app de Google Authenticator y restaurar en otro dispositivo para continuar teniendo el Segundo Factor de Autenticación funcionando sin ningún problema. Evidentemente, para ello deberías hackear el mismo sistema donde esté el backup del terminal para poder robarlo y restaurar el sistema operativo del backup con Google Authenticator en otro dispositivo.

En el caso de que el usuario tuviera un terminal iPhone, podrías elegir entre el backup en iTunes y el backup en iCloud, tal y como se explica en el libro de hacking iOS, pero podría ser que tuvieras que lidiar también con las claves de cifrado del backup de iTunes o con el sistema de Verificación en dos pasos que instaló Apple en iCloud recientemente. Nadie dijo que esto fuera a ser sencillo.

Pensando sobre todas estas cosas, una de las cosas que salta a la vista es que el código OTP de Google Authenticator tiene un tiempo de vida de 30 segundos, y que además, no cambia si lo utilizas. Es decir, si cuando el código OTP de Google Authenticator tiene aún 25 segundos de vida es utilizado para iniciar una sesión, en la pantalla sigue viéndose el mismo.

Es por eso que pensé en que tal vez podría hacerse un robo del código para conseguir utilizarlo dos veces en la apertura de la sesión, por lo que probé manualmente a iniciar dos sesiones con el mismo token. Cuando se introduce el mismo token OTP de Google Authenticator el resultado fue el normal, que sólo funcione el primer uso del token, ya que es un OTP (One-Time Password).

Figura 2: El segundo uso del OTP, aunque esté vivo, ya no vale.

La respuesta es que Google Authenticator es una implementación de un sistema Time-Based One-Time Password, descrito en el RFC 6238, por lo que cuando se inicia sesión, no se puede utilizar otra vez ese token y hay que esperar para iniciar otra sesión hasta que caduque el OTP a los 30 segundos donde volverá a generarse uno nuevo.

Figura 3: Explicación del funcionamiento experimentado

El uso de Time-Based One-Time Password es por intentar encontrar el equilibrio entre seguridad y usabilidad que siempre se busca en todos los sistemas de protección para que la gente los utilice.

Alertas de Acceso y Alertas de código OTP incorrecto

En Google Authenticator sigo echando en falta una de las características que más me gusta de Latch cuando se usa como un Segundo Factor de Autenticación en frameworks de Internet o en tu propio Windows, y es el aviso instantáneo de que alguien tiene tu clave, tanto si no consigue entrar, como si consigue entrar porque tú has decidido dejar el Latch abierto. En cuanto alguien pone tu contraseña correcta, es posible saberlo al instante con Latch.

Figura 4: Alerta de "Se ha producido un acceso a tu cuenta" con Latch

En Google Authenticator se da una situación muy curiosa. Si la persona que tiene la contraseña e inicia sesión, pone un código OTP erróneo, entonces quedará reflejado en la lista de Actividad Reciente de la zona de seguridad de la cuenta de Google.

Figura 5: En la Actividad de la cuenta de Google solo se recogen los eventos de introducción de
código OTP erróneos. No se recogen los eventos en los que el atacante NO introduce ningún código.

Pero si la persona que ha introducido el usuario y la contraseña correcta no introduce nada cuando aparece la pantalla de introducción de código OTP, entonces no quedará nada reflejado en el log, algo que no tiene demasiado sentido. Es decir, si ha habido un intento de sesión en el que se ha introducido correctamente la password... ¿no creéis que es suficientemente relevante como para que aparezca en la lista de accesos de seguridad? Google por ahora piensa que no.

Saludos Malignos!

9 comentarios:

  1. No entiendo muy bien el problema. Es cierto que debería aparecer en el log. Pero, en cualquier caso, te manda el código al móvil, que se supone que tienes tú (como en el caso de Latch); con lo cual, verías que alguien ha intentado entrar.

    Es decir, tanto como Latch, como con Google Authenticator, tu seguridad depende de tu móvil.

    ResponderEliminar
  2. Eso seria en el caso en el que tuvieras configurado como segundo paso el envío de SMS no de Google authenticator. Y en el caso de que uses esta opción estarías mucho más a merced de malware con acceso a los SMS.

    ResponderEliminar
  3. Desde luego que la opción buena es una combinación de ambas: como dice María los sms te llegan siempre, y si alguien ha accedido te enteras. El authenticator, como apunta víctor es más seguro.
    Lo que no entiendo es qué le costaría a google enviar una notificación push al authenticator cada vez que se solicitara un código… así además sabrías si han conseguido entrar mirando los logs, en cuyo caso ya tocaría preocuparse del backup robado
    Supongo que ya tendrán más de una sugerencia al respecto, a ver si actúan en consecuencia :)

    ResponderEliminar
  4. Dos matices:
    1) Los códigos generados valen desde 2 minutos antes hasta dos minutos después de su generación (para evitar variaciones en la hora local del dispositivo en el que se generan)

    2) Como ha comentado Víctor, también se puede activar recibir el código por SMS. Yo particularmente lo tengo así por la razón que indicas en tu publicación que para mí es primordial: si alguien tienen mi contraseña he intenta entrar me voy a enterar instantáneamente porque me va a llegar un OTP al móvil cuando YO NO LO HE PEDIDO.

    Una opción puede ser que al intentar iniciar sesión se mande una notificación PUSH para q la APP se abra y genere el código. De esta forma te enterarías de si alguien tiene tu contraseña. Esto acompañado de la IP y servicio q ha está intentando iniciar sesión sería chachi :P

    ResponderEliminar
  5. @bruno los SMS tienen otras cosas como el malware que los roba. No obstante, este POST es sobre google Authrnticator y con que quedase en el Log el acceso estaría más contento.

    ResponderEliminar
  6. Tienes razón, Victor. Estaba confundiendo ambos métodos.

    Yo veo más seguro el SMS que el Authenticator. Aunque es cierto lo que dices del malware, se trataría ya de un ataque más elaborado porque tendría que ser el propio bicho el que intentara conectarse desde el teléfono para, inmediatamente, capturar el sms. Ambas cosas tienen que ir coordinadas, o el ataque no tendrá exito (pienso).

    También es verdad que, a veces, los sms no llegan y el usuario se queda "atascado" (no suele suceder, pero a veces lo he visto en otros entornos, como FB).

    De todos modos, frente a los dos métodos, me gusta más Latch: eso de cerrarlo cuando no lo vayas a usar, da mucha tranquilidad.

    ResponderEliminar
  7. Hay estas tu xungo pero no imposible, tela! buen curro Dr.Maligno, hay le has dao tio! preocupante pero molón :)
    Congratulations Chema!
    Salu2!

    ResponderEliminar
  8. Otro inconveniente que tiene Google Authenticator es que por ejemplo, tanto en la apk de correo que viene por defecto en Android y en Windows Live Mail no te permiten ingresar el código generado por Authenticator obligandote así a eliminar dicha cuenta de ambas aplicaciones/sofware.

    Latch Forever Google!

    Saludos!

    ResponderEliminar
  9. existe forma de tener la posibilidad de añadir dispositivos (o personas) en cualquier momento sin tener que cambiar el OTP de cualquier persona.

    ResponderEliminar