lunes, septiembre 18, 2017

Hacking Wi-Fi: Cómo funciona el "Salto de Canal" (Parte 1 de 2)

A día de hoy son muchísimas las herramientas que existen para “jugar” con las redes LAN a través de Ethernet (IEEE 802.3), sin embargo, cuando hablamos de las redes WLAN (IEEE 802.11) la cosa cambia, sobre todo si dejamos a un lado la todopoderosa Suite Aircrack-ng. Por lo que se hace indispensable conocer bien el protocolo y alguna herramienta que nos ayude a crear y automatizar nuestros propios scripts para poder auditar este tipo de redes. Hoy vengo a hablaros sobre algo con lo que he estado pegándome para la construcción de un proyecto de seguridad en redes Wi-Fi que tiene que ver con las Raspberry Pi, con Python, con Scapy, con el IEEE 802.11, y con algunas cosas más. Cito estas, como más relevantes, porque vienen a colación, son los protagonistas a lo largo de todo este artículo.

Figura 1: Hacking Wi-Fi: Cómo funciona el "Salto de Canal"

Tengo que decir, que desde que me he adentrado en estos menesteres, me he topado con una gran carencia en cuanto a documentación sobre la librería Scapy referente a IEEE 802.11 (Scapy Dot11), aunque realmente hoy no vengo a hablaros sobre la Scapy - Dot11, sino más bien de un paso previo, imprescindible para crear nuestras propias herramientas para la auditoria inalámbrica. Se trata del salto de canal para poder monitorizar la red. Vais a ver la importancia que tiene realizar bien este proceso.

Puede que muchos pensaréis, y estaréis en lo cierto, que lo más lógico sería comenzar por hablar del modo MONITOR o RFMON. Voy a partir de la idea de que ya sabéis poner una interfaz en modo monitor y que conocéis toda la problemática. De todas formas, os dejo un enlace, donde hablo un poco sobre todo esto, a modo de introducción, seguro que os sirve si queréis repasar conceptos. También, a lo largo del presente artículo, os dejaré algunos escenarios y ejemplos donde podáis probar todo esto.

El "Salto de Canal": Conceptos Básicos

La primera vez que tuve que enfrentarme a este proceso, ¡ingenuo de mí!, pensé que era algo más simple, con menos problemas a tener en cuenta. En algo había acertado, programarlo en sí, no es complejo. Lo más impórtate es tener claros todos los conceptos y entender bien su funcionamiento. Una vez superado este nivel, es coser y cantar.

Voy a dividir este documento en dos partes, por un lado, un poco de teoría que vais a leer en esta parte, lo que nos ayudará a comprender el script que realiza el salto de canal y por otro lado la creación del propio script con una pequeña PoC para verificar que todo funciona correctamente. Antes de comenzar a saltar, voy a internar no profundizar demasiado en ciertos conceptos, más que lo justo, preciso y necesario.

El modelo OSI y el estándar IEEE 802.11

El estándar 802.11 define los protocolos que actúan sobre las capas inferiores del modelo OSI para las conexiones inalámbricas que utilizan ondas electromagnéticas. Estas son:

Figura 2: El modelo OSI y el estándar 802.11
  • Capa1, La capa física. Ofrece tres tipos de codificación de información.
  • Capa 2, capa de enlace de datos. Compuesta por dos subcapas: control de enlace lógico (LLC) y control de acceso al medio (MAC).
La capa 1 es la capa física que define la modulación de las ondas de radio y las características de señalización para la transmisión de datos. La capa 2 es la capa de enlace de datos define la interfaz entre el bus del equipo y la capa física, en particular un método de acceso parecido al utilizado en el estándar Ethernet, y las reglas para la comunicación entre las estaciones de la red.  En realidad, el estándar 802.11 tiene tres capas físicas que establecen modos de transmisión alternativos:

Figura 3: Capas físicas DSSS, FHSS e Infrarojo

Estándares 802.11

En realidad, 802.11 es el primer estándar y permite un ancho de banda de 1 a 2 Mbps. El estándar original se ha modificado para optimizar el ancho de banda o para especificar componentes de mejor manera con el fin de garantizar mayor seguridad, compatibilidad o velocidad. Existen varios estándares como son 802.11b, 802.11g, 802.11a, 802.11n, 802.11ac, que son los más conocidos o utilizados).

Es importante conocer estos estándares, sus velocidades y en la banda de frecuencia en la que trabajan para poder capturar la mayor parte del tráfico inalámbrico. Esto es importante, porque no todos los estándares son compatibles entre sí, sobre todo hacía atrás.

Figura 4: Estándares IEEE 802.11

Podéis encontrar información más detallada de cada uno de los principales estándares en el artículo de la Wikipedia dedicado a 802.11. Como veis, existen bastantes, de ahí que se le conozca como el abecedario de 802.11.

Bandas y frecuencias

Son conceptos importantes cuando hablamos de redes inalámbricas. Entendemos por banda de frecuencia, los intervalos de frecuencias del espectro electromagnético asignados a diferentes usos dentro de las radiocomunicaciones. Cada una de estas bandas tiene una asignación de frecuencias que determina cómo se utiliza y se comparte para evitar interferencias entre canales y especificar el protocolo de comunicación que permita la comunicación entre el emisor y el receptor. Abarcando desde una frecuencia inicial hasta una frecuencia final. Estás bandas puede ser de tres tipos:
  • Bandas particulares.
  • Bandas licenciadas.
  • Bandas libres.
Estas bandas están sujetas a las normativas locales de cada país. Las bandas libres son aquellas donde cualquier persona puede transmitir sin necesidad de tener un permiso. Hablaremos particularmente de las bandas 2,4 GHz y 5 GHz por ser usadas prácticamente en todo el mundo por el estándar IEEE 802.11.

Según el estándar utilizado, se utilizará una banda o la otra, así como la velocidad máxima soportada. Cualquier persona puede tener en su casa un equipo de Wi-Fi transmitiendo en estas frecuencias sin tener que pedir permisos para ello o sin causar problemas a los demás. Para que esto sea posible es necesario cumplir con ciertas reglas que están contempladas en la regulación de estas bandas. Las más importantes tienen que ver con la potencia máxima y mecanismos para evitar interferencias.

Figura 5: Banda de 2.4 Ghz y sus canales

En Europa, para aplicaciones de interior estas bandas tienen una limitación de potencia de 200 mW y para exteriores de 1 W o 4 W dependiendo de la frecuencia exacta. Estas potencias son bastante bajas si las comparamos con las que radian las antenas de móviles que pueden llegar a ser de 25 W o más y por eso hay que tener cuidado al poner antenas muy grandes a los equipos de Wi-Fi para enlazar dos puntos alejados. Cada banda incorpora su propia distribución y numeración de canales de forma independiente.

Canales Wi-Fi

Un canal define simplemente la frecuencia central de transmisión de una comunicación con un ancho de banda concreto según la banda utilizada. A mayor ancho de banda mayor será la “velocidad” de la comunicación. Las comunicaciones mediante Wi-Fi utilizan entre 5 MHz y 60 MHz de ancho de banda. Como veremos posteriormente los canales se representan con un valor numérico que hace referencia a una frecuencia concreta.

Figura 6: Canales de la banda 2.4 Ghz

En la imagen podemos observar los canales disponibles en la banda 2.4 Ghz. Que van desde el 1 hasta el 14. Como se aprecia, al restar las frecuencias de los canales contiguos, el ancho de banda es de 5 Mhz. También podemos observar, según el país, los canales disponibles. En España utilizamos lo canales que van desde el 1 hasta el 13. Una vez que hemos definido a grandes rasgos todos estos conceptos, pasemos a detallar lo más importante y a tener en cuenta con relación a lo que estamos estudiando. El salto de canal y la captura de tramas a través del aire.

El "Salto de Canal": Conceptos Clave

.Una vez digeridos, grosso modo, los pilares de las comunicaciones inalámbricas a través del IEEE 802.11, comentemos todo aquello que tenemos que tener en cuenta para poder realizar un óptimo “sniffing” en redes WLAN.

Como comentamos, el estándar utilizado es importante. Éste define la velocidad y la banda de frecuencia. Por lo que si queremos analizar todo el tráfico WLAN debemos de utilizar una tarjeta inalámbrica que sea compatible con las bandas 2.4 Ghz y 5 Ghz y a su vez soporte la mayor parte de los estándares, por ejemplo: 802.11b,g,n,ac. También debe de soportar el modo monitor y la inyección de paquetes.

Otro de los aspectos importantes a la hora de capturar los paquetes que viajan por el aire es el canal que, como vimos, es una frecuencia especifica según la banda utilizada. Según el país en el que nos encontremos podremos utilizar unos canales u otros. Por lo tanto, deberemos de tenerlo en cuenta a la hora de realizar el sniffing.

Una interfaz inalámbrica solo puede utilizar un canal a la vez. Esto quiere decir que no podemos estar realizando un sniffing en el canal 1 y en el 10 a la vez. Si la interfaz se encuentra en el canal 1 no podrá capturar los paquetes que se trasmiten por el canal 10 y esto, obviamente, es un problema. Sea como sea, estamos perdiendo tráfico, aunque existen diferentes estrategias para solventarlo, pero las dejaremos por ahora para más adelante.

Solapamiento de canales o channel overlapping

Como comentábamos, la banda de 2.4Ghz utiliza unos canales definidos según el país que van desde el canal 1 (2.412Ghz) al canal 14 (2.484 Ghz) con un ancho de banda entre canales contiguos de 5 Mhz. Cuando se transmite se utiliza un ancho de banda determinado, no es algo específico, que se propagará de igual manera a ambos lados de la frecuencia central del canal. Si el ancho de banda que se transmite es mayor al ancho de banda de dos canales contiguos (> 5 Mhz) entonces estaremos hablando de un solapamiento entre canales.

Figura 7: Solapamiento de canales en 2.4 Ghz

Por ejemplo, si una interfaz transmite en el canal 6, y la transmisión utiliza un ancho de banda superior a los a los 5Mhz, estará solapando, como mínimo, a sus canales contiguos 5 y 7, dependiendo del ancho de banda consumido. Un canal necesita un ancho de banda de 22 Mhz. Por lo que solapará a todos los canales contiguos hasta donde llegue el ancho de banda del canal. A continuación, os dejo una tabla con todos los canales y sus solapamientos.

Figura 8: Solapamiento de canales

El solapamiento no solo complica la tarea de compartir la banda de frecuencia por parte de todos los dispositivos, también genera múltiples interferencias en las comunicaciones. Por este motivo, resulta de suma importancia elegir correctamente un canal para realizar las comunicaciones. Los canales que no se solapan entre si son: 1, 6 y 11. Que son conocidos como los canales no solapados. Para un estudio con mayor profundidad sobre todo esto os dejo el siguiente enlace de Recursos TIC.  Para la banda 5Ghz os dejo el siguiente enlace.

Para cambiar el canal de nuestra interfaz tenemos dos opciones.
  • iwconfig [interfaz] channel [canal: 1-14]
  • iw dev [interfaz] set channel [canal: 1-14]
Potencia Máxima

Como comentamos, las frecuencias en las que puede trabajar una tarjeta de red Wi-Fi están reguladas por la normativa del país. También se regula la potencia máxima con la que se transmite. Las tarjetas vienen con restricciones para que no se pueda transmitir a mayor potencia y, por extensión, cometer un delito. Mediante iwconfig podemos comprobar la potencia máxima de nuestras interfaces.

Figura 9: iwconfig en Kali Linux 2

NOTA: Todas las capturas y ejemplos se han realizado en una Raspberry Pi 3, utilizando la interfaz inalámbrica de serie del dispositivo y una distribución de Kali Linux modificada.

Como se puede ver en la imagen, la interfaz wlan1 es la interfaz de red por defecto de la Raspberry Pi:
  • Utiliza los estándares IEEE 802.11 bgn.
  • Está en modo managed (cliente - estación).
  • Tiene una potencia de 31 dBm (Tx-Power).
Aunque no aparece el campo “Frequency”, este se puede cambiar como mencionamos anteriormente. En contra-ejemplo, la interfaz wlan0, una tarjeta inalámbrica USB externa, está conectada a un punto de acceso en la frecuencia 2.457 Ghz que corresponde al canal 10 de la banda 2.4Ghz. En esta salida no se aprecia la potencia máxima. Utilicemos entonces las nuevas extensiones inalámbricas de GNU/LiNUX (nl80211 – Paquete iwutils).

Figura 10: iw dev en Kali Linux

En esta imagen se aprecia mejor que la interfaz wlan1 tiene un txpower de 31 dBm mientras que la interfaz wlan0 tiene un txpower de 12 dBm. La potencia máxima legal autorizada de la mayoría de los países, donde se incluye España, es de 20 dBm. Con los números sobre la mesa, se puede llegar a la conclusión de que si mi tarjeta inalámbrica (wlan1) tiene una potencia máxima de 31 dBm y la máxima permitida en España es de 20 dBm, lo que podría llegar a hacer pensar que mi tarjeta funcionara en márgenes ilegales.

No. No es así. Estos comandos muestran la señal a la que podría emitir la interfaz, pero aún así sigue estando limitada a 20 dBm. Existen varias formas para cambiar el txpower de una interfaz.
  • iwconfig [interfaz] txpower [dBm]
  • iw dev [interfaz] set txpower <auto|fixed|limit> []
  • iw phy [phyname] set txpower <auto|fixed|limit> []
Saltando restricciones


Hasta aquí hemos comentado que, por defecto, la interfaz inalámbrica restringe el uso de los canales a la normativa vigente del país, de igual forma ocurre con la potencia máxima. Por lo que si realizamos un cambio de canal a la interfaz wlan1 para que utilice el canal 14.  Nos encontraremos con el siguiente error.

Figura 11: Error obtenido al poner el canal 14

Lo mismo ocurrirá si cambiamos la potencia máxima. Y esto, ¿a qué se debe? Pues como comentamos, a la restricción del país. Mediante  iw reg get podemos comprobar la región.


Figura 12: Región configurada
Podemos observar que por defecto la distribución de Kali Linux para Raspberry Pi viene configurada con un “country” “DE: DFS-ETSI”. Si buscamos ese “codeen la siguiente tabla obtenemos que pertenece a Alemania (“Germany”) ISO 3166-2:DE. Vamos a cambiarla a la normativa a la española. Con lo que obtenemos lo siguiente.


Figura 13: iw reg set ES

En la primera columna encontramos las bandas de frecuencia en las que podemos emitir. Para el caso de la banda 2.4 Ghz, sería desde 2.4 hasta 2.483 Ghz. Es importante recordar que, aunque el primer canal se encuentra en la frecuencia 2,412 Ghz, el ancho de banda, como dijimos anteriormente, se reparte hacia ambos lados del canal. Recordar también que el ancho de banda máximo es de 22 Mhz, por lo que serían 11 Mhz para cada lado, dejando una holgura de 1 Mhz. Es decir, 2,412 menos 0,012 nos da la frecuencia de 2,4 Ghz. Lo mismo ocurre con el canal 13, que tiene una frecuencia de 2.472 Ghz, si le sumamos los 11 Mhz del ancho de banda obtenemos 2,483 Ghz, que es la frecuencia máxima permitida en esa banda.

El valor después del símbolo “@” es 40 Mhz, que es el máximo ancho de banda. ¿Pero el máximo ancho de banda no era 22 Mhz? Sí, efectivamente, pero en el estándar IEEE 802.11g. Sin embargo, en el estándar IEEE 802.11n que utiliza también la banda de frecuencia de 2.4 Ghz el ancho de banda es de 40 Mhz. Ese es el motivo.

El siguiente valor, es un 20, que nos indica la potencia máxima a la que podemos emitir. Por eso, aunque la tarjeta inalámbrica tenga, como es el caso, una potencia máxima de 31 dBm se restringe a 20 dBm.

Figura 14: Valores de Bolivia antes y ahora

Y ahora la pregunta del millón... ¿Se pueden cambiar estas restricciones? La respuesta es, sí. Hay varias formas de hacer esto. En el siguiente enlace os deja una base de datos con todas las restricciones según el país a fecha de 07/03/2017. Si el controlador de la tarjeta inalámbrica no está “hardcoded”, bastaría con asignar un país con unas restricciones menos prohibitivas. Hasta hace poco, Bolivia permitía utilizar todos los canales con una potencia máxima de 30 dBm. Pero esto ha cambiado. Aunque siempre nos quedará la Guyana Británica.

Figura 15: Valores de Guyana Británica

Existen otras formas más oscuras de cambiar estos valores, pero para mi trabaja no me interesa profundizar en esto. Para lo que estéis interesados, aquí os dejo un enlace donde se explica correctamente el proceso. Recordad que “transmitir a mayor potencia de la permitida en su país, así como en canales no permitidos es completamente ilegal y no debe de hacerse.” También os dejo aquí un enlace sobre qué ventajas reales puede tener aumentar la potencia máxima, sobre todo a la hora del hacking.

Autor: Enrique Andrade - NETTinG

5 comentarios:

_Baudet dijo...

Milgracias por tomarte tu tiempo en enseñarnos!!

Victor dijo...

Muy buena explicacion. Gracias

RFigueres dijo...

Artículo genial. Excelente tutorial, ya con ganas de leer la segunda parte.

Por si a alguien le interesa:

Más info en español sobre la elección de canal wifi y cómo funciona:

http://www.sysadmit.com/2016/06/wifi-elegir-canal-buenas-practicas-capitulo-2.html

Unknown dijo...

Buen articulo. Pero ¿cual es el motivo por el que la diferencia los ultimos 2 canales es de 12 MHz y no de 5MHz?.
Por cierto un poco raro el comentario del foro de carding de Dark en una pag. de seguridad informatica. Ver para creer el morro q gastan algunos es enorme.

P9-BA dijo...

Muy interesante el articulo. Para afinar un poco más, y dado que 802.11b ya practicamente no se utiliza (o no se debería), yo añadiría un poco de información sobre modulaciones OFDM para 802.11gn, en los que si no me equivoco los canales son de 20MHz de manera que se pueden publicar cuatro ssids sin solapar en la banda de 4GHz utilizando los canales 1,5,9 y 13. Claro está que habría que tener cuidado con los yankies, q no podrian conectarse al ssid en el canal 13. Para despliegues masivos es un tema a tener en cuenta.
Corregidme si me equivoco. Un saludo a todos.

Entrada destacada

Tu Latch "Hack Your Innovation Contest": Haz un PoC & Hack por 1.000 €

El pasado Telefónica Innovation Day 2024 lanzamos oficialmente el " Tu Latch Hack Your Innovation Contest " en el que repartimos ...

Entradas populares