# Metodología de Pentest Wifi

***

Las vulnerabilidades clásicas (WEP, WPS con PIN estático) están casi extintas en entornos corporativos serios. El enfoque moderno se centra en fallos de protocolo (client-less) y ataques a la identidad (Enterprise).

***

Las fases en las que se pueden dividir las pruebas son:

1. Descubrimiento de dispositivos.
2. Análisis de configuración, protocolos y autenticación.
3. Análisis y explotación de vulnerabilidades.
4. Post-explotación y análisis de la infraestructura interna.

***

## <mark style="color:red;">Fase 0: Preparación del entorno de pruebas</mark>

Para preparar el entorno, se deberá contar con hardware adecuado para poder realizar las pruebas sin impedimentos.

**¿Cuántos SSID están dentro del alcance?**

Como mínimo, se recomiendan dos antenas para poder realizar pruebas en las redes con comodidad. Si el número de SSID es elevado, es mejor contar con más antenas para poder realizar más pruebas en paralelo sin perder tiempo.

**¿En qué banda emiten?**

Las antenas deberán contar con compatibilidad con las bandas permitidas por los dispositivos dentro del alcance. Normalmente se emite en 2,4Ghz y 5Ghz. No obstante, es posible que durante las pruebas se encuentre que los AP emiten solo en 5Ghz y si alguna de las antenas no lo permite, no nos servirá de nada y dificultará la realización de las pruebas.

Para conocer más detalles de qué hardware elegir: [herramientas](https://www.xtormin.com/pentesting-en-infraestructuras/redes-wi-fi/herramientas "mention")

### Configuración del entorno de pruebas

Antes de comenzar, habrá que conectar las antenas al dispositivo, por ejemplo, máquina virtual y verificar que se detectan correctamente.

Se ejecuta el siguiente comando para listar las interfaces de red:

```bash
ip a
```

### Escáner de redes

Antes de comenzar a capturar el tráfico en modo monitor, se pueden escanear las redes fácilmente con el siguiente comando:

```bash
IFACE=wlan0
iwlist $IFACE scan
```

## <mark style="color:red;">Fase 1: Descubrimiento de dispositivos</mark>

Para poder identificar los dispositivos, es necesario saber que se trata de una relación cliente-servidor. En la cuál los dispositivos que emiten las redes Wi-Fi (routers, AP, etc.) son el "servidor" y los dispositivos que se conectan a dichas redes (portátil, móvil, IoT, etc.) son los "clientes".

Sabiendo esto, se deberán capturar los paquetes que se transmiten por ambas partes, tanto de forma individual como en conjunto, para poder obtener información de dichos paquetes.

Para identificar los dispositivos, tanto AP como clientes, se podrá utilizar aircrack-ng para capturar paquetes que luego podrán ser analizados para extraer información relevante en adelante para la ejecución de las pruebas y explotación de posibles vulnerabilidades.

### Identificación de redes disponibles

Para poder capturar paquetes, habrá que configurar las antenas en modo monitor. Ante la duda de si las redes están emitiendo en 2,4Ghz o 5Ghz, mejor configurarla en 5Ghz, que capturará ambas redes:

[#modo-monitor](https://www.xtormin.com/pentesting-en-infraestructuras/redes-wi-fi/..#modo-monitor "mention")

```bash
IFACE=wlan0
ip link set $IFACE down
airmon-ng check kill
iw $IFACE set monitor none
iw dev $IFACE set txpower fixed 3000
iw dev $IFACE set freq 5180
ip link set $IFACE up
iw dev
```

Con la tarjeta de red, por ejemplo, *wlan0* en modo monitor, se utiliza *airodump-ng* para capturar los paquetes de todas las redes al alcance y escribir la información en un fichero PCAP:

```bash
IFACE=wlan0
PCAP=captura
airodump-ng $IFACE --write $PCAP
```

Si se quiere obtener información de una red en concreto, por ejemplo, las redes dentro del alcance o redes de la organización objetivo, se puede usar el argumento `--essid-regex`, que permite filtrar según el nombre de la red:

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

Si se quiere obtener mejor la captura de un punto de acceso en concreto, se utiliza el argumento `--bssid` para indicar la MAC objetivo y el canal que se quiera utilizar con el parámetro `--channel`:

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

### 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 (Probe Response).&#x20;

Por ejemplo, si se ejecuta la herramienta de airodump capturando paquetes, inicialmente no se verán los nombres de las redes. No obstante, cuando un cliente se conecte a la red, se capturará el paquete *Probe Response* y se identificará el BSSID al que se encuentra asociada la SSID.

Esta conexión por parte del cliente a la red puede ocurrir de dos formas:

* El cliente se conecta a la red.
* Se deautentica al cliente de la red, forzando a que vuelva a conectarse: Para esto, habrá que identificar qué clientes están conectados al SSID oculto y deautenticarlos. [#deautenticacion](https://www.xtormin.com/pentesting-en-infraestructuras/redes-wi-fi/..#deautenticacion "mention")

```bash
IFACE=wlan0
PCAP=captura
airodump-ng $IFACE --write $PCAP
```

El nombre de la SSID se mostrará asociada al BSSID en vivo en la salida de airodump, aunque también se puede consultar posteriormente en el pcap filtrando el paquete de Probe Response [#probe-response-ap](https://www.xtormin.com/pentesting-en-infraestructuras/redes-wi-fi/..#probe-response-ap "mention").

Si solo hay una red oculta, se pude realizar la misma captura afinando más el comando para apuntar al BSSID objetivo:

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

{% hint style="danger" %}
¿Y si no consigo que se muestre el nombre?

Se pude deber a muchos motivos, algunos de ellos pueden ser:

* Que no se conecten clientes a la red en el momento de capturar los paquetes.
* Que cuando se deautentica un cliente, este se conecte a un AP distinto al que no tengamos alcance.
  {% endhint %}

### Análisis de los paquetes

Usando wireshark es posible filtrar los paquetes y obtener información relevante sobre las redes.

## <mark style="color:red;">Fase 2: Análisis de configuración, protocolos y autenticación</mark>

Existen dos tipos de autenticación:

* Open Key: Redes abiertas.
* Shared Key: Autenticación con clave compartida.
* Simultaneous Authentication of Equals (SAE): Autenticación simultánea de iguales.

<figure><img src="https://940481291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFPk1C70Fp5SRurFLmfzj%2Fuploads%2F57ZFytwOtTrPO0kTsSFh%2Fredes.png?alt=media&#x26;token=7626773c-26db-435b-89e5-d8980be8884a" alt=""><figcaption></figcaption></figure>

## <mark style="color:red;">Top Vulnerabilidades Explotables</mark>

### **Attack PMKID (Client-less WPA2/WPA3)**

* Por qué es top: Fue descubierto en 2018, pero las herramientas para explotarlo (`hcxdumptool`) han madurado increíblemente en los últimos 3 años.
* La vulnerabilidad: Muchos routers modernos incluyen un campo opcional en el primer frame del handshake (RSN IE) llamado PMKID.
* La ventaja: No necesitas esperar a un usuario. Puedes atacar al router directamente y obtener el hash para crackear. Funciona incluso en redes con WPA3 si están en "Transition Mode".

```bash
IFACE=wlan0
hcxdumptool -i $IFACE --rds=1 -F
```

### **EAP Downgrade & Hostile Portal (WPA-Enterprise)**

* Por qué es top: Las empresas usan WPA2-Enterprise (Usuario/Password). El eslabón débil no es el cifrado, es la configuración de los clientes (Windows/Android).
* La vulnerabilidad: Los "Evil Twins" modernos (`EAPHammer`) fuerzan a los dispositivos a usar protocolos de autenticación más débiles (GTC) para robar credenciales en texto plano, o capturan el hash NetNTLM para pasarlo por Hashcat.

### **WPA3-Transition Mode Attacks**

* Por qué es top: Como WPA3 puro no es compatible con dispositivos viejos, las empresas usan el modo "Transition" (WPA2 + WPA3).
* La vulnerabilidad: Permite ataques de degradación (downgrade attacks). Puedes forzar a un cliente capaz de WPA3 a conectarse usando WPA2 y atacar ese protocolo.

### **OWE (Opportunistic Wireless Encryption) Evil Twin**

* Por qué es top: Es el reemplazo de las redes "Abiertas" (Open) en el estándar WiFi 6/6E.
* La vulnerabilidad: Aunque cifra el tráfico, no autentica al AP. Un atacante puede crear un gemelo malvado OWE y el cliente cifrará el tráfico *hacia el atacante* creyendo que es seguro.

## <mark style="color:red;">Ataques según el tipo de red</mark>

### Redes personales

{% content-ref url="wpa2-psk-red-personal" %}
[wpa2-psk-red-personal](https://www.xtormin.com/pentesting-en-infraestructuras/redes-wi-fi/wpa2-psk-red-personal)
{% endcontent-ref %}

### Redes corporativas

{% content-ref url="wpa2-mgt-red-corporativa" %}
[wpa2-mgt-red-corporativa](https://www.xtormin.com/pentesting-en-infraestructuras/redes-wi-fi/wpa2-mgt-red-corporativa)
{% endcontent-ref %}

## <mark style="color:red;">Fase 5: Post-Explotación</mark>

Si se consigue RCE en un equipo Windows, se puede intentar obtener el contenido en claro de las claves con el siguiente comando:

```
netsh wlan show profile name="NOMBRE_DE_RED" key=clear
```
