Fuerza bruta inversa (I)

Hoy vamos a hablar de una técnica de la que ya se ha hablado en muchas ocasiones en otros blogs y páginas de seguridad, la fuerza bruta, pero en este caso nosotros no vamos a hablar de la fuerza bruta en sí, sino de la fuerza bruta inversa, que es menos popular.

Nuestro post de hoy busca combinar esta técnica con otra una vulnerabilidad muy frecuente en las páginas web, la fuga de información a partir de los mensajes de error. Con la combinación de ambas técnicas podemos conseguir acceso a una aplicación que a lo mejor no es vulnerable de otra manera, ya que la fuerza bruta suele ser el último recurso en una auditoría al existir técnicas que logran su objetivo en menos tiempo.

Para ello, en primer lugar vamos a explicar en que consisten cada una de las técnicas:

Un ataque de fuerza bruta inversa, es un ataque que busca a partir de una contraseña (o conjunto de contraseñas) que usuarios están usando esa contraseña, de manera que se tenga un acceso correcto a la aplicación. Teniendo en cuenta que los usuarios suelen tender a buscar la contraseña más sencilla posible y que en muchos casos los desarrolladores buscan la sencillez por encima de la seguridad, hace que sea un ataque satisfactorio en algunos casos.

Este ataque, en resumen, no busca una víctima en concreto sino una que pueda coincidir con la contraseña que estamos introduciendo.

geekandpoke_bruteforce

Por otro lado, la vulnerabilidad de fuga de información a partir de los mensajes de error se tiene cuando los mensajes de error de una web dan más información de la que deberían dar en un principio. Esta información es útil al orientar al usuario de cara a si está realizando el login de manera correcta o no, pero en caso de ser utilizado de manera maliciosa, puede proporcionar a nuestro atacante un listado con los nombres que están dados de alta en la aplicación.

Durante este post, vamos a plantear como planificar un ataque utilizando esta técnica contra una web. En primer lugar, tenemos que comprobar que la web que estamos auditando presenta fuga de información, para ello, en nuestro caso hemos revisado el código de la web en busca de los mensajes de error que tenemos. En este caso, si el usuario existe pero la contraseña no es correcta, obtenemos un mensaje de “fallo del servidor”, mientras que en caso de no existir, obtenemos un mensaje de “login incorrecto”, por lo que si automatizamos esta consulta podemos obtener un listado de usuarios que existen en la aplicación.

En nuestro caso, los usuario que hemos utilizado son un repertorio de nombres de hombre y de mujer combinados de manera que tenemos unos 9000 nombres. Estos nombres, de cara a aumentar las posibilidades de acierto, los concatenamos con un listado de 100 apellidos, por lo que tenemos alrededor de 900.000 usuarios que comprobar de manera rápida y sencilla.

Como comprobar estos usuarios de uno en uno sería una locura, utilizamos herramientas que hagan las consultas de manera automática, registrando en un nuevo fichero los resultados positivos (usuarios que existen en la web), de manera que tenemos un listado con los usuarios que vamos a utilizar para nuestra fuerza bruta inversa.

Las contraseñas que vamos a utilizar las hemos obtenido del listado de las 500 contraseñas más usadas. Como todos sabemos, no debemos usar ninguna de las contraseñas que aparecen en el listado ya que tenemos que generar contraseñas robustas incluso cuando no nos lo pida la propia aplicación. Estas contraseñas deberán tener como mínimo una mayúscula, una minúscula, un caracter especial y/o un número y tener un longitud mínima de 8 dígitos siempre y cuando nos lo permita la web. Por muy cómodo que sean otro tipo de contraseñas, lo único que estaremos haciendo es facilitar a los atacantes el que se hagan con el control de nuestra identidad.

password
Por lo que con estas 500 password y el casi millón de usuarios que tenemos, ejecutamos nuestro script de fuerza bruta, obteniendo en más de una ocasión resultados positivos.

Estos ataques se evitan utilizando captchas a la hora de introducir los datos de conexión de los usuarios. De cara a añadir más seguridad, desde Wh0s recomendamos la utilización  de un doble factor de autenticación como pueden ser un OTP, un token o aplicaciones como Latch, que te aseguran que aunque el usuario malicioso tenga la contraseña, el acceso no se va a producir.

En un próximo post explicaremos en mayor detalle el proceso seguido para realizar este ataque.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *