email

Leía en el blog de James Fisher (EN) una manera bastante curiosa de hijackear cuentas en servicios de pago como Netflix atacando a la cuenta GMail de una víctima.

La cuestión es que, como seguramente sepas, GMail considera los «.» dentro de un email como si no fueran caracteres, de forma que por ejemplo [email protected] y [email protected] son a efectos prácticos la misma cuenta (sobra decir que ese no es mi correo personal real). Esta funcionalidad, denominada «dots-don’t-matter» y presente en GMail y algún que otro proveedor de correo más, permite en la práctica tener infinitas cuentas de correo con una misma bandeja de entrada, ya que tan solo con poner un punto (o varios) donde queramos generamos una nueva cuenta que para GMail no lo es, pero que para la amplia mayoría de servicios en Internet sí.

Y esto, nuevamente, se debe a una estrategia de negocio que ya en su día (2008 (EN), que haya visto) algunas voces internas consideraron de riesgo. De una feature que apuntaba a ser el Santo Grial de la industria (¡podremos crearnos miles de cuentas en redes sociales con el mismo correo!), pasamos a un potencial vector de ataque.

Como suele ocurrir, toda característica puede volverse de facto contra nosotros. Y esto es lo que pasa con el dichoso «dots-don’t-matter» de GMail. Que un listillo podría utilizarlo para lanzar campañas de phishing, dirigidas o masivas, que eluden cualquier control de seguridad informático implementado.

Vamos con un ejemplo.

¿Cómo crear una cuenta de Netflix estafando a un usuario de GMail?

¿Qué se puede hacer entonces para bypasear la seguridad de una cuenta? Atacar al eslabón más débil, que es el usuario. Y de la siguiente manera, sin tan siquiera elaborar complejas campañas de phishing y buscar la manera de ofuscar URLs maliciosas, para más inri:

  • Entramos en el servicio (en este caso, Netflix) conociendo de antemano el correo de la víctima (alguien que ya tenga una cuenta de Netflix), o probando suerte (ir poniendo correos en el login de Netflix hasta que nos salte que la contraseña es incorrecta, ergo la cuenta existe). Por ejemplo, [email protected].
  • Nos creamos una cuenta nueva con [email protected], o con [email protected]. La cuestión es meter algún punto por el medio para abusar del «dots-don’t-matter» de GMail, ya que así que el servicio no caerá en que está ante el mismo correo (al menos en el momento de escribir esta pieza Netflix no formatea las cuentas de GMail para verificar que no hayan sido utilizadas de antemano), y la asociamos a una tarjeta de crédito desechable.
  • Una vez que el servicio verifica que la tarjeta es correcta, la cancelamos.
  • Esperamos a que el servicio se de cuenta de la cancelación de la tarjeta (al enviar el pago). Y cuando lo haga, le enviará al tal Pepito un email avisándole de la situación.
  • Aquí es donde entra el timo, ya que lo mismo el bueno de Pepito asume que su cuenta ha sido cancelada y entrará en el servicio para actualizar su tarjeta… Poniendo de paso la correcta.
  • Una vez lo haya hecho, podemos cambiar el email de la cuenta a otro que esté bajo nuestro control, y a Pepito solo le quedará la opción de cancelar el pago duplicado a ciegas desde su banco… si es que algún día se da cuenta.

No es tan sencillo como parece, pero…

Dicho así parece el negocio del siglo. Vamos estafando a otros usuarios y tenemos cuentas de pago a coste cero para toda la vida.

Sin embargo, le veo algunos puntos que me chirrían:

Login automático

Para que el ataque tenga éxito debemos aceptar que en el email que envía Netflix, la URL con el enlace a la página de cambio de tarjeta cuenta ya con los credenciales de acceso, y que esto no entra en conflicto con los credenciales que presumiblemente ya tendrá metidos en el navegador la víctima.

Sinceramente, tendría que probarlo para cerciorarme que es así, ya que a priori lo dudo. En la mayoría de servicios la URL te llevará a la página de cambio, pero forzará a volver a meter los credenciales de acceso, o en todo caso intentará completarlos con los que ya tiene a nivel de navegador. Pero como no lo he probado voy a presuponer que en efecto el sistema, al menos en Netflix, funciona de esta manera.

Sobre los sistemas de recuperación de contraseña/login

Es importantísimo evitar que dichos sistemas den más información de la adecuada, y esto pasaría por mostrar un error genérico del tipo «En caso de existir, el usuario y/o contraseña es incorrecto» cuando o bien metamos mal alguno de estos dos elementos o ambos.

Que el servicio en cuestión te diga que has metido mal la contraseña supone además que has metido una cuenta que existe en el sistema, y por tanto, te está dando información que a priori podrías no conocer, habilitando ataques de este tipo.

Las comunicaciones anteriores al scam

Como son los emails que presumiblemente recibirá ese usuario al crear la cuenta (no recuerdo si Netflix te pedía que verificaras tu email, pero en todo caso estoy seguro que un email de bienvenida sí envía) o incluso al verificar la tarjeta.

Que entiendo que el segundo podría pasar desapercibido (lo mismo la víctima piensa que es un control rutinario del servicio), pero oye, como mínimo los primeros deberían levantar las sospechas aunque sea al usuario más despistado del mundo (es raro que Netflix, después de unos meses de uso, te de de nuevo la bienvenida a su servicio, ¿verdad?).

En fin, que un ejemplo más de cómo una funcionalidad aparentemente positiva puede volverse en contra nuestra.

Si la analizamos por separado, ambos sistemas no presentan una vulnerabilidad. Pero al trabajar en conjunto (correo de GMail con cuenta de Netflix) se vuelve un vector de ataque a considerar.

¿Qué podemos hacer para evitarlo?

  • Desde el punto de vista del usuario, lo fácil sería decirte que te fijes siempre en quien envía y a quién están enviando el correo, ya que la trampa en la mayoría de scams está en esto. Otra opción es etiquetar con la funcionalidad nativa de GMail los correos que nos lleguen de cada servicio, de forma que a la hora de crear una cuenta en Netfix la creemos con nuestro correo «[email protected]» o «[email protected]». Con esto lo que conseguimos es que toda notificación de este servicio nos llegue a la etiqueta adecuada. Y si no llega por ahí, es que han utilizado un correo distinto (no hemos sido nosotros, vaya).
  • Desde el punto de vista de Google, el «error» está en no considerar el envío de correos con caracteres no alfanuméricos como mínimo como potencialmente peligrosos. Vale que hablamos de una característica, pero es que esto puede ser utilizado para causar daños, y como en este caso, incluso para engañar a sus usuarios. Bastaría con que incluyeran una alerta soft avisando que en vez de pepitoramirez el remitente se refiere a pepito.ramirez, que no deja de ser un alias de la cuenta principal, para que el número de potenciales víctimas disminuyan considerablemente.
  • Y desde el punto de vista de Netflix, y en definitiva, del resto de servicios, quizás lo suyo es controlar el uso del «dots-don’t-matter» mediante un formateo primario del correo, seguido de la verificación de que éste no existe ya en su base de datos. Me parece un control bastante sencillo de implementar, y evitaría muchos males a futuro. A fin de cuentas, de ocurrir el fraude, el primero a quien va a culpar la víctima es, como no podría ser de otra manera, al servicio, no al proveedor de correo.

 

________

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 su día a día, piensa si te merece la pena invitarme a lo que vale un café, aunque sea digitalmente.

hazme patrono pabloyglesias