Ataques de fuerza bruta: Conceptos y prevención en ciberseguridad

Ataques de fuerza bruta: Conceptos y prevención en ciberseguridad

¿Qué es un ataque de fuerza bruta?

En el mundo de la ciberseguridad se conocen como ataques de fuerza bruta los métodos empleados para intentar obtener la contraseña de acceso de un usuario a algún servicio probando distintas combinaciones de caracteres, números y símbolos.

Para que estos ataques puedan tener alguna posibilidad de éxito se llevan a cabo automatizando el proceso de login mediante distintas herramientas y aplicaciones.

Echando un vistazo a la siguiente imagen nos podemos hacer una idea de cómo funcionan estos programas.

La imagen pertenece a un log de Winbox, la aplicación que se utiliza para administrar dispositivos de la marca Mikrotik (routers, switches, APs, etc.)

Podemos ver cómo han quedado registrados sucesivos intentos de acceso, 8 cada segundo. Estos dispositivos suelen ser objetivo de este tipo de ataques porque el usuario administrador configurado por defecto es conocido (lo podemos ver en la imagen), por eso es conveniente crear un usuario nuevo cuando se hace la primera configuración.

Antes de lanzar este tipo de ataque los autores habrán rastreado puertos abiertos en la red pública. Los puertos son los accesos que abre un ordenador para aceptar conexiones. Un conjunto de ellos es de uso habitual por servicios estándar y están registrados en la IANA (Internet Assigned Numbers Authority).

Por ejemplo, el puerto 22 es el que abre el servicio SSH para permitir el acceso remoto a una consola de comandos de los sistemas derivados del histórico UNIX (Linux y FreeBSD), el puerto 3389 es el que abre el protocolo RDP para permitir el acceso remoto al escritorio de un sistema Windows, los puertos 80 y 443 son los que por defecto utilizan los protocolos HTTP y HTTPS, es decir los puertos a los que se conectan los navegadores para descargar las páginas web que visitamos cunado navegamos. Existen muchas herramientas para escanear puertos: NMAP, NETCAT, Angry IP Scanner, etc.

En la siguiente imagen podemos ver un ejemplo del uso de NMAP sobre la dirección scanme.nmap.org.

Este podría ser un ejemplo de hackeo bienintencionado, hackeo ético, con el que se esté investigando el nivel de seguridad de un entorno determinado para eliminar vulnerabilidades. Si ese fuese el caso el siguiente paso sería ocultar urgentemente el puerto 22 detrás de una VPN. Pero si tratase de un ataque real siguiente paso sería pasar al ataque de fuerza bruta probando distintas contraseñas para conectarse al puerto 22.

Ataques de fuerza bruta en la actualidad

El ejemplo de ataque que hemos visto es muy peculiar porque es muy difícil encontrar aplicaciones que permitan intentos de login tan continuos sin bloquear temporalmente el acceso.

Todos hemos experimentado estos bloqueos cuando hemos olvidado la contraseña, o nos hemos equivocado al introducirla en el ordenador o hemos intentado desbloquear el móvil. Pero los ataques de fuerza bruta tienen éxito porque no son tan aleatorias como podemos creer.

Para entenderlo hay que explicar que los sistemas almacenas las contraseñas de sus usuarios para poder comprobarlas cuando estos las introducen. Para evitar el riesgo que supondría un filtrado de contraseñas éstas son almacenadas tras ser codificadas mediante distintos algoritmos, estos códigos son el HASH de la contraseña, y los protocolos de encriptación que se utilizan ya se idearon de forma que no se pueda conseguir una contraseña a partir de su HASH.

Es decir, a partir de una contraseña y un algoritmo podemos generar su código HASH, pero no es posible el recorrido inverso para obtener la contraseña. Cuando un usuario ingresa su contraseña el sistema vuelve a calcular su hash y lo compara con el almacenado. Así se pretende eliminar el riesgo de un filtrado de hashes, pero sigue siendo un riesgo porque los atacantes cuentan con herramientas para salvar estos obstáculos, por ejemplo, los ataques de diccionario y las Rainbow Tables.

Los primeros son combinaciones de contraseñas comunes o basadas en palabras del diccionario. Los segundo son más sofisticados, las Rainbow Tables son tablas precalculadas que contienen pares de contraseñas y sus hashes correspondientes para una amplia gama de posibles contraseñas. Si un atacante se hace con una serie de códigos HASH y cuenta con una Raibow Table sólo tiene que ver si el HASH está entre los de su tabla y probar su contraseña. Estos ataques no intentan descifrar una contraseña sino adivinarla.

La fortaleza de las contraseñas contra los ataques de fuerza bruta

Junto al cambio de contraseña periódico, la fortaleza de las contraseñas es la mejor forma de protegernos de los ataques de fuerza bruta. Una contraseña segura debe contar con las siguientes características:

  • Longitud: Contraseñas más largas proporcionan más combinaciones posibles, lo que hace que un ataque de fuerza bruta sea más difícil y lleve más tiempo.
  • Complejidad: Incluir en la contraseña letras mayúsculas y minúsculas, dígitos y caracteres especiales aumenta significativamente la cantidad de combinaciones posibles, haciendo que sea más difícil para un atacante adivinar la contraseña. Si sólo utilizamos números hay 10 posibilidades para cada una de las posiciones que formen la contraseña, para una contraseña formada por 8 números existen 10^8 = 100.000.000 contraseñas posibles. Si añadimos el resto de los caracteres las posibilidades para cada posición son 94 (26 letras mayúsculas + 26 letras minúsculas + 10 dígitos + 32 signos especiales), de lo que resultan 94^8 combinaciones posibles, o lo que es lo mismo, 6.095.689.385.410.816 contraseñas diferentes (aprox. 6.095 billones)
  • Evitar Palabras Comunes: Evitar el uso de palabras comunes o secuencias de teclado fáciles de adivinar dificulta que un atacante utilice ataques de diccionario.
  • Uso de Caracteres Aleatorios: Incluir caracteres aleatorios o no alfabéticos aumenta la complejidad y la seguridad de la contraseña.
  • No Utilizar Información Personal: Evitar el uso de información personal, como nombres, fechas de nacimiento o números de teléfono, reduce la posibilidad de que un atacante adivine la contraseña mediante la recolección de información.

En las siguientes tablas podemos ver cómo aumenta el tiempo necesario para romper una contraseña cuando se incrementa la complejidad.

Contraseñas resistentes a un ataque de fuerza bruta ejecutado durante menos de 1 minuto

Contraseñas resistentes a un ataque de fuerza bruta ejecutado durante menos de 1 hora

Contraseñas resistentes a un ataque de fuerza bruta ejecutado durante menos de 1 día

Contraseñas resistentes a un ataque de fuerza bruta ejecutado durante menos de 1 año

Contraseñas resistentes a un ataque de fuerza bruta ejecutado durante mucho tiempo

Contraseñas innecesariamente complejas teniendo estimando que, por ejemplo, la actividad solar hará imposible la vida en el planeta dentro de 5000 millones de años

Conclusiones

  • No se deberían utilizar contraseñas de menos de 8 caracteres, y para que una contraseña de 8 caracteres ofrezca alguna garantía debe estar compuesta por números, minúsculas, mayúsculas y caracteres especiales. Y aun así, para que fuese completamente segura debería cambiarse cada 8 horas. Por tanto no son recomendables las contraseñas de menos de 10 caracteres. Se pueden encontrar webs especializadas que aconsejan longitudes de al menos 15 caracteres.
  • Si la frecuencia máxima con la que queremos cambiar las contraseñas es de 1 mes deberíamos utilizar contraseñas de 18 números, 12 minúsculas, 11 mayúsculas y minúsculas o un conjunto de 10 mayúsculas, minúsculas y números.
  • Es más segura una contraseña de 10 números, caracteres alfabéticos y signos especiales que una formada por 18 caracteres que sólo sean números, y no tiene por qué ser más difícil de recordar. De esto hablamos en el último apartado.
  • Es necesaria contar con soluciones que monitorizar y supervisan intentos de autenticación en los sistemas de manera recurrente en un corto período de tiempos y provocando fallos en cada uno de esos intentos, de manera que podamos identificar tal patrón y aislar la fuente que realiza dicha operación.

El problema de las contraseñas complejas

El uso de contraseñas complejas crea un dolor de cabeza para los usuarios finales que necesitan recordar muchas contraseñas largas y complejas. Aquí van algunos consejos que nos pueden ayudar.

  • Pass-Phrase: Frases clave para contraseñas seguras y fáciles de recordar

    Una frase clave o frase de contraseña son tres o más palabras aleatorias unidas, como «Paciente-tragaluz-ballena». Agregar algunos intercambios de caracteres y escribir mal una de las palabras haría que la contraseña fuera aún más segura, y también sería mucho más fácil de recordar que una cadena de letras y números aleatorios de longitud similar.
  • Comentarios dinámicos durante el restablecimiento de contraseñas

    Es especialmente frustrante decidir una nueva contraseña y luego recibir un mensaje del estilo «la contraseña no cumple con los requisitos requeridos». Proporcionar comentarios dinámicos sobre la contraseña ayuda a que los usuarios pueden ver en tiempo real si su nueva contraseña se ajusta a la política de su organización y, si no es así, pueden ver por qué no y solucionarla rápidamente.
  • Caducidad de la contraseña basada en la longitud

    El periodo de vigencia basado en la longitud ofrece a los usuarios la opción de elegir entre crear una contraseña que apenas cumpla con el requisito de longitud de la organización con la condición de que la tengan que cambiar en un corto espacio de tiempo. O pueden aumentar la longitud de la contraseña y esperar más, tal vez 180 días, hasta que caduque.

En definitiva, la administración de credenciales es un pilar fundamental tanto de la seguridad personal como de la de las organizaciones al que, por desconocimiento y pereza, no le solemos prestar la importancia que merece. Esperemos que este artículo sirva para mostrar su importancia y ayudar a afrontarla.

En definitiva, la administración de credenciales es un pilar fundamental tanto de la seguridad personal como de la de las organizaciones, y por desconocimiento y pereza no se le suele prestar la importancia que merece. Estas ideas intentan facilitar a los usuarios su gestión, y tratan de dar a las organizaciones herramientas que ayuden a aliviar ese esfuerzo.