Mostrando entradas con la etiqueta Wi-Fi. Mostrar todas las entradas
Mostrando entradas con la etiqueta Wi-Fi. Mostrar todas las entradas

miércoles, julio 23, 2025

WhoFi: Deep Person Re-identification. Cómo saber quién está en una ubicación midiendo la señal WiFi

El mundo de la visión WiFi, o lo que es lo mismo, "ver cosas" a partir de los datos de perturbación de la señal, lleva mucho tiempo estudiándose. Recuerdo que en el año 2009 hablé del paper titulado "Through-Wall Motion Tracking Using Variance-Based Radio Tomography Networks" donde explicaban cómo utilizar las variaciones de la señal WiFi para detectar movimiento de objetos detrás de muros.
A partir de ese momento, hace ya más de quince años, se han hecho muchas investigaciones sobre cómo utilizar las perturbaciones en la señal de un canal - lo que se llama "Chanel State Information" (CSI) y que viene a ser la información que podemos mediar de un canal (por ejemplo la potencia de señal en una malla de campo ) - para poder detectar objetos, formas y movimientos.
Tras ese trabajo, en el año 2014, con estas técnicas se era ya capaz de mucho más, como explicaron en un nuev paper titulado "Multi-Person Motion Tracking via RF Body Reflections", donde además de ver a través de los muros ya se era son capaz de llegar a detectar un número exacto de personas en movimiento o detectar el movimiento del pecho de una persona en concreto para poder conocer hasta el ritmo cardiaco, solo con medir el CSI de la red WiFi.
La idea que se utiliza se basa en crear un dispositivo con múltiples antenas, de un tamaño muy manejable cercano al de una moneda, para poder triangular todas las señales reflejadas por un cuerpo, detectando en tiempo real el ritmo de la respiración e infiriendo el ritmo cardiaco.

Por supuesto, desde aquel año 2009 hasta hoy, la evolución de las técnicas de Machine Learning, con los avances en algoritmos de Deep Learning, ha hecho que con los nuevos algoritmos de Inteligencia Artificial, puedes hacer extracción mucho más fina de los datos CSI de una red WiFi, y de eso trata el trabajo de WhoFi, de ser capaz de re-identificar a una persona que entra en un espacio por medio de las perturbaciones en la señal WiFi, o lo que es lo mismo, de los datos del CSI que se generan. 
La idea no es nueva, y se basa en trabajos y datasets disponibles de trabajos anteriores, como "SenseFi: A library and benchmark on deep-learning-empowered WiFi human sensing" y el sistema de autenticación "CAUTION: A Robust WiFi-Based Human Authentication System via Few-Shot Open-Set Recognition"  que utiliza unas pocas capturas de CSI para hacer una huella de una persona usando Deep Learning. En el caso de WhoFi, lo que se busca es, aprovechando los avances en algorítmica de IA, conseguir un ratio de acierto mucho mayor en la re-identificación de personas previamente hechas "onboarding".

Primeramente se le hace un onboarding en el sistema, construyendo para cada persona un vector normalizado a partir de un Encoder de IA que que procesa los datos CSI del canal WiFi, con el objetivo de generar una huella digital de esa persona.
El Enconder, lo han construido con varios modelos diferentes, para probar cuál de ellos daba mejores ratios, y los que han probado han sido los que mejores resultados dan en secuencias de datos temporales, como son los LSTM, los Bi-LSTM y nuestros queridos Transformers, que también se pueden usar para visión.
Los resultados quedan muy a las claras en las siguientes tablas, donde todos los datasets utilizados - incluidos datos CSI generados con técnicas de Data Augmentation para tener un mayor número de personas onboarding - dejan a las claras que con con los Transformers se consiguen ratios de re-identificación altísimos y con una gran precision.
Esto es algo muy relevante, porque utilizar los datos CSI de la WiFi como forma de autenticación continua puede cambiar los sistemas de alarma en el hogar, detectando si son las personas que deben ser las que están en casa o no, por ejemplo, para tener una alarma silenciosa, pero también se podrían usar para vigilar espacios, movimientos de personas, etcétera.

Figura 2: Libro de Machine Learning aplicado a Ciberseguridad de
Carmen Torrano, Fran Ramírez, Paloma Recuero, José Torres y Santiago Hernández

Al final, tenemos un canal de datos, y con el avance de las técnicas de Inteligencia Artificial, los casos de uso que pueden aparecer son cada vez mayores, al ser capaces de detectar aún más insights de información de los datos disponibles. Datos + Algoritmos = Programas, y hoy en día, Datos + IA = Conocimiento.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


miércoles, noviembre 25, 2020

Libro de "Hacking redes WiFi: Tecnología, Auditorías y Fortificación". Novedad en @0xWord

Hoy en 0xWord estamos contentos, pues hemos conseguido tener a tiempo en plazo uno de los libros en los que hemos estado trabajando durante de este año. Ferran Verdés Castelló ha concluido el libro de "Hacking redes WiFi: Tecnología, Auditorías y Fortificación", en el que ha estado dedicando muchas horas. Y desde hoy está disponible y a la venta.


La segunda versión de Wi-Fi Protected Access, más conocida comercialmente como WPA2, se trata, sin lugar a duda, de uno de los protocolos de seguridad más utilizados del mundo. Cuando este acontecimiento se combina con el hecho que los responsables de seguridad IT consideran las redes inalámbricas corporativas como el punto débil de las organizaciones, no hace falta recalar la importancia de conocer y dominar el ámbito inalámbrico para poder aplicar las medidas de seguridad más robustas y restrictivas posibles. De no ser así, el riesgo es elevado y el resultado es potencialmente catastrófico. 


En la presente obra se pretende proporcionar las bases sobre las cuales se ostenta el hacking de redes inalámbricas. Es por este motivo que existe una primera parte teórica que detalla y revela las arquitecturas más frecuentemente implementadas, así como las diferentes tramas presentes en el medio y también el proceso que efectúa una estación cliente cuando desea unirse a una red inalámbrica. 

Seguidamente, el contenido avanza a una parte práctica en la que se aplican diferentes técnicas que podrían violar la integridad y confidencialidad de una comunicación de estas características, tomando como punto de partida diferentes configuraciones que pueden ser aplicadas a las mismas. Aquí tienes el índice detallado del contenido subido a SlideShare.


Desde la visualización de los diferentes componentes pertenecientes a la suite Aircrack-ng hasta la instalación y configuración de hostapd-wpe para efectuar la suplantación de un punto de acceso en un contexto de autenticación empresarial, pasando también por la instalación de herramientas como Pyrit o Wifiphisher, en esta primera versión no se emplea una distribución específica del mundo inalámbrico, sino que se introduce al lector al ecosistema considerando incluso los comandos que deben ser ejecutados para la instalación de estas, así como sus configuraciones necesarias a establecer.


El autor, como he dicho antes, es Ferran Verdés Castelló,  que se graduó como Ingeniero Informático por la Universitat de Lleida y Postgraduado como docente en tecnología por la Universitat Politècnica de Catalunya. Se incorpora en una empresa de seguridad informática en el año 2016 para desempeñar tareas de auditoría de sistemas y seguridad en infraestructuras pertenecientes a entidades bancarias e instituciones públicas. En el mismo año, obtiene el Premio a la mejor tesis de fin de grado de la Escola Politècnica Superior de la Universidad de Lleida, donde actualmente ejerce como profesor asociado. Como la mayoría de los autores de los libros de 0xWord, para facilitar el aprendizaje, puedes consultarle a través de su buzón público en MyPublicInbox.com/FerranVerdes

Saludos Malignos!

domingo, octubre 07, 2018

Vídeos: Seguridad en Redes Wi-Fi, Aura y un poco de Hadoop

Hoy domingo, os dejo tres vídeos para repasar cosas sobre Seguridad en Redes Wi-Fi, gracias a una sesión que hicieron nuestros compañeros de ElevenPaths, un pequeño vídeo sobre Haddop que forma parte de los contenidos del blog de LUCA, y una charla sobre la 4th Plataforma, AURA y Movistar Home - prereserva para early adopters abierta - que hice yo en Londres en inglés.

Figura 1: Vídeos: Seguridad en Redes Wi-Fi, Aura y un poco de Hadoop

Es solo parte del material que hemos puesto estos días atrás a disposición pública en el canal de Youtube de ElevenPaths, el canal de Youtube de LUCA y el mi canal de Youtube. 


Figura 2: Seguridad en redes Wi-Fi


Figura 3: Digital Futures 2018.
BigData, AI, 4thPlatform, AURA & Movistar Home


Figura 4: Hadoop for dummies

Como hoy es un domingo otoñal para estar preparando la vuelta al comienzo de la semana, tal vez encuentros unos minutos que llenar con nuevos conocimientos.

Saludos Malignos!

martes, marzo 20, 2018

Amazon Dash Button: Un hack para enviar un SMS las noches de fiesta

Hace unas semanas decidí comprar un DashButton, uno de esos botones para el mundo IoT que comercializa Amazon y que, asociados a diferentes marcas, permiten al usuario poder comprar un producto que está asociado al botón sin necesidad más que la de pulsarlo. El botón está configurado para que el usuario pueda adquirir el producto sin introducir ningún dato durante el proceso. Muchos me pueden preguntar para qué compre eso, pero es fácil, quería darle una vuelta a esta tecnología tan sencilla y quería ver qué cosas podía hacer con él.

Figura 1: Amazon Dash Button: Un hack para enviar un SMS las noches de fiesta

Ojeando un poco por Internet vi que existen muchos usos, desde pedir pizza con el botón, usarlo de timbre en casa, solicitar un taxi, etcétera. Sin duda, el límite está en nuestra imaginación. Aprovechando que pasé por el TechFest de la URJC en la semana que dedicaban el congreso a sistemas robóticos y el mundo de IoT, decidí jugar con el DashButton. Aparte, mi compañero Álvaro Nuñez-Romero hizo una demo sobre MicroLatch muy recomendable, utilizando Latch en el ámbito de la domótica.

Requisitos para hacer tu proyecto con el DashButton

Lo primero, como es lógico, es tener un DashButton. Una de las posibilidades es manipular el DashButton para modificar su lógica a nivel de circuito, pero en esta ocasión lo haremos todo desde el punto de vista lógico. Estudiaremos cómo funciona el DashButton a nivel de peticiones para ello le “encerraremos” en una Wi-Fi con una Raspberry Pi. A la posible pregunta de, ¿por qué Nesquik? Soy más de Nesquik que de ColaCao ;-)

Figura 2: Mi DashButton de Nesquick

Para esto, tenemos que configurar el DashButton para que cuando se conecte a una Wi-Fi, ésta sea la de nuestra Raspberry Pi. Es importante que la Raspberry Pi no tenga salida a Internet, o al menos la interfaz Wi-Fi no reenvíe el tráfico a la interfaz de cable y las peticiones alcancen Internet.

¿Qué pretendemos?

Lo primero es poder identificar la dirección MAC de nuestro DashButton, ya que en la carcasa no viene. Con la dirección MAC podremos detectar cuando el DashButton está utilizando la red para intentar comprar algo, es decir, cuando el usuario ha pulsado el botón. Éste es nuestro plan para poder cambiar la funcionalidad al botón IoT:
1. El botón se encuentra conectado a una red Wi-Fi, la que crearemos en nuestra Raspberry Pi. 
2. La Raspberry Pi tiene instalado y configurado hostapd, esto nos permite convertir la interfaz Wi-Fi en un AP, Access Point. 
3. La interfaz de red cableada de la Raspberry Pi estará conectada a Internet, pero esto no es importante, lo importante es que la interfaz Wi-Fi y la de cable no tengan puente entre ambas. Es decir, cuando el tráfico del botón llegue por la interfaz Wi-Fi de la Raspberry Pi, ésta no lo reenvíe por la de cable que estará conectada a Internet. 
4. Conectar el DashButton a la Wi-Fi de la Raspberry Pi, tener un sniffer escuchando por la interfaz inalámbrica y poder capturar el tráfico que el botón genera cuando es pulsado.
Identificar cuando un usuario pulsa el botón es importante, ya que necesitamos esto para poder aplicar la lógica que nosotros queramos.

La captura de tráfico

El punto 4 es importante, gracias a este paso podremos descubrir la dirección MAC del botón, y podremos ver cuál es el comportamiento del dispositivo cuando es pulsado en lo que a peticiones de red se refiere.

Figura 3: Descubriendo la MAC del DashButton

Como se puede ver en la imagen, lo primero que hace el botón es obtener una dirección IP a través del protocolo DHCP, así como servidores DNS y puerta de enlace. Aunque no se vea en la captura, también hace uso del protocolo ARP para obtener la dirección física de la puerta de enlace.

El botón realiza una petición DNS para resolver una dirección del NIST, en este caso, es el dominio de un servidor NTP. Como se puede ver en la imagen, posteriormente, hace uso del protocolo NTP para la sincronización horaria. Por último, realiza peticiones DNS para resolver una dirección de Amazon. El último paquete que envía es el inicio de conexión de protocolo TCP en la que apunta al puerto 443, con el objetivo de iniciar una conexión bajo HTTPS. Esta conexión daría lugar a la compra del artículo asociado al botón.

¿Qué podemos hacer? Es fácil, tenemos los elementos para detectar que el botón ha sido activado. Si observamos en la red tráfico cuya dirección física origen es la MAC del dispositivo y observamos un inicio de conexión TCP con el flag de SYN activo al puerto 443, esto quiere decir que el botón ha sido pulsado por el usuario. Estas dos circunstancias serán nuestros desencadenantes para llevar a cabo la ejecución de cualquier script, es decir, cualquier acción que queramos.

El código: Un par de scripts

En este caso, he preparado un script escrito en Ruby con el que, al detectar, mediante el uso de PacketFu, una librería similar a Scapy en Python, tráfico con dirección origen la del botón y un paquete TCP destino al puerto 443 se dispare otro script con el que se ejecutará lo que realmente queremos hacer.

Figura 4: 

El código del sniffer viene del esqueleto que PacketFu proporciona en su Github. Se puede observar como si el paquete recibido tiene trama Ethernet y su MAC origen es la del botón se pasa a evaluar si el paquete tiene capa TCP y si, además, se realiza una conexión al puerto destino 443. Si esto ocurre se invoca un segundo script.

Figura 5: PacketFu en GitHub

El segundo script implementa la conexión con un cliente de SMS a través de su API para poder enviar un mensaje vía SMS a cualquier dispositivo móvil. En este caso, está configurado el envío del mensaje:
“Hey Girl! Already at home! Im not so drunk… I drove myself home!!!”.
¿Cuando es útil esto? Llegas a casa después de una noche movida y no te apetece escribir, pulsas el botón, notificas que llegaste bien a casa y a dormir. En la siguiente imagen, se puede ver como es el mensaje que nos llega al móvil configurado.

Figura 6: El mensaje SMS enviado por el DashButton

Como se puede entender, esto es un ejemplo de uso, pero las posibilidades son infinitas, ya que una vez que controlamos cuando el botón es pulsado, el cual será nuestro trigger, podemos ejecutar la acción o acciones que queramos.

Figura 7: PoC de "Jugando con el DashButton de Nesquick"

Durante las pruebas realizadas, se nos han ocurrido usos más serios y potentes orientados a la seguridad, pero tendréis que esperar para poder ver algo de ello. ¿Quizá un Port-Knocking con el botón?

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

sábado, marzo 10, 2018

Wild Wild Wifi "Dancing with wolves": 3.- PsicoWiFi

Continuando con el trabajo que hicimos con Mummy en "Living in the Jungle" y la conceptualización de la protección mediante SSID Pinning que queda descrita en el artículo anterior construimos un par de clientes. Uno de ellos para el sistema operativo Android y otro para el sistema operativo Microsoft Windows. 

Figura 16: Wild Wild Wifi "Dancing with wolves": 3.- PsicoWiFi

Este cliente Wi-Fi que implementa SSID Pinning se denominó PsicoWiFi. Ahora veremos las diferencias entre los clientes PsicoWiFi para Android y PsicoWiFi para Windows, ya que hay pequeñas diferencias en la implementación.

Figura 18: Logo de PsicoWiFi

6.- PsicoWiFi para Android

El cliente PsicoWiFi para Android implementa las tres opciones que se han explicado anteriormente. Se asume que el dispositivo Androrid tiene GPS y que está activado en el momento de conectarse por primera vez a una nueva red. No obstante, el usuario tiene la opción de elegir qué protección quiere aplicar o no a cada conexión cuando hace el SSID Pinning.

Figura 19: PsicoWiFi para Android

El cliente PsicoWFi para Android, cuando se realiza una conexión automática a una red de la Lista de Redes Preferidas en el dispositivo, comprobará todas las opciones de SSID Pinning y, si no las cumple, desconectará la red y pasará al siguiente perfil de red en la Lista de Redes Preferidas, como se puede ver en el siguiente vídeo.

Figura 20: Demo de PsicoWiFi para Android

Este cliente no incorpora las opciones de seguridad de Mummy, pues es solo una PoC, pero por supuesto se podrían añadir todas las opciones descritas e implementadas en la otra herramienta para juntar todas las protecciones.

7.- PsicoWiFi para Windows

En el caso de PsicoWiFi para Windows no se utiliza la opción de ubicación por GPS, ya que se asume que la gran mayoría de sistemas de escritorio con MS Windows no llevan este tipo de característica.

Figura 21: PsicoWiFi para Windows

Por eso, como se ve en el vídeo, el funcionamiento es similar.

Figura 22: Demo de PsicoWiFi para Windows

Como se ve, funciona como un servicio en el sistema operativo MS Windows que se invoca cada vez que se produce una autoconexión a una red Wi-Fi de la Lista de Redes Preferidas para comprobar el SSID Pinning y decidir si debe dejar la conexión o desconectarla.

8.- MAC Spoffer

Como opción de privacidad extra en los últimos sistemas operativos Microsoft Windows se añadió la opción de hacer un MAC Spoofing periódico para evitar el tracking de personas por medio de su dirección MAC y hacer más complicado el tracking de los paquetes. 

Figura 23: Opción de usar dirección de hardware aleatorias deshabilitada

Esta opción solo está disponible en las últimas versiones de MS Windows, y además, debe ser activada a nivel de tarjeta de red por el usuario, ya que por defecto no se utiliza esta característica. Por supuesto, nos parece una buena idea de seguridad, y por eso pensamos que esta opción se puede añadir a todos los clientes Wi-Fi que se utilicen en todos los sistemas operativos, como se ve en este vídeo.

Figura 24: Demo de MAC Spoofer en PsicoWiFi para Windows

En este caso la hemos aplicado a PsicoWiFi para Windows, pero podría ser añadido - y creemos que debería estar presente por defecto - en todos los sistemas operativos de escritorio y móviles que se utilizan hoy en día.

Saludos Malignos!

****************************************************************************
- Wild, Wild, WiFi: 1.- Mummy
- Wild, Wild, WiFi: 2.- SSID Pinning
- Wild, Wild, WiFi: 3.- PsicoWifi
- Wild, Wild, WiFi: 4.- WEP/WPA*-TOTP
- Wild, Wild, WiFi: 5.- WEP/WPA/WPA2-TOTP-Biometry
****************************************************************************

viernes, marzo 09, 2018

Wild Wild WiFi "Dancing with Wolves": 2.- SSID Pinning

Continuando el trabajo realizado años atrás con la herramienta Mummy en el paper de "Living in the jungle", y viendo cómo había evolucionado el mundo de las redes Wi-Fi, decidimos hace casi un año probar una idea. En este caso consistía en modificar el cliente Wi-Fi para NO conectarse a redes Wi-Fi cuando estas estuvieran lejos de la ubicación donde se conectaron inicialmente.

Figura 10: Wild Wild WiF "Dancing with Wolves": 2.- SSID Pinning

El objetivo de esta protección es evitar que una red Wi-Fi almacenada en la "Lista de Redes Preferidas" en un sistema operativo - móvil o de escritorio - hiciera una conexión de manera automática. La pregunta que nos surgía era sobre cómo resolver esta comprobación.

3.- La comprobación de la ubicación

La primera opción, evidente, es utilizar el servicio GPS que viene en los smartphones. Crear un cliente Wi-Fi para un smartphone que almacene la ubicación GPS cuando se conecta por primera vez a una red Wi-Fi, y comprobar la ubicación GPS cuando el terminal quiere conectarse automáticamente parecía una solución muy directa. Si la distancia entre la ubicación GPS de la primera conexión y la ubicación GPS actual fuera mayor que un umbral, entonces el cliente Wi-Fi cancelaría la conexión.

Figura 11: Opción de activar GPS Location en iOS

Sin embargo, es conocido que el sistema GPS es susceptible a un ataque de GPS Spoofing, como ya vimos en el trabajo que hizo JAEP Erratum con la suplantación de las ubicaciones en un terminal iPhone. Se puede ver en este vídeo cómo realizando un ataque SDR/RTL es posible configurar el GPS a gusto de cualquier posible adversario remoto.


Figura 12: Ataque GPS Spoofing a un terminal iPhone

No obstante, existen más formas de situar un determinado terminal sin utilizar el servicio GPS, como ya hemos visto en el pasado. En la conferencia de "You are where you are" yo recorría todos ellas en el año 2016. Estas podrían ser:


Figura 13: You are where you are
- Sistema GPS en smartphone: Disponible en terminales iOS o Android. Ya comentado.
- Dirección IP pública de conexión: Existen bases de datos de Geo-Localización IP en las que se conoce dónde se encuentra una determinada dirección IP. Si el AP legítimo da una dirección IP fija de conexión a Internet, se puede utilizar ésta como forma de ubicar dónde se encuentra el cliente Wi-Fi. Como ejemplo de uso, cuando el iPad de Steve Jobs fue robado de su casa, se localizó al ladrón por medio de la dirección IP de conexión que utilizó dicho iPad para conectarse a Apple.
- Wardriving Wi-Fi: La opción que utilizan los sistemas operativos iOS y Android para ubicar correctamente dónde se encuentra un terminal, se basa en analizar los SSID/BSSID próximos al terminal que se quiere localizar. Esa información se envía una base de datos de Wardriving que ubica las redes vistas en una posición GPS del mapa. Además, cada terminal iOS y Android reporta todas las redes Wi-Fi que ve con su ubicación GPS para mantener la base de datos actualizada. Herramientas como iSniff-GPS explicaban este funcionamiento en detalle para iOS.
Figura 14 : iSniff-GPS ubica tu posición en un mapa por las redes Wi-Fi
- Antenas de conexión de telefonía móvil: Una de las formas más seguras de saber dónde se encuentra un terminal móvil en concreto es conocer a qué antena de la red de telefonía móvil está conectado y con que potencia (lo que indica más o menos la distancia a la antena). Esto, con herramientas como Signal de Cydia se podría utilizar para ubicar un dispositivo.
- Patron de descarga de baterías: Este trabajo, titulado PowerSpy, se basa en el uso de analítica predictiva con técnicas de Machine Learning. La idea es entrena un sistema con un montón de terminales móviles haciendo rutas por la ciudad y reportando dos valores (carga de batería y ubicación GPS). Una vez entrenado el sistema, el algoritmo de ML es capaz de, dado un patrón de descarga de batería (es decir, la carga inicial y los delta de descarga a lo largo del tiempo), devolver la ruta GPS que ha seguido por la ciudad.
Figura 15: PowerSpy
Se basa en que, dependiendo lo cerca o lejos que estén los terminales de las señales de telefonía móvil se emite con más fuerza o menos, la señal de conexión a la red de telefonía móvil, lo que incide en un consumo mayor o menor de batería.
Vistas todas estas técnicas, un cliente Wi-Fi avanzado podría utilizar diferentes mecanismos para asegurarse de que está conectándose al mismo AP al que se conectó inicialmente y no a uno falso con los mismo datos que el cliente Wi-Fi que viene por defecto en el sistema tomaría como legítimo. Y por eso trabajamos en el concepto de SSID Pinning.

4.- Las protecciones por redes vecinas y BSSID

Con la idea de enriquecer la información que un cliente Wi-Fi almacena de una red cuando se conecta a ella por primera vez, para poder verificarla cuando el sistema se conecte automáticamente por ser parte de las Preferred Network List comenzamos a trabajar en parámetros fácilmente verificables, como almacenar el BSSID (protección que los sistemas operativos Windows tenían al principio y luego quitaron), o el del Espectro de redes Wi-Fi vecinas.

El concepto de Espectro de redes Wi-Fi vecinas es fácil de explicar. En el punto anterior se explica cómo un dispositivo con iOS o Android envía las redes Wi-Fi vecinas - es decir, las que ve en su alcance - a una base de datos centralizada para saber exactamente dónde está y mantener activa la base de datos. En ese proceso se utilizan los nombres de las redes SSID, los BSSID y las ubicaciones GPS para determinar la posición exacta.

En nuestro caso, no contamos con la base de datos centralizada de Wardriving, pero sí que el cliente puede guardar el espectro de todas las redes Wi-Fi que ve alrededor, con su SSID/BSSID y la potencia de señal. Esto sería una lista de redes vecinas que estarían cerca de la red Wi-Fi a la que el cliente se conecta de forma legítima, y podrá utilizarse como parámetro de seguridad la próxima vez que el sistema operativo quiera auto-conectarse a esta red Wi-Fi. Si el Espectro de redes Wi-Fi vecinas cambia sustancialmente, entonces no se debería realizar la conexión automática.

5.- SSID Pinning


El concepto de Pinning es ya muy conocido en el mundo de la seguridad informática. El Certificate Pinning es uno de los mecanismos de seguridad más utilizados por apps y/o navegadores para evitar utilizar certificados digitales falsos en una conexión SSL. En el mundo de las redes Wi-Fi podíamos hacer algo similar, y a la hora de realizar la primera conexión y meter una red Wi-Fi en la Lista de Redes Preferidas, pinnear, o guardar, una serie de parámetros para verificar la autenticidad de la red Wi-Fi cuando en el futuro se vaya a realizar una conexión automática. 

En la PoC que creamos, y veremos en la siguiente parte de este artículo, utilizamos valores configurables por el usuario, pero si se detectan cambios significativos, el cliente Wi-Fi no permite la conexión automática.

Saludos Malignos!


****************************************************************************
- Wild, Wild, WiFi: 1.- Mummy
- Wild, Wild, WiFi: 2.- SSID Pinning
- Wild, Wild, WiFi: 3.- PsicoWifi
- Wild, Wild, WiFi: 4.- WEP/WPA*-TOTP
- Wild, Wild, WiFi: 5.- WEP/WPA/WPA2-TOTP-Biometry
****************************************************************************

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 “code” en 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

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares