Volvemos con una sección que ha tenido un gran éxito entre vosotros: #MundoHacker, donde tratamos en varios tutoriales las medidas para atacar y/o defenderse de la fuerza bruta en el mundo digital.
Hoy quería hablaros de los ataques por fuerza bruta, que se aprovechan por lo general de la poca imaginación de los usuarios a la hora de elegir contraseñas, y de la mayor o menor medidas que tenga el servicio para protegerse.
Índice de contenido
Antes de nada
Deciros que un ataque por fuerza bruta suele ser el último recurso de un hacker, ya que por lo general, hay métodos más directos para obtener el acceso a la información privada (como ya vimos en la anterior entrega con SQL inyection).
Sin embargo, hay algunos casos en los que resulta extremadamente interesante, como pueden ser:
- Acceder a un servicio de una persona en particular (correo, skype, cuenta de un foro, intranet,…) para suplantarle la identidad.
- Entrar en un servicio privado con fuertes medidas de protección sin levantar sospechas.
- Buscarle las cosquillas a la petición de usuario/contraseña, a ver por donde falla.
Atacando
El ataque consiste en probar aleatoriamente usuario/contraseña, hasta que alguno case. Por supuesto, esto sería casi imposible sin haber hecho previamente un pequeño estudio del panorama:
- Usuarios genéricos: Admin, administrador, guest,…
- Usuarios conocidos (que sean visibles desde fuera).
- Usuarios aleatorios (y más posibles) que cumplan las directrices marcadas a la hora del registro.
- La ley de lo más simple: Las personas no se quieren complicar en sus usuarios y contraseñas, y por lo general, o usan uno para todos los servicios que pueden, o en caso que por política de contraseñas (o user), tengan que cumplir unas estrictas acotaciones, se tiende a simplificar lo máximo posible.
Esta ley nos viene como anillo al dedo a cualquier maligno, puesto que si por ejemplo la contraseña tiene que tener 6 carácteres y como mínimo un número, podemos estar seguros que una de las contraseñas más usada (o con más probabilidad de ser usada) sería 123456.
Este tipo de ataque tiene dos grandes vulnerabilidades: los captchas y los bloqueos, y está bien que hablemos un poco de cada uno.
Captchas
Como bien sabéis, los captchas son esas pestañas obligatorias con una imagen y un texto que por lo general cuesta leerlo hasta para un ser humano, y del que tenemos que reproducir en escritura lo que trae escrito. Son muy molestos, y quizás sea esta la gran ventaja que tenemos contra ellos, puesto que muchos servicios los evitan.
Pero por otra parte, evitan con una gran efectividad este tipo de ataques, así que como desarrolladores es recomendable pensar en ellos.
El método más efectivo, que aúna las ventajas en seguridad contra ataques por fuerza bruta y no molesta a los usuarios, sería implementarlo de forma que solo fuera obligatorio (y visible) a partir de un número de fallos (como nos podemos encontrar en la mayoría de servicios de Google).
Bloqueos
Existen varios tipos, pero por lo general se trata de una medida de seguridad que bloquearía temporalmente una cuenta o una IP después de haber introducido varias contraseñas erróneas. No es de las mejores medidas, ya que por un lado, puede usarse para joder a un usuario en particular, o dejar sin acceso al servicio temporalmente a toda una institución, y por otro lado, como os explicaré más abajo, es hasta cierto punto sencilla de evitar en fuerza bruta.
Usuarios, contraseñas y un poco de matemáticas
Nuestro amigo Chema lo explicaba de forma sencilla hace ya unos días. Existe una relación no escrita entre los usuarios y las contraseñas de un servicio (se entiende que hablamos de un servicio con un número elevado de cuentas, no una web personal).
Si A es el número de usuarios, y B es el número de contraseñas del servicio, podemos estar seguro que A siempre es mayor que B. Y esto es así porque generalmente las contraseñas tienen que cumplir una fórmula (política de contraseñas) y se tiende a repetir contraseñas entre diferentes servicios (y por lo general entre usuarios).
Además, conocemos de antemano que existen los bloqueos, y que lo más normal es que salten cuando se meten varias contraseñas mal en una usuario en un periodo de tiempo, por lo que…
¿Y por qué no hacemos el ataque por fuerza bruta al revés?
Es decir, elegimos la contraseña más probable (podría ser 123456, como ya hemos visto, o password, o la que toque), y mediante un script, metemos de forma automática cientos de posibles usuarios (quizás incluso tengamos alguno ya conocido de antemano).
Entiendo que esta situación es desesperada (quizás como dije al principio de la entrada lo único que nos interesa es entrar en la cuenta de un usuario), pero habrá casos en los que nos resulte más favorable éste último método, del que por cierto, el captcha suele ser la única protección válida.
Aplicando nuestros conocimientos de SQL inyection
El otro día hablamos de los ataques a SQL ¿Podríamos usar este conocimiento para hacer ataques por fuerza bruta más sofisticados?
Por supuesto.
Para ello, usaríamos alguna extensión o programa que nos permitiese recabar información de las peticiones internas del código (por ejemplo, una extensión para firefox, Tamper Data).
Como vemos, estamos ante una petición POST, que requiere Usuario (username) y Contraseña (password), y además, con botón derecho > ver fuente, nos devolvería el tipo de error (el código que nos devuelve del error al introducir un usuario o contraseña erróneo), que podría ser:
<html><tittle>Error usuario</tittle>Usuario y/o Contraseña incorrectos
Con esta información, ya podríamos crear un ataque dirigido más sofisticado, que tendría las siguientes características:
- Carga los usuario/contraseña elegidos (normalmente de un fichero en texto plano).
- Utiliza un bucle del tipo “foreach” (o cualquier otro bien optimizado) para juntar pares de datos.
- Lanza la petición (de la que sabemos que es POST y su estructura) para cada par.
- ‘Parsea’ la respuesta con la que ya tenemos y que sabemos que es fallo (por ejemplo controlando del “Error usuario” título).
- En caso de que la respuesta no tenga este patrón, estaríamos ante un par correcto.
Resumiendo
Los ataques por fuerza bruta se usan para dos tres cosas principalmente:
- Intentar acceder a la cuenta de una persona en particular: Ya conocemos su usuario, y queremos obtener su contraseña. Toda información extra que tengamos nos será de gran ayuda (otros servicios que usa, preferencias,…).
- Intentar acceder al servicio: Para esto, lo mejor es usar la fuerza bruta a la inversa, ya que tiene más probabilidades de acierto y de paso nos saltamos los bloqueos más comunes.
- Para bloquear el servicio a alguien o a una IP: Sería aprovecharse de una posible implementación de los bloqueos, por lo que no recomiendo su uso, o los recomiendo extremando la precaución (un número muy alto de fallos, y bloqueo por usuario, y no por IP, por ejemplo).
La mejor defensa: Los captchas son el talón de Aquiles de este ataque, ya que son muy difíciles (en algunos casos casi imposibles) de saltar automáticamente. Pero el mejor método para implementarlos es que aparezcan al tercer o quinto fallo en la contraseña, y no desde el principio, ya que también son una gran molestia para el usuario.
De hecho te dejo por aquí el especial que dedicamos a las Nuevas Metodologías de Descubrimiento de contraseñas, y cómo los sistemas annti-fuerza bruta tradicionales se han quedado anticuados.
________
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 para estar actualizado en tu día a día, piensa si merece la pena invitarme a lo que vale un café, aunque sea digitalmente.
necesito tu ayuda o servicioos! por favor. . llevo mucho tiempo buscando a alguien como tu. espero tu respuesta a mi mail.de ante mano gracias. saludos cordiales
Por ahora no he recibido ningún mail, pero te aseguro que tan pronto me llegue intentaré ayudarte en lo que pueda.
un cordial saludo!
Hola Pablo, estoy un poco desesperado ya que no paran de bloquearme el acceso a mi admin por intentos fallidos de entrada, de todas maneras lograrone ntrar y me cambiaron permisos de carpetas y contenido, la verdad es que no lo entiendo ya que mi web no tiene ningun valor para nadie.
He cambiado la ruta del admin, he puesto un rsfirewall, he complicado las contraseñas, y continuo recibiendo ataques.
Que solución le pondrias tu ?
Puedo averiguar quien esta tan pesadito con mi web ?
Te agradecere cualquier tipo de ayuda.
Joan
pd. Mi web esta hecha con joomla 2.5
Hola Joan, lo cierto es que por lo general este tipo de ataques se hacen automáticamente, buscando debilidades en CMS colgados en internet al azar. Por lo que veo el problema es que el ataque es tan persistente que copa el ancho de banda que tienes ¿no? ¿llegas a perder el servicio en algún momento (me refiero a que si la página no carga correctamente)?
Los pasos que has hecho son los correctos. Lo primero evitar que vuelvan a entrar. Ya estás en alguna lista negra, por lo que ahora más que nunca tienes que complicarle las cosas a los bots. Si aun así siguen copándote el ancho de banda, intentaría restringir el acceso a tu web desde países de habla distinta a la tuya. Para ello fíjate en las IPs que te llegan por ejemplo de Rusia o China. Si tu página está en español, y recibes por ejemplo miles de accesos desde Rusia, está claro que la gran mayoría, sino todos, son ataques.
Otra recomendación es cambiar los nombres de las tablas de la base de datos. Si la web ya está en curso, mucho cuidado con esto, pero todo lo que tengas personalizado de la estructura formal de joomla dificulta su ataque. Y actualiza a la última versión (andan por la 3). Esto último es muy importante, ya que seguro que han corregido cientos de fallos de seguridad en el transcurso.
Gracias Pablo, eres un crack.
Un saludo: Joan
Para eso estamos Joan, jeje. Todos sufrimos este tipo de ataques, y al final te das cuenta de qué deberías haber hecho tarde. Pero bueno, normalmente tiene solución.
¡Mucha suerte!
Como le puedo hacer para recuperar un correo mío si no recuerdo mi pregunta secreta
¿Y no tenías definida una cuenta de email alternativa? Normalmente te dan varias alternativas (enviar solicitud a otra cuenta que pusiste por si ocurría algo, contestar a una pregunta que tú mismo decidiste y enviar notificación a un móvil.
Las tres alternativas requieren que con anterioridad hayas decidido y completado estos campos (que en algunos casos es obligatorio).
En caso contrario, poco más se puede hacer. Si esperas entrar en un servicio masivo como Gmail por fuerza bruta está verdaderamente complicado. Al ser tu correo, bien puedes intentar recordar la contraseña o probar las que sueles usar para estos tipo de servicios.
Hola pablo, tengo un viejo programa de contabilidad en DOS el cual no uso hace un buen tiempo, pero por estos dias lo estoy necesitando urgentemente. El programa pregunta una clave numerica de 6 digitos, por ello necesito un programa de FUERZA BRUTA que me permita encontrar la constraseña.
¿Que me recomiendas?
Saludos y gracias
Isabel
Buenos días Isabel. Puesto que se trata de un programa en DOS y la contraseña es numérica de 6 dígitos, yo probaría algo tal que así.
for /l %i in (0,1,999999) do echo &Start %i-1 &exit
Con esto a priori probarías desde el 0 al 999999 y lo escribirías. Ahora el problema depende de si el programa tiene una interfaz propia, o defensas contra pruebas de este tipo.
En ese caso, habría que buscar algo más específico, y tratándose de lo que se trata supongo que no será sencillo.
Saludos, y mucha suerte!
Buenas, disculpe hace ya mas de un mes que estoy hallando la manera de hackear una cuenta gmail, la cual creo que es importante para mi (aunque no es mia) pero al hacerlo no dañare a la persona ( solo son fines personales ) , vale pero la verdad es que no encuentro un metodo para hacerlo ….. Por favor digame si existe algun metodo para vulenerar una cuenta gmail ( aparte de el ataque con fuerza bruta) y bueno en este caso el usuario no acede a esta cuenta por lo tanto crea un malware para pishing tampoco servira ….digame hay alguna otra forma ….
.—saludos —
Lo siento LuisT, pero lo que intentas hacer es ilegal (y por tanto no puedo ayudarte). Gmail es uno de los servicios más seguros que hay. De hecho, básicamente la mayoría de ataques se basan en ingeniería social (phising, por ejemplo, como bien dices), ya que la fuerza bruta está descartada.