Antes de continuar
El contenido de este post ha sido exportado en su totalidad de mi página web oficial. Si desea ver el contenido en formato original, puede visitar la página web usando el siguiente enlace
Aun así, el contenido de este post es igual al contenido original, solo que en español para hacerlo más fácil de comprender. Espero que encontréis esta guía útil.
________________________________________________________________________________________________________________________________________________________________Aviso legal
El acceso no autorizado a una red está regulado por ley, tiene consecuencias legales y conduce a una sanción adecuada.
No soy responsable del uso malicioso de esta información. Ha sido avisado.
- Dificultad: Bastante fácil
- Sistema operativo: Debian 13
- Herramientas requeridas:
- Un dispositivo (interfaz) de red que permita "modo monitor" (un adaptador USB o una tarjeta de red).
- network-manager
- macchanger
- aircrack-ng
Bienvenidos a una nueva lección sobre el hacking Wi-Fi, donde aprenderás a descifrar contraseñas de W-Fi y a realizar la desautenticación en
redes WPA/WPA-2. Antes de empezar, este ataque se realizará usando una distribución GNU/Linux, "Debian" siendo específicos, así que algunos
comandos que verás a continuación pueden variar según la distribución que utilices. Sin más que hacer, vamos a sumergirnos en el hacking Wi-Fi.
Qué es "Wi-Fi"?
Wi-Fi es una familia de redes inalámbricas basadas en el protocolo "IEEE-802.11". El protocolo "IEEE-802.11" forma parte de los estándares LAN(Red de Área Local) e implementa funciones como el control de acceso a medios (MAC). El protocolo Wi-Fi permite la transmisión de datos
mediante readiofrecuencia, que viaja por aire, lo que significa que, en lugar de ser redes cableadas donde los paquetes son enviados específicamente
al emisor/receptor, en las redes Wi-Fi todos pueden ver o "escuchar" los paquetes que se envían por el aire, lo cual es una vulnerabilidad en sí misma
y puede provocar vectores de ataque como los que veremos a continuación.
Pero antes de empezar, hablemos de cómo funciona la autenticación en las redes Wi-Fi, ya que antes de empezar a hackear, primero necesitamos
entender cómo funciona aquello a lo que vamos a atacar. Esto no es un libro de cocina, es una lección, así que centrémonos en entender lo que se
explica. Para entender la autenticación y cómo funciona (para poder romperla), debemos saber que la autenticación ocurre en 4 pasos llamados
"Four-Way Handshake". Se llama "Four-Way" porque se envían 4 paquetes, cada uno con cierta información. A continuación puedes ver una
representación de cómo funciona la autenticación Wi-Fi (también llamada "EAPOL", que significa "Extensible Authentication Protocol over LAN").
1. Enviando el "ANonce"
El primer paquete se envía desde el Punto de Acceso ("AP", que normalmente también es un router) al cliente (en este caso, nuestro ordenador).
Se llama "ANonce" (Authenticator Nonce), y es un número pseudo-aleatorio ("pseudo" significa "falso", es decir, no tan aleatorio) generado durante
el proceso de autenticación para asegurar que cada sesión sea única y segura.
2. Enviando el SNonce + MIC + RSNIE
Antes de recibir el paquete, el cliente ya estaba calculando su propio número pseudoaleatorio ("SNonce"), pero la ecuación no se completa hasta que
el cliente recibe el "ANonce" del AP. Una vez recogido, el cliente calcula un número (que no es el "SNonce") llamado "PTK", que significa "Clave
Transitoria por Pares" (Pairwise Transient Key). Es el resultado de combinar la dirección ANonce + SNonce + MAC del AP + dirección MAC del cliente
+ una clave derivada usando el algoritmo PBKDF2, que se llama "PMK" (Pairwise Master Key, no confundir con "PTK").
Tras obtener el PTK, esta clave se utilizará para cifrar los datos que pasan por el cliente y el AP. El cliente entonces calcula el MIC (que significa "Message
Integrity Code", o "Código de integridad del mensaje"), que es un mensaje que, al igual que los hashes, garantiza la integridad del mensaje que se envía a
través de la red. El MIC se calcula utilizando el algoritmo HMAC-SHA1 con el PMK, ANonce y SNonce.
Usando esta clave (la Clave Transitoria por Pares, "PTK") para cifrar la comunicación unicast (la comunicación que va de un cliente al AP), el cliente
envía el SNonce junto con el MIC para permitir que el Punto de Acceso (AP) genere también un PTK para la comunicación cifrada.
3. Enviando el GTK + MIC
Tras obtener el SNonce y el MIC, el AP valida que el MIC es correcto y luego genera el PTK basado en el SNonce vez que el cliente ha enviado + el resto
de los datos necesarios. Luego, (en caso de que no se hubiera generado antes) el AP genera una clave llamada "GTK" (Group Temporary Key), que se
usará para cifrar tráfico de difusión y multicast (tráfico que va del AP a varios clientes). Esto se genera usando el GMK ("Clave Maestra de Grupo", que
se calcula por el propio AP), y luego se envía al cliente junto con otro MIC usando el PTK.
4. "Acknowledgement" (Reconocimiento/Confirmación)
Finalmente, el cliente recibe la clave y envía otro mensaje al AP confirmando que ha recibido el GTK, completando el handshake de 4 vías.Pero entonces,
¿cómo se envía la contraseña a través de EAPOL y cómo pueden los hackers descifrarla para conectarse a la red?
Entonces, ¿dónde está la contraseña?
Bueno, la contraseña para acceder a la red Wi-Fi (también llamada "PSK", que significa "Pre-Shared Key") no se "envía" en sí misma, ya que eso sería muy
inseguro y cualquiera que capture el handshake de 4 vías podría usarla para acceder directamente a la red. En su lugar, el cliente envía el MIC, que
además de servir como sonda para la integridad de la comunicación, contiene las "pruebas" de que el cliente ha superado el desafío impuesto por el AP
(en este caso, el desafío sería conocer la contraseña, conocer el "PSK") en forma de hash. Cuando se envía el MIC, lo que se envía en realidad es un hash
(una cadena de longitud fija), que se ve algo así:
Código:
a387bc7067687f3de02fe3ef4567d29cf2098b1f
Y ese hash (la cadena anterior) contenía la prueba que le indica al AP que quien lo envió (el cliente) conoce la contraseña. No sé cuál es la prueba ni
dónde está en esa cadena, pero de todas formas no debería saberlo porque el algoritmo que crea ese hash está pensado para ocultar esa prueba, y hace su
trabajo bastante bien. Sin embargo, podemos intentar recrear ese mismo hash probando diferentes PSK uno tras otro y ver qué hash se parece al anterior,
y cuando finalmente obtengamos una coincidencia, entonces sabremos qué PSK está oculto detrás de ese hash.
Así que, resumiendo:
- El "Four-Way Handshake" se realiza y un cliente se conecta con éxito a una red.
- Un hacker está escuchando nuevas conexiones en la red y finalmente consigue un handshake válido.
- El hacker intenta replicar el hash que contiene el MIC intentando con diferentes PSKs.
- Cuando finalmente la replicación tiene éxito y el MIC generado intentando diferentes contraseñas como PSK coincide con el MIC original recogido
del handshake, el hacker ahora conoce la contraseña usada originalmente. - Ahora el hacker solo tiene que conectarse a la red Wi-Fi usando la contraseña que usó antes como PSK, y podrá conectarse a la red.
(Representación de un ataque de fuerza bruta. Lamento que esté en inglés. La imagen la hice pensando en la
estética de mi página, no tuve en cuenta otras por que no imaginaba poder publicar esto en ningún otro sitio.
Quisiera agradecer a los moderadores por la oportunidad).
Hackeando redes Wi-Fi
Ahora que hemos explicado la teoría detrás del hacking Wi-Fi, necesitaremos algunas herramientas para realizar nuestro ataque. El objetivo es acceder
a una red Wi-Fi descifrando las contraseñas, y usaremos diferentes técnicas en el camino para cumplir nuestro objetivo.
Preparándonos para realizar el ataque
Primero, tendremos que instalar las herramientas que usaremos para el ataque. Necesitaremos instalar tres herramientas diferentes. La primera
herramienta que necesitaremos es "macchanger", la segunda herramienta que necesitaremos es "aircrack-ng", que es un software que permite hackear
redes wi-fi, y la tercera que instalaremos será "network-manager", que se instala por defecto en la mayoría de gestores de ventanas como GNOME. No es
realmente necesario, pero creo que muestra de forma muy clara las redes disponibles que tenemos a nuestro alrededor. Explicaré esta herramienta más
adelante.
En primer lugar, vamos a instalar "macchanger", que es una herramienta que nos permitirá cubrir nuestros pasos una vez que terminemos el ataque.
Recuerda siempre que el hackeo no solo consiste en explotar una vulnerabilidad, sino también en ser inrastreable. Esta es la medida mínima de
seguridad que podemos tomar para protegernos de ser pillados con las manos en la massa. Cambiar nuestra dirección MAC es como llevar una máscara.
Cubrirá nuestra identidad a nivel de hardware para que los paquetes que enviemos sean inidentificables (al menos, cuando el ataque termine y ya
hayamos apagado nuestro portátil). Para instalar "macchanger", usaremos el comando "apt" (que significa "Advance Packet Tool", herramienta de gestión
de aplicaciones de Debian y distribuciones basadas en Debian como los conocidos Kali-Linux o Parrot OS). El comando que aparece a continuación es el
necesario para instalar "macchanger".
Bash:
sudo apt install macchanger -y
Ahora, vamos a instalar "aircrack-ng", que como se mencionó antes, es un conjunto de herramientas de hackeo que permite al hacker realizar diversas
acciones en otros puntos de acceso Wi-Fi o clientes, como desautenticar clientes de una red (de lo que hablaremos más adelante porque es realmente
importante). Por ahora, solo queremos que pueda configurar nuestra interfaz en un modo especial que nos permita recoger todo el tráfico que detectamos
en nuestra radio de conexión (cuando digo "radious", me refiero al área que mi portátil puede detectar puntos de acceso y paquetes que circulan por el
aire). Como hicimos antes, el siguiente comando nos permitirá instalar toda la suite "aircrack-ng".
Bash:
sudo apt install aircrack-ng -y
A continuación, comprobaremos si "network-manager" está instalado en nuestro sistema. Para eso, usaremos (de nuevo) "apt", pero esta vez usaremos el
argumento "policy" para saber si tenemos alguna versión instalada (y por tanto, si tenemos el programa instalado).
Bash:
sudo apt policy network-manager
Ahora que sabemos que tenemos instalado "network-manager", tenemos disponible un conjunto de herramientas en nuestra interfaz de línea de comandos
(terminal) para gestionar nuestras interfaces de red, pero lo que intentamos archivar es listar las redes disponibles que tenemos en nuestro radio
para atacar. Elijo una red con la que tenga buena conexión. La red que usaremos en este ejemplo se llama "Vulnerable_Network". Para listar las redes
disponibles, usaremos el siguiente comando:
Bash:
nmcli device wifi list
Como podemos ver, tenemos nuestra red objetivo llamada "Vulnerable_Network". Al final de la línea podemos ver que el protocolo de protección Wi-Fi es
"WPA2". Ese protocolo es vulnerable a ataques Wi-Fi como la desautenticación o fuerza bruta. Ahora que sabemos que nuestro objetivo es vulnerable,
empezaremos a preparar el ataque. Para eso, tendremos que poner nuestra interfaz de red en modo "monitor". El modo "monitor" permite que la interfaz de
red (la tarjeta de red) capture todo el tráfico al que puede llegar. Necesitaremos eso para recopilar el handshake y replicar el MIC creando nuestros
propios hashes basados en la información recopilada.
Para iniciar nuestra interfaz de monitor, primero detendremos los procesos relacionados con la conexión inalámbrica, ya que tendremos que detener los
servicios de red para activar el modo monitor. Podemos hacerlo con este comando:
Bash:
sudo airmon-ng check kill
En este ejemplo, el único proceso que detendremos es wpa_supplicant, que es el proceso que permite la conexión inalámbrica, pero muchos otros procesos
relacionados con las redes wi-fi también podrían detenerse. Ahora, para activar el modo monitor en nuestra interfaz de red, podemos usar el siguiente
comando:
Bash:
sudo aircrack-ng start <interfaz>
(Mi interfaz inalámbrica es "wlo1", pero la tuya podría tener cualquier otro nombre, como "wlan0", por ejemplo).
En la imagen de arriba, el propio airmon-ng encontró otros 4 procesos relacionados con la conexión inalámbrica, así que los apagó automáticamente.
Aparte de eso, detectó dos interfaces físicas de red como "wlo1" (que es la que usaremos) y "wlx90de80ca54c2", que también es un adaptador de red USB
que compré hace tiempo. Este estaba conectado para pruebas, pero solo es necesario una interfaz física de red que permita conexiones inalámbricas.
Después de eso, el nombre de la interfaz de red que hemos elegido será "nombre original" + "mon", así que si selecciono en este ejemplo "wlo1", el nombre
de la interfaz de red en modo monitor es "wlo1mon". Este es el nombre que usaremos a partir de ahora en nuestra interfaz de red.
Ahora, usaremos macchanger para aleatorizar nuestra dirección MAC y que sea inidentificable después de terminar el ataque. Para aleatorizar nuestra dirección
MAC, primero tendremos que dejar la interfaz de red ejecutando el siguiente comando.
Código:
sudo ip link set <interfaz> down
Ahora, cambiaremos nuestra dirección MAC usando este comando:
Bash:
sudo macchanger -r <interfaz>
Y finalmente, después de aleatorizar nuestra dirección MAC, ahora volveremos a encender nuestra interfaz de red con este comando.
Código:
sudo ip link set <interfaz> up
Y en caso de que queramos detener la interfaz de red cuando hayamos terminado nuestro ataque, también podemos usar este comando.
Bash:
sudo airmon-ng stop <interfaz>
Pero solo lo haremos cuando hayamos terminado nuestro ataque. Por ahora, debemos mantener la interfaz de red en modo monitor. Ahora es el
momento de recopilar los datos que atraviesan la interfaz. En especial, queremos recopilar el handshake respecto a la red que queremos atacar.
Para eso, usaremos airodump-ng.
Bash:
sudo airodump-ng <interfaz>
Pero esto solo mostrará los APs y clientes a lo largo de nuestro radio. Para recopilar el handshake, debemos usar el parámetro "-w" en el comando y
luego especificar el archivo en el que queremos guardar el handshake para descifrar la contraseña. Además, especificaremos el canal de la red del que
queremos recoger el handshake para no recoger el handshake de otra red que no nos interesa. Para eso, usaremos el parámetro "-c" para
especificar el número 60, como se muestra abajo.
Bash:
sudo airodump-ng -c 60 -w handshake <interfaz>
El comando mostrado arriba mostraría esta información (no exactamente igual, mostraría información acorde a las redes Wi-Fi que te rodeen. En mi
caso, a mi me muestra lo siguiente):
Realizando el ataque
Ahora, para entender qué significa todo esto, necesitamos observar cuidadosamente la imagen y analizar cada parte de ella. En la primera línea,
vemos tres secciones.
CH 60: Ese es el canal del que realmente estamos recopilando información. Los canales en Wi-Fi se utilizan para evitar interferencias. Normalmente,
los canales Wi-Fi más comunes son el 1, 6 y 11, pero hay muchos más. En este caso, estamos listando y recopilando handshakes de redes
Wi-Fi en el canal "60".
Elapsed: 4 mins: Este es el tiempo en que he estado recopilando información. En este caso, llevo 4 minutos esperando a mi ordenador para recopilar
información sobre las redes disponibles y los dispositivos conectados.
2025-12-23 22:38: Se trata de cuando empecé a recopilar información. En mi caso, empecé a recopilar handshakes de las redes que se comunican a
través del canal 60 a las 22:38 (10:38 PM).
Ahora tenemos dos filas más sobre información sobre puntos de acceso Wi-Fi (la fila que empieza por "BSSID" y "PWR") y otra para clientes conectados
(la fila que empieza con "BSSID" y "STATION"). Hablaremos de la la fila que respecta a los APs.
BSSID: Es la dirección MAC de los puntos de acceso (APs) que tenemos disponibles.
PWR: Indica lo fuerte que es nuestra conexión con la AP. Cuanto mayor sea el número, mejor conexión tenemos con ese punto de acceso. En este caso,
un punto de acceso reportado con un PWR de "-37" sería más rápido y eficiente transmitiendo datos de nuestro dispositivo al AP que otro con un PWR
de "-83".
RXQ: Indica lo buena que es la recepción de paquetes de un punto de acceso. Cuanto mayor sea el número, menos paquetes se perderán durante la
conexión. Junto con "PWR", indica la calidad de la red.
Beacons: Una baliza (beacon) es un paquete de broadcast (difusión) que el AP envía para anunciar que tiene una red activa a la que conectarse. Es el
paquete que permite a los clientes descubrir que tiene una red disponible a la que conectarse. La sección "Balizas" muestra cuántas balizas hemos
recibido de un AP. Si el número de Beacons se detiene, significa que ya no tiene una red disponible. Al recibir balizas, podemos descubrir redes ocultas.
Por eso muchas redes aparecen con el nombre ": 0", porque no están pensadas para tener un nombre ya que son redes ocultas. Cada segundos, el punto
de acceso envía 10 paquetes de balizas.
#Data: Indica el número de paquetes capturados para la red.
#/s: Indica el número de paquetes por segundo capturados.
CH: Indica el canal que está usando la red. Podríamos estar capturando handshakes de diferentes redes Wi-Fi en distintos canales, así que esta
sección indica qué canal está usando la red a la que está asociado.
MB: Significa "Maximum Bitrate" (Tasa de bits máxima), que indica la velocidad de la red. Cuanto mayor es el número, más rápido se transmite la
información a través de las redes; aunque esta no es la velocidad real, sino una representación de la velocidad máxima que la red podría alcanzar en
condiciones ideales.
ENC: Indica el tipo de cifrado que está usando la red. En el caso del cifrado WPA3, no podemos aprovechar las vulnerabilidades explicadas en esta
publicación. En esta publicación, trabajaremos con cifrados WPA/WPA2.
CIPHER: indica como se cifran los datos.
- WEP: Antigua e insegura. Obsoleta.
- TKIP: Se usó hace un tiempo en las primeras etapas de la WPA. Es débil y no se recomienda hoy en día.
- CCMP: Basado en cifrado AES, es fuerte y seguro. Se usa en la mayoría de las redes Wi-Fi.
- GCMP/GCMP-256: Cifrado más nuevo y más fuerte. Usado por WPA3 junto con CCMP.
AUTH: Es el método de autenticación utilizado en la red. En este caso, el método de autenticación en la mayoría de las redes wifi utiliza PSK, que es un
elemento crucial para realizar la descifración de contraseñas wi-fi.
ESSID: Es el nombre de la red (en este caso, "Vulnerable_Network").
Y respecto a la fila sobre los clientes:
BSSID: Es la dirección MAC del cliente.
STATION: Es la dirección MAC del AP.
PWR: Indica cuán fuerte es la conexión del cliente con el AP. Cuanto mayor sea el número, mejor conexión tiene el cliente con ese punto de acceso.
Rate: Muestra la tasa de paquetes del cliente al AP (aunque no puedo interpretar completamente la información dada en el ejemplo). Seguiré investigando
esto y, con suerte, explicaré qué significa "6e - 6e" o "6e - 24", pero por ahora, es un misterio para mí ya que no he encontrado mucha información en
internet para contrastar).
Lost: Muestra la cantidad de paquetes perdidos en la conexión cliente-AP.
Frames: Muestra el número de paquetes que hemos capturado con éxito.
Con esto en mente, podemos comenzar el ataque propiamente dicho. Por suerte para nosotros, atacar redes wi-fi es sorprendentemente fácil. Lo que
tenemos que hacer para capturar el handshake es esperar a que alguien se conecte con éxito a la red. Algunas personas tienen suerte y reciben el
handshake justo cuando empiezan a ejecutar airodump, otras se dedican a esperar a que alguien se conecte a una red para no levantar sospechas, y otras,
que son un poco impacientes, deciden forzar una conexión exitosa. ¿Cómo haría alguien eso? Usando un método llamado "deauthentication"
(desautenticación). La desautenticación ocurre cuando un cliente decide desconectarse de una red. Sin embargo, podemos forzar a un cliente a salir de la
red realizando lo que se llama un "Ataque de Desautenticación". Este ataque consiste en enviar paquetes a un cliente conectado al AP para forzar la salida
del cliente de la red. De este modo, el cliente intentará reconectarse automáticamente a la red y entonces podremos reunir el handshake. Para
realizar este ataque, usaremos "aireplay-ng", usando los parámetros mostrados en el siguiente comando:
Bash:
sudo aireplay -0 10 -a <diraccion_mac_del_AP> -c <diraccion_mac_del_cliente> <interfaz>
Con el comando mostrado arriba, enviaremos "paquetes de desautenticación" (eso es lo que significa específicamente el "-0") y para especificar la
cantidad de paquetes, pondremos un número junto al parámetro. En el ejemplo anterior, enviaremos 10 paquetes, pero si ponemos un 0, Airplay
enviará una cantidad ilimitada de paquetes). Tendremos que especificar la dirección MAC del punto de acceso usando el parámetro "-a", así como el
cliente conectado al punto de acceso usando el "-c". De este modo, solo desautenticaremos a ese cliente específico. Queremos hacerlo porque tenemos
más posibilidades de realizar la desautenticación, pero podemos optar por intentar desautenticar toda la red si queremos. Solo tendríamos que
eliminar la "-c" y la dirección MAC del cliente. Esta sería la salida del comando mostrado arriba.
Sin embargo, si prefieres una forma mucho más sencilla de realizar la desautenticación, he publicado una herramienta para realizar los ataques de
desautenticación ejecutando solo un comando usando "deauthr.sh" de la siguiente forma:
Ahora solo tendríamos que esperar a que el ataque tenga éxito y entonces podremos obtener el handshake. Cuando obtengamos el handshake, lo
sabremos porque literalmente aparece en la parte superior del panel de "airodump-ng":
Como podemos ver, en la línea superior pone "WPA handshake:,,,". Parece la dirección MAC del punto de acceso, lo que significa que lo hemos guardado
con éxito, y ahora, si tenemos un diccionario lo suficientemente buena, podremos descifrar la contraseña y obtener acceso no autorizado.
Pero, ¿qué es exactamente un diccionario? Un diccionario es una colección (realmente grande) de contraseñas almacenadas en un solo
archivo. Debemos usar el diccionario para intentar reventar la contraseña por razones obvias, ya que probar una contraseña una tras otra sería
realmente lento. No me malinterpretes, los ataques con diccionario son muy lentos, bueno, pero mucho más rápidos que intentar adivinar una
contraseña manualmente, así que eso es lo que vamos a hacer. Un diccionario se parece a esto:
Código:
...
edizzle69
doradaybendita
dondonan
derrickak47
degrassi
danza
daisy
cutiesmile
cowboys
cottam
confirm2
codystell!
cocaine
chili917
chevelle11
castillo
c5688768
bye bye
butterfly
...
Por supuesto, esto es solo un extracto de un famoso diccionario llamado "rockyou.txt", que hoy en día está obsoleto porque usa contraseñas muy
débiles (como puedes ver). Esto no sirve para un ataque de diccionario, porque como puedes ver, los APs no usan contraseñas tan débiles. Puedes intentar
generar las listas de palabras usando herramientas como "crunch", por ejemplo, para obtener una contraseña, o descargar una de alguna página web o
torrent. Una vez que tengas un diccionario, podemos empezar a reventar la contraseña con el siguiente comando.
Bash:
aircrack-ng -w <diccionario> <archivo_del_handshake>.cap
En mi caso, como capturé tráfico de diferentes redes en el mismo canal, tengo la oportunidad de seleccionar la red que quiero descifrar. En este caso,
seleccionaré aquél del que obtuve el handshake.
Y entonces empezarán el crackeo de la contraseña. Ahora solo queremos esperar hasta que finalmente descifremos la contraseña, y cuando por fin la
consigamos, esto es lo que veremos.
Y como podéis ver, hemos reventado la contraseña y obtenido acceso no autorizado a la red Wi-Fi.
Espero que te haya sido útil y te haya gustado. Cualquier petición ya sea relacionada con este tema o sea de negocios, podéis contactarme a través de mi cuenta de instagram:
https://www.instagram.com/daemoncibsec/Y de nuevo, si os interesa más el formato original (ya sea por que se ve más legible) o estáis interesados en más publicaciones de este estilo (aunque continuaré subiéndolas aquí),
podéis suscribiros a mi blog (sólo pido correo y contraseña, no recolecto información de ningún tipo. Respeto vuestra privacidad como espero que respetéis la mía). Agradecer a
los administradores por el buen trabajo que están haciendo con la página, y a todos vosotros por tomaros el tiempo para leer esto. ¡Nos vemos!
Última edición por un moderador: