Atacar Servicios SMB con Hydra

HydraBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a atacar servicios SMB (Server Message Block) utilizando Hydra, una potente herramienta para descifrar contraseñas. Este laboratorio se centra en demostrar cómo identificar y explotar credenciales débiles en un servidor SMB.

Comenzarás configurando un servidor SMB local utilizando Samba, incluyendo la instalación de los paquetes necesarios, la configuración del archivo smb.conf para crear un directorio compartido y la configuración de los permisos apropiados. A continuación, prepararás listas de usuarios y contraseñas para usar en el ataque con Hydra. Finalmente, ejecutarás el ataque SMB con Hydra y comprobarás los resultados para ver si se han descifrado alguna credencial con éxito.

Este es un Guided Lab, 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 73%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Configurar un Servidor SMB Local

En este paso, configurarás un servidor SMB (Server Message Block) local utilizando Samba. SMB es un protocolo de intercambio de archivos en red que permite a las aplicaciones de un equipo acceder a archivos y recursos en un servidor remoto. Samba es una reimplementación de software libre del protocolo de red SMB. Esto proporcionará un objetivo para tu ataque SMB con Hydra en pasos posteriores.

Primero, instalemos Samba. Abre tu terminal en el directorio ~/project.

sudo apt update
sudo apt install samba -y

Este comando actualiza las listas de paquetes e instala el paquete Samba. La opción -y responde automáticamente "sí" a cualquier solicitud durante la instalación.

A continuación, necesitas configurar Samba. Empezarás haciendo una copia de seguridad del archivo de configuración original.

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Ahora, crearemos un archivo de configuración nuevo y limpio sobrescribiendo el existente. Este enfoque asegura que no haya conflictos con la configuración predeterminada de Samba de Ubuntu.

Copia el siguiente comando y ejecútalo en el terminal. Asegúrate de copiar el comando correctamente.

sudo tee /etc/samba/smb.conf > /dev/null << 'EOF'
[global]
   workgroup = WORKGROUP
   server string = Servidor Samba
   netbios name = fileserver
   security = user
   map to guest = never
   ## Deshabilitar acceso anónimo
   restrict anonymous = 2
   ## Habilitar explícitamente SMBv1 y NTLMv1 para Hydra
   server min protocol = NT1
   client min protocol = NT1
   ntlm auth = ntlmv1-permitted
   ## Enlazar con localhost
   interfaces = 127.0.0.1
   bind interfaces only = yes
   ## Registro
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   debug level = 3

[share]
   path = /home/labex/project/share
   browsable = yes
   writable = yes
   guest ok = no
   read only = no
   valid users = labex
EOF

Este comando reemplazará completamente el contenido de /etc/samba/smb.conf con nuestra configuración limpia.

Puntos de configuración importantes:

  • map to guest = never - Previene el acceso anónimo de invitados.
  • restrict anonymous = 2 - Deshabilita completamente el acceso anónimo.
  • server min protocol = NT1 y client min protocol = NT1 - Habilita SMBv1 para la compatibilidad con Hydra.
  • ntlm auth = ntlmv1-permitted - Permite la autenticación NTLMv1 para las pruebas.
  • interfaces = 127.0.0.1 y bind interfaces only = yes - Restringe el acceso solo a localhost.
  • guest ok = no - Deshabilita el acceso de invitados al recurso compartido.
  • valid users = labex - Restringe el acceso solo al usuario específico.

Por qué sobrescribimos todo el archivo:

  • Evita conflictos con la configuración predeterminada de Samba de Ubuntu.
  • Asegura una configuración limpia y mínima optimizada para las pruebas con Hydra.
  • Elimina posibles problemas con directivas duplicadas o conflictivas.
  • Proporciona un punto de partida consistente para todos los usuarios.

Esta configuración asegura que Hydra pueda detectar correctamente los intentos de autenticación sin interferencias del acceso anónimo.

Ahora, creemos el directorio compartido.

mkdir ~/project/share
sudo chmod 777 ~/project/share

Esto crea un directorio llamado share en tu directorio ~/project y establece sus permisos a 777, lo que significa que todos tienen permisos de lectura, escritura y ejecución. Nota: En un escenario del mundo real, querrías usar permisos más restrictivos. Para simplificar este entorno de laboratorio, estamos usando 777.

A continuación, necesitas agregar un usuario de Samba. Este usuario se utilizará para autenticarse en el servidor SMB. Utilizarás el usuario labex que ya existe en el sistema. Primero, establece una contraseña de Samba para el usuario labex.

sudo smbpasswd -a labex

Se te pedirá que introduzcas una nueva contraseña para el usuario labex. Introduce password y confírmala.

Nueva contraseña SMB:
Repite la nueva contraseña SMB:
Usuario labex añadido.

Finalmente, reinicia el servicio Samba para aplicar los cambios.

sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart

Debes ver una salida similar a esta:

 * Deteniendo el demonio SMB/CIFS smbd                                        [ OK ]
 * Iniciar el demonio SMB/CIFS smbd                                        [ OK ]
 * Deteniendo el servidor de nombres NetBIOS nmbd                                    [ OK ]
 * Iniciar el servidor de nombres NetBIOS nmbd                                    [ OK ]

Este comando verificará tu configuración de Samba en busca de errores de sintaxis y mostrará la configuración activa. Deberías ver una salida que confirme tus ajustes sin errores.

Ahora, tu servidor SMB local está configurado con ajustes de seguridad adecuados. Has creado un directorio compartido llamado share y has añadido el usuario labex con una contraseña de Samba. La configuración está optimizada para funcionar correctamente con los ataques de Hydra.

Preparar Listas de Usuarios y Contraseñas

En este paso, crearás las listas de usuarios y contraseñas que Hydra utilizará para realizar el ataque SMB. Estas listas contendrán posibles nombres de usuario y contraseñas que Hydra intentará usar para autenticarse en el servidor SMB.

Primero, crearemos la lista de usuarios. Utilizarás nano para crear un archivo llamado users.txt en el directorio ~/project.

nano ~/project/users.txt

En este archivo, añade los siguientes nombres de usuario, uno por línea:

labex
admin
guest
user
test
root

Presiona Ctrl+X, luego Y, y luego Enter para guardar el archivo.

Ahora, crearemos la lista de contraseñas. Utilizarás nano para crear un archivo llamado passwords.txt en el directorio ~/project.

nano ~/project/passwords.txt

En este archivo, añade las siguientes contraseñas, una por línea:

password
123456
labex
admin
guest

Presiona Ctrl+X, luego Y, y luego Enter para guardar el archivo.

Estas son listas simples para fines demostrativos. En un escenario del mundo real, usarías listas mucho más grandes y complejas.

Ahora has creado dos archivos: users.txt que contiene una lista de nombres de usuario, y passwords.txt que contiene una lista de contraseñas. Hydra utilizará estas listas en el siguiente paso para intentar descifrar la contraseña del servidor SMB.

Ejecutar Ataque Hydra SMB

En este paso, utilizarás Hydra para realizar un ataque de fuerza bruta contra el servidor SMB que configuraste en el primer paso. Hydra es una herramienta de craqueo de inicios de sesión paralelizada que admite numerosos protocolos para atacar.

Abre tu terminal en el directorio ~/project.

Ahora, ejecutemos el comando Hydra para atacar el servicio SMB.

hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 smb

Desglosemos este comando:

  • hydra: Este es el comando para ejecutar la herramienta Hydra.
  • -L ~/project/users.txt: Especifica la ruta al archivo de lista de usuarios.
  • -P ~/project/passwords.txt: Especifica la ruta al archivo de lista de contraseñas.
  • 127.0.0.1: Esta es la dirección IP del servidor SMB objetivo (en este caso, localhost).
  • smb: Especifica el servicio a atacar (SMB).

Hydra comenzará ahora a intentar iniciar sesión en el servidor SMB utilizando los nombres de usuario y contraseñas de las listas que proporcionaste. Intentará todas las combinaciones de nombre de usuario y contraseña hasta encontrar una válida o agotar todas las posibilidades.

Con el servidor SMB configurado correctamente en el Paso 1, deberías ver un descubrimiento exitoso de credenciales:

Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - Por favor, no lo uses en organizaciones militares o de servicios secretos, o para fines ilegales (esto no es vinculante, estas *** ignoran las leyes y la ética de todos modos).

Hydra (https://github.com/vanhauser-thc/thc-hydra) comenzando el 2025-05-30 10:52:16
[INFO] Se redujo el número de tareas a 1 (smb no le gusta las conexiones paralelas)
[DATA] máximo 1 tarea por 1 servidor, en general 1 tarea, 30 intentos de inicio de sesión (l:6/p:5), ~30 intentos por tarea
[DATA] atacando smb://127.0.0.1:445/
[445][smb] host: 127.0.0.1   login: labex   password: password
1 de 1 objetivo completado con éxito, se encontró 1 contraseña válida
Hydra (https://github.com/vanhauser-thc/thc-hydra) finalizado el 2025-05-30 10:52:17

Entendiendo la Salida:

  • La línea [445][smb] host: 127.0.0.1 login: labex password: password muestra que Hydra encontró con éxito credenciales válidas.
  • Nombre de usuario: labex
  • Contraseña: password
  • El resumen muestra "1 contraseña válida encontrada", lo que confirma el ataque exitoso.

Nota Importante: Este ataque se está realizando en un servidor SMB local con fines educativos. Hemos configurado específicamente el servidor para demostrar cómo funciona Hydra. En entornos de producción, SMBv1 debe deshabilitarse por razones de seguridad. Realizar ataques no autorizados a sistemas remotos es ilegal y poco ético.

El comando puede tardar algún tiempo en completarse, dependiendo del tamaño de tus listas de usuarios y contraseñas. Observa la salida para ver cuándo Hydra descifra con éxito la contraseña.

Revisar Resultados del Ataque SMB

En este paso, analizarás la salida del ataque SMB con Hydra para confirmar el descubrimiento exitoso de credenciales y verificar las credenciales descifradas conectándote a la carpeta compartida SMB.

Después de ejecutar el comando Hydra (y posiblemente aplicar los pasos de solución de problemas) en el paso anterior, deberías ver una salida similar a esta:

[445][smb] host: 127.0.0.1   login: labex   password: password
1 of 1 target successfully completed, 1 valid password found

Esta línea indica que Hydra descifró con éxito las credenciales SMB:

  • Nombre de usuario: labex
  • Contraseña: password

Verificar las Credenciales Descifradas:
Para confirmar que las credenciales descifradas son válidas, puedes usar el comando smbclient para conectarte a la carpeta compartida SMB. Primero, instálalo si aún no lo tienes:

sudo apt update
sudo apt install smbclient -y

Deberías ver una salida similar a esta:

Leyendo listas de paquetes... Hecho
Construyendo árbol de dependencias... Hecho
Leyendo información del estado... Hecho
Los siguientes paquetes adicionales se instalarán:
  libsmbclient
Los siguientes NUEVOS paquetes se instalarán:
  libsmbclient smbclient
0 actualizados, 2 recién instalados, 0 para eliminar y 252 no actualizados.
...
Configurando smbclient (2:4.15.13+dfsg-0ubuntu1.6) ...

Ahora, usa las credenciales descifradas para conectarte a la carpeta compartida SMB:

smbclient //127.0.0.1/share -U labex%password

Desglosemos este comando:

  • smbclient: La utilidad de línea de comandos para acceder a recursos SMB/CIFS en servidores.
  • //127.0.0.1/share: La ruta a la carpeta compartida SMB. 127.0.0.1 es la dirección IP de tu servidor SMB local, y share es el nombre del directorio compartido.
  • -U labex%password: Especifica el nombre de usuario (labex) y la contraseña (password) que Hydra descifró. El nombre de usuario y la contraseña están separados por un signo %.

Si la conexión es exitosa, se te presentará un indicador smb:\>, lo que indica que te has conectado correctamente a la carpeta compartida SMB con las credenciales descifradas:

Prueba "help" para obtener una lista de comandos posibles.
smb: \>

Luego, puedes escribir exit y presionar Enter para salir del indicador smbclient:

exit

Esta conexión exitosa confirma que:

  1. Hydra descifró con éxito las credenciales SMB.
  2. La combinación de nombre de usuario y contraseña es válida.
  3. El ataque fue efectivo contra el servidor SMB configurado.
  4. Las credenciales descifradas proporcionan acceso al directorio compartido.

Implicaciones de Seguridad:
Este ataque exitoso demuestra la importancia de:

  • Usar contraseñas fuertes y complejas.
  • Implementar políticas de bloqueo de cuentas.
  • Monitorear los ataques de fuerza bruta.
  • Deshabilitar servicios y protocolos innecesarios.
  • Auditorías de seguridad y pruebas de penetración regulares.

Resumen

En este laboratorio, has aprendido a atacar servicios SMB utilizando Hydra, una poderosa herramienta para descifrar contraseñas. Empezaste configurando un servidor SMB local con Samba, lo que implicó instalar los paquetes necesarios, configurar el archivo smb.conf para crear un directorio compartido con soporte para SMBv1 y NTLMv1 para la compatibilidad con Hydra, y establecer permisos apropiados.

Luego, preparaste listas de usuarios y contraseñas (users.txt con 6 nombres de usuario y passwords.txt con 5 contraseñas) para usar en el ataque con Hydra. Con el servidor SMB configurado correctamente en el Paso 1, el ataque SMB con Hydra descifró con éxito las credenciales SMB al encontrar la combinación válida de nombre de usuario labex y contraseña password.

Confirmaste el éxito del ataque utilizando smbclient para conectarte a la carpeta compartida SMB con las credenciales descubiertas, demostrando que las credenciales descifradas proporcionaron acceso legítimo al directorio compartido.

Este laboratorio demostró eficazmente:

  1. Capacidades de Hydra: Cómo Hydra puede probar sistemáticamente combinaciones de nombre de usuario y contraseña contra servicios SMB.
  2. Configuración Adecuada: La importancia de configurar correctamente el servicio objetivo para las pruebas de seguridad.
  3. Metodología de Ataque de Fuerza Bruta: El proceso de preparar listas de palabras y ejecutar ataques automatizados.
  4. Verificación del Ataque: La importancia de confirmar el descubrimiento exitoso de credenciales.
  5. Configuración de Seguridad: Cómo una configuración adecuada de SMB previene el acceso anónimo mientras permite pruebas de autenticación legítimas.

Lecciones Clave de Seguridad:

  • Las contraseñas débiles son vulnerables a los ataques de fuerza bruta.
  • Una configuración adecuada del servicio es crucial tanto para la seguridad como para las pruebas.
  • Deshabilitar el acceso anónimo asegura resultados claros de autenticación.
  • Herramientas automatizadas como Hydra pueden probar rápidamente muchas combinaciones de credenciales.
  • Las pruebas de seguridad regulares ayudan a identificar vulnerabilidades antes de que lo hagan los atacantes.

Nota Importante: Este ataque se realizó en un servidor SMB local configurado específicamente para fines educativos. En entornos de producción, se debe deshabilitar SMBv1, se deben aplicar políticas de contraseñas fuertes y se debe implementar monitoreo para detectar ataques de fuerza bruta. Realizar ataques no autorizados en sistemas remotos es ilegal y poco ético.