CTS Frame Attack es un ataque destinado a la denegación de servicio que puede dejar inoperativa una red inalámbrica durante un largo periodo de tiempo. Para entender cómo funciona el ataque y que es un paquete CTS deberemos profundizar en la base del Networking.
El modelo OSI (Open Systems Interconnection Model) es un marco conceptual usado para describir las funciones de un sistema de redes. Estas funciones se caracterizan en un conjunto universal de reglas y requisitos para respaldar la interoperabilidad entre diferentes productos y software. Las comunicaciones entre un sistema informático se dividen en siete capas abstractas:
OSI Model |
La capa física es la capa más baja del modelo OSI y se preocupa por el medio que se utiliza para la transmisión de la información, ya sea a través de electricidad, óptico o ya sea por radiofrecuencia. Contienen bits de datos no estructurados sin procesar.
En esta capa es donde se define la señalización y la codificación, es decir la transformación de un medio óptico, eléctrico o de radiofrecuencia a bits.
En el caso de la Wifi, el medio de transmisión es por radiofrecuencia.
En la capa de Enlace, los nodos conectados directamente se utilizan para realizar transferencias de datos donde los datos se empaquetan en tramas.
La capa de enlace tiene la habilidad de poder detectar y corregir los errores que puedan haber ocurro en la capa física. Sus principales funciones son el control de enlace y el control de acceso múltiple.
Data Link Control o control de enlace de datos es el responsable de que las transmisiones por el canal de transmisión sean confiables, utilizará técnicas como framing, error control y flow control. En esta capa aparecerá el término Stop & Wait ARQ.
Stop & Wait ARQ es el protocolo que consiste en no enviar el siguiente hasta recibir la confirmación de recepción del paquete previamente enviado, en caso de no recibir el ACK se volverá a retransmitir el paquete.
En el caso que haya un enlace dedicado entre el remitente y el receptor, como podría ser el caso de un cable ethernet entre dos dispositivos el control de acceso múltiple no sería necesario, sin embargo, si no hay un enlace dedicado, es decir que varias estaciones pueden acceder al canal simultáneamente, como es el caso de cualquier comunicación wireless, donde todos los clientes intentan enviar datos en el mismo medio (aire), se requieren múltiples protocolos de acceso para disminuir las colisiones y evitar el solapamiento.
Los protocoles de acceso múltiple se dividen en:
Este tipo de protocolos, todas las estaciones tienen la misma prioridad y cualquier estación puede enviar datos según el estado del medio ya sea inactivo o ocupado. Los protocolos de acceso al medio aleatorio tienen dos características, que no hay un tiempo fijo para enviar datos y que no hay una secuencia fija de estaciones que envían datos, es decir, no hay ni prioridad ni orden de envío.
ALOHA, CSMA, CSMA/CD y CSMA/CA son algunos de este tipo de protocolos.
En protocolos de acceso controlados, los datos se envían mediante una selección que es aprobada por todas las demás estaciones. Aquí aparece el significado de "Token".
Reservation, Polling y Token Passing son algunos de los protocolos de acceso controlados.
Finalmente, el último tipo de protocolos, son aquellos que el medio de transmisión se divide en slots o trozos y se reparte equitativamente entre las estaciones disponibles. Se puede dividir el canal en frecuencia, en tiempo o incluso en codificación.
Carrier Senser Multiple Access with Collision Avoidance (CSMA/CA) es un protocolo de acceso aleatorio que se desarrolló para disminuir las posibilidades de colisiones cuando dos o más estaciones comenzaban a enviar sus tramas a través de la capa de enlace.
CSMA requiere que cada estación verifique el estado del medio (ocupado o libre) antes de enviar una sola trama.
La idea básica detrás de CSMA es que la estación debería poder recibir tramas mientras transmite para detectar una colisión de diferentes estaciones. En redes cableadas, en el caso de producirse una colisión, la energía de la señal recibida sería aproximadamente el doble que la transmitida, por lo que se podría detectar una colisión.
En el caso de redes inalámbricas, simplemente aumenta un 5-10% de la señal, por lo que no es posible detectar la colisión. Por ese mismo motivo CSMA/CA ha sido especialmente diseñado para redes inalámbricas.
El problema del nodo oculto aparece cuando se empiezan a diseñar redes inalámbricas. Imaginemos que tenemos dos estaciones situadas dentro de un punto de acceso, estas estaciones o clientes tienen un alcance limitado, por lo que puede provocar que varios nodos dentro de una misma red no tengan visión entre ellos.
Problema del nodo oculto |
¿Entonces, como podemos disminuir las colisiones si no podemos detectar quien hay transmitiendo?
Por si solo CSMA/CA no puede, por lo que se utilizará otro protocolo. Aquí aparece la idea de Request to Send y Clear to Send (RTS/CTS). Este protocolo es aplicado antes de que tenga lugar una transmisión.
Una vez comprobado que el medio está libre y no hay nadie transmitiendo, que la propia base detecte claro está, preguntará a la estación base su deseo de transmitir (RTS). El receptor, que sería la estación base o punto de acceso envía la respuesta (CTS) donde transmite a todos los miembros de la estación que el medio va a estar ocupado por la estación solicitada. De esta forma gracias al RTS/CTS el problema de los nodos ocultos desaparece, ya que es la propia estación base la encargada de controlar y avisar a todos los miembros de la red que el medio va a estar ocupado.
RTS/CTS Message Exchange |
DIFS y SIFS son tiempos de espera entre paquetes que no entraremos en detalle. Para la realización del ataque nos enfocaremos en la creación de las tramas CTS.
¿Qué pasaría si una estación quisiera comunicarse continuamente con la estación base, es decir un envío continuo de tramas RTS? En el caso que estuviera solo en el canal, tendría acceso continuo. ¿Pero si hay dos o más?, como el acceso es de forma aleatoria se repartiría el canal de forma aleatoria entre las estaciones, por lo que bajaríamos la tasa de transferencia (throughput) pero sin llegar a crear una denegación de servicio.
¿Pero, que pasaría si suplantamos la identidad de la estación base y enviamos continuamente tramas CTS, diciendo que una estación X (obviamente una estación no existente dentro de la base) tiene permiso para transmitir? Pues que ninguna estación dentro de la red podrá transmitir un solo paquete hasta que la estación base les de permiso, es decir mientras estemos realizando el ataque nunca.
De esta forma podríamos conseguir dejar inutilizado o sin funcionamiento una red inalámbrica entera.
CTS Frame Attack Message Exchange |
Vamos a inspeccionar al detalle el paquete CTS con Wireshark. La tipología de paquetes al igual que en cualquier otro protocolo, está diferenciado por un identificador en la cabecera del paquete. Para los paquetes de tipo Clear-to-send (CTS) pertenece al tipo 28 (0x001c), aplicando un filtro de visualización en Wireshark nos permitirá filtrar nuestra captura.
wlan.fc.type_subtype==28
Paquetes Clear-to-send (CTS) |
Paquete CTS |
Paquete CTS capturado |
Una vez visto en profundidad la composición del paquete, modificaremos uno a nuestro antojo para la realización del ataque. Para ello exportaremos con Wireshark un paquete a modo de ejemplo.
En el menú de Wireshark “File -> Export Specified Packets” seleccionaremos la exportación de los paquetes seleccionados, que en este caso solo habremos seleccionado uno y lo exportaremos en formato PCAP.
Exportación de nuestro paquete CTS |
Nuestro paquete CTS abierto en hexeditor |
Redes Wi-Fi disponibles con airodump-ng |
Paquete modificado con hexeditor |
Paquete modificado abierto con Wireshark |
Inyectando nuestro paquete múltiples veces |
En el ataque que acabamos de realizar, se han inyectado 10.000 paquetes los cuales cada uno reserva 30.000 microsegundos, en total se ha reservado el canal 30 segundos. Especificando el parametro “–topspeed” nos permite enviar los paquetes uno tras otro sin esperar a la finalización de la transmisión de éstos.