Atacar objetivos IPv6 con Hydra

HydraHydraBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo atacar objetivos IPv6 utilizando Hydra. El laboratorio se centra en configurar un servidor con una dirección IPv6 y luego utilizar Hydra para atacar su servicio SSH.

El laboratorio comienza configurando el servidor con la dirección IPv6 2001:db8:1::1/64 en la interfaz eth0 utilizando el comando ip. Luego, habilitarás la interfaz y verificarás la configuración. Finalmente, utilizarás Hydra con la opción -6 para apuntar al servicio SSH IPv6 y verificar los resultados del ataque.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/target_ip("Target IP Specification") hydra/HydraGroup -.-> hydra/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/single_username -.-> lab-550759{{"Atacar objetivos IPv6 con Hydra"}} hydra/single_password -.-> lab-550759{{"Atacar objetivos IPv6 con Hydra"}} hydra/target_ip -.-> lab-550759{{"Atacar objetivos IPv6 con Hydra"}} hydra/target_service -.-> lab-550759{{"Atacar objetivos IPv6 con Hydra"}} hydra/ssh_attack -.-> lab-550759{{"Atacar objetivos IPv6 con Hydra"}} hydra/success_detection -.-> lab-550759{{"Atacar objetivos IPv6 con Hydra"}} end

Configurar el servidor con una dirección IPv6

En este paso, configuraremos el servidor con una dirección IPv6. Este es un paso crucial para habilitar la comunicación IPv6 y prepararse para el posterior ataque al servicio SSH IPv6.

Primero, entendamos los conceptos básicos de las direcciones IPv6. Las direcciones IPv6 son direcciones de 128 bits, generalmente representadas en notación hexadecimal. Una dirección IPv6 típica se ve así: 2001:0db8:85a3:0000:0000:8a2e:0370:7334.

Para simplificar la configuración, usaremos una dirección IPv6 sencilla para nuestro servidor. Asignaremos la dirección 2001:db8:1::1/64 a la interfaz eth0.

Nota: La interfaz eth0 es un nombre de interfaz de red común en sistemas Linux. Si tu sistema utiliza un nombre de interfaz diferente (por ejemplo, ens33), reemplaza eth0 con el nombre correcto de la interfaz en los siguientes comandos. Puedes usar el comando ip addr para verificar tus interfaces de red.

Ahora, configuremos la dirección IPv6. Usaremos el comando ip, que es una herramienta poderosa para administrar interfaces de red.

  1. Agregar la dirección IPv6 a la interfaz eth0:

    Abre una terminal en la máquina virtual (VM) de LabEx. Ejecuta el siguiente comando:

    sudo ip addr add 2001:db8:1::1/64 dev eth0

    Este comando agrega la dirección IPv6 2001:db8:1::1/64 a la interfaz eth0. El /64 especifica la longitud del prefijo de red, que determina el tamaño de la subred IPv6.

  2. Habilitar la interfaz eth0:

    sudo ip link set dev eth0 up

    Este comando activa la interfaz eth0, permitiéndole enviar y recibir tráfico de red.

  3. Verificar la configuración de la dirección IPv6:

    Para verificar que la dirección IPv6 se haya configurado correctamente, usa el comando ip addr nuevamente:

    ip addr show eth0

    La salida debe incluir la dirección IPv6 2001:db8:1::1/64 en la sección inet6. Deberías ver algo similar a lo siguiente:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff
        inet 192.168.xx.xx/24 brd 192.168.xx.255 scope global dynamic eth0
           valid_lft 85781sec preferred_lft 85781sec
        inet6 2001:db8:1::1/64 scope global
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fexx:xxxx/64 scope link
           valid_lft forever preferred_lft forever

    La línea inet6 2001:db8:1::1/64 scope global confirma que la dirección IPv6 se ha configurado correctamente.

  4. Agregar una puerta de enlace IPv6 predeterminada (Opcional, pero recomendado para una conectividad IPv6 completa):

    Si quieres que tu servidor pueda comunicarse con otras redes IPv6, debes configurar una puerta de enlace IPv6 predeterminada. Este paso asume que tienes un enrutador en tu red que proporciona conectividad IPv6. Reemplaza 2001:db8:1::254 con la dirección IPv6 real de tu enrutador.

    sudo ip -6 route add default via 2001:db8:1::254

    Para verificar la puerta de enlace IPv6 predeterminada, usa el comando ip -6 route:

    ip -6 route

    La salida debe incluir una línea similar a:

    default via 2001:db8:1::254 dev eth0 metric 1024 pref medium

    Nota importante: La configuración anterior no es persistente después de reiniciar. Para hacer que la configuración de la dirección IPv6 sea persistente, normalmente se modificarían los archivos de configuración de red (por ejemplo, /etc/network/interfaces en sistemas basados en Debian o /etc/sysconfig/network-scripts/ifcfg-eth0 en sistemas basados en Red Hat). Sin embargo, debido a las limitaciones del entorno de la VM de LabEx (específicamente, la incapacidad de usar systemctl y la naturaleza efímera del contenedor), omitiremos hacer la configuración persistente. Para los fines de este laboratorio, la dirección IPv6 se configurará solo para la sesión actual.

Ejecutar con -6 para preferir IPv6

En este paso, nos prepararemos para el ataque al servicio SSH IPv6 comprendiendo y utilizando la opción -6 con herramientas de red. La opción -6 se utiliza comúnmente para especificar una preferencia por IPv6 al interactuar con servicios de red. Esto es importante porque, por defecto, algunas herramientas pueden preferir IPv4 si tanto las direcciones IPv4 como IPv6 están disponibles.

Para asegurarnos de que estamos apuntando a la dirección IPv6 que configuramos en el paso anterior, usaremos el comando ping con la opción -6. Esto verificará que podemos alcanzar el servidor utilizando su dirección IPv6.

  1. Realizar un ping a la dirección IPv6:

    Abre una terminal en la máquina virtual (VM) de LabEx. Ejecuta el siguiente comando:

    ping -6 2001:db8:1::1

    Este comando envía paquetes ICMP Echo Request a la dirección IPv6 2001:db8:1::1. Si el servidor es alcanzable a través de IPv6, deberías ver respuestas del servidor. La salida debería ser similar a esto:

    PING 2001:db8:1::1(2001:db8:1::1) 56 data bytes
    64 bytes from 2001:db8:1::1: icmp_seq=1 ttl=64 time=0.020 ms
    64 bytes from 2001:db8:1::1: icmp_seq=2 ttl=64 time=0.018 ms
    64 bytes from 2001:db8:1::1: icmp_seq=3 ttl=64 time=0.019 ms
    ...

    Si no ves ninguna respuesta, revisa la configuración de la dirección IPv6 del paso anterior y asegúrate de que la interfaz eth0 esté activa. Además, verifica que no haya reglas de firewall que bloqueen el tráfico ICMPv6.

  2. Comprender la opción -6:

    La opción -6 le dice al comando ping que use IPv6. Muchas otras herramientas de red, como ssh, curl y wget, también admiten la opción -6. Usar esta opción asegura que la herramienta intente conectarse al host objetivo utilizando IPv6.

    En el siguiente paso, usaremos Hydra para atacar el servicio SSH. Usaremos la opción -6 con Hydra para apuntar específicamente a la dirección IPv6 del servidor SSH. Esto asegura que estamos probando la seguridad de la configuración SSH IPv6.

  3. Probar la conexión SSH con -6 (Opcional):

    Aunque atacaremos el servicio SSH en el siguiente paso, es una buena práctica probar una conexión SSH básica utilizando la bandera -6 para asegurarse de que SSH esté escuchando en la dirección IPv6. Suponiendo que tienes un servidor SSH en ejecución en el objetivo, y una cuenta de usuario llamada testuser con contraseña password, puedes probar la conexión con:

    ssh -6 testuser@2001:db8:1::1

    Probablemente se te pedirá que aceptes la huella digital de la clave SSH. Escribe yes y presiona Enter. Luego, escribe la contraseña password cuando se te solicite. Si tiene éxito, iniciarás sesión en el servidor SSH. Escribe exit para desconectarte.

    Nota: Este paso es opcional porque atacaremos el servicio SSH en el siguiente paso, lo que implícitamente prueba la conexión SSH. Sin embargo, es una buena manera de verificar que SSH esté escuchando en la dirección IPv6 antes de lanzar el ataque. Si no tienes un servidor SSH en ejecución o una cuenta de usuario de prueba, puedes omitir este paso.

Atacar el servicio SSH IPv6

En este paso, usaremos Hydra para realizar un ataque de fuerza bruta al servicio SSH que se ejecuta en la dirección IPv6 que configuramos anteriormente. Hydra es una poderosa herramienta de cracking de contraseñas que admite varios protocolos, incluyendo SSH.

Antes de comenzar, creemos una lista de contraseñas sencilla. Esta lista contendrá las contraseñas que Hydra intentará utilizar para autenticarse en el servicio SSH.

  1. Crear una lista de contraseñas:

    Abre una terminal en la máquina virtual (VM) de LabEx. Utiliza el editor nano para crear un archivo llamado passwords.txt en el directorio ~/project:

    nano ~/project/passwords.txt

    Agrega las siguientes contraseñas al archivo, una contraseña por línea:

    password
    123456
    qwerty
    admin
    secret

    Guarda el archivo y sal de nano (Ctrl+X, luego Y, luego Enter).

  2. Ejecutar Hydra para atacar el servicio SSH IPv6:

    Ahora, usaremos Hydra para atacar el servicio SSH. Usaremos la opción -6 para especificar que queremos apuntar a la dirección IPv6. También especificaremos el nombre de usuario a atacar (por ejemplo, root), la lista de contraseñas que creamos (passwords.txt) y la dirección IPv6 del servidor SSH (2001:db8:1::1).

    Ejecuta el siguiente comando:

    hydra -6 -l root -P ~/project/passwords.txt ssh://2001:db8:1::1

    Desglosemos este comando:

    • hydra: El comando para ejecutar la herramienta Hydra.
    • -6: Especifica que queremos usar IPv6.
    • -l root: Especifica el nombre de usuario a atacar. En este caso, estamos atacando al usuario root.
    • -P ~/project/passwords.txt: Especifica la lista de contraseñas a utilizar. En este caso, estamos utilizando el archivo passwords.txt que creamos en el directorio ~/project.
    • ssh://2001:db8:1::1: Especifica el servicio SSH objetivo. El prefijo ssh:// indica que estamos atacando un servicio SSH, y 2001:db8:1::1 es la dirección IPv6 del servidor.

    Hydra ahora comenzará a probar las contraseñas del archivo passwords.txt contra el servicio SSH. Si Hydra encuentra una contraseña válida, mostrará las credenciales. La salida debería ser similar a esto:

    Hydra v9.1 (c) 2020 by van Hauser/THC - Use freely but only for legal purposes.
    
    Hydra starting at 2023-10-27 10:00:00
    [DATA] 1 task, 5 hosts, 5 tries per host
    [DATA] attacking ssh://2001:db8:1::1:22
    [22][ssh] host: 2001:db8:1::1   login: root   password: password
    Hydra finished.

    Esta salida indica que Hydra ha crackeado con éxito la contraseña del usuario root, y la contraseña es password.

    Nota importante: Realizar un ataque de fuerza bruta a las contraseñas de un sistema sin autorización es ilegal y poco ético. Este laboratorio es solo con fines educativos, y solo debes utilizar estas técnicas en sistemas que pertenezcan a ti o para los que tengas permiso explícito para probar.

Verificar los resultados del ataque IPv6

En este paso, verificaremos los resultados del ataque de Hydra al servicio SSH IPv6. Comprobaremos si Hydra ha crackeado con éxito la contraseña y, en caso afirmativo, intentaremos iniciar sesión en el servicio SSH utilizando las credenciales crackeadas.

  1. Revisar la salida de Hydra:

    Revisa detenidamente la salida del comando de Hydra en el paso anterior. Busca una línea que indique que se ha crackeado la contraseña con éxito. La salida debería ser similar a esta:

    [22][ssh] host: 2001:db8:1::1   login: root   password: password

    Si ves esta línea, significa que Hydra ha crackeado con éxito la contraseña del usuario root, y la contraseña es password. Si Hydra no ha encontrado una contraseña válida, tendrás que ajustar tu lista de contraseñas o investigar posibles problemas con la configuración del servicio SSH.

  2. Intentar iniciar sesión en el servicio SSH utilizando las credenciales crackeadas:

    Ahora que tenemos las credenciales crackeadas, intentaremos iniciar sesión en el servicio SSH utilizando el comando ssh. Usaremos la opción -6 para especificar que queremos conectarnos a la dirección IPv6.

    Ejecuta el siguiente comando, reemplazando password con la contraseña real que Hydra ha crackeado:

    ssh -6 root@2001:db8:1::1

    Cuando se te solicite la contraseña, escribe la contraseña crackeada (por ejemplo, password). Si el inicio de sesión es exitoso, iniciarás sesión en el servidor SSH.

    The authenticity of host '[2001:db8:1::1]:22 ([2001:db8:1::1]:22)' can't be established.
    ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '[2001:db8:1::1]:22' (ECDSA) to the list of known hosts.
    root@2001:db8:1::1's password:
    Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-91-generic x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
    ...

    Si puedes iniciar sesión con éxito, esto confirma que el ataque de Hydra fue exitoso y que el servicio SSH es vulnerable al cracking de contraseñas.

  3. Recomendaciones de seguridad:

    Este laboratorio demuestra la importancia de utilizar contraseñas fuertes e implementar las mejores prácticas de seguridad para proteger tu servicio SSH. Aquí tienes algunas recomendaciones:

    • Utiliza contraseñas fuertes: Utiliza contraseñas de al menos 12 caracteres de longitud y que contengan una combinación de letras mayúsculas, letras minúsculas, números y símbolos.
    • Deshabilita la autenticación por contraseña: Considera deshabilitar la autenticación por contraseña y utilizar claves SSH en su lugar. Las claves SSH son más seguras que las contraseñas porque son mucho más difíciles de crackear.
    • Implementa limitación de velocidad (rate limiting): Utiliza herramientas como fail2ban para implementar limitación de velocidad en los intentos de inicio de sesión SSH. Esto evitará que los atacantes intenten demasiadas contraseñas en un corto período de tiempo.
    • Mantén tu software actualizado: Asegúrate de que el software de tu servidor SSH esté actualizado con las últimas parches de seguridad.

Resumen

En este laboratorio, configuramos un servidor con una dirección IPv6, un paso crucial para habilitar la comunicación IPv6. Esto implicó comprender los conceptos básicos de direccionamiento IPv6 y utilizar el comando ip para asignar la dirección 2001:db8:1::1/64 a la interfaz eth0.

Luego, habilitamos la interfaz y verificamos la configuración utilizando ip addr show eth0, asegurándonos de que la dirección IPv6 se asignara correctamente. Esta configuración prepara el servidor para ataques posteriores al servicio SSH IPv6.