El segundo factor protege la cuenta, pero no evita que el atacante averigüe qué contraseñas son válidas. Esa distinción decide dónde hay que poner el control.
Primero se consigue el material: listas de pares usuario/contraseña procedentes de filtraciones de otros servicios, que circulan agregadas y depuradas.
Después se automatiza el envío contra tu endpoint de login, repartido entre muchas direcciones IP para que ninguna supere tu umbral de bloqueo. El atacante no necesita una tasa de acierto alta: le basta con que una fracción pequeña de tus usuarios reutilice contraseñas.
Por último se separan las credenciales que funcionan. Esa lista validada es el producto: se explota más tarde, o se vende.
Un segundo factor se pide después de dar la contraseña por buena. En ese momento el atacante ya ha obtenido lo que buscaba en esta fase: saber que la credencial es válida. Que no complete el acceso no le impide anotar el par como bueno.
Hay además dos efectos secundarios que se subestiman. El primero es el coste: si el segundo factor es un SMS, cada intento con contraseña correcta dispara un mensaje que pagas tú, y existe un fraude específico que explota justamente eso, el llamado SMS pumping. El segundo es la fatiga de notificaciones: bombardear a un usuario con peticiones de confirmación acaba consiguiendo que alguna se apruebe.
Un control que actúe antes de la validación de la contraseña, y que no dependa de una señal que el atacante pueda imitar. Ahí es donde encaja la autenticación del cliente: si el endpoint de login solo acepta conexiones de instalaciones registradas de tu app, el ataque no tiene por dónde entrar, porque su cliente no tiene certificado que presentar.
ShieldCert está en beta cerrada. Pide acceso y lo montamos contigo.