Monitoreo pasivo en IEEE 802.11 y Bluetooth Emmanuel Mendoza Acevedo 1 y Gabriel Gerónimo Castillo 1 1 Universidad Tecnológica de la Mixteca, Carretera a Acatlima km. 2.5, Huajuapan de León, Oaxaca. México {emmanuel, gcgero}@nuyoo.utm.mx (953) 53 20214 ext 200 Resumen Este trabajo propone utilizar el ataque pasivo sniffing aplicado a redes inalámbricas, tanto para aquellas que trabajan con el protocolo IEEE 802.11 como para el protocolo Bluetooth, con el fin de capturar la información del medio de transmisión y después manipularla de forma lícita. Palabras claves: IEEE 802.11, Bluetooth, WLAN, sniffing, Linux. 1. Introducción En las redes inalámbricas existen tecnologías que son utilizadas de acuerdo a las necesidades del usuario, entre las más usadas se encuentran las que trabajan con los protocolos IEEE 802.11 y Bluetooth. El protocolo IEEE 802.11 es utilizado normalmente en WLAN (Wireless Local Area Network), las cuales son implementadas comúnmente en lugares donde la instalación de cables puede ser difícil. En cambio el protocolo Bluetooth es utilizado para interconectar dispositivos periféricos o móviles que se encuentran a distancias cortas. Estas redes no están libres de ataques, al igual que las redes alámbricas, existen dos grupos de ataques en contra de su seguridad: los ataques pasivos, en los que el agresor escucha la información que circula por el medio de transmisión sin llegar a alterar ésta en modo alguno; y los ataques activos, en los que tiene lugar una sustitución, eliminación, falsificación o introducción de información en el flujo de datos existentes en la red. Lo que se propone es utilizar el ataque pasivo sniffing para poder manipular la información en las conexiones inalámbricas. 2. Implementación del ataque sniffing inalámbrico Actualmente se está desarrollando un sniffer que sea capaz de capturar información sobre redes inalámbricas, en este caso las que utilizan los protocolos IEEE 802.11 y Bluetooth. Para el desarrollo del sniffer se está trabajando con el sistema operativo Red Hat Linux 9.0 (Shrike) con el kernel que trae por defecto (versión 2.4.20-8). Dentro de las herramientas para su desarrollo se utiliza el lenguaje de programación Java con el apoyo del ambiente de desarrollo de interfaces (IDE) JBuilder versión personal y gratuita de Borland Corporation. Se eligió este lenguaje de programación debido a que brinda la capacidad de ejecutar las aplicaciones sobre diferentes sistemas operativos (característica de multiplataforma) y por el gran auge que está presentando actualmente sobre las
comunicaciones inalámbricas. Con el objetivo de hacer que el sniffer capture información sobre las redes inalámbricas, para la tecnología Wifi se instaló la librería jpcap versión 0.01.15 del sitio [1], esta librería es un conjunto de clases Java que provee una interfaz y un sistema para capturar los paquetes que viajan sobre una red, ya que esta librería encapsula la funcionalidad del programa libpcap, es necesario que este paquete se encuentre instalado en el sistema. Por defecto el paquete de libpcap viene incluido en la instalación del sistema (libpcap-0.7.2-7.9.1). Para la captura de paquetes sobre Bluetooth se instalaron las herramientas de desarrollo Impronto versión 1.1-18 de Rococo Software versión libre para Linux [4]. Impronto Developer Kit utiliza el stack de protocolos BlueZ, que implementa las especificaciones estándar de Bluetooth para Linux, estas se encuentran disponibles en la instalación completa del Red Hat 9.0 o se pueden descargar del sitio [2] En cuanto al hardware de apoyo, se utiliza una tarjeta Orinoco Classic Gold PC Card con soporte para redes 802.11b y una tarjeta 3Com Wireless USB Adapter con soporte para Bluetooth. Es necesario realizar algunos ajustes a la tarjeta Orinoco y al sistema para que pueda operar en modo de monitoreo [3], ya que únicamente se pueden capturar paquetes sobre Wifi con la aplicación de este modo. Para el sistema, estos ajustes consisten principalmente en instalar el paquete pcmcia-cs con sus patches para brindarle soporte a la tarjeta Orinoco, además de instalar el patch correspondiente a la versión del driver Orinoco. En este caso, se instaló el paquete pcmcia -cs-3.2.7 con su patch pcmcia -cs-3.2.7-orinoco-patch.diff y se actualizó el driver orinoco_cs versión 0.11b, incluido en el paquete pcmcia -cs, a 0.13e con su patch respectivo (se utilizó el orinoco-0.13e-dragorn-patch.diff). Con respecto a los ajustes de la tarjeta, es importante mencionar que los firmwares actuales que la tarjeta Orinoco trae de fábrica pueden provocar que la opción para el modo de monitoreo no sé pueda habilitar. Para evitar estos problemas, es necesario cambiar la versión del firmware original de la tarjeta a versiones anteriores, en este caso se disminuyó de 8.75 a 8.10. Para habilitar el modo de monitoreo se utiliza el siguiente comando: iwpriv eth0 monitor <m> <c>, donde m es el modo de habilitar el monitoreo (0,1, ó 2), y c es el canal a monitorear. El algoritmo utilizado para el desarrollo del sniffer es el siguiente: 1. Identificar el dispositivo inalámb rico (net.sourceforge.jpcap.capture.packetcapture.finddevice) 2. Abrir el dispositivo para la captura de paquetes (net.sourceforge.jpcap.capture.syncpacketcapture.open) 3. Comenzar la captura de paquetes (net.sourceforge.jpcap.capture.packetcapture.capture) 4. Obtener los paquetes uno por uno (net.sourceforge.jpcap.capture.packetcapture.rawpacketarrived) 5. Desplegar los paquetes obtenidos dependiendo de su tipo: management frames y data frames (ARP, IP, TCP, UDP, ICMP, IGMP) 6. Detener la captura de paquetes, ya sea por el usuario (net.sourceforge.jpcap.capture.syncpacketcapture.stop) o por el número de paquetes a capturar 7. Liberación de recursos de la sesión de captura (net.sourceforge.jpcap.capture.syncpacketcapture.stop)
8. Fin Aplicando este algoritmo se ha desarrollado el analizador que se muestra en las figuras 1 y 2. Fig. 1. Captura y análisis de paquetes IEEE 802.11 Fig. 2. Captura y análisis de diferentes tipos de paquetes
3. Habilitando el soporte Bluetooth en Linux En Red Hat 9.0 la habilitación del soporte Bluetooth es realmente sencilla. Para el soporte Bluetooth en Linux es necesario que el kernel esté configurado adecuadamente, es necesario asegurarnos que se encuentren habilitadas las siguientes opciones del kernel CONFIG_BLUEZ=m CONFIG_BLUEZ_L2CAP=m CONFIG_BLUEZ_SCO=m CONFIG_BLUEZ_RFCOMM=m CONFIG_BLUEZ_RFCOMM_TTY=y CONFIG_BLUEZ_BNEP=m CONFIG_BLUEZ_HCIUSB=m Así como los siguientes alias en /etc/modules.conf alias net-pf-31 bluez alias bt-proto-0 l2cap alias bt-proto-2 sco alias bt-proto-3 rfcomm alias bt-proto-4 bnep alias tty-ldisc-15 hci_uart alias char-major-10-250 hci_vhci En caso que no se encuentren habilitadas las configuraciones anteriores, se deberán agregar los alias y llevar acabo la recompilación del kernel con la nueva configuración. En el caso de la instalación default de Red Hat 9.0, el kernel ya viene configurado con soporte Bluetooth, sólo es necesario asegurarse que los alias vengan incluidos. Después de habilitar el soporte de Bluetooth al kernel es necesario implementarle las especificaciones estándar del protocolo Bluetooth a Linux, para esto existen múltiples stack de protocolos Bluetooth, entre los cuales destacan BlueZ debido a que se le ha considerado como el stack del protocolo Bluetooth oficial de Linux. Para la instalación de BlueZ existen RPMs que se encuentran disponibles en la instalación completa del Red Hat 9.0 o se pueden descargar del sitio web [2]. En las versiones recientes de Red Hat (Fedora Project 1 y 2) ya viene todo el soporte incluido para la tecnología Bluetooth. Para comprobar el funcionamiento de Bluetooth sobre Red Hat 9.0, primero se deben cambiar las opciones de configuración para el dispositivo Bluetooth en /etc/bluetooth/hcid.conf, en este archivo también se establecen las opciones de configuración para el demonio hcid. Dentro de las opciones de hcid, se puede establecer la ruta del script que proporciona el PIN (Personal Identification Number) que se podría pedir en el momento de establecer alguna conexión. Después de establecer las configuraciones anteriores, se inserta el dispositivo con soporte Bluetooth, en este caso se utilizó el dispositivo 3Com Wireless USB Adapter, y sé checa que el dispositivo haya sido detectado con el siguiente comando, hciconfig; y con hciconfig hci0 up, el dispositivo hci0 se activará. Cuando el archivo de configuración ha cambiado, es necesario que el demonio hcid
aplique la nueva configuración con el comando hcid -f /etc/bluetooth/hcid.conf, en caso de que se desee detectar otros dis positivos remotos se debe ejecutar el comando hcitool scan, y para comprobar la comunicación se le envía un ping a alguno de los dispositivos remotos detectados anteriormente con hcitool scan, para esto se utiliza el comando l2ping <dirección MAC del dispositivo>. 4. Conclusiones Debido al notable uso de las redes inalámbricas, estas han requerido de medidas de seguridad confiables para proteger la información. Para lograr este objetivo, se han estado replanteando los mismos protocolos de seguridad que se implementan con las redes alámbricas. Estos protocolos se basan en los principios de seguridad que las redes de computadoras deben cumplir: confidencialidad, integridad y no repudio. Actualmente las redes inalámbricas están presentando los mismo ataques de seguridad que las redes alámbricas, uno de ellos es el que estamos implementando en este trabajo. Hemos observado que lo que adolecen a los sniffers no comerciales, es una análisis más a fondo de las conexiones, tales como mostrar los puertos utilizados, las direcciones IP de más afluencia, todo esto, en forma gráfica, y otro punto es que se encuentran sniffers para el IEEE 802.11 pero no toman en cuenta a Bluetooth, y los de Bluetooth no toman en cuenta a IEEE 802.11, con esta propuesta realizada pretendemos cubrir estos detalles. Referencias [1] Jpcap network packet capture library. http://jpcap.sourceforge.net [2] Bluez Official Linux Bluetooth protocol stack. http://www.bluez.org [3] Orinoco monitor mode path page. http://airsnort.shmoo.com/orinocoinfo.html [4] Rococo impronto. http://www.rococosoft.com/products/impronto.html