#MundoHacker: Funcionalidades que comprometen la seguridad del 2FA

2FA leak

Estoy harto de decir que el segundo factor de autenticación es el único sistema seguro que podemos tener en nuestras cuentas.

Lamentablemente, entre que sea seguro y que sea 100% seguro hay un largo trecho, y ya hace unas semanas hablaba en la intranet de mecenas de cómo el doble factor de autenticación basado en SMS era vulnerable a ataques pseudo-dirigidos que usurpaban la identidad de la víctima, aprovechándose del bajo nivel de seguridad que las operadoras ofrecen a la hora de gestionar las cuentas de sus clientes. Es más, esto está llevando al paulatino abandono del SMS como segundo factor de autenticación en favor de los tokens vía app o sistema operativo.

Era, de facto, el típico escenario de una tecnología vulnerable por la vulnerabilidad de un miembro de la cadena de suministro. Si la SIM está sujeta a potenciales ataques de ingeniería social, puesto que la SIM es el vehículo de entrada a nuestra identidad, y por tanto, al doble factor de autenticación basado en SMS, el doble factor es vulnerable.

Afortunadamente, hablábamos de una tipología de ataque que requiere conocimiento, que debe hacerse casi de forma dirigida, y que lamentablemente transforma un riesgo local en uno global, lo que abre la veda a que cualquiera desde cualquier lugar del mundo pueda atacarnos sin tener que estar delante de nuestro dispositivo.

En este caso, sin embargo, quería hablar de otra forma de atacar el doble factor de autenticación basado en SMS (y si me apuras cualquiera basado en tokens push) de una manera mucho más sencilla, pero que esta vez sí, requiere tener acceso aunque sea puramente visual al smartphone de la víctima.

Que sí, en la práctica podríamos también transformarlo en un riesgo global en el momento en el que conseguimos infectar el dispositivo con algún RAT. Pero vaya, que no es necesario llegar a tanto para realizar el ataque, y para colmo la manera de defenderse es tan sencilla que desde ya te recomendaría que la pusieras en marcha.

¿Cómo bypasear un doble factor de autenticación teniendo acceso al terminal?

Como decía, el ataque es muy sencillo de hacer.

El 2FA se basa en la premisa de que por un lado conocemos algo que solo debería saber el usuario (una contraseña), y por otro tenemos algo que solo debería tener él (el smartphone).

El primer paso ya hace tiempo que ha demostrado ser insuficiente. Basta con que se comprometa la seguridad de un proveedor de servicios para exponer la contraseña de millones de usuarios. Y puesto que:

  1. La mayoría recurren a contraseñas sencillas.
  2. La mayoría utiliza la misma contraseña en diferentes servicios.
  3. No todos los servicios tienen protección de ataques de fuerza bruta.

Acabar sacando el password de una cuenta no siempre resulta tan complejo.

Ahora bien, el segundo punto ya requiere tener acceso físico al dispositivo, lo que por un lado minimiza el alcance de los ataques (tienes que conocer a la persona) y por otro facilita el descubrimiento de la contraseña (es probable que ya la sepas o incluso tengas más fácil conseguirla mediante algún engaño).

Bajo esta premisa, ¿es posible bypasear el segundo factor?

Lo cierto es que sí, y por dos motivos principales:

  • La mayoría de usuarios de smartphone no utilizan un bloqueo de pantalla: Por lo que basta con realizar el ataque mientras tenemos acceso a su terminal, cambiar la contraseña y la cuenta ya es nuestra.
  • Aunque tengan sistema de desbloqueo activado, la mayoría deja por defecto activadas las notificaciones en la pantalla de bloqueo: Por lo que aunque no podamos acceder al smartphone, sí podemos leer desde la pantalla el token enviado vía SMS por la notificación entrante. Y de nuevo, una vez dentro, hacer lo que nos plazca con la cuenta.

Dos problemas que tienen fácil solución. Voy a explicar cómo en 2 minutos podemos proteger nuestras cuentas con 2FA tanto en Android como en iOS.

Proteger los 2FA en Android

El primer paso es algo que debería estar ya hecho en tu terminal. Todo dispositivo que vaya a salir potencialmente de casa (y si me apuras también los de escritorio) debería contar con un sistema de desbloqueo.

Ya he explicado en su día en profundidad qué sistema de desbloqueo recomendaría, empezando por los basados en la inherencia (huella dactilar, reconocimiento facial…) y siguiendo por los del conocimiento (contraseña alfanumérica, contraseña numérica/PIN, patrón de desbloqueo). Y por este mismo orden.

En Android cambiar esto depende, como suele pasar en Android, de la ROM que utilicemos. Pero el menú que gestiona esto suele estar en Ajustes > Seguridad y ubicación > Seguridad del dispositivo. Ahí podemos elegir el tipo de sistema de desbloqueo que queremos utilizar.

El segundo punto pasa por desactivar el visionado de las previsualizaciones de las notificaciones en la pantalla de bloqueo.

Para ello, por regla general la ruta está en Ajustes > Aplicaciones y Notificaciones, y según la ROM, quizás otra vez dentro de Notificaciones.

Ahí debería haber una opción que se llama algo así como En la pantalla de bloqueo. Y dentro de ella podremos elegir No mostrar las notificaciones, o Mostrar notificaciones pero ocultar contenido sensible.

Yo lo tengo de esta última manera.

Proteger los 2FA en iOS (iPhone e iPad)

El primer paso es algo que debería estar ya hecho en tu terminal. Todo dispositivo que vaya a salir potencialmente de casa (y si me apuras también los de escritorio) debería contar con un sistema de desbloqueo.

Ya he explicado en su día en profundidad qué sistema de desbloqueo recomendaría, empezando por los basados en la inherencia (huella dactilar, reconocimiento facial…) y siguiendo por los del conocimiento (contraseña alfanumérica, contraseña numérica, patrón de desbloqueo). Y por este mismo orden.

En iOS cambiar esto es tan sencillo como irnos a Ajustes > Touch ID y código > Añadir una huella y seguir los pasos, asegurándonos de que activamos el Desbloqueo del iPhone o iPad por huella/código.

El segundo punto pasa por desactivar el visionado de las previsualizaciones de las notificaciones en la pantalla de bloqueo. De esta manera, se nos mostrará que una notificación nos ha llegado, pero no el contenido.

Para ello, tenemos que ir de nuevo a Ajustes > Notificaciones, pulsar en Mostrar previsualizaciones y darle a desactivar todo en la plantalla de bloqueo.

También está la opción que desactivarlas para todo, forzándote siempre a entrar en la aplicación para verlas. Ahí ya que cada uno elija.

También es posible desactivar las notificaciones de algunas aplicaciones (como la de Mensajes), dejando otras. Un servidor en todo caso te recomendaría desactivarlas todas en la pantalla de bloqueo. Ya no solo por tema de seguridad, sino también por privacidad (de esta manera sabemos que solo alguien que puede desbloquear nuestro dispositivo, que deberíamos ser solo nosotros, es capaz de ver el contenido de las mismas).

Conclusiones

Dos cambios que nos van a robar apenas un par de minutos de configuración, que tampoco es que tengan un impacto considerable a nivel de usabilidad, y que sin embargo mejoran muchísimo la seguridad tanto de nuestro dispositivo como del resto de servicios asociados a él.

De verdad que es algo que recomiendo encarecidamente hacer. Hace años que mi smartphone trabaja de esta manera, y tan contento que estoy.

 

________

Puedes ver más artículos de esta serie en #MundoHacker, donde tratamos en varios tutoriales las medidas para atacar y/o defenderse en el mundo digital.

Y si el contenido que realizo te sirve en tu día a día, piensa si te merece la pena invitarme a lo que vale un café, aunque sea digitalmente.

hazme patrono pabloyglesias