Uso de Hydra para descifrar contraseñas

LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás sobre las vulnerabilidades de las contraseñas y cómo utilizar Hydra, una herramienta de seguridad muy popular para evaluar la robustez de las claves. Simularás un ataque de fuerza bruta en un sitio web de práctica para comprender cómo las contraseñas débiles pueden verse comprometidas fácilmente.

Esta experiencia práctica demostrará por qué las contraseñas seguras son fundamentales en la ciberseguridad. Adquirirás habilidades prácticas para configurar Hydra, analizar los resultados de un ataque y evaluar las medidas de seguridad de las contraseñas.

Este es un Laboratorio Guiado, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel intermedio con una tasa de finalización del 59%. Ha recibido una tasa de reseñas positivas del 99% por parte de los alumnos.

Exploración del sitio web objetivo

En este paso, examinaremos el sitio web que vamos a probar e introduciremos el concepto de los ataques de fuerza bruta. Antes de empezar a usar herramientas automatizadas, es importante entender cómo funcionan los sistemas de autenticación básicos y qué es lo que intentamos lograr.

Abre la pestaña Web 8080 en tu entorno de laboratorio. Esto mostrará una interfaz de navegador web donde verás una página de inicio de sesión sencilla con campos para introducir un nombre de usuario y una contraseña. Esto es similar a las páginas de acceso que encuentras en muchos sitios web a diario.

Captura de pantalla de la página de inicio de sesión

Intentemos algunos inicios de sesión básicos para entender cómo responde el sistema:

  1. Primer intento:

    • Usuario: test
    • Contraseña: password123
  2. Segundo intento:

    • Usuario: admin
    • Contraseña: admin

Después de cada intento, recibirás un mensaje de "Invalid username or password". Esta respuesta genérica es intencionada: no te indica si el usuario existe o si solo la contraseña era incorrecta. Esto se conoce como "seguridad por oscuridad" y ayuda a evitar que los atacantes recopilen información sobre cuentas válidas.

Observa que puedes seguir probando diferentes combinaciones sin ninguna restricción. En sistemas de producción, las medidas de seguridad como el bloqueo de cuentas o los CAPTCHAs se implementarían normalmente tras varios intentos fallidos para evitar ataques automatizados. La ausencia de estas protecciones en nuestro entorno de laboratorio lo hace ideal para demostrar técnicas de fuerza bruta.

Lo que acabas de hacer manualmente (probar diferentes combinaciones de usuario y contraseña) es esencialmente una versión manual de un ataque de fuerza bruta. En ataques reales, los hackers utilizan herramientas automatizadas para probar miles de combinaciones por segundo. Este ejercicio muestra por qué las contraseñas simples como "password123" o "admin" son extremadamente vulnerables, y por qué los sistemas necesitan medidas de seguridad adecuadas para prevenir tales ataques.

Examen de la lista de contraseñas

Ahora que comprendemos el concepto básico de un ataque de fuerza bruta, examinemos una lista de contraseñas comunes que los atacantes podrían utilizar. Antes de continuar, es importante saber que los ataques de fuerza bruta funcionan probando sistemáticamente todas las combinaciones posibles de contraseñas hasta encontrar la correcta. El uso de listas de contraseñas precompiladas hace que este proceso sea mucho más rápido.

Regresa a la pestaña Desktop Tab en tu entorno de laboratorio. Aquí es donde ejecutaremos todos nuestros comandos y visualizaremos los resultados.

Abre la Xfce Terminal en el escritorio haciendo doble clic en su icono. La terminal es nuestra herramienta principal para ejecutar comandos en este laboratorio.

Xfce Terminal en el escritorio

En escenarios del mundo real, los atacantes suelen utilizar listas extensas de contraseñas provenientes de filtraciones de datos pasadas. Estas listas contienen millones de contraseñas que quedaron expuestas en incidentes de seguridad. Para nuestro laboratorio, utilizaremos una lista más pequeña de contraseñas débiles comunes encontradas en internet para demostrar el concepto. Esta lista ya ha sido preparada para ti y se encuentra en /home/labex/project/500-worst-passwords.txt.

Examinemos el contenido del archivo utilizando el comando head, que muestra las primeras líneas de un archivo:

head -n 10 500-worst-passwords.txt

Este comando mostrará las primeras 10 contraseñas de la lista. La opción -n 10 le indica al comando que muestre exactamente 10 líneas.

123456
password
12345678
1234
12345
dragon
qwerty
567sjej
mustang
letmein

Estas contraseñas son opciones comunes que muchas personas, lamentablemente, todavía utilizan. Observa lo simples y predecibles que son: en su mayoría secuencias numéricas o palabras comunes. Esta es precisamente la razón por la que los atacantes suelen probar estas primero en sus intentos de obtener acceso no autorizado.

Al usar una lista como esta, un atacante puede acelerar enormemente su ataque de fuerza bruta. En lugar de probar cada combinación posible de caracteres (lo que podría llevar años), comienzan con las contraseñas más probables, aumentando significativamente sus posibilidades de éxito rápido. En ciberseguridad, llamamos a esto un "ataque de diccionario", una versión más inteligente de la fuerza bruta que utiliza contraseñas conocidas en lugar de conjeturas aleatorias.

Configuración de Hydra

Ahora que tenemos nuestra lista de contraseñas, configuremos Hydra, la herramienta que utilizaremos para automatizar nuestra simulación de ataque de fuerza bruta. Hydra es una potente herramienta de descifrado de contraseñas que ayuda a los profesionales de seguridad a probar la robustez de las claves probando sistemáticamente diferentes combinaciones.

Primero, crearemos un archivo de texto sencillo que contenga nombres de usuario comunes que queremos probar. Esto es importante porque muchos sistemas utilizan nombres de usuario predeterminados y predecibles que los atacantes podrían intentar primero. Ejecuta estos comandos:

cd ~/project
echo -e "admin\nuser\nroot" > ~/project/usernames.txt
cat ~/project/usernames.txt

El primer comando (cd ~/project) asegura que estemos en el directorio de trabajo correcto. El segundo comando crea un archivo llamado usernames.txt que contiene tres nombres de usuario comunes (admin, user y root), cada uno en una línea nueva. El tercer comando muestra el contenido del archivo para que podamos verificar que se creó correctamente.

Ahora, aseguremonos de que Hydra esté instalado. En un escenario real, normalmente lo instalarías tú mismo, pero en este entorno de laboratorio:

Nota: Los usuarios gratuitos no pueden conectarse a internet, por lo que Hydra ya está preinstalado en el entorno del laboratorio; puedes omitir este comando. Actualiza a una cuenta Pro para practicar la instalación de Hydra por tu cuenta.

Solo para usuarios Pro
sudo apt-get update
sudo apt-get install hydra -y

Hydra funciona tomando listas de posibles nombres de usuario y contraseñas, y luego intentando autenticarse con cada combinación contra un servicio objetivo. Soporta muchos protocolos, incluyendo HTTP, FTP, SSH y más. La herramienta es particularmente útil para que los especialistas en pruebas de penetración identifiquen contraseñas débiles en un sistema.

Para verificar que Hydra funciona correctamente, podemos comprobar su versión y las opciones disponibles con:

hydra -h

Este comando muestra el menú de ayuda de Hydra, presentando todos los comandos y opciones disponibles. Verás información sobre diferentes modos de ataque, protocolos compatibles y cómo personalizar tus intentos de descifrado de contraseñas. Esto es útil para entender qué puede hacer Hydra antes de empezar a usarlo.

Uso de Hydra para el descifrado de contraseñas

Ahora que tenemos Hydra instalado y nuestra lista de contraseñas lista, vamos a usarlo para simular un ataque de fuerza bruta en nuestro sitio web de práctica. Antes de comenzar, es importante entender que Hydra es una herramienta automatizada que prueba sistemáticamente diferentes combinaciones de usuario y contraseña contra una página de inicio de sesión; esto es lo que se conoce como un ataque de fuerza bruta.

Ejecuta el siguiente comando de Hydra:

hydra -L ~/project/usernames.txt -P ~/project/500-worst-passwords.txt localhost -s 8080 http-post-form "/:username=^USER^&password=^PASS^:Invalid username or password" -o ~/project/hydra_results.txt

Desglosemos este comando paso a paso para entender qué hace cada parte:

  • hydra: Es el comando para iniciar la herramienta Hydra.
  • -L ~/project/usernames.txt: Especifica el archivo que contiene los posibles nombres de usuario a probar.
  • -P ~/project/500-worst-passwords.txt: Indica el archivo con las contraseñas comunes que probaremos con cada usuario.
  • localhost -s 8080: La dirección del servidor web objetivo (localhost) y el puerto (8080) que estamos probando.
  • "/:username=^USER^&password=^PASS^:Invalid username or password": Esto le indica a Hydra:
    • La URL de la página de inicio de sesión (/)
    • Cómo se llaman los campos del formulario de acceso (username y password)
    • Qué aspecto tiene el mensaje de error cuando el inicio de sesión falla
  • -o ~/project/hydra_results.txt: Guarda todos los intentos exitosos en este archivo de salida.

Hydra comenzará a ejecutarse y verás la salida a medida que prueba cada combinación de usuario y contraseña. Este proceso puede tardar unos minutos mientras Hydra recorre sistemáticamente todas las combinaciones posibles en los archivos que proporcionamos.

Salida de la ejecución del comando Hydra

Una vez que Hydra termine, podemos revisar los resultados para ver si alguna combinación funcionó:

cat ~/project/hydra_results.txt
Salida de los resultados de Hydra

Los inicios de sesión exitosos aparecerán como líneas del tipo "login: [username] password: [password] found". Estas representan credenciales que otorgarían acceso al sistema.

Este ejercicio demuestra varios conceptos de seguridad importantes:

  • Hydra probó cientos de combinaciones de contraseñas en minutos, mostrando la rapidez con la que pueden trabajar las herramientas automatizadas.
  • Los inicios de sesión exitosos demuestran que las contraseñas débiles o comunes se descifran fácilmente.
  • En escenarios del mundo real, los atacantes pueden usar diccionarios con millones de contraseñas, lo que hace que las contraseñas robustas y únicas sean esenciales.
  • La diferencia entre los intentos manuales (Paso 1) y las herramientas automatizadas resalta por qué las políticas de contraseñas son importantes.

Observa cómo la eficiencia de la herramienta hace que las credenciales débiles sean extremadamente vulnerables. Por esta razón, los profesionales de seguridad hacen hincapié en el uso de contraseñas complejas y en la implementación de políticas de bloqueo de cuentas.

Resumen

En este laboratorio, has aprendido los fundamentos de la seguridad de las contraseñas a través de la experiencia práctica con Hydra, una potente herramienta de descifrado de contraseñas. Has explorado cómo funcionan los ataques de fuerza bruta y por qué pueden comprometer las contraseñas débiles, al tiempo que has comprendido el papel fundamental de las prácticas de contraseñas seguras en la ciberseguridad.

Este ejercicio ha demostrado por qué los profesionales de la ciberseguridad insisten en el uso de contraseñas complejas y únicas. Recuerda aplicar estas habilidades de manera ética a medida que continúas explorando herramientas y técnicas de seguridad en tu camino de aprendizaje.