Ataques sobre infraestructuras WPA Enterprise con hostapd-WPE
En el artículo anterior sobre hostapd-wpe se detalló el proceso de compilación e instalación del paquete hostapd-WPE para OpenWrt Barrier Breaker 14.07. Este artículo continúa explicando el proceso de configuración y ejecución de hostapd-WPE para OpenWrt con el objetivo de realizar distintas pruebas de seguridad WiFi sobre entornos WPA Enterprise 802.11X.
Hostapd-WPE permite la realización de ataques de suplantación del servidor de autenticación IEEE 802.1x (WPA Enterprise) permitiendo obtener las credenciales de los clientes, aunque también implementa el ataque Cupido, permitiendo realizar ataques sobre clientes que se intentar autenticar mediante la explotación de la vulnerabilidad Heartbleed (CVE-2014-0160) sobre conexiones EAP-PEAP/TLS/TTLS.
- Configuración de interfaz 802.11a (5Ghz)
Se ha comprobado que ciertos dispositivos no levantan la interfaz Wi-Fi 802.11a cuando se inicia el dispositivo, por lo tanto será necesario configurarla manualmente.
En primer lugar, se comprobará las interfaces disponibles ejecutando el comando
iwconfig
Alternativamente se podrá ejecutar iw, permitiendo identificar las interfaces asociadas a los dispositivos físicos:
iw dev
En caso de que la interfaz 80211a no se encuentre levantada deberá configurarse manualmente. En primer lugar se listarán las interfaces físicas disponibles mediante la ejecución del siguiente comando:
iw phy
Tras la ejecución del mismo se listarán las interfaces físicas mostrando la información de las características de cada dispositivo. Finalmente será posible levantar manualmente la interfaz, en este caso la interfaz física phy0 que será levantada con nombre wlan0 en modo managed.
iw phy phy0 interface add wlan0 type managed
También será posible configurar la interfaz en modo monitor, mediante la modificación del parámetro type estableciendo el valor monitor en vez de managed. Las opciones disponibles para dicho parámetro son las siguientes: managed, ibss, monitor, mesh, wds
- Creación de certificados SSL propios (Opcional)
A pesar de que se han proporcionado certificados por defecto en el paquete, será posible crear nuestros certificados autofirmados propios para la suplantación de identidad de redes WPA enterprise mediante la ejecución script bootstrap, incluido en la carpeta bootstrap/certs del fichero hostapd-wpe-for-OpenWrt-14.07.tar. Dado que OpenWrt no dispone de ningún paquete que incluya las herramientas de línea de comandos de Openssl será necesario ejecutar el script bootstrap en un entorno Linux que sí disponga de ellas.
Los distintos parámetros de la entidad de certificación empleada para la firma del certificado, así como los distintos parámetros de certificado pueden ser configurados mediante la modificación los ficheros ca.cnf y server.cnf respectivamente.
Generalmente los parámetros que se desean modificar serán los mostrados en la siguiente imagen:
Tras la ejecución del script bootstrap se crearán las claves privadas y los distintos certificados. Para hacer uso de los distintos certificados en hostapd-WPE para OpenWrt será necesario copiar los ficheros ca.pem, server.pem, server_no_pass.key, y dh en el directorio /usr/local/etc/hostapd-wpe/certs del dispositivo.
- Ejecución de hostapd-WPE
Para ejecutar hostapd-wpe será necesario especificar un fichero de configuración en el que se especifican los distintos parámetros de ejecución.
El paquete incluye dos ficheros de configuración funcionales para iniciar un punto de acceso 80211/b/g/n (hostapd-wpe-bgn.conf), como 802.11a/n (hostapd-wpe-an.conf). Ambos ficheros están disponibles en el directorio /usr/local/etc/hostapd-wpe del dispositivo.
A continuación se comentan las opciones de configuración más relevantes:
- Interfaz
Mediante esta opción se especificará la interfaz en la que se levantará la red Wi-Fi. A través de este parámetro se deberá especificar la interfaz empleada para levantar el punto de acceso.
interface=wlan0
- SSID
El SSID de la red se puede configurar mediante la modificación del parámetro ssid.
ssid=Acrylic Wifi
- Canal
El canal puede ser configurado a través de la opción channel. Cabe destacar que los canales serán distintos en función de si el punto de acceso se encuentra en la banda de 2,4Ghz (802.11 b/g/n), que si encuentra en 5Ghz (802.11a).
channel=6
- Certificados y claves privadas
A través de las siguientes opciones se especificará la localización de los certificados y claves privadas generadas tras la ejecución del script bootstrap.
ca_cert=/usr/local/etc/hostapd-wpe/ca.pem
server_cert=/usr/local/etc/hostapd-wpe/server.pem
private_key=/usr/local/etc/hostapd-wpe/server_no_pass.key
private_key_passwd=whatever
dh_file=/usr/local/etc/hostapd-wpe/dh
- Ficheros de log
La opción wpe_logfile permitirá especificar el fichero de log en el que se guardarán los hashes obtenidos tras la autenticación de un usuario y que serán empleados posteriormente para realizar el cracking.
wpe_logfile=./wpe_an.log
Los ficheros de configuración por defecto guardan el fichero en el directorio de trabajo actual.
- Ejecución de hostapd iniciando un punto de acceso 802.11b/g/n
Mediante la ejecución del siguiente comando será posible iniciar un punto de acceso 80211b/g/n haciendo el uso del fichero de configuración proporcionado hostapd-wpe-bgn.conf. La opción -dd permite iniciar hostapd en modo debug permitiendo mostrar información de las autenticaciones de usuario.
Hostapd-wpe -dd /usr/local/etc/hostapd-wpe/hostapd-wpe-bgn.conf
A medida que se conecten los usuarios se irá mostrando por pantalla:
- Ejecución de hostapd iniciando un punto de acceso 802.11ac
Para ejecutar hostapd-wpe levantando un punto de acceso 80211ac se podrá hacer uso del fichero de configuración por defecto hsotapd-wpe-an.conf .
Hostapd-wpe -dd /usr/local/etc/hostapd-wpe/hostapd-wpe-an.conf
Cracking de hashes WPA enterprise para la recuperación de credenciales de clientes
En primer lugar será necesario recuperar los hashes WPA enterprise de los ficheros de log y almacenarlos en un fichero.
cat wpe_bgn.log
grep "jtr NETNTLM"
sed 's/[ ]*jtr NETNTLM:[ ]*//' > hashes_john.txt
Realizar el cracking con John the ripper:
john hashes-john.txt
Alternativamente se puede hacer uso de asleap. El siguiente comando hace uso de John the Ripper para la realización de modificaciones sobre las palabras de un diccionario, para asignarlo a la entrada de asleap. El guión después del parámetro –W (wordlist) permite asignar la salida de John the Ripper realizando la modificación de las palabras del diccionario a la entrada de asleap.
john --wordlist=/usr/share/john/password.lst --rules --stdout
El cracking también puede ser realizado con Aircrack o CowPatty.
asleap -C 5d:7c:53:ac:39:0d:44:c8 -R
0b:ee:1a:9e:0c:c4:98:aa:55:1c:69:92:62:e5:d5:82:60:0c:e8:81:01:81:23:91 -W -
Referencias:
- https://blog.opensecurityresearch.com/2012/04/capturing-and-cracking-peap.html