Hoy presentamos y explicamos una herramienta de ataque que cada vez es más frecuente entre nuestros clientes: el Comprobador de cuentas.
Esta herramienta de credential stuffing no es nueva, pero su uso está aumentando rápidamente por razones que analizaremos a continuación. Aunque conceptualmente son muy simples y fáciles de usar, los verificadores de cuentas son extremadamente poderosos.
Un verificador de cuentas es una herramienta de ataque que toma listas de pares de nombre de usuario y contraseña filtrados (es decir, “credenciales”) y los prueba en un sitio web objetivo.
Los paquetes potentes de verificación de cuentas cuestan tan sólo $100, y los adversarios también pueden crear sus propios verificadores de cuentas a partir de kits de herramientas de automatización web disponibles en el mercado, como Mechanize, PhantomJS, IEC.py, Sikuli, Selenium o iMacros. Estos kits de herramientas reducen la carga técnica para escribir verificadores de cuentas y realizar ataques de credential stuffing .
A continuación se muestra un verificador de cuentas "benigno" llamado namechk.com que ilustra cómo funcionan los verificadores de cuentas. Esta herramienta verifica si un nombre de usuario determinado está disponible en varias redes sociales. Verificamos el nombre de usuario “shapesecurity” y esta herramienta identificó correctamente todos los sitios en los que se tomó ese nombre de usuario.
Este servicio utiliza un script que prueba automáticamente un nombre de usuario determinado en todos los sitios web visibles en la imagen (por ejemplo, Blogger, Facebook, YouTube, Twitter, etc.).
Un verificador de cuentas criminales funciona de la misma manera que la herramienta mencionada anteriormente y agrega capacidades adicionales, como verificar si varias contraseñas (basadas en algoritmos de adivinación o una de las 25 contraseñas principales ) funcionan en ese sitio. El proceso completo de verificación de nombres de usuario y contraseñas, junto con intenciones maliciosas, conduce al ataque generalizado de credential stuffing.
Un estudio de Microsoft descubrió que el usuario promedio tiene poco más de seis contraseñas, que cada contraseña se comparte entre cuatro sitios diferentes y que cada usuario tiene alrededor de 25 cuentas que requieren contraseñas. Es decir, una violación de datos en cualquier lugar hace que las contraseñas de 3.9 de los sitios principales se hagan públicas.
Brian Krebs escribió sobre el verificador de cuentas listo para usar a continuación. Este es el mismo tipo de herramienta utilizada para hackear Hilton .
Este verificador puede determinar si las credenciales son válidas y extraer el saldo de puntos, los últimos cuatro dígitos del número de la tarjeta de crédito y la dirección de facturación de la tarjeta.
A continuación se muestra una muestra del código subyacente de un verificador de cuentas. Este verificador de cuentas prueba un gran número de credenciales. Cuando encuentra un par de credenciales válido, extrae información de identificación personal (PII) y roba el valor almacenado y los detalles de la tarjeta de crédito de la cuenta.
El combustible para cualquier verificador de cuentas es una lista de credenciales. Afortunadamente para los atacantes, hay una gran cantidad de credenciales que son públicas.
Cada día se filtran cientos de credenciales más en esta cuenta de Twitter: twitter.com/dumpmon . Muchos profesionales de seguridad utilizan esta lista para identificar qué cuentas de usuario en sus respectivos sitios han sido comprometidas y para bloquear las cuentas comprometidas. Obviamente, los atacantes también utilizan esta lista, junto con verificadores de cuentas, para encontrar cuentas vulnerables que luego utilizan para diversas actividades fraudulentas.
La respuesta requiere comprender el mecanismo mediante el cual funcionan los verificadores de cuentas.
Los verificadores de cuentas funcionan utilizando los elementos de formulario estáticos de la página de inicio de sesión como una API implícita. En el ejemplo de código anterior, el atacante hace referencia a varios nombres de elementos de formulario para interactuar con la página web objetivo. La mayoría de los sitios web no pueden distinguir estas interacciones de las interacciones humanas normales.
y por lo tanto aceptan con gusto el tráfico atacante. Esto permite al atacante automatizar el sitio web mediante verificadores de cuentas y ejecutar fácilmente millones de pruebas en el transcurso de unos pocos días o semanas (a menudo utilizando una gran botnet distribuida y una gran cantidad de direcciones IP para evitar los límites de velocidad y volumen). De este modo, incluso atacantes muy poco sofisticados pueden lanzar de forma trivial ataques potentes contra muchos de los sitios web más grandes del mundo.
Para defender los sitios web contra dicha actividad, que llamamos “automatización no deseada”, utilizamos un enfoque que es familiar para los atacantes: cambiamos el código subyacente del sitio en cada página vista. Así como los autores de malware han utilizado durante mucho tiempo código polimórfico para evadir los productos antivirus presentando constantemente firmas diferentes, la solución de Shape crea un objetivo en movimiento que frustra los scripts que buscan automatizar un sitio web. Esto permite a los administradores de sistemas aumentar el esfuerzo que debe invertir un atacante para crear o automatizar con éxito un sitio web determinado.
Por supuesto, los lectores expertos señalarán numerosas formas de llevar a cabo ataques de diferentes maneras. Está más allá del alcance de este artículo (pero tal vez sea tema de futuros artículos) considerar dichos ataques (DOM, GUI y otros). Por supuesto, Shape se concentra en derrotar de manera integral todos esos ataques y tiene soluciones en cada uno de esos niveles.