Esta entrada, es una de las más importantes en esta serie, dado que afianza los conceptos teóricos que se deben conocer en profundidad antes de comenzar a hablar sobre temas avanzados sobre seguridad en redes inalámbricas, se hará en primer termino énfasis en los entornos de red inalámbricos y las arquitecturas de red relacionadas, posteriormente se hablará sobre el contenido de las cabeceras de un paquete wireless que difiere un poco de como son los paquetes ethernet.

AP: Como se ha indicado anteriormente es el Access Point o punto de acceso que brinda determinados servicios relacionados con la conectividad en una red centralizada. Es un elemento bastante común en redes inalámbricas donde existen clientes que se conectan a dicho AP para conseguir una salida a internet, dado que normalmente los AP están soportados con servicios DHCP que asignan de forma dinámica direcciones IP a los clientes que se conectan.

STA: Estación inalámbrica, se refiere a un ordenador o dispositivo móvil con facilidades de conexión wifi

BSS: Se trata de una estructura básica de servicios (Basic Service Set) que contiene entidades que se comunican entre si, se dividen en dos categorías,

  • BSS de Infraestructura: Escenario típico en el que existen un conjunto de clientes y un AP que brida servicios de conectividad.
  • BSS Independiente o AD-HOC: Escenario en el que no existe un AP centralizado, en lugar de esto, existe un conjunto de nodos (clientes) que se conectan entre si e intercambian paquetes de datos entre ellos.

BSSID: Se trata del identificador que asume un BSS que lo identifica de forma única, en el caso de un BSS centralizado (Clientes – AP) este valor es equivalente a la MAC del AP, en el caso de un BSS descentralizado (AD-HOC) este valor se genera aleatoriamente utilizando la MAC del primer cliente que ha iniciado la conexión con otros clientes.

ESS: Partiendo de la definición de BSS, un ESS es un conjunto de BSS conectados entre si (Extended Service Set)

DS: (Distribution System) es el conector de la arquitectura de red empleada para conectar AP’s que se encuentran localizados en diferentes BSS y que permite establecer la estructura base para crear ESS.

WDS: (Wireless Distribution System) se trata de un sistema que permite la interconexión entre varios AP, sirviendo como “relay” entre múltiples puntos de acceso. Frecuentemente este tipo mecanismos son empleados para la ampliación de la cobertura de redes inalámbricas.

ESTRUCTURA DE LOS HEADER DE UN PAQUETE WIRELESS

A continuación se detallan los campos que contiene un paquete WLAN que viaja en un entorno de red inalámbrico, los paquetes en una red inalámbricas son muy similares a los paquetes que viajan en una red ethernet, la siguiente imagen enseña cuales son los campos que contienen y la longitud máxima de cada una de esta “fracciones” del paquete.

Todas las cabeceras de un paquete desde el segmento correspondiente al “Destination Address” hasta el “Frame Body” inclusive, pueden no aparecer dependiendo del tipo de tipo y sub-tipo del paquete capturado. Ahora bien, existen 3 tipos de paquetes que son: “Management”, “Control” y “Data” los cuales a su vez tienen una serie de subtipos y la combinación de estos tipos y sus correspondientes subtipos determinan la aparición de algunos de los campos del paquete o su ausencia. Es importante anotar que todos los demás campos aparecerán siempre de forma obligatoria independiente del tipo de paquete, es decir, los campos “Frame Control”, “Duration ID”, “Source Address” y “FCS” siempre vienen incluidos en un paquete wireless.

Frame Control:

Este campo contiene muchísima información sobre el paquete capturado, de hecho el campo frame control, se encuentra dividido en pequeñas estructuras de información que componen el campo entero (2 Bytes) el contenido de las estructuras de este campo y sus correspondientes tamaños en bits es el siguiente:

  1. Protocol: Es un campo que identifica el estándar actual según la IEEE para el paquete wlan, por defecto su valor siempre es 0, no obstante, este valor podría cambiar en un futuro si una nueva versión es liberada y no es compatible con la versión anterior.

  2. Type / SubType Identifica el tipo de paquete, los valores de este campo pueden ser Management, Control o Data. Por otro lado “SubType” representa el identificador del subtipo relacionado con el campo “Type”.

  3. To DS / From DS: Estos dos campos que tienen un valor de un bit cada uno (0 o 1) indican el origen y el destino del paquete. La combinación de los posibles valores de estos dos campos definen el sentido del paquete de la siguiente forma:

    TO DS FROM DS SIGNIFICADO
    0 0 Indica que el paquete viaja de STA a STA (AD-HOC) lo que indica que el paquete viaja sobre un BSS independiente. También se establecen estos valores cuando se trata de Frames de Control o Management, (ver el campo “Type”). Dado lo anterior, solamente puede afirmarse que se trata de un paquete entre dos STA o una red AD-HOC cuando el tipo de paquete sea de datos, Type=“Data”.
    0 1 Indica que el paquete proviene de un Sistema de distribución (DS), un ejemplo de esta combinación es cuando un punto de acceso envía el paquete a un cliente
    1 0 Indica que el paquete va dirigido hacia un Sistema de distribución (DS), un ejemplo de esta combinación es cuando un cliente wireless (ordenador o dispositivo móvil) envía el paquete a un punto de acceso.
    1 1 Indica que se esta utilizando un WDS.
  4. More Frags: Indica que existen más fragmentos de este frame que deben ser “recompuestos”, esto normalmente ocurre cuando el tamaño del campo “Frame Control” no es suficiente para cubrir todos los datos que se están enviando. Este Flag solamente es aplicable a paquetes del tipo “Data” y “Management” y normalmente indica que un paquete esta siendo fragmentado dado su tamaño y se esta enviando en pequeñas partes. Este campo tiene un valor de 0 cuando se trata del último fragmento enviado o cuando simplemente no se ha fragmentado el paquete. Este campo tiene una estrecha relación con el la estructura “Sequence Control”localizada en las cabeceras del paquete y dicha estructura se encuentra subdividida en dos campos “Sequence Number” y “Fragment Number”de los cuales, el primero indica el número de secuencia y es un valor fijo para todos los fragmentos enviados y el segundo es un valor variable que identifica el número de fragmento enviado, el cual posteriormente será utilizado para recomponer en orden cada uno de los fragmentos recibidos. Todos estos conceptos son de vital importancia cuando se habla de ataques de fragmentación.

  5. Retry: Indica si el frame actual es una retransmisión de un fragmento previamente transmitido, solamente es aplicable a los frames del tipo “Management” y “Data”. Es útil para que el receptor reconozca transmisiones duplicadas.

  6. Power mgmt: Indica el modo de administración de poder (“active” o “save”) que tendrá el cliente (STA) después de la transmisión del frame.

  7. More Data: Indica que existen más frames en el buffer del cliente que serán enviados al destino.

  8. Protected Frame: Indica que el frame esta cifrado utilizando alguno de los mecanismos de protección disponibles para tal fin, como por ejemplo WEP o WPA/WPA. Es aplicable a frames “Data” y “Management”. El valor de 0 indica que no existe cifrado alguno.

  9. Order: Indica si el frame esta siendo enviado usando la clase de “Orden Estricto” como se define en el estándar o no.

DURATION/ID

Este campo puede asumir uno de dos valores, Duration o ID dependiendo de una serie de factores, en primer lugar se introduce un nuevo concepto que es NAV (Network Allocation Vector), NAV es simplemente una medición que determina la cantidad mínima (normalmente micro/nano segundos) de tiempo que un cliente (STA) necesita esperar antes de intentar una transmisión. Por ejemplo, partiendo del supuesto que existe una red donde existen N clientes conectados a un AP, los cuales transmiten información a dicho AP utilizando, evidentemente, el mismo canal de transmisión, cuando uno de estos clientes se encuentra transmitiendo datos al AP, utiliza el valor de NAV para hacerle saber a los demás clientes que deben esperar como mínimo dicha cantidad de tiempo antes de intentar realizar una transmisión.

Por otro lado el campo ID es utilizando cuando el tipo de subtipo del frame es Power-Save (Poll Message).

DESTINATION – SOURCE – BSSID

Se trata simplemente de las direcciones MAC del destino, origen y BSSID (ver en párrafos anteriores como se determina el valor del BSSID) estos campos no aparecen en todos los paquetes wireless, solamente aparecerán en función al tipo y subtipo del paquete.

SEQUENCE CONTROL

Se trata de un campo que se encuentra subdividido en dos valores, estos son número de secuencia y número de fragmento. El número de secuencia es básicamente el número de secuencia del paquete transmitido por una entidad wireless y el número de fragmento es el número de fragmento del paquete (en el caso de que el paquete sea un fragmento), como se ha visto anteriormente en el campo More Frags del Frame Control, es posible que un frame se encuentre fragmentado en varias “piezas” o no, en función a este valor, el número de fragmento del Sequence Control tendrá un valor superior a cero, en el caso de que el frame no este fragmentado el valor será 0. Ademas, el valor de Sequence Control siempre asumirá un valor fijo para todos los fragmentos enviados, mientras que el valor de Fragment Number tendrá un valor único para cada fragmento.

QoS CONTROL

Este campo indica la calidad del servicio entre las entidades wireless que participan en la comunicación.

FRAME BODY

Se trata del header que mayor información puede contener, dado que en su interior se almacena el payload entero del paquete, es decir, los datos que se están trasmitiendo al destinatario de la comunicación. Por otro lado, también es posible que contenga información relacionada con el tipo y subtipo del paquete cuando se manejan frames del tipo Management.

Normalmente cuando un paquete es capturado desde wireshark y este es de tipo Management, este campo se encuentra contenido en el nodo “IEEE 802.11 wireless LAN management frame” y contiene dos nodos adicionales que son “Fixed Parameters” y “Tagged Parameters” estos campos contienen bastante información que es útil para comprender en profundidad detalles sobre el entorno de red y los participantes en la comunicación.

FCS (Frame Check Sequence)

Este campo almacena el resultado del chequeo de redundancia cíclica del frame entero (CRC) con el fin de verificar que el contenido del paquete es correcto.

FLUJO DE PAQUETES ENTRE CLIENTE Y ACCESS POINT

Cuando un cliente encuentra un AP en su área, el procedimiento de conexión, autenticación, intercambio de paquetes y posterior desconexión sigue un flujo de paquetes que difiere de la forma en la que lo hacen los clientes de una red cableada, la razón de esto es precisamente por las características propias de una red inalámbrica, en la que juegan múltiples factores relacionados principalmente con el entorno, los AP y los clientes se vuelven accesibles e inaccesibles de forma constante, además la intensidad de la frecuencia con la que se comunican las distintas entidades en un entorno inalámbrico se ve afectada frecuentemente por obstáculos e interferencias en el aire.

Dado este escenario, el intercambio de paquetes intercambiados entre cliente y AP tienen la siguiente estructura
El diagrama anterior, resulta fácil de entender, ya que resume de forma clara cuales son los diferentes estados en los que se encuentra un cliente antes de tener acceso a un AP. Como puede verse en el estado 1, un cliente solamente tiene conocimiento del AP gracias a los Beacon Frames que este envía como señales Broadcast, no obstante el cliente aun no tiene ningún tipo de relación con dicho AP. En el estado 2, el cliente realiza el proceso de autenticación con el AP, sin embargo aun no se encuentra asociado con el mismo. En el estado 3 se lleva a cabo el proceso de asociación del cliente con el AP (después de una autenticación exitosa). La asociación es el proceso mediante el cual, el AP reconoce al cliente, en este punto si el AP utiliza un servicio DHCP, se le asignará de forma automática una dirección IP a dicho cliente, en el caso contrario (dirección IP estática) el enviará su dirección IP asignada de forma automatica por el dispositivo al AP, este a su vez registrará dicha dirección en su tabla de direcciones interna (normalmente utilizando protocolo ARP).

Finalmente, en cualquiera de los estados anteriores puede existir una notificación de “DeAutenticacion” la cual indica a ambas partes (AP y Cliente) que la asociación se ha perdido, lo que puede deberse a muchísimas causas, normalmente asociadas con la conectividad, en tales casos, dependiendo de la configuración del cliente, se enviaran paquetes de re-asociación indicándole al AP que se debe iniciar nuevamente el proceso de asociación con entre ambas partes. Este escenario puede generar una denegación de servicio de una forma muy fácil, ya que cualquiera puede generar dichos paquetes de DeAutenticacion entre la comunicación de un cliente y un AP. Esto se verá con mayor detalle en próximas publicaciones.