Categorías
Hacking Networking Services - Software

Wireless Hacking – Connectividad con WPA Personal, Uso de WPASupplicant – Parte XVII

En las publicaciones anteriores se ha hablado sobre el funcionamiento de WPA (Edición Personal) y los mecanismos empleados comúnmente para crackear una red con WPA/WPA2, sin embargo no se ha hablado de su uso más básico: Conexión con una red WPA. Es bastante común ver en foros y sitios por internet a personas que tras instalar alguna distribución de Linux (como por ejemplo, Debian o BackTrack) que tienen problemas con la conectividad con sus redes inalámbricas, aunque depende en gran medida del hardware utilizado y la distribución de Linux que se emplee, ahora lo más común es que después de la instalación de una distribución moderna de Linux no se encuentre ningún tipo de problema con las interfaces de red y todo funcione por defecto. En aquellos casos en los cuales parece que no funciona adecuadamente la red inalámbrica, puede ser de gran utilidad comenzar a utilizar y configurar una herramienta que se encuentra incluida por defecto en la mayoría de distribuciones de Linux disponibles, esta herramienta es WPA Supplicant

Tal como su nombre lo indica es un Supplicant (que como se ha comentado anteriormente, en la terminología de WPA, es simplemente un cliente) que se encuentra soportado por múltiples plataformas tales como Linux, Windows, MAC o BSD y cuya finalidad es hacer “transparente” para el cliente, las labores de búsqueda, detección, asociación y autenticación a redes inalámbricas en la zona. Comúnmente se ejecuta como demonio en la máquina donde se instala, sin embargo es lo suficientemente flexible como para ejecutarlo en linea de comandos.

Ahora, para instalar WPA supplicant es necesario descargar la ultima versión desde: http://hostap.epitest.fi/wpa_supplicant/

Dado que se trata de un programa escrito en lenguaje C, el uso del comando “make” permitirá crear los ficheros ejecutables, sin embargo antes de hacer esto, es necesario crear un fichero llamado “.config” el cual permite activar los módulos que se incluirán en la compilación de wpa supplicant utilizando make, en el caso de que este fichero de texto no se encuentre en el directorio raíz de wpa supplicant, la compilación fallará.

El contenido del fichero .config incluye las opciones de configuración necesarias para activar el soporte a diferentes mecanismos de autenticación y drivers soportados por la plataforma en la que se va a ejecutar WPA Supplicant. Su formato es simple, solamente es necesario indicar las opciones de configuración disponibles y establecer si estarán activas o no durante la compilación por ejemplo:

CONFIG_DRIVER_HOSTAP=y

CONFIG_DRIVER_MADWIFI=y

CONFIG_DRIVER_WEXT=y

CONFIG_DRIVER_BROADCOM=y

CONFIG_DRIVER_BSD=y

CONFIG_DRIVER_NDIS=y

CONFIG_IEEE8021X_EAPOL=y

CONFIG_EAP_MD5=y

CONFIG_EAP_MSCHAPV2=y

CONFIG_EAP_TLS=y

CONFIG_EAP_PEAP=y

CONFIG_EAP_TTLS=y

CONFIG_EAP_GTC=y

CONFIG_EAP_OTP=y

CONFIG_EAP_SIM=y

CONFIG_EAP_AKA=y

CONFIG_EAP_PSK=y

CONFIG_EAP_SAKE=y

CONFIG_EAP_GPSK=y

CONFIG_EAP_PAX=y

CONFIG_EAP_LEAP=y

CONFIG_EAP_IKEV2=y

CONFIG_PCSC=y

Con esta configuración es suficiente para activar todas las características incluidas en wpa supplicant, ahora es posible ejecutar el comando make.

No obstante, como se ha dicho con anterioridad, en muchas de las distribuciones modernas de Linux, se incluye por defecto una versión de wpa supplicant compilada y lista para ser utilizada, por ejemplo, en el caso de distribuciones como Debian Squeeze o Ubuntu 12.04, por defecto se encuentra instalado WPA Supplicant en la ruta /sbin/wpa_supplicant.

Ahora bien, una vez instalado es posible comenzar a utilizarlo desde linea de comandos especificando una serie de opciones soportadas y un fichero de configuración obligatorio donde debe incluirse la configuración de la red sobre la cual WPA Supplicant intentará conectarse, dicho fichero de configuración puede incluir un amplio conjunto de opciones que permiten definir políticas de seguridad y en general settings de configuración. Para conocer en detalle las opciones que pueden incluirse en el fichero de configuración de WPA, ver el siguiente ejemplo: http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf

Las opciones soportadas en WPA Supplicant son las siguientes:

>wpa_supplicant -h

wpa_supplicant v0.6.10

Copyright (c) 2003-2009, Jouni Malinen <j@w1.fi> and contributors

This program is free software. You can distribute it and/or modify it

under the terms of the GNU General Public License version 2.

Alternatively, this software may be distributed under the terms of the

BSD license. See README and COPYING for more details.

This product includes software developed by the OpenSSL Project

for use in the OpenSSL Toolkit (http://www.openssl.org/)

usage:

wpa_supplicant [-BddhKLqqstuvW] [-P<pid file>] [-g<global ctrl>] \

-i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] [-p<driver_param>] \

[-b<br_ifname>] [-f<debug file>] \

[-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \

[-p<driver_param>] [-b<br_ifname>] …]

drivers:

wext = Linux wireless extensions (generic)

nl80211 = Linux nl80211/cfg80211

wired = wpa_supplicant wired Ethernet driver

options:

-b = optional bridge interface name

-B = run daemon in the background

-c = Configuration file

-C = ctrl_interface parameter (only used if -c is not)

-i = interface name

-d = increase debugging verbosity (-dd even more)

-D = driver name

-f = log output to debug file instead of stdout

-g = global ctrl_interface

-s = log output to syslog instead of stdout

-K = include keys (passwords, etc.) in debug output

-t = include timestamp in debug messages

-h = show this help text

-L = show license (GPL and BSD)

-p = driver parameters

-P = PID file

-q = decrease debugging verbosity (-qq even less)

-u = enable DBus control interface

-v = show version

-W = wait for a control interface monitor before starting

-N = start describing new interface

example:

wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf

Ahora, otro punto importante que debe tenerse en cuenta, es la sintaxis que debe seguir el fichero de configuración obligatorio que debe establecerse en la ejecución del comando con la opción “-c”, en realidad se trata de un fichero con una sintaxis claramente definida y muy simple que puede comprenderse rápidamente, a la fecha de escribir este articulo existe un fichero de configuración de ejemplo que puede ser utilizado para estudiar su sintaxis y declarar una configuración personalizada partiendo de este, se encuentra localizado en: http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf

En dicho fichero de configuración pueden establecerse muchas opciones relacionadas con mecanismos de autenticación para WPA/WPA2 Enterprise sin embargo, esto se verá más adelante. A parte de las opciones de configuración simples que se encuentran en dicho fichero, los bloques principales de configuración, incluyen la información de los AP a los cuales el Supplicant debe intentar establecer una conexión, dichos bloques tienen la siguiente sintaxis

network={
 ssid="ssid"
 psk="passphrase"
 proto=WPA
key_mgmt=WPA-PSK
pairwise CCMP
}

Este seria un ejemplo del fichero de configuración utilizando algunas de las opciones disponibles, no obstante existen algunas otras que se pueden ver en el fichero de configuración de ejemplo anteriormente indicado. Como se puede apreciar, consta de una sintaxis muy simple y solamente es necesario establecer la configuración de la red inalámbrica a la cual se desea conectar un Supplicant determinado (pueden existir uno o varias instrucciones “network” en el mismo fichero de configuración para varias redes inalámbricas). Una vez definido el fichero de configuración, se puede comenzar a utilizar el comando wpa_supplicant tal como se indica en los siguientes ejemplos.

>wpa_supplicant -Dwext -iwlan0 -c /wpa_supplicant.conf

>wpa_supplicant -Dwext -iwlan0 -c /wpa_supplicant.conf -dd -K

En las ejecuciones anteriores, se utiliza el Driver Wireless Extensions de Linux, la interfaz de red WLAN0, el fichero de configuración de WPA_Supplicant, modo verbose y se activa la salida de las contraseñas utilizadas durante el proceso de autenticación (por defecto no se enseñan en la salida del comando).

Como puede apreciarse, su ejecución es muy simple, sin embargo en algunos casos resulta conveniente que este proceso se ejecute como demonio en lugar de estar ejecutándolo una y otra vez, para ello se suele editar el fichero de configuración de conexiones inalámbricas que se encuentra ubicado en el directorio /etc/network/interfaces el contenido opcional de este fichero, para que funcione correctamente con wpa supplicant y para que cada vez que se inicien las interfaces de red del ordenador se realice el proceso de autenticación de forma automática con las redes indicadas en el fichero de configuración, se deben incluir las siguientes lineas.

iface wlan0 inet dhcp

wireless-mode managed

wpa-key-mgmt WPA-PSK

wpa-proto WPA

wpa-ssid <SSID_WLAN>

wpa_conf /etc/wpa_supplicant.conf

auto wlan0

Las lineas que resultan interesantes aquí, son las que corresponden a la configuración WPA, es necesario definir el SSID de la red que se debe utilizar de forma automática para la interfaz de red WLAN0 (suponiendo que ese sea el nombre de la interfaz de red inalámbrica) y el fichero de configuración de WPA Supplicant que ya se ha indicado anteriormente.

NOTA: En este caso concreto, el fichero de configuración debe contener un contenido similar al siguiente:

network={

ssid=»WLAN_7189″

#psk=»clave»

psk=213e42506e7e849a017d15493cb27d1244339c34265c5bfe4283sdfghjklñoe

}

Como puede verse, el atributo “psk” ya no contiene el la passphrase en texto plano, en su lugar se encuentra cifrado. Para generar dicha configuración, solamente es necesario ejecutar desde linea de comandos lo siguiente:

>wpa_passphrase SSID_LAN clavewpa

network={

ssid=»SSID_LAN»

#psk=»clavewpa»

psk=8a7a34079ad6776a7e719e1e312cbd7506292449f0a606cf22aeccca67a68896

}

La utilidad wpa_passphrase se encuentra incluida en el paquete de wpa supplicant y como puede apreciarse, con solamente incluir el SSID y la clave de la red, automáticamente arroja la configuración de red necesaria para conectarse con el SSID con WPA.

WPA Supplicant se ha convertido en el estándar de facto en las distribuciones mas recientes de Linux, de hecho, la mayoría de utilidades que se ejecutan desde gestores de ventanas tales como GNOME o KDE tales como el Network Manager utilizan un demonio en ejecución con wpa_supplicant, es por esta razón que es tan simple utilizar dichas herramientas sin la necesidad de configuración adicional (ya que todo lo hacen dichas herramientas) no obstante en algunos casos wpa_supplicant no viene correctamente instalado y/o configurado (por ejemplo, esto ocurría en algunas versiones antiguas de Debian) y es en dichos casos en los que se hace necesario saber utilizar WPA Supplicant para realizar conexiones a dispositivos AP en el área.

Esta será la ultima entrada en esta serie sobre conceptos básicos de WPA/WPA2 personal con PSK, en las próximas publicaciones, el enfoque principal será el uso de WPA/WPA2 Enterprise con servidores Radius para ejecutar la autenticación de clientes desde dichos servicios, que como se verá más adelante, cambia un poco el esquema que se ha explicado en los mecanismos de autenticación WPA/WPA2 con PSK.

Por Daniel Echeverri

Formador e investigador en temas relacionados con la seguridad informática y hacking. Es el autor del blog thehackerway.com el cual ha sido el ganador del European Cybersecurity Blogger Awards 2021 en la categoría de “Best Technical Content“.

2 respuestas a «Wireless Hacking – Connectividad con WPA Personal, Uso de WPASupplicant – Parte XVII»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *