
Un script PoC experimental para la vulnerabilidad Kr00k (CVE-2019-15126)
Este script es un experimento simple para explotar la vulnerabilidad KR00K (CVE-2019-15126), que permite descifrar algunos datos WPA2 CCMP en dispositivos vulnerables (Punto de Acceso o Clientes). Más específicamente, este script intenta recuperar datos descifrados de paquetes WPA2 CCMP conociendo:
Donde:
Este PoC funciona en WLANs WPA2 AES CCMP con frecuencia de 2.4GHz. (NOTA: probado solo con mi adaptador inalámbrico TPLINK TL-WN722N, pero creo que debería funcionar también con otros adaptadores inalámbricos capaces de inyectar paquetes).
Para comprobar la vulnerabilidad Kr00k puede ser necesario lanzar el PoC varias veces, porque (parece que) no siempre se almacena una cantidad suficiente de datos en los dispositivos vulnerables (pista: prueba con aplicaciones de streaming, videollamadas, etc.).
Este script debe ejecutarse como usuario privilegiado y con la interfaz inalámbrica configurada en modo monitor.
Se requiere la instalación de los paquetes Python "scapy" y "Cryptodome". El script es compatible con Python 3.
A continuación se muestran algunos ejemplos de uso de la herramienta. Debes insertar las direcciones MAC del AP y del cliente; también es importante configurar el canal WiFi correcto de la WLAN WPA2 CCMP y especificar el identificador del objetivo. Usa la opción "--help" para una lista más exhaustiva.
# python3 kr00ker.py -i <interface-name> -b <BSSID> -c <MAC-client> -n <num-packets> -r <reason-id> -t <target-id> -w <wifi-channel> -d <delay>
Algunos ejemplos a continuación.
Lanza el ataque Kr00k usando la interfaz wlan0mon contra el dispositivo cliente (-t client), con razón 3, retardo de 2 segundos, número de tramas de desasociación 5, en el canal wifi 2:
# python3 kr00ker.py -i wlan0mon -b XX:XX:XX:XX:XX:XX -c ZZ:ZZ:ZZ:ZZ:ZZ:ZZ -n 5 -r 3 -t client -w 2 -d 2
Lanza el ataque Kr00k usando la interfaz wlan0mon contra el punto de acceso (-t ap), con razón predeterminada 7, retardo predeterminado 4 segundos, número predeterminado de tramas de desasociación 1, en el canal wifi 11:
$ sudo python3 kr00ker.py -i wlan0mon -b XX:XX:XX:XX:XX:XX -c ZZ:ZZ:ZZ:ZZ:ZZ:ZZ -t ap -w 11
Cuando la vulnerabilidad Kr00k se activa en el dispositivo objetivo, el volcado hexadecimal (hexdump) de los datos descifrados se muestra en la salida, y estos datos también se guardan en un archivo pcap.
A continuación un ejemplo de salida para un dispositivo vulnerable a KR00K:

kr00ker fue desarrollado por Maurizio Siddu
Copyright (c) 2020 kr00ker
Este programa es software libre: puedes redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a tu elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA ALGUNA; sin siquiera la garantía implícita de MERCANTIBILIDAD o IDONEIDAD PARA UN FIN PARTICULAR. Véase la Licencia Pública General de GNU para más detalles.
Deberías haber recibido una copia de la Licencia Pública General de GNU junto con este programa. Si no, consulta http://www.gnu.org/licenses/.