Actualmente los dispositivos inalámbricos como Access Points, establecen determinadas medidas de acceso para permitir que solamente determinados clientes puedan asociarse a la red, para ello se han visto con anterioridad los más “rudimentarios” tales como ocultar el SSID del AP o filtrar los clientes habilitados por medio de su MAC, sin embargo como se ha visto, estos mecanismos son insuficientes y fácilmente burlados, con lo cual no es recomendable utilizar esta medida de seguridad como “única” medida a implementar.

Ahora bien, se cuenta con mecanismos de autenticación y cifrado de datos mucho más robustos, que implican el procesamiento de paquetes cifrados por parte del AP y del cliente, así como el establecimiento de claves de acceso que permiten solamente a aquellos clientes que las conocen, acceder directamente al AP para que esté pueda asignar una dirección IP valida (en el caso de que tenga un servidor DHCP en ejecución). Existen dos tipos de autenticación que se utilizan con frecuencia actualmente y son:

  1. Open Authentication

  2. Shared Authentication

En el caso de la primera, no existe ningún tipo de restricciones a nivel de autenticación establecido en AP para que cualquier cliente pueda conectarse, solamente se intercambiarán dos paquetes entre el AP y el cliente, pero no se realizará ningún tipo de validación de claves u otros. En el caso de la autenticación compartida, debe existir una clave que es validada por parte del AP.

En el caso de la autenticación abierta, no hay mucho que decir, dado que no hay un proceso de autenticación propiamente dicho, sin embargo en el caso de la autenticación compartida, existen algunos elementos a tener en cuenta, dado que el flujo de los paquetes para que un cliente pueda asociarse al AP puede cambiar un poco de como normalmente se entiende en las redes cableadas, la siguiente imagen enseña el proceso mediante el cual un cliente intenta autenticarse y posteriormente asociarse con un AP.

Ahora bien, antes de comenzar a describir los pasos anteriores, es necesario indicar en primera instancia que el mecanismo de autenticación compartida, es también conocido como WEP, este mecanismo necesita dos elementos importantes, en primer lugar se encuentran los vectores de inicializacion (IV’s) el cual es un valor de 3 bytes que cambia en cada uno de los paquetes enviados y por otro lado esta la clave WEP. Además de esto WEP utiliza el algoritmo RC4 que toma los IV y la clave WEP para crear una clave “cifrada” (por llamarlo de alguna manera) esta clave viene incluida en el interior de cada paquete que se envía en texto claro.

El procedimiento anterior se describe de la siguiente forma:

  1. En primer lugar el cliente envía una petición de autenticación con el AP.

  2. El AP genera un texto plano de 128 bytes aleatorio que envía al cliente con el fin de que “resuelva el reto”, esperando que el cliente, cifre dicho texto utilizando la clave WEP.

  3. El cliente recibe el “reto” del AP y utiliza el algoritmo RC4 junto con algún IV y la clave WEP para generar el texto cifrado que enviará posteriormente al AP.

  4. El AP recibe el texto cifrado y posteriormente intenta descifrarlo con la clave WEP verificando que corresponde con el enviado anteriormente.

  5. En el caso de que el proceso resulte correcto, el usuario se autentica con el AP, en caso contrario un error se producirá y no será posible realizar la autenticación y posterior asociación del cliente con el AP.

Ahora bien, para probar todo el procedimiento completo se puede utilizar airodump-ng para capturar todos estos paquetes intercambiados entre cliente y AP

>airodump-ng –channel 3 –bssid 64:68:0C:45:71:8B –write capture mon0

Cuando se realice una autenticación exitosa o fallida, todo quedará almacenado en varios ficheros con el nombre de “capture” entre los que se destacan “capture-01.kismet.csv”, “capture-01.kismet.netxml” , “capture-01.csv”, “capture-01.cap” este ultimo puede ser abierto con wireshark para visualizar su contenido y ver como se ha llevado a cabo el intercambio de paquetes entre cliente y AP.

Una vez abierto el fichero con wireshark, se puede filtrar por BSSID y excluir los paquetes relacionados con probe request y probe response, hasta el punto de dejar solamente los paquetes relacionados con la autenticación del cliente, como se podrá apreciar, existirán 4 paquetes, el primero lo inicia el cliente con número de secuencia “1”, posteriormente el AP responderá con el “Challange” y el número de secuencia “2”, el siguiente paquete lo envía el cliente, en donde se envía datos como el challange original, el IV (Vector de Inicialización) y el texto cifrado esperado por el AP, este paquete tendrá el número de secuencia “3”. El ultimo paquete intercambiado en el proceso de autenticación lo enviará el AP, con una respuesta de confirmación una vez ha verificado que el texto cifrado enviado por el cliente puede ser correctamente descifrado con la clave WEP y el IV, además coincide con el Challange enviado en el segundo paquete de autenticación, este último paquete tiene el número de secuencia “4”.

Es posible intentar crackear la contraseña WEP utilizando airodump-ng y aireplay-ng. El procedimiento más simple para hacerlo es el siguiente:

  1. Iniciar airodump-ng con el fin de recolectar todos los IV generados, para ello se ejecuta el mismo comando indicado lineas anteriores, es decir:

    >airodump-ng –channel 3 –bssid 64:68:0C:45:71:8B –write capture mon0

    Se ha especificado el canal, el BSSID y un fichero para almacenar los paquetes capturados.

  2. Se ejecuta aireplay-ng con el fin de realizar una falsa autenticación con el AP de la siguiente forma:

    >aireplay-ng -1 0 -e WLAN_7188 -a 64:68:0C:45:71:8B -h 11:22:33:44:55:66 mon0

    Se indica que se va a realizar un proceso de autenticación constante con el fin de generar IV’s. En este punto es importante establecer en la opción -h una dirección MAC de un cliente ya autenticado. En el caso de que dicha MAC no corresponda con un cliente autenticado el AP ignorará cualquier paquete y enviará un paquete de DeAuthentication en texto claro, en este estado no es posible crear nuevos IV’s

  3. Iniciar aireplay-ng desde otra consola con el fin de recolectar peticiones ARP y reinyectarlas de nuevo en la red (bouncing (repetidor) de peticiones ARP), la razón de esto es que el AP generará nuevos IV’s ya que reenvía dichos paquetes como broadcast a toda la red, generando rápidamente nuevos IV.

    >aireplay-ng -3 -b 64:68:0C:45:71:8B -h 11:22:33:44:55:66 mon0

    En la consola se podrá ver como el número de ARP y ACK es incrementado.

  4. Después de un tiempo de ejecución de aireplay-ng utilizar aircrack-ng para intentar crackear la clave WEP, para ello se especifica como parámetro el fichero *.cap generado por airodump-ng

    >aircrack-ng -b 64:68:0C:45:71:8B capture*.cap mon0

    De esta forma se intentará crackear la clave WEP utilizando los IVs recolectados.

Finalmente, no es un secreto para nadie que actualmente la seguridad de una red inalámbrica protegida por un mecanismo de cifrado basado en WEP, no es fiable ni seguro, dado que existen bastantes técnicas que se han empleado con éxito para “romper” las claves cifradas con RC4, por ende siempre se recomienda utilizar un mecanismo de cifrado fuerte como WPA o WPA2, el cual hasta el momento de la publicación de este post no tiene “debilidades” conocidas y la clave WPA solamente puede ser obtenida por medio de un ataque de fuerza bruta.

Una vez se concluya el análisis completo de WEP se procederá con WPA, así que las próximas publicaciones muy probablemente resultarán interesantes para el lector.