Este documento puede ser copiado en cualquier otro sitio web siempre que se especifique el sitio original del documento en este caso http://www.ankalima.blogspot.com y el nombre del autor. Ha sido escrito con fines didácticos, como ayuda para todos aquellos que quieran asegurar* redes wifi. Algunas de las técnicas que se describen pueden se utilizadas con otros fines, el autor no se hace responsable de ello.
INTRODUCCIÓN
Cada día son más habituales las redes WIFI, sobre todo las mini-lan domésticas. Esto es debido a que las ISP (empresas que suministran el acceso a Internet), prefieren invertir en equipos informáticos que en equipos humanos. Esto es, prefieren regalar* al "nuevo cliente" un módem-router ADSL wifi y algunos discriminadores para sus terminales telefónicos, que tener que enviar un técnico a trastear la conexión al domicilio del cliente.
Con este material y un CDROM con algunas aplicaciones, el cliente puede instalar el mismo el módem-router, configurarlo (a veces con la ayuda de un teleoperador, de otra empresa contratada a tal efecto por la ISP), si necesidad de desplazamientos ni técnicos de redes, que siempre resultan más caros.
No es este el foro adecuado para discutir este proceder, que es muy discutible, por cuanto deja en manos del contratante una parte del servicio que debería de prestar la ISP. Porque además, me temo que esto del bricolaje informático es algo definitivo y el "hágaselo usted mismo, que nosotros le regalamos el material", no parece disgustar a los clientes.
CONSECUENCIAS
Pero claro, tanta facilidad también tiene su precio y estas mini-lan generalmente no funcionan todo lo bien que se deseaba, ni con las prestaciones que la ISP nos prometía. La cobertura del router wifi, cuando es un router (a veces intentan colar a los más despistados un simple ADSL-módem wifi, USB), no es tan completa como nos habían asegurado. Resulta que el PC del "niño", que está en otra habitación, no recibe buena señal y el amule (eMule) que tenemos bajando cosas* en el PC que está al lado de la antena del router, va lento.
No es objeto de este HOWTO analizar las cuestiones relacionadas con la cobertura de radiofrecuencia (porque wifi también es eso, ondas de radio), lo haremos en otro documento dedicado a las antenas, la parte de RF de wifi y a la propagación electromagnética, en la banda de "12 cm" o, 2.4 GHz, un campo muy interesante, donde el bricolaje es posible, barato y satisfactorio. Aunque requiere algunos conocimientosteóricos y sobre todo manos ágiles y precisas.
En Internet se pueden encontrar muy pocos documentos "buenos" que expliquen con claridad la parte de radio en wifi, podéis descargar un magnífico documento escrito por
Vic_Thor que habla de la señal de radiofrecuencia, la modulación de esa señal de radio, la propagación, la información, las colisiones y mucho más. Se nota a la legua que este "tipo" sabe de que habla, no le conozco pero puede que sea un "teleco" con un buen conocimiento de la informática y mucha práctica en el cuerpo. Este pdf no tiene desperdicio.
Pero.... a veces la "baja velocidad" se produce por otros motivos. Algunos no tienen nada que ver con la propagación electromagnética y si, con algún "vecino avispado" que se aprovecha de nuestra conexión para acceder "gratis" a Internet. De ese punto hablaremos aquí y ahora.
OBJETIVO
Hacer una sencilla auditoría de nuestra mini-lan. Comprobar que sólo nuestros PCs están conectados a Internet a través de nuestro módem-router wifi. Poner a prueba la seguridad de nuestro sistema al menos en el nivel de radio*, WEP y WPA
ANTECEDENTES Software y hardware
Caso A
Partimos de una mini-lan (una pequeña red doméstica), con tres PCs, uno de ellos portátil. Un router ADSL wifi que funciona en modo infraestructura (BSS), como punto de acceso (AP en modo máster). Acepta conexiones de todos los PCs con tarjeta wifi (en modo managed). Es decir, una vez configuramos el router todos los PCs de la mini-lan se conectan a él, para tener acceso a Internet.
Caso B
Podríamos conectar los PCs de otra forma, por ejemplo. Conectar uno de los PCs (el PC-1) al router por medio de una de las tomas ethernet (cable) y hacer que los otros dos PCs (PC-2 y PC-3) saliesen a Internet a través del primero (PC-1). Para ello es necesario que este PC-1 disponga de una tarjeta ethernet y una tarjeta wifi capaz de funcionar en modo máster. Y no sería necesario un router wifi, con uno normal* o un ADSL-módem sería suficiente.
Pc-1 corre un OS FreeBSD 5.3 con los módulos madwifi, compilados estáticamente (dentro del kernel),para dar soporte a una tarjeta wifi con chip Atheros. PC-2 corre un OS Linux Slackware 10.1 y PC-3 corre un OS Linux GNU/Debian. Los dos Linux disponen de kernel Linux versiones 2.6.12 y los módulos de Madwifi compilados de forma dinámica (fuera del kernel) y tarjetas wifi con chip Atheros.
En otro HOWTO de esta misma web, sobre wifi, se explica como compilar los módulos Madwifi en los OS Linux,pero vamos a dedicar unas líneas para facilitar el parcheado de los módulos para que las tarjetas Atheros permitan la inyección de paquetes que será necesario usar en la auditoría, así como el parche necesario para utilizar el programa wpa_suplicant, necesario para usar el método de encriptación WPA, con aquellas configuraciones que las tarjetas permitan. Porque aunque estemos hablando de chips Atheros, lo cierto es que son varios los fabricantes de tarjetas wifi que lo ensamblan y no todas disponen de las mismas capacidades.
Sería conveniente disponer de un kernel 2.6.12 o superior, de esta forma evitaremos problemas durante el proceso de inyección de paquetes. Vamos a suponer tenemos las fuentes de esta versión descomprimidas en el subdirectorio /usr/src/linux-2.6.12/ y en /usr/src un enlace llamado linux que apunta a /usr/src/linux-2.6.12/
A continuación nos situamos en el directorio adecuado y desde el, se bajan las fuentes de los drivers y el parche, se descomprimen, parchean, compilan e instalan. Este es un ejemplo de como hacerlo:
cd /usr/src
wget -c http://www.baidez.com/hwagm/linux/madwifi-cvs-20051025.tgz
wget -c http://www.baidez.com/hwagm/linux/madwifi-cvs-20051025.patch
tar -xvzf madwifi-cvs-20051025.tgz
cd madwifi-cvs-20051025
patch -Np1 -i ../madwifi-cvs-20051025.patch
make KERNELPATH=/usr/src/linux-2.6.12
esta orden creará los módulos ath_hal.ko, ath_rate_onoe.ko, wlan_ccmp.ko, wlan_tkip.ko, wlan_xauth.ko, ath_pci.ko, wlan_acl.ko, wlan.ko, wlan_wep.ko
make install
Y esta otra los colocará en el directorio /lib/modules/2.6.12/net
Si no ha habido errores en ninguno de los pasos anteriores los módulos de madwifi estarán hechos y enlazados con el kernel actual. Después de ver como se hace en sistemas FreeBSD veremos como cargar los módulos creados.
Si las fuentes de los módulos Madwifi no estuviesen disponibles en el enlace facilitado arriba para wget se pueden descargar en el servidor NowiRed, donde además están disponibles algunos pequeños textos, archivos de configuración y algunos buenos manuales. Para descargarlos ejecutaremos:
wget -c http://www.nowired.com/madwifi/madwifi-20050309.tgz
wget -c http://www.nowired.com/madwifi/madwifi-20050309.patch.0.1.gz
wget -c http://www.nowired.com/madwifi/madwifi-patch.txt.gz
wget -c http://www.nowired.com/madwifi/wpa_supplicant-0.4.8.tar.gz
wget -c http://www.nowired.com/madwifi/wpa_supplicant.conf.example.gz
Como en esta misma web, disponemos de un HOWTO para compilar un kernel en esta versión de FreeBSD, nos remitimos a él y sólo daremos las indicaciones necesarias, para habilitar el soporte para el chip Atheros.
A la hora de editar el archivo de configuración GENERIC, es necesario añadir estas tres opciones:
device ath # Atheros IEEE 802.11 wireless network driver
device ath_hal # Atheros Hardware Access Layer
device ath_rate_sample # John Bicket's SampleRate control algorithm
device wlan # 802.11 support (Required)
con estas opciones, ya disponemos de soporte para nuestra tarjeta con chip Atheros. Para tener soporte para WEP o WPA, el módulo wlan que acabamos de añadir al fichero de configuración del kernel, llamará a otros que podemos enlazar también estáticamente (aunque están disponibles como módulos), son estos:
device wlan_wep # WEP crypto support for 802.11 devices
device wlan_ccmp # AES-CCMP crypto support for 802.11 devices
device wlan_tkip # TKIP and Michael crypto support for 802.11 devices
Como además es posible que utilicemos nuestra tarjeta wifi Atheros, como hostap, también llamado AP o punto de acceso, debemos de añadir estas otras opciones o cargar los módulos del mismo nombre, usando el comando kldload.
device wlan_xauth # External authenticator support for 802.11 devices
device wlan_acl # MAC-based ACL support for 802.11 devices
después podemos seguir con normalidad, con la compilación del kernel.
Como apuntamos anteriormente, los últimos cinco módulos no es necesario que estén enlazados estáticamente con el kernel (compilados dentro del kernel), podemos dejar que el kernel los cargue bajo demanda o cargarlos "a mano", con el comando:
# kldload wlan_wep.ko <---- en los sistemas FreeBSD>
# modprobe ath_pci <---- en los sistemas Linux>
también podemos ponerlos en un fichero de configuración, de forma que sean cargados durante el arranque de la máquina. En FreeBSD será necesario editar el archivo: /boot/loader.conf y añadir los módulos con la siguiente sintaxis:
wlan_wep_load="YES"
wlan_tkip_load="YES"
wlan_ccmp_load="YES"
wlan_xauth_load="YES"
wlan_acl_load="YES"
en los sistemas Linux, existen varios métodos dependiendo de cada distribución. En un Debian Linux bastará con añadir el nombre de los módulos en el archivo /etc/modules, se puede editar el archivo con nuestro editor favorito y añadir el nombre de los módulos a mano guardando los cambios después, o ejecutar la orden:
echo ath_pci >>/etc/modules
En un Linux Slackware pueden añadirse al fichero /etc/rc.d/rc.modules, aunque normalmente no es necesario porque los scripts de arranque rc.inet1 y rc.wireless detectarán que interfaces de red están configuradas y las levantará sin más intervención por parte del usuario que a posteriori se podrá modificar tanto la configuración como el modo* en el caso de wifi.
Tanto si lo hacemos de una forma como de otra, debemos comprobar que todo ha salido bien, y para ello es necesario leer el fichero que se genera con los mensajes del arranque de las máquinas. Podemos hacerlo de esta forma:
# dmesg | grep ath0 <---- en los sistemas FreeBSD y Linux>
y dependiendo del modelo de tarjeta (chip) Atheros, deberíamos obtener algunas líneas parecidas a estas:
ath_hal: module license 'Proprietary' taints kernel.
ath_hal: 0.9.14.9 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413)
wlan: 0.8.4.5 (EXPERIMENTAL)
ath_rate_onoe: 1.0
ath_pci: 0.9.4.12 (EXPERIMENTAL)
ath0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
ath0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps
18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
ath0: mac 5.9 phy 4.3 radio 4.6
ath0: 802.11 address: 00:11:f5:0f:08:ea
ath0: Use hw queue 0 for WME_AC_BE traffic
ath0: Use hw queue 1 for WME_AC_BK traffic
ath0: Use hw queue 2 for WME_AC_VI traffic
ath0: Use hw queue 3 for WME_AC_VO traffic
ath0: Atheros 5212: mem=0xd0010000, irq=19
ath0 (WE) : Driver using old /proc/net/wireless support, please fix driver !
ath0: no IPv6 routers present
si aparecen estas líneas, significará que el kernel ha cargado los módulos, reconoce la tarjeta wifi y crea un nuevo interface de red, llamado ath0, que podremos configurar como queramos.
Podemos hacerlo en modo máster, o AP, en modo managed, o cliente, en modo monitor, o escaneador de redes wifi. O incluso en modo ad-hoc, o punto a punto, para conectar dos equipos entre si,sin utilizar puntos de acceso. De este modo no hablaremos en este documento. De todas formas en otro HOWTO de esta misma web se explican los modos detalladamente.
BÁSICO
El Caso B nos permitiría tener bastante más control. Podríamos ejecutar un firewall más completo que el que suelen proporcionar los routers que habitualmente regalan* las ISP. Y con una orden sencilla, del tipo:
# netstat -putan <---- en los sistemas Linux>
# sockstat -4 <---- en los sistemas FreeBSD>
ejecutadas como root, veríamos todas las conexiones activas en nuestro PC-1, así como los puertos abiertos y que servicios los usan. Cualquier conexión no conocida, sería fácil de identificar.
También es posible usar otras órdenes que nos permitirían conocer las tablas de rutéo del kernel en los sistemas *Linux y las del demonio natd en los *BSD. Así como las direcciones MAC de todos los interfaces de red de que disponga el PC.
# netstat -nr <---- en los sistemas Linux>
# route <---- en los sistemas Linux>
# netstat -ina <---- en los sistemas FreeBSD>
# ifmcstat <---- en los sistemas FreeBSD>
¡Ojo! Estos comandos, NO mostrarían las conexiones activas en el módem-router wifi del Caso A
Para poder ver ese tipo de datos, es necesario tener a mano el manual del módem-router wifi y saber como conocer las MAC (dirección física grabada en todos los interfaces de red), algo parecido a esto: 00:a0:d1:b5:7c:59, de las tarjetas de red (wifi o no), conectadas al router y en su caso (si el router lo permite), filtrarlas.
Entrando en el router a través de un navegador o por telnet, es posible saber las conexiones activas en ése momento. Así, bajando (matando, acabando) cualquier programa que esté usando la red en los PCs de nuestra mini-lan, sólo deberían aparecer las conexiones del router con la ISP y las del router con los PCs de nuestra red. Si conocemos (y debiéramos de conocer estos datos), las IPs privadas de la mini-lan y la IP pública del router. Cualquier otra IP que no sea una de ellas, será un intruso, alguien que usa nuestro router sin permiso.
FILOSOFÍA
Cualquier intrusión en nuestra red local doméstica, en lo que llamamos mini-lan, o cualquier interceptación de la señal de radio de nuestros equipos wifi, para inyectar datos, desencriptar nuestras claves de acceso y, o conectarse a nuestros puntos de acceso, es un delito y como tal, podemos ponerlo en conocimiento de las autoridades competentes. Entre otras cosas, porque alguien podría estar usando nuestra conexión a Internet para cometer otros delitos y sería embarazoso demostrar que no hemos sido nosotros. Pero éste es otro asunto.
Es mejor no ser confiados. Lo que queremos es tener una conexión segura con la ISP, una mini-lan segura, lo más segura posible, puesto que, totalmente segura, es imposible y menos cuando hablamos de wifi.
Lo más importante es usar sistemas operativos seguros, pero si habéis llegado a esta web, se supone que estáis usando un *Linux o un *BSD. Así que, veremos que otras medidas (básicas) podemos adoptar, para proteger nuestra red de ataques externos, simples curiosos o vecinos que pretenden "que su mula use nuestros caminos gratis".
Veremos los métodos mas comunes que utilizarán aquellos que, pretendan romper (o las han roto ya en alguna ocasión),esas medidas de seguridad y los usaremos "contra nuestra mini-lan". Es el mejor método conocido para comprobar que estamos asegurando bien nuestras redes.
En este punto hay que decir que "hay personas que saben como obtener una IP válida y conocer la estructura de una red, de cualquier red". En ese caso, sólo cave esperar que no estén interesados en la nuestra. Porque este tipo de ataques o intrusiones no es algo que se pueda abordar en un documento básico como éste. De todas formas, si no tenemos en ningún archivo de nuestras máquinas información sensible, como los datos de nuestras tarjetas de crédito, números de DNI, NIF, Seguridad Social, teléfono, informes médicos y otros por el estilo, que son susceptibles de ser usados para obtener información privada, ya habremos ganado mucho.
Algunas personas mantienen (por comodidad) en sus máquinas archivos en apariencia tan inocuos como puede ser un CV (Currículum Vitae), que casi seguro contienen muchos datos de los mencionados en el párrafo anterior y alguna otra información acerca de nuestra experiencia profesional y formación, de la que se puede extraer en el mejor de los casos, un target* para el envío de ofertas comerciales o publicidad no solicitada.
Si tenemos ese CV publicado en alguna web con bases de datos o motores de búsqueda de empleo*, es posible que venda (siempre dicen que se los han sustraído), nuestros datos. Si nosotros no tenemos ese documento en ninguna otra parte, sabremos de donde ha partido la información y podremos tomar las medidas que consideremos oportunas. De todas formas, cuantos menos datos personales haya en los archivos de nuestras máquinas,en los de otras de la red o en servidores de Internet, mejor.
MÉTODOS de SEGURIDAD BÁSICOS
La primera medida que se debe de tomar es, deshabilitar el DHCP en el módem-router wifi. DHCP es muy cómodo, porque escucha peticiones de conexión de otras máquinas (no sólo PCs) y cuando las recibe, adjudica una IP de forma automática. Esto permite que quienes no tienen conocimientos de redes, puedan instalar un router con mucha facilidad, pero también permite que cualquiera se pueda conectar a ese router (si dejamos los valores y la configuración que el fabricante incluye, por defecto).
La segunda medida, deshabilitar el SSID broadcast. El SSID (Service Set Identifier) es el nombre de una red. Esta opción la incluyen la la mayoría de los APs. Si no conociéramos ni el SSID ni la claves WEP, nos sería muy difícil entrar en esa red wireless. Muchos routers tienen activado por defecto, que publique ese nombre de red en todas las conexiones.
Es evidente que alguien que tenga paciencia, puede sentarse a "sniffar" nuestra red y esperar a que uno de los PCs de la red se conecte al router wifi. Y si no dispone de paciencia pero si de algunos conocimientos, forzar la desconexión de los PCs conectados (con un ataque DOS, por ejemplo), para que los interfaces tengan que volver a iniciar un "enganche wifi" y en ese momento "cazar" el SSID.
Cambiar el SSID por defecto de los APs (demasiado conocidos por los interesados en ello), por otros más "complicados", es algo !! imprescindible ¡¡.
Como tercera medida, activar las claves de cifrado WEP. WEP significa, "Wired Equivalent Privacy" y es un sistema de cifrado, al tiempo que un protocolo para redes Wireless, que permite encriptar la información que se transmite. El protocolo WEP, proporciona encriptación a nivel 2 (muy bajo). Está basado en el algoritmo de encriptación RC4, y utiliza claves de 64bits o de 128bits. En realidad son de 40 y 104 bits, ya que los otros 24 bits van en el paquete como Vector de Inicialización (IV). Se utiliza un checksum para prevenir que se inyecten paquetes spoofeados.
Las claves WEP son débiles, cualquiera* con una portátil corriendo Linux y un poco de paciencia (como veremos), puede romperlas. Por ello, deben de ser cambiadas con regularidad, aunque esto conlleve, perder algo de velocidad en la transmisión de datos. Y sobre todo usar siempre claves de 20 o 25 caracteres, como mínimo, En OS FreeBSD es posible usar la utilidad dwepkeygen, incluida en las bsd-airtools, para generar claves complicadas.
Como cuarta medida, para el Caso A, si nuestro router wifi lo permite, podemos establecer un filtrado por MAC. Esto implica conocer las direcciones MAC de las tarjetas wifi de los tres PCs y configurar el router wifi para que sólo permita conexiones de ésas tarjetas. De esta forma, independientemente de las IPs que adjudiquemos a esas tarjetas wifi (interfaces de red), el router también tendrá en cuenta la dirección física.
Esto no es completamente seguro, porque las direcciones MAC se pueden averiguar (ya veremos como) y es posible emularlas, para engañar al router. Pero este método, combinado con el Caso B y un buen filtrado con iptables, en *Linux o ipf y ipfw, en *BSD, ya es más difícil de traspasar. En todo caso si alguien sniffa nuestra red obtendrá los doce dígitos necesarios para obtener una MAC Address válida y en texto claro, porque los paquetes del tráfico de red, contienen esta información.
La quinta medida sería usar WPA. WPA (WI-FI Protected Access), utiliza (TKIP), que, encaminando todas las conocidas debilidades del WEP, proporciona respuestas a las mismas con:
Una función de per-packet key mixing
Un control sobre la integridad del mensaje
Un Initialization Vector ampliado con reglas de secuencia
Un mecanismo de re-keying
TKIP (Temporal Key Integrity Protocol). Básicamente, las mejoras de esta encriptación consisten en que tiene una gestión dinámica de las claves de cifrado, asignando a cada conexión una clave de cifrado diferente (ya no es estática, como en WEP) y además de eso, encriptación de cada paquete que se envié.
La ventaja del TKIP es que es 100% compatible con el hardware actual a diferencia del EAP. Con WPA es posible usar RADIUS y otras implementaciones, pero no las veremos en este documento básico.
A excepción de AES. Con WPA es posible usar el "algoritmo" de encriptación AES en lugar de TKIP. No es complicado configurarlo (al menos en *Linux y con wpa_suplicant), no ralentiza tanto el flujo de datos como TKIP y no es sensible al ataque 0 (desautentificación de clientes legítimos), que si se puede realizar también contra WPA+TKIP.
WPA también tiene inconvenientes, no está a salvo de ataques, como hemos dicho ya, pero el más importante es que, no todos los sistemas que soportan el estándar 802.11, soportan WPA. Y pasará tiempo hasta que el uso se WPA se generalice, por lo que WEP a pesar se estar obsoleto desde hace tiempo, todavía estará unos años entre nosotros.
Sexta medida. No me gusta hablar de ella, porque se refiere a unos dispositivos que detectan los accesos no autorizados a nuestra mini-lan, pero son caros y el software que emplean no es "libre". De todas formas, es una medida de protección al alcance de quien quiera pagarla.
En esta web se ofrece información y venta de estos sensores que se distribuyen cerca de los APs y hacen su trabajo, es una de las marcas más conocidas, AirDefense.
AUDITORÍA-0
Configuramos la mini-lan como especificamos en el Caso B y las medidas de seguridad mínimas. Esto es, de la primera a la cuarta (ambas incluidas). Y vamos a comprobar el efecto real de éstas medidas.
Para esta labor, usaremos dos PCs portátiles. Uno de ellos corre un OS FreeBSD 5.3 y el otro Gentoo GNU/Linux con un kernel 2.6.13-gentoo-r2 y tarjetas wifi con chip Atheros.
Usaremos además algunas aplicaciones como aircrack, airodump, airdecap, aireplay, Wireless-Tools, iwconfig, airtools, kismet, bsd-airtools, dstumbler, dwepcrack, dwepdump, dwepkeygen, karma y otras que iremos enumerando paso a paso.
SNIFFANDO LA RED
Arrancamos los portátiles y ejecutamos:
# ifconfig -a <---- en los sistemas FreeBSD y Linux>
para conocer el estado de nuestra interface wifi. Acto seguido ejecutamos:
# ifconfig ath0 down <---- en los sistemas FreeBSD y Linux>
hacemos esto para bajar (poner fuera de servicio), la interface ath0, o lo que es lo mismo, nuestra tarjeta wifi. Lo hacemos así para partir de "cero" y para poder ejecutar el siguiente paso con éxito.
# ifconfig ath0 hw ether 00:11:22:33:44:55 <---- en los sistemas Linux>
# ifconfig ath0 ether 00:11:22:33:44:55 <---- en los sistemas FreeBSD >
Con esta orden ¡¡ cambiamos !!, la MAC asociada a la la tarjeta wifi. A continuación ejecutamos la orden:
# ifconfig ath0 up <---- en los sistemas FreeBSD y Linux>
obviamente para levantar de nuevo la interface ath0. Seguimos adelante ejecutando:
# ifconfig ath0 monitor up <---- en los sistemas FreeBSD>
# iwconfig ath0 mode Monitor <---- en los sistemas Linux>
esta orden, pone el interface (y la tarjeta wifi) en modo monitor, nos servirá para "sniffar" (escuchar), el tráfico de nuestra mini-lan (o de cualquier otra red inalámbrica).
ESTILO Beastie
En FreeBSD podemos usar la sencilla orden:
# ifconfig ath0 up scan <---- en los sistemas FreeBSD>
nos mostrará algo como esto (siempre que haya redes activas y haciendo broadcasting de ESSID)
SSID BSSID CHAN RATE S:N INT CAPS
beastiefuckyou 00:11:95:c3:0d:ac 1 54M 19:0 100 ES
policewomankiss 00:13:46:49:41:76 6 54M 30:0 100 EPS WPA WME
explicaremos los campos más crípticos en el capítulo dedicado a WPA
FIN ESTILO Beastie
Ahora debemos de ejecutar e programa airodump o, dwepdump "sniffará" y registrara todo el tráfico, nos interesan ahora los IV's. (valores de iniciación).
INCISO sobre IVs
WEP expande en la trama 802.11 un vector de inicialización IV de (24 bits), la clave secreta y el keystream. Aquí es donde está el primer problema, para empezar el IV viaja en la parte NO CIFRADA de la trama, y en realidad las encriptaciones que "nos venden" los fabricantes no son del todo "ciertas" ,porque por ejemplo en una encriptación de 128 bits, sería 128bits - IV es decir 104bits, y claro pasa lo mismo con los cifrados de 64bits que quedarían reducidos a 40bits.
El tipo de ataque que estamos preparando, consiste en generar un keystream igual, basándonos en el IV y en la clave secreta. El estándar WEP solo "recomienda" que IV cambie en cada trama, pero no lo "impone" ,así que buscaremos IV repetidos, como el tamaño del IV es de 24bits, tendremos 2^24=16.777.216 de IV diferentes.
Entonces lo que haremos, sera esperar a que haya tráfico en la red o, inyectar tráfico en la red ,y generar IV's ,así podremos desencriptar la captura y conseguir la clave WEP.
Hay que decir que el éxito de este ataque depende mucho del fabricante del AP (Access Point) ,y la manera que tenga de gestionar los IV's. de ahí la importancia de escoger bien el Punto de Acceso o la Tarjeta Wifi que funcionará en modo Master
Otra cosa importante es que, para poder realizar este tipo de ataques no es suficiente con que nuestra tarjeta wifi soporte el modo RFMON (modo monitor), sino que en muchos casos (como el que nos ocupa, con chips Atheros), tendremos que parchear el modulo para que soporte la inyección de paquetes. Nosotros usaremos máquinas con OS, FreeBSD y Gentoo para realizar la parte práctica de este manual. Pero también se puede hacer con distribuciones Linux en Live CD, como phlak o, whax (una distribución basada en Slackware, antes conocida como Whoppix y basada en la muy conocida Knoppix).
FIN del INCISO sobre IVs
Para una clave de 40bits necesitaremos entre 70000 y 2000000 IV's, para una clave de 104bits necesitaremos entre 20000 y 700000 IV's, a veces más.
Airodump también capturará Beacons. Los beacons frames son, balizas de autenticación. Es decir, tramas que emiten los puntos de acceso, o los routers wifi, para que otros puntos de acceso o tarjetas wifi sepan que existe un punto de acceso activo a una distancia determinada, generalmente cerca. (funcionan de forma parecida a las radio balizas de los radio-aficionados o como los radio-faros de navegación)
# airodump ath0 captura 0 <---- en los sistemas Linux>
# dwepdump -w ath0 pcap-log/pcap.log <---- en los sistemas FreeBSD>
**En los OS FreeBSD se usan los comandos dwepdump y dwepcrack. Crean los logs en el directorio pcap-log (que debe de existir, para el dwepcrack, también debe de existir el archivo pcap.log vacío), en esos logs registran toda la información y lo usan después para romper la clave WEP.
ejecutamos airodump para comprobar las redes que tenemos al alcance, con la orden anterior. Veremos información referente a las redes a nuestro alcance. (BSSID, los Beacons y IV's recogidos, el canal que utiliza, el ESSID, entre otros).
Escogemos nuestra mini-lan, entre las redes wifi que airodump nos ha mostrado. Apuntamos el canal que utiliza la red, el SSID y la MAC y pulsamos CTRL+C para salir del programa.
Ejecutamos de nuevo airodump. Esta vez para comenzar a capturar todas las IV's que podamos.
# iwconfig ath0 channel 6 <---- en los sistemas Linux>
# ifconfig ath0 channel 6 <---- en los sistemas FreeBSD>
Ejecutamos la orden de arriba. Hemos escogido el canal 6, porque es el canal que se utiliza en nuestra, mini-lan.
# airodump ath0 captura 6 1 <---- en los sistemas Linux>
# dwepdump -w ath0 pcap-log/pcap.log <---- en los sistemas FreeBSD>
Volvemos a iniciar airodump apuntando al canal que utiliza nuestra mini-lan. podemos observar como las IV's (# Data) comienzan a subir lentamente, ya se ha explicado antes que, para poder romper una clave se precisan algunos miles de IV's.
INCISO sobre INYECCIÓN de PAQUETES
Cómo acelerar el proceso ?, pues estimulando la red con aireplay. Aireplay inyecta paquetes a la red haciendo así que el número de IV's recolectados aumente rápidamente. No entraremos en muchos detalles de cómo trabaja aireplay. No es el objetivo central de este manual y además, no es imprescindible la inyección para nuestra auditoría. Sólo es necesario que haya un buen tráfico y como la red es nuestra, tenemos muchas formas de aumentarlo.
De todas formas aireplay, hace algo que no es posible en otros OS (como Windows..) y creemos conveniente hacer este inciso, para hablar de un tema importante.
Lo primero que debemos realizar para poder comprobar la seguridad de nuestra mini-lan en su parte de wireless, será intentar asociarnos al AP, para ello realizaremos lo siguiente:
# aireplay -1 0 ath0 -e ESSID -a BSSID -h 0:1:2:3:4:5
Una vez realizado esto, deberíamos de ver algo similar a lo siguiente:
19:10:17 Sending Authentication Request
19:10:17 Authentication successful
19:10:17 Sending Association Request
19:10:17 Association successful :-)
Si pasado un rato y cuando estamos ejecutando el ataque -3, vemos que nos dice que no se está autenticado y que tenemos que volver a ejecutar el ataque -1, probablemente tengamos que repetir el ataque -1, pero cambiando una opción, lo dejaríamos de la siguiente forma:
# aireplay -1 20 ath0 -e ESSID -a BSSID -h 0:1:2:3:4:5
Podremos observar que el segundo parámetro que le hemos asignado es 20, con esto lo que haremos, será forzar al aircrack a que se autentique automáticamente cada 20 segundos, podemos poner cualquier tiempo que queramos en segundos (el mayor intervalo con el que lo hemos probado ha sido 60 segundos).
Hay varios tipos de ataques posibles, usando aireplay. A continuación mostramos uno, bastante eficaz.
# aireplay -2 -b BSSID -m 68 -n 68 -d FF:FF:FF:FF:FF:FF ath0 <---- en los sistemas Linux>
Ejecutamos aireplay con las opciones y argumentos de la orden anterior. Es necesario substituir BSSID por la MAC del AP de nuestra mini-lan (si recordáis, es uno de datos que mostraba el airodump hace un ratito y que anotamos) en el caso de nuestra red es es: 00:14:F8:3F:35:88.
Veremos como aireplay comienza a ejecutarse y mostrará algo como "Read 49 packets..." veremos que va aumentando progresivamente, hasta que encuentre algo válido. En ese momento, mostrará la información del paquete y nos preguntará si queremos usar ese paquete. Debemos aseguraros de que el paquete, contenga los siguientes datos:
- Size: 68
- FromDS: 0
- ToDS: 1 (WEP)
- BSSID = LA_BSSID_INDICADA
- Dest. MAC = FF:FF:FF:FF:FF:FF
Un ejemplo podría ser el siguiente:
Size: 68, FromDS: 0, ToDS: 1 (WEP)
BSSID = 00:14:F8:3F:35:88
Dest. MAC = FF:FF:FF:FF:FF:FF
Source MAC = 00:13:49:16:B0:BB
0x0000: 0841 d500 0014 f83f 3588 0013 4916 b0bb .A.....?5...I...
0x0010: ffff ffff ffff b072 9c80 0000 de32 8bc3 .......r.....2..
0x0020: f4fe 1fc5 1377 1fc5 8739 e667 41f9 5e2f .....w...9.gA.^/
0x0030: 7589 5f39 f550 d3fd c38c be2d c6a2 4a82 u._9.P.....-..J.
0x0040: 8ff1 7579 ..
Cuando tengamos algo así, pulsamos la tecla "y" y a continuación, Enter. Y veremos como los IV's que va capturando airodump van aumentando rápidamente. Recordemos que antes del inciso sobre inyección de paquetes teníamos ejecutándose en otro terminal la orden: # airodump ath0 captura 6 1. Después podremos seguir con la aplicación aircrack.
ESTILO Gentooza
Pero antes, pondremos otra forma de hacer "inyección de paquetes con tarjetas Atheros" que utiliza el operador "Topo" del PC portátil que corre Gentoo uno de los que utilizamos para la práctica de este manual)
Primero, nos recuerda que, los que utilicen los drivers madwifi, deben haber parcheado anteriormente los drivers para poder inyectar, de lo contrario, no les dejará inyectar paquetes. Una vez hecho eso se compilan los drivers madwifi y se ejecutan las órdenes siguientes:
# ifconfig ath0 down
# ifconfig ath0 hw ether 00:11:22:33:44:55
# iwconfig ath0 mode Managed essid "ESSID" key AAAAAAAAAA
# ifconfig ath0 up
# sysctl -w dev.ath0.rawdev=1
# ifconfig ath0raw up
# airodump ath0raw out CHANNEL (en CHANNEL se escribe el canal
correspondiente, en este caso el 6)
Después de eso, se ejecuta aireplay para inyectar, con la orden que sigue:
# aireplay -3 -h 00:11:22:33:44:55 -b 00:13:49:20:70:79 ath0
(siendo 00:13:49:20:70:79 la MAC de nuestro AP, al que queremos atacar)
Y como con la técnica anterior, observaremos como las IV's aumentan rápidamente.
FIN ESTILO Gentooza
FIN del INCISO sobre INYECCIÓN de PAQUETES
DESENCRIPTANDO la clave WEP
Una vez realizados todos los pasos anteriores, abrimos otro terminal y procedemos a ejecutar el programa aircrack Existen distintas formas de ejecutar aircrack, nosotros usaremos una de ellas, para ello lanzamos la orden:
# aircrack -x *.ivs <---- en los sistemas Linux>
en este punto, quizá nos pregunte sobre qué red queremos atacar. Respondemos con el número que corresponda a nuestra mini-lan y dejamos que aircrack actué. Pasados algunos minutos, si todo ha ido bien, veremos un mensaje, como éste:
"KEY FOUND! [Y AQUÍ-LA-CLAVE-WEP-QUE-NOS-PERMITE-ACCEDER-AL-AP]".
Este seria el mensaje que mostraría aircrack, cuando cree haber roto la clave wep.
Con el programa dwepcrack procederíamos con la siguiente orden.
# dwepcrack -s -w pcap-log/pcap.log <---- en los sistemas FreeBSD>
Y debería de pasar algo parecido a esto:
* dwepcrack v0.3a by h1kari
* Copyright (c) Dachb0den Labs 2002 [http://dachb0den.com] *
reading in captured ivs, snap headers, and samples... done
total packets: 500986
calculating ksa probabilities...
0: 22/768 keys (!)
1: 3535/131328 keys (!)
2: 5459/197376 keys (!)
3: 5424/197120 keys (!)
4: 9313/328703 keys (!)
(!)
(!) probability of success for each key with (!) < 0.5 (!)>
warming up the grinder...
packet length: 44
init vector: 58:f7:26
default tx key: 0
progress: ....................................
wep keys successfully cracked!
0: xx:xx:xx:xx:xx *
done.
ENTRANDO en la RED
Para comprobar que la clave WEP es correcta, ejecutamos la orden:
# iwconfig ath0 essid "EL-ESSID-DE-LA-RED" key "la clave anterior" <---- en los sistemas Linux>
# ifconfig ath0 essid "EL-ESSID-DE-LA-RED" key "la clave anterior" <---- en los sistemas FreeBSD>
para levantar el interface ath0 (la tarjeta wifi de los portátiles), asociándolas a nuestra mini-lan.
Si logramos conectarnos a nuestra red con la clave que aircrack o dwepcrack nos ha facilitado, habremos conseguido traspasar las barreras que habíamos puesto al configurarla. Recordemos que, eran algunas más que las que tendremos por defecto al instalar un módem-router wifi, tal y como nos lo envía la ISP.
SOLUCIONES POSIBLES
Una de las soluciones básicas* que podemos aplicar, es la quinta medida (manteniendo también en lo posible las cuatro anteriores), que se nombra en el apartado: MÉTODOS de SEGURIDAD BÁSICOS, sustituiremos WEP por WPA con TKIP y AES.
HABILITANDO WPA + TKIP en FreeBSD
Para empezar vamos a configurar WPA+TKIP en sistemas FreeBSD. (a continuación lo haremos para *Linux) Como hemos visto anteriormente los drivers que el proyecto madwifi hace para los chips Atheros están incluidos en las fuentes del kernel y deben de ser habilitados. Nos remitimos pues al principio del Caso B del apartado ANTECEDENTES Software y hardware en el que se explica como hacerlo.
A continuación es necesario instalar el programa wpa_supplicant que podemos encontrar en los ports /usr/ports/security/wpa_supplicant en el caso de los sistemas FreeBSD y en los repositorios de la distribución *Linux que se esté usando. Es probable que para Debian/Linux esté disponible en los repositorios de apt, para Gentoo/Linux estará en los ports disponible para emerge y en todo caso se puede acudir a las fuentes en este enlace:
http://hostap.epitest.fi/wpa_supplicant/
las fuentes disponibles en esta sitio son válidas para *Linux, FreeBSD, NetBSD. También están disponibles binarios para sistemas Windows. Todo ello es software abierto y bajo licencia BSD. Una vez instalado wpa_supplicant dispondremos de los comandos wpa_supplicant, wpa_passphrase y wpa_cli
Es aconsejable leer el todo el contenido de esta web que explica muy bien los protocolos disponibles para los chips de los que se ocupa. En ella es posible conseguir también un archivo /etc/wpa_supplicant.conf de ejemplo, muy bien comentado.
Si queremos implementar WPA en el PC-1 (como lo especificado en el Caso B) que actúa como punto de acceso, necesitaremos también el programa hostapd que estará en /usr/ports/security/hostapd en los sistemas FreeBSD.
En el caso de utilizar el método especificado en el Caso A, el módem router ADSL (o cable) facilitado por nuestra ISP debe de soportar WPA + TKIP y a ser posible también AES
Una vez instalado hostapd y wpa_supplicant vamos a generar una clave.
WPA es más seguro que WEP (y más aun si usamos claves complicadas con muchos caracteres), los desarrolladores de madwifi aconsejan usar claves con ¡¡ un mínimo de 64 caracteres !!, de hecho aconsejan usar la utilidad wpa_passphrase que se instala junto a wpa_supplicant de esta forma:
wpa_passphrase policewomankiss "Some_Decent_PassPhrase_of_up_64_Characters" >> /etc/wpa_supplicant.conf
para generar una clave "decente" y añadirla al /etc/wpa_supplicant.conf que debiera de quedar así:
network={
ssid="policewomankiss"
#psk="Some_Decent_PassPhrase_of_up_64_Characters"
psk=701459761a3d17c5ddead0deafbeeffeedbadf00dc659db31e2e3d36f00a12b1
}
Podéis contar los caracteres si os place, pero wpa_passphrase lo hace bien. y aun así "alguien" con suficiente tiempo, paciencia, un buen diccionario y una buena máquina, puede llegar a romperla con técnicas que veremos en los siguientes apartados.
Seguimos adelante creando o modificando el archivo /etc/hostapd.conf con la siguiente orden para editar el archivo e incluir los datos que se muestran.
# vim /etc/hostapd.conf
interface=ath0
driver=bsd
logger_syslog=-1
logger_syslog_level=0
logger_stdout=-1
logger_stdout_level=0
debug=4
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
ssid=policewomankiss
wpa=1
wpa_passphrase=701459761a3d17c5ddead0deafbeeffeedbadf00dc659db31e2e3d36f00a12b1
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
hemos añadido el nombre del AP y la clave generada en el apartado anterior, cerramos guardando los cambios y ejecutamos las siguientes órdenes:
# /usr/sbin/hostapd /etc/hostapd.conf
para levantar el daemon hostapd y ..
# ifconfig ath0 mediaopt hostap
para levantar nuestra interface wifi (la del PC-1) como punto de acceso al que se pueden asociar los clientes.
A continuación ya podemos configurar los clientes, en este caso PC-2 y PC-3, hacemos un scan* para ver si efectivamente aparece nuestro AP.
# ifconfig ath0 up scan
SSID BSSID CHAN RATE S:N INT CAPS
thingoldedoriath 00:11:95:c3:0d:ac 1 54M 19:0 100 ES
policewomankiss 00:13:46:49:41:76 6 54M 30:0 100 EPS WPA WME
Es el momento de explicar algo sobre los las siglas que figuran debajo del campo CAPS como prometimos anteriormente. Si nos fijamos en las de la línea "policewomankiss" veremos que aparecen las letras EPS. Pues bien esta es la explicación de las siglas:
E significa: Sistema Extendido de Servicio (ESS). Indica que la estación es parte de una red de infraestructura (en contraste con una red de IBSS/ad-hoc).
I significa: Red de IBSS/ad-hoc. Indica que la estación es parte de una red ad hoc (en contraste con una red de ESS).
P significa: que este BSS requiere que el AP utilice medios criptográficos tales como WEP, TKIP o Aes-ccmp a los marcos de los datos de encrypt/decrypt que son intercambiados por otros. Esto es, que los clientes del AP deben usar los mismos protocolos de encriptación que el propio AP. En todo caso, es obligado que los datos que circulan en esta red BSS, tanto los que se usan para autenticar clientes contra el AP como para las posteriores transferencias de archivos, deben de estar encriptados con el protocolo que se elija.
S significa: Preámbulo Corto. Indica que la red está utilizando los preámbulos cortos (definidos en 802.11b Rate/DSSS alto PHY, utiliza un campo de sincronización de 56 bits en contraste a un campo de 128 bits usado en el preámbulo largo).
Una vez que vemos nuestro AP, editamos el archivo /etc/wpa_supplicant.conf y añadimos los datos que ya conocemos.
# vim /etc/wpa_supplicant.conf
network={
ssid="policewomankiss"
psk="701459761a3d17c5ddead0deafbeeffeedbadf00dc659db31e2e3d36f00a12b1"
}
a continuación ejecutamos la orden:
# wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf
para que wpa_supplicant asocie la información del archivo /etc/wpa_supplicant.conf al interface ath0 y procedemos a levantar y comprobar que se ha configurado correctamente.
# ifconfig ath0 inet 192.168.0.130 netmask 255.255.255.0
# ifconfig -v ath0
ath0: flags=8843
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.1.130 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (DS/11Mbps)
status: associated
ssid policewomankiss channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA privacy ON deftxkey UNDEF TKIP 2:128-bit TKIP 3:128-bit
txpowmax 36 protmode CTS roaming MANUAL bintval 100
Es posible y quizá aconsejable usar DHCP, si nos ajustamos al Caso A es necesario que nuestro módem-ruoter tenga habilitado el servicio DHCPD, suelen tenerlo habilitado por defecto.
En el Caso B debemos hacer que nuestro PC-1 ejecute ese servicio, por lo tanto
debemos de configurar mínimamente el DHCPD o simplemente lo lanzamos con la configuración por defecto (suele ser válida). Tendremos que des-comentar unas líneas en el fichero vim /etc/rc.conf y lanzar el daemon dhcpd
No es un propósito de este howto ofrecer datos sobre la configuración del servidor DHCP, hay magníficos documentos en Internet que se ocupan de ello. Sólo mencionar aquí que de ésa configuración depende también en parte la seguridad de nuestra red. Podemos decirle al DHCP que adjudique unas determinadas IPs a determinadas máquinas, identificándolas por nombre, IP o MAC.
Configuramos las máquinas cliente en modo managed como ya sabemos. Podemos hacer una búsqueda.
# ifconfig ath0 up scan
que nos mostrará algo como esto (siempre que haya redes activas y haciendo broadcasting de ESSID)
SSID BSSID CHAN RATE S:N INT CAPS
thingoldedoriath 00:11:95:c3:0d:ac 1 54M 19:0 100 ES
policewomankiss 00:13:46:49:41:76 6 54M 30:0 100 EPS WPA WME
Una vez que vemos policewomankiss que es nuestro AP, al que queremos conectarnos, debemos de crear (o modificar) el archivo /etc/wpa_supplicant.conf con el siguiente contenido que obviamente ya conocemos (porque el administrador de la mini-lan nos ha facilitado los datos).
# vim /etc/wpa_supplicant.conf
network={
ssid="policewomankiss"
psk="701459761a3d17c5ddead0deafbeeffeedbadf00dc659db31e2e3d36f00a12b1"
}
Si la máquina cliente corre un OS FreeBSD añadimos una línea al fichero /etc/rc.conf
# vim /etc/rc.conf
ifconfig_ath0="WPA DHCP"
Ejecutamos la orden:
# /etc/rc.d/netif start
para levantar los interfaces de red y el wpa_supplicant, debiéramos de ver algo como esto:
Starting wpa_supplicant.
DHCPDISCOVER on ath0 to 255.255.255.255 port 67 interval 5
DHCPDISCOVER on ath0 to 255.255.255.255 port 67 interval 6
DHCPOFFER from 192.168.0.1
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.254 -- renewal in 300 seconds.
ath0: flags=8843
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/36Mbps)
status: associated
ssid policewomankiss channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA privacy ON deftxkey UNDEF TKIP 2:128-bit txpowmax 36
protmode CTS roaming MANUAL bintval 100
podemos hacerlo de forma manual usando el mismo /etc/wpa_supplicant.conf que hicimos para el paso anterior, añadiremos en el /etc/rc.conf la línea:
# vim /etc/rc.conf
ifconfig_ath0="DHCP"
en este caso ejecutamos la orden:
# wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf
si no surge ningún problema asociará los datos de configuración al interface ath0 y mostrará el resultado:
Trying to associate with 00:11:95:c3:0d:ac (SSID='policewomankiss' freq=2412 MHz)
Associated with 00:11:95:c3:0d:ac
WPA: Key negotiation completed with 00:11:95:c3:0d:ac [PTK=TKIP GTK=TKIP]
después ejecutamos:
# dhclient ath0
el servidor dinámico hará su trabajo y mostrará algunos mensajes informativos, si todo va bien será algo así:
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.254 -- renewal in 300 seconds.
y una vez que DHCP ha adjudicado las IPs y la máscara, ejecutamos:
# ifconfig ath0
para examinar los datos de nuestra interface y veremos algo muy parecido a esto:
ath0: flags=8843
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/48Mbps)
status: associated
ssid policewomankiss channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA privacy ON deftxkey UNDEF TKIP 2:128-bit txpowmax 36
protmode CTS roaming MANUAL bintval 100
Y por supuesto también podemos hacerlo sin usar DHCP, fijando la IP de forma estática si después de la orden:
# wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf
ejecutamos algo que debiéramos de conocer y que recogemos a modo de recordatorio*
# ifconfig ath0 inet 192.168.0.100 netmask 255.255.255.0
si ejecutamos:
# ifconfig ath0
obtendremos los mismos resultados:
ath0: flags=8843
inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1
inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:11:95:d5:43:62
media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/48Mbps)
status: associated
ssid policewomankiss channel 1 bssid 00:11:95:c3:0d:ac
authmode WPA privacy ON deftxkey UNDEF TKIP 2:128-bit txpowmax 36
protmode CTS roaming MANUAL bintval 100
Si queremos salir* a Internet debemos de fijar la IP de rutéo o el gateway con la orden:
# route add default IP_del_router o del_PC_que_hace_de_AP
y fijar la IP del servidor DNS editando el fichero /etc/resolv.conf lo más rápido es ejecutar:
# echo "nameserver IP del servidor DNS" >> /etc/resolv.conf
También es posible asociar cualquier máquina a nuestro AP usando wpa_supplicant con WEP, sin encriptación alguna y con otras más complicadas que no son objeto de este documento y podéis ver en esta magnífica web.
KARMA
Aunque no es el tema central de este documento quiero mencionar este programa, porque está disponible para FreeBSD y Linux en este sitio web. karma se utiliza junto a otros programas que ya hemos mencionado para "romper" una clave WPA en un AP de una máquina Windows con todos los Service Packs posibles, como explica en este magnífico post Vic_Thor, por lo que a estas alturas del manual, algunas mentes pensantes sabrán que modificaciones son necesarias para utilizarlo contra máquinas que corren FreeBSD o Linux. No es fácil pero tampoco es imposible. Nosotros lo hemos probado contra el AP de nuestra mini-lan con una clave cortita (de 14 caracteres) y lo conseguimos. Con claves generadas por wpa_passphrase o variaciones de ellas (pero de 64 caracteres) no pudimos hacerlo en el tiempo de que disponíamos y después de configurar WPA+AES, tampoco. Pero siempre hay alguien que tiene más conocimientos, más experiencia más paciencia y todo el tiempo del mundo.
En la web de wadalbertia.org hay links para descargar el código fuente de karma, instrucciones para compilar el paquete, para configurarlo y para usarlo junto a otros programas. El post además, está profusamente ilustrado con capturas y como una imagen vale más que mil palabras, no nos extenderemos más. Visitad el sitio que por otro lado, dispone de muchos más contenidos y buenos links a otras webs interesantes. De hecho en este post de Bebbop figura una colección de enlaces que no olvida casi ningún programa relacionado con la "seguridad" para varios sistemas operativos. Sencillamente, no tiene desperdicio.
Con un poco de paciencia también podemos emplear técnicas que no requieren la instalación de programas nuevos* con aireplay en Linux podemos intentarlo con ataques más radicales. Se necesita más paciencia de la que dicen los que presumen de haberlo usado y los resultados son buenos si "la víctima" ha olvidado algunas medidas de seguridad básicas pensando que como su módem-router "ya viene con WPA", pueden dejar la clave por defecto del tipo 0987654321 o cambiarla por otras más fáciles de recordar (si es que existen) como
marisolsolsol o AnaMariaSolPlaya que recuerdan a las mujeres amadas*.
Como ya estábamos un poco cansados después de tanta "guerra aérea", probamos el famoso ataque 0 contra nuestro AP con WPA y clave de 64 caracteres y no lo conseguimos. Pero no dudamos de su eficacia contra otras configuraciones o incluso contra la nuestra, usado por alguien con más tiempo, paciencia o conocimientos.
DESAUTENTIFICACIÓN de CLIENTES LEGÍTIMOS
A esto también se le denomina ataque 0 y hace que los clientes legítimos tengan que volver a conectarse con el PA .. válido también para WPA ¡¡
aireplay -0 5 ath0 -a MAC_AP -c MAC_CLIENTE
A veces será necesario probar con diferentes velocidades.
iwconfig ath0 rate 54M
iwconfig ath0 rate 24M
y volver a repetir el ataque .....¡¡¡
Para solucionar este contratiempo podemos implementar WPA+AES, tal y como se explica en el siguiente apartado siempre que nuestra tarjeta wifi soporte tal cosa.
Es evidente que también debemos de tener disponible AES. Debe de estar habilitado el soporte para ese protocolo* de encriptación en el kernel, bien de forma estática o disponible como módulo para ser cargado bajo demanda cuando wpa_supplicant lo requiera. Es posible revisar los archivos .config en *Linux o el archivo GENERIC en FreeBSD para saber si disponemos de ese soporte o debemos de compilar un nuevo kernel para añadirlo.
Los archivos .config y GENERIC pueden tener otro nombre y encontrarse en otra ubicación, lo habitual es que estén en el directorio /boot/config-2.6.12 o, en /usr/src/linux-2.6.12/.config en los sistemas *Linux y en /usr/src/sys/i386/conf/GENERIC en los sistemas FreeBSD.
HABILITANDO WPA + AES en FreeBSD
En teoría el diseño para las partes de IEEE 802.11i que no fueron incluidas en WPA han acabado (mayo de 2004) y esta enmienda a IEEE 802.11 (IEEE 802.11i / RSN / WPA2) fue aprobada en junio de de 2004. La alianza Wi-Fi está utilizando el IEEE final 802.11i como nueva versión de WPA2 llamándola WPA. Esto incluye un algoritmo más robusto del cifrado CCMP:AES para substituir TKIP, con optimizaciones como un número reducido de mensajes en la pre-autentificación, y PMKSA.
El problema es que no todos los modelos de tarjetas wifi lo soportan (al menos sin servidor de autenticación Radius). De todas formas podemos probar a usar CCMP:AES en lugar de TKIP en FreeBSD cambiando un poco el archivo /etc/hostapd.conf dejándolo de esta forma:
# vim /etc/hostapd.conf
interface=ath0
driver=bsd
logger_syslog=-1
logger_syslog_level=0
logger_stdout=-1
logger_stdout_level=0
debug=4
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
ssid=policewomankiss
wpa=2
wpa_passphrase=701459761a3d17c5ddead0deafbeeffeedbadf00dc659db31e2e3d36f00a12b1
wpa_key_mgmt=WPA-EAP
wpa_pairwise=CCMP TKIP
cerramos guardando los cambios y procedemos en lo demás como en el apartado anterior. Si el AP soporta EAP funcionará y desde luego con CCMP:AES tendremos un plus de seguridad inmune al llamado "ataque 0" y con una menor carga para el sistema.
En caso de que no funcione de esta forma, siempre podemos probar la configuración EAP-TLS con un servidor de autenticación Radius. Necesitaremos el demonio radiusd. No es tema de este manual pero la información está disponible en la web de
freebsdmall, junto a otras implementaciones que tampoco abordamos aquí.
HABILITANDO WPA + TKIP en LINUX
La verdad es que madwifi dispone de mucha información (en inglés eso si) para Linux, en la web del proyecto tienen un apartado que llaman "wiki/UserDocs/Distro" en la que abordan la instalación de sus drivers en las distribuciones más conocidas. Resultaría muy largo abordar más de una en este documento así que, mostraremos una genérica y para el resto ponemos en el apartado SITIOS RELACIONADOS y WEBS de INTERÉS al final del howto los links a esos documentos, junto a otros de indudable interés.
Una vez que disponemos de las fuentes de los drivers madwifi, en el apartado
ANTECEDENTES Software y hardware Caso B explicamos como y de donde bajarlos, procedemos a descomprimir, compilar y instalar los drivers tal y como se explica en el mismo apartado.
A continuación bajamos también las fuentes del programa wpa_supplicant y las movemos al subdirectorio /usr/src/, descomprimimos y entramos en el subdirectorio recién creado:
# cd /usr/src/wpa_supplicant-0.4.7/
y editamos el fichero .config que encontraremos ahí:
# vim /usr/src/wpa_supplicant-0.4.7/.config
descomentamos las siguientes opciones sin tocar el resto del archivo
CONFIG_DRIVER_MADWIFI=y
CFLAGS += -I/usr/src/madwifi-ng
CONFIG_CTRL_IFACE=y
cerramos el archivo guardando los cambios y compilamos el programa con las siguientes órdenes:
make clean
make
make install
y editamos el archivo /etc/wpa_supplicant.conf para añadir los datos de nuestro AP.
network={
ssid="policewomankiss"
#psk="Some_Decent_PassPhrase_of_up_64_Characters"
psk=701459761a3d17c5ddead0deafbeeffeedbadf00dc659db31e2e3d36f00a12b1
}
y comprobar que en la sección network están estas líneas, en caso contrario las creamos
key_mgmt=WPA-PSK
# proto=WPA
proto=RSN
si comentamos la línea proto=RSN y des-comentamos proto=WPA, tendríamos WPA de esta forma disponemos de WPA2
Ahora es el momento adecuado para compilar el wpa_gui, un frotend para wpa_supplicant. Debemos editar de nuevo el archivo /etc/wpa_supplicant.conf añadir al principio (justo por encima de la sección network) del fichero estas líneas:
ctrl_interface=/var/run/wpa_supplicant # wpa_supplicant keep its process ID number here
ctrl_interface_group=wheel # all users of the given group (ie: `wheel') can contact the WPA supplicant
a continuación ejecutamos:
# make wpa_gui
y movemos el binario resultante a un fichero del path con la orden:
# mv wpa_gui /usr/local/bin
es importante que el usuario pertenezca al grupo de ctrl_interface_group que como vemos es el grupo wheel.
Y podemos seguir fijando los permisos del fichero /etc/wpa_supplicant.conf
# chmod 640 /etc/wpa_supplicant.conf
Ahora procedemos a cargar los módulos y a levantar la interface wifi ejecutando las siguientes órdenes:
# modprobe ath_pci
# iwconfig ath0 essid "policewomankiss"
# ifconfig ath0 192.168.0.100 up
# /usr/local/bin/wpa_supplicant -dd -Dmadwifi -iath0 -c /etc/wpa_supplicant.conf
adjudicamos una IP e informamos al nuevo interface ath0 de la configuración de /etc/wpa_supplicant.conf para que la use. Debería de aparecer un mensaje parecido a este:
State: GROUP_HANDSHAKE -> COMPLETED
CTRL-EVENT-CONNECTED - Connection to 00:0f:b4:a1:3f:47 completed (auth)
Para saber si todo ha ido bien podemos ejecutar la orden:
# iwconfig ath0
que debería de mostrarnos algo muy parecido a esto:
ath0 IEEE 802.11g ESSID:"policewomankiss" Nickname:"YOUR_HOSTNAME"
Mode:Managed Frequency:2.422GHz Access Point: 00:0D:B3:1A:E2:67
Bit Rate:54Mb/s Tx-Power:18 dBm Sensitivity=0/3
Retry:off RTS thr:off Fragment thr:off
Encryption key:59B8-0286-FEED-DEAF-BEEF-F00D-192B Security mode:restricted
Power Management:off
Link Quality:43/94 Signal level:-52 dBm Noise level:-95 dBm
Rx invalid nwid:3 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Y esto es todo, en lo que a las máquinas cliente* se refiere. Si necesitamos matar el programa wpa_supplicant podemos hacerlo pulsando CTRL-C en el terminal donde lo ejecutamos o utilizar el la orden:
# pkill wpa_supplicant
Si no disponemos de pkill podemos usar killall, skill o incluso el comando kill una vez conocido el número de proceso PID.
HABILITANDO WPA + AES en *Linux
Existen como no, varias formas de habilitar WPA + AES en las máquinas que corren OS Linux. Vamos a ofrecer la que madwifi propone como genérica*. Para ello, como ya dijimos anteriormente, es necesario disponer de soporte para AES y compilar wpa_supplicant para que soporte este protocolo de encriptación. Para ello editamos el archivo:
# vim /usr/src/wpa_supplicant-0.4.7/.config
y des-comentamos o añadimos las siguientes líneas:
CONFIG_DRIVER_ATMEL=n
CONFIG_DRIVER_HOSTAP=n
CONFIG_DRIVER_IPW=n
CONFIG_DRIVER_MADWIFI=y
# Point this to your madwifi(-ng) sources
CFLAGS += -I/root/drivers/madwifi-ng
CONFIG_DRIVER_NDISWRAPPER=n
CONFIG_DRIVER_PRISM54=n
CONFIG_DRIVER_WEXT=y
CONFIG_DRIVER_WIRED=y
CONFIG_WIRELESS_EXTENSION=y
#CONFIG_DRIVER_NDIS=y
#CONFIG_DRIVER_HERMES=y
#CONFIG_DRIVER_BROADCOM=y
CONFIG_IEEE8021X_EAPOL=y
CONFIG_EAP_MD5=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_FAST=y
CONFIG_EAP_TLS=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_TTLS=y
CONFIG_EAP_GTC=y
CONFIG_EAP_OTP=y
CONFIG_EAP_SIM=y
CONFIG_EAP_PSK=y
CONFIG_EAP_PAX=y
CONFIG_EAP_LEAP=y
CONFIG_EAP_AKA=y
CONFIG_PKCS12=y
CONFIG_SMARTCARD=y
CONFIG_PCSC=y
CONFIG_CTRL_IFACE=y
CONFIG_READLINE=y
cerramos el archivo guardando los cambios y compilamos el programa con las siguientes órdenes:
make clean
make
make install
Editamos el archivo /etc/wpa_supplicant.conf para añadir los datos de nuestro AP. y después continuamos con los mismos pasos que en el el apartado HABILITANDO WPA con TKIP en LINUX, a partir de este mismo punto.
HABILITANDO WPA + AES en Debian/Linux
Lo mismo que en el caso de FreeBSD tendremos que variar el contenido del fichero /etc/wpa_supplicant.conf
para ello lo editamos:
# vim /etc/wpa_supplicant.conf
y sustituimos el contenido:
# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="policewomankiss"
key_mgmt=WPA-PSK
proto=WPA
pairwise=TKIP
group=TKIP
psk="701459761a3d17c5ddead0deafbeeffeedbadf00dc659db31e2e3d36f00a12b1"
}
por este otro:
# WPA-PSK/AES
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="policewomankiss"
key_mgmt=WPA-PSK
proto=WPA
pairwise=EES
group=AES
psk="701459761a3d17c5ddead0deafbeeffeedbadf00dc659db31e2e3d36f00a12b1"
}
y repetimos los pasos del apartado HABILITANDO WPA + TKIP en LINUX para levantar los
interfaces con la nueva configuración.
FUENTES, BIBLIOGRAFÍA, SITIOS RELACIONADOS, y WEBS de INTERÉS
Los programas a veces se incluyen en las distribuciones, otras, están disponibles en los repositorios de los OS y en algunos casos, es necesario bajarlos de alguna parte, las webs de los equipos de desarrollo y otras que enlazan con estas últimas. El conocimiento también hay que buscarlo. A continuación encontraréis algunos links en los que se puede conseguir buen software y mucha información.
En FreeBSD se usan las bsd-airtools que incluye dstumbler, una herramienta del estilo kismet y el paquete dweputils, que contiene las herramientas dwepcrack, dwepdump y dwepkeygen. Las bsd-airtools también están disponibles en los ports de FreeBSD.
El paquete Aircrack, incluye los programas, aireplay, airodump, aircrack y otros.
El paquete Wireless-Tools, incluye los programas: iwconfig, iwpriv, iwspy, iwlist y otros.
Las fuentes del programa wpa_supplicant incluye el programa wpa_supplicant, wpa_passphrase y wpa_cli.
Un buen documento (muy académico) en formato PDF sobre WEP y WPA. Explica el significado de los campos que muestra airodump, las opciones de aircrack y como usarlos junto con aireplay. Gentileza de SurveR
Una web interesante sobre seguridad seguridadysistemas
Seguridad básica en wifi: infosecurityonline, el "verdadero alcance de las medidas de seguridad".
Seguridad cara airdefense, detección de accesos a la red wifi mediante sensores.
Los "malos" elhacker, taller de auditoría sobre
redes wifi. Dentro de una web muy completa y llenita de buenos documentos.
En Español FreeBSD wireless,
sección wifi del manual de FreeBSD en español.
En Inglés Wireless Network,
manual escrito por Sam Leffler" y loader,
acerca de la operación con WIFI en FreeBSD. Explica como levantar los interfaces wifi en los modos Infraestructura y Ad-hoc, desde lo más básico, así como le implementación de WEP, WPA y otros métodos de encriptación.
Un paisano (y sin embargo amigo) de Cambados, al suroeste de Galicia, donde nacen y se hacen los mejores vinos de la región, tiene una web con cosas interesantes. CHaiS
El proyecto madwifi tiene algunos links con documentación para
novatos, para
WPA, para gente con ganas de complicarse la vida un poco más
WPA+AES
en este otro link figuran todos loschips Atheros
soportados por el proyecto madwifi, es bueno visitarla ante de comprar una tarjeta de esta marca.
En este otro link se pueden encontrar los módulos de madwifi empaquetados en formato .deb para Debian/Linux y otras distribuciones basadas en Debian así como paquetes en formato .rpm para Fedora Core y otras basadas en Red Hat.deb_y_rpm.
En este otro link se encuentran instrucciones para instalar y configurar los módulos de madwifi en
Slackware y en esta otra para casi todas las demás distribuciones *Linux
Debian, Gentoo, Red Hat, Fedora Core, Ubuntu, SuSe y Mandrake
En esta web se puede encontrar un manual para usar
karma contra máquinas Windows incluso con WPA, escrito por "Vic_Thor" con capturas y una explicación muy clara.
El programa karma se puede usar en *Linux y FreeBSD, las fuentes se pueden descargar de aquí
En esta web hay links que apuntan a casi todos los programas que tienen algo que ver con la seguridad en OS *BSD *Linux y otros UNIX, recopilados por "Bebbop".
Para los que quieran un programa monitor "pequeño" parecido a wavemon, pero para FreeBSD, pueden encontrarlo en esta web. Se llama awmu, lo ha escrito "syvic" un antiguo*
joven compañero de trabajo. Está en versión beta, es probable que no lo termine nunca :-P, pero funciona muy bien.
Drivers Y Parches para varios chips wifi en Linux. Son versiones nuevas de los drivers es un buen sitio que se mantiene actualizado. Por otro lado el dominio en si es muy interesante, tienen talleres wifi incluida la seguridad.
Hablando de seguridad, esta web explica lo más básico en
seguridad para Slackware, además tiene un diseño agradable, un firewall básico y las instrucciones para hacerlo y ponerlo en los scripts de arranque. Un script de perl que "limpia de entradas de servicios inactivos en el /etc/inetd.conf, y otro que informa sobre los programas setuid y desactiva aquellos que no necesitan permisos especiales para ejecutarse. Este sitio no tiene desperdicio pero está en inglés :-(.
Cuando estaba corrigiendo y dando los últimos retoques a este howto, buscando algún documento serio* que sirviera para introducir un poco el tema de las antenas y la propagación electromagnética del que pienso escribir próximamente, encontré un magnifico documento escrito por Vic_Thor (el mismo que escribió el post de karma). El link para descargar el pdf está al principio de este howto. Pero a causa de ese pdf descubrí otro magnífico sitio que no debéis de dejar de visitar, hay de todo, también cosas para la seguridad en redes y en wifi. Se llama Los cuadernos de HackxCrack. No hay excusa para no darse una vuelta por este sitio cada poco.
Kismet, wine blog de luigys, porque también tenemos amigos que se ven "obligados" a usar aplicaciones hechas para Windows. Aquí habla de Kismet, de wine y de, Cross Over Office. Un plugin (de pago..) para wine, con el que se pueden instalar todos estos programas de Windows. Y del que se puede conseguir, una versión de prueba por 30 días rellenando un formulario
aquí.
Las antenas se puede comprar y también se pueden hacer. El bricolaje puede ser muy entretenido y sus resultados muy gratificantes para muchas personas. En este link encontraréis muchos enlaces a otras webs donde se pueden encontrar instrucciones para construir muchos tipos de
antenas, incluidas las que se hacen a partir de botes de cacao instantáneo o patatas fritas.
En este otro link encontraréis instrucciones claras y precisas para construir una
antena helicoidal de gran ganancia, barata y fácil de hacer. El autor no escatima en explicaciones, esquemas y fotografías.
Otra buena antena para la que se necesitan materiales sencillos de conseguir, herramientas no muy especializadas y algo de pericia. Es la segunda antena que construye y nos cuenta paso a paso y con fotografías como hacer una réplica de una antena cuyo nombre comercial es
Pacific Wireless "BackFire".
En esta se abordan conceptos más serios sobre antenas para VHF y UHF. Para conocer más sobre antenas de verdad
VOCABULARIO Y CONCEPTOS
WIFI:
WI-FI, wireless fidelity, tecnologías y protocolos que usan bandas de frecuencia "libres" dentro del espectro radioeléctrico, es decir, las bandas de frecuencia que no requieren licencias gubernamentales (generalmente las peores a efectos de propagación, estabilidad y fiabilidad)
ESPECTRO RADIOELÉCTRICO:
Espacio* en el que pueden transmitirse ondas electromagnéticas, es decir, todo aquello que está a nuestro alrededor (incluidas biosfera, ionosfera, atmósfera y partes de la estratosfera) que no está ocupado por elementos sólidos, algunos de estos elementos sólidos pueden ser traspasados por las ondas electromagnéticas (dependiendo de las frecuencias utilizadas), aunque se produzca alguna* atenuación de la señal al ser absorbida una parte de ella por estos elementos sólidos, naturales (colinas, montañas, bosques.. elementos atmosféricos como la lluvia o la niebla).
Artificiales estáticos (edificios, estructuras de transporte de energía eléctrica o telefonía alámbrica, antenas, estructuras ferroviarias), artificiales móviles (todo tipo de vehículos, trenes, coches, barcos, aviones..). Esto en lo que respecta al exterior, en el interior de las construcciones como viviendas por ejemplo, también existen un espectro radioeléctrico y obstáculos como se puede imaginar y los cuerpos humanos también pueden representar un obstáculo.
ONDAS ELECTROMAGNÉTICAS:
Perturbaciones* que se producen en el espectro radioeléctrico con suficiente fuerza como para producir una ondulación que cuando es permanente o repetida puede ocupar un espacio en él. Estas perturbaciones pueden ser de muchos tipos y producirse en muchas frecuencias invisibles e in-audibles, viajan a la misma velocidad que la luz (300000 Km/s redondeando..) y su alcance así como la calidad de su modulación dependen de un gran número de variables.
Una representación gráfica de como se propagan en el espacio* a partir del elemento radiante (antena), suele ser el que vemos cuando tiramos una piedrecilla en un estanque de aguas tranquilas. Donde cae la piedrecilla se produce una onda circular de una potencia (directamente proporcional al tamaño de la piedra y de la fuerza con que choque con el agua), veremos esa onda se va alejando del lugar del choque, creciendo en el perímetro de su circunferencia y disminuyendo en su fuerza* hasta que se pierde..
Si en lugar de tirar una sola piedrecilla utilizásemos algún elemento que moviese el agua de una forma continua, como por ejemplo un grifo que dejase caer una gota cada cierto tiempo, las ondas se sucederían unas a otras y el agua del estanque se estaría moviendo de forma continua, mientras no cesase la gota. Esto es lo que hacen los osciladores* de RF en los equipos de transmisión de cualquier aparato electrónico que transmita algún tipo de onda electromagnética, en lugar de mover el agua de un estanque, mueven el aire*, el espectro radioeléctrico.
El tiempo que pasa entre que cae una gota y la siguiente sería la frecuencia*, el tamaño de la gota de agua y la altura desde la que cae, en este caso determinaría la fuerza con la que ésta choca contra el agua del estanque y por lo tanto la potencia, la fuerza con la que la onda se desplaza creando círculos concéntricos que como en las ondas electromagnéticas va disminuyendo según se aleja del centro de emisión.
TARJETA WIFI:
Conjunto de elementos electrónicos (hardware para los informáticos) que forman un
transceptor de radio. Esto es, un circuito emisor, un circuito receptor, una antena que sirve* a los dos y una fuente de alimentación que proporciona la energía eléctrica necesaria para el funcionamiento de estos circuitos.
El circuito emisor consta básicamente de un oscilador un modulador un amplificador y una antena. Desde que se conecta (la tarjeta wifi) el oscilador está produciendo una "onda portadora" en la banda de frecuencia de 2.4GHz (esto es en realidad entre el canal 1-2.412 GHz y el canal 13-2.484 GHz para usos comunes en wifi), esta onda es amplificada y entregada a la antena que la pondrá en contacto con el espectro radioeléctrico de una forma continua.
Si a este emisor le suministramos una información (tramas de bytes o paquetes en este caso..) se la pasará al modulador que la introducirá en ésa onda portadora de la que hablamos. El circuito receptor consta de una antena, un demodulador y un amplificador que como se puede
suponer hace lo contrario* que el emisor. La antena recibe una onda portadora en el mismo rango de frecuencias que el emisor, moduladas con la información, se la pasa al demodulador que extrae la información (electromagnética) convirtiéndola de nuevo en "tramas o paquetes", de ahí pasa un amplificador y después a la capa de red adecuada para ser enviada a los programas que la soliciten como si de una ethernet se tratase.
ANTENAS:
La antena es el elemento o conjunto de elementos radiantes, sería muy largo hablar de
antenas en profundidad (sobre todo para alguien que lleva más de 30 años trabajando con ellas), sólo diré algo que me parece fundamental. De la calidad de los materiales, de la exactitud de las medidas, de la posición y el lugar en que se instale, de la ganancia*, de la polarización y la direccionalidad de nuestras antenas depende el 90% de la calidad de la señal que nuestras tarjetas wifi emitan y reciban. el 5% restante se lo dejamos a las variables de propagación de la onda que no dependen de lo que nosotros hagamos en un 4% y el 1% final.. a la potencia de la parte emisora de las tarjetas wifi o de los AP.
Es muy probable que hayáis oído o leído lo contrario incluso que se puede conseguir un mayor alcance utilizando un amplificador de señal en el emisor. Esto para redes "caseras" no tiene sentido y además no es cierto.
El máximo de potencia permitida (legal) para 802.11b y 802.11g es de 100mW (esto es 100 milésimas partes de 1 Watio), todo lo que sea transmitir por encima de esa potencia en interiores es excesivo, produce ruido*, interferencias en redes vecinas (o sea.. en la del vecino de al otro lado de la pared) y no mejora nada la calidad de la información que se transmite ni aumenta su caudal* Si es necesario aumentar el alcance de un AP o de una tarjeta wifi lo adecuado es adquirir (o hacer) una antena con más ganancia se consigue mucho más colocando una antena de más calidad que un amplificador.
Si necesitamos enlazar dos lugares un poco apartados, por ejemplo el PC de nuestro salón con el PC de un amigo que vive en el edificio del otro lado de la calle, lo mejor es que los dos situemos antenas direccionales en el exterior (por ejemplo en una ventana o terraza), correctamente enfocadas* una hacia otra. Las antenas directivas concentran la radiación de ondas en una* dirección, en una forma que recordaría a un cono cuyo vértice estaría siempre pegado* a la antena. Las que suelen incorporar los AP que "regalan" las ISP son antenas omnidirecionales (esto es, emiten la señal en todas* direcciones) por lo qué una gran parte de la señal se pierde.
Todas las antenas tienes pérdidas, sobre todo en emisión. Si no están bien calculadas
o bien ajustadas, las ondas estacionarias (R.O.E.) se quedan* alrededor de la antena son muy altas y acaban regresando* al transmisor dificultando la salida de otras ondas y haciendo sufrir o quemando directamente las etapas finales (amplificadores de salida o lineales). La longitud del
cableado que une las antenas a los transmisores si es mucha o no está correctamente calculada
también produce grandes pérdidas de potencia*.
A la hora de calcular estas distancias deberíamos de tener en cuenta que siempre* deben de ser de una medida que represente un múltiplo de la longitud de onda (en el caso de wifi un múltiplo de 12,3cm que es la longitud de onda). La longitud de onda se consigue con esta fórmula: D = C x 1000 m/s / F x 1000000000 Hz que viene a ser, la longitud (distancia) en metros* de una onda igual a la velocidad de la luz en metros* dividida por la frecuencia de emisión en hertzios*.
Como la velocidad de la luz es una constante conocida en Km/s la multiplicamos por mil para convertirla en metros. Hacemos otro tanto con la frecuencia central* 2.437 GHz (que corresponde al canal 6 de wifi), multiplicando por mil millones para convertirla en hertzios y de esta forma obtendremos la longitud de onda en metros. Como el resultado es muy pequeño, en la práctica tendremos que usar los 12.4 cm, que es la medida real nuestra onda wifi.
Así, si vamos a construir antenas usaremos siempre esta medida de referencia y tendremos en cuenta 1/2 de 12.4 cm = 6,2 cm, 1/4 de 12.4 cm = 3,1 cm, porque los dipolos, iluminadores y otros elementos radiantes deben de calcularse de acuerdo a media onda o un cuarto de onda, para conseguir la resonancia adecuada y la mayor ganancia posible. Y para calcular la longitud de los cableados lo mismo pero hacia arriba. 12.4 cm x 2 = 24,8 cm, 12.4 cm x 4 = 49,6 cm, buscando siempre que la longitud del cable que separa la antena del emisor (tarjeta wifi), coincida con un múltiplo de 12.4 cm.
PROPAGACIÓN:
Cualidad de las ondas electromagnéticas para desplazarse de un lugar a otro (a otros..). Es otro tema largo y complicado para abordarlo en unas líneas. Baste por el momento saber que una buena propagación depende de muchas variables y que las más importantes son la frecuencia en la que se emite, la calidad de las antenas y (en wifi) el horizonte visual.
La longitud de onda es inversamente proporcional a la frecuencia para 2.4 GHz la longitud de onda es de 12 cm. Generalmente, cuanto más pequeña es la onda menor es su capacidad de propagación. Al hablar de ondas de 12 cm estamos hablando de "microondas" y esto viene a significar que si la antena emisora y la receptora no se ven** (no se encuentran en el campo visual la una de la otra, tomando como referencia lo que nuestros ojos pueden ver..), es muy difícil que puedan enlazar (recibir la una la señal que emite la otra y viceversa), si hablamos de exteriores imposible*.
Por qué entonces se comunican dos tarjetas separadas por una pared ?, entre distintas habitaciones de una misma vivienda, por ejemplo. Esto ocurre porque las ondas son capaces de atravesar algunos obstáculos como por ejemplo esa pared, pero lo hacen dentro de una vivienda porque los materiales de las paredes lo permiten y porque aunque al atravesar ese obstáculo la onda se atenúe, como la potencia es sobrante y el equipo receptor está a pocos metros, la señal que queda es suficiente para enlazar. Si la pared fuese metálica ya no sería posible. Hay materiales que absorben* las ondas electromagnéticas, otros las reflejan* como un espejo, y otros las refractan.
Y al hablar de materiales* también podemos considerar como tal a un ser humano que se interpone entre el emisor y el receptor wifi. Esas mismas ondas, en las mismas frecuencias (o muy cercanas) si las hacemos rebotar a la potencia adecuada dentro de un horno microondas asan un pollo en pocos minutos.
La calidad de la propagación sobre todo en exteriores también depende mucho de algunos fenómenos naturales. La más importante es la actividad solar (las manchas solares) que van de un periodo de máxima actividad al siguiente en tramos de 9 o 11 años (el último año de máxima actividad y por tanto de mucha "demasiada" propagación fue 2002, por lo tanto ahora en 2006 estamos acercándonos a la mitad del ciclo, esto es, bajando). Cuando hay mucha propagación en algunas frecuencias se pueden alcanzar distancias poco imaginables, pero esto afecta negativamente a emisores sensibles, por ejemplo a los que usan los satélites porque hay demasiado ruido* en el espectro y la confusión no es buena.
Tampoco hay que dejar de lado la influencia de algunos fenómenos meteorológicos, como la lluvia que dificulta mucho la propagación de microondas al interponerse entre puntos de emisión y recepción. La niebla espesa o la carga estática que producen las tormentas con aparato eléctrico.
Puede que alguien se pregunte por qué se a dejado esta frecuencia para las redes inalámbricas siendo como se ve tan variable y afectada por tantos elementos*. La respuesta es sencilla, el espectro radioeléctrico esta muy ocupado, las buenas* frecuencias (aquellas en las que la propagación es mucho más constante) son adjudicadas a quienes pagan las licencias para usarlas. Así que las partes del espectro que se pueden usar sin licencia (como es el caso de 2.4 GHz)son los peores.
No me extenderé enumerando quienes tienen las licencias para emitir en que frecuencias y con que potencias, pero cualquiera puede imaginarlo y es información en general pública que cualquiera puede consultar. Y.... si, el ejército y otra gente armada están entre los privilegiados.
Desde hace años (1978) en España ya no es delito escuchar* por lo que cualquier persona que pueda adquirir un buen escaner* (receptor que cubre un amplio espectro de frecuencias y tipos de modulación), puede escuchar desde las comunicaciones de los pilotos y las torres de control, pasando por las de la policía de tráfico, hasta las radio-balizas de la armada. En general cualquier emisión que no esté encriptada*.
Sigue siendo un delito "revelar a otros lo que se escucha en frecuencias no comerciales pero con licencia" excepto las adjudicadas a los radio-aficionados.
ÓRDENES BÁSICAS PARA OPERACIÓN EN WIFI
ifconfig -a Informa sobre todos los interfaces de red disponibles
ifconfig Información de interfaces de red activas*
ifconfig ath0 Información de la interface de red ath0 que se le pasa
como argumento
ifconfig ath0 up Levanta la interface ath0
ifconfig ath0 down Baja la interface ath0
iwconfig Muestra todas las interfaces wifi* configuradas
iwconfig ath0 Muestra toda la información de este interface
iwconfig --versión informa sobre la versión de las wireless-extensions
que usamos y la recomendada
iwconfig ath0 essid xxxxx Establece el nombre de nuestra red o de otra
a la que queramos asociarnos
iwconfig ath0 mode master Pone la interface en modo AP como punto de acceso
iwconfig ath0 mode monitor Para escuchar** trafico de redes externas
iwconfig ath0 mode managed Modo infraestructura activo o pasivo para
conectar a un AP
iwconfig ath0 mode ad-hoc Modo punto a punto, se conecta entre dos
tarjetas sin necesidad de APs
wconfig ath0 channel 6 Fijamos el canal elegido para nuestra interface
iwconfig ath0 freq 2.412G Fijamos el valor de frecuencia
iwconfig ath0 rate 11M Fijamos la velocidad en las comunicaciones
para 802.11b
iwconfig ath0 rate 54M Fijamos la velocidad en las comunicaciones
para 802.11g
iwconfig ath0 rate auto Dejamos que la interface elija la velocidad
de transferencia
iwconfig ath0 essid "xxxxx" channel 7 rate auto #Varias opciones
agrupadas en una misma orden
iwlist --help Mostrará todas las opciones del comando
iwlist ath0 scan Nos mostrara información de todas las redes
inalámbricas que nuestra tarjeta detecta.
iwlist ath0 frequency Muestra la frecuencia actual
iwlist ath0 channel Muestra el canal actual*
iwlist ath0 rate Indica las velocidad que tarjeta soporta y la
velocidad actual (mediante current bit rate)
iwpriv ath0 mode 2 Cambia la tarjeta atheros* al estándar 802.11b
iwpriv ath0 mode 3 Cambia la tarjeta atheros* al estándar 802.11g
ADVERTENCIA
**** ¡¡¡¡ No vendemos tarjetas wifi, ni somos accionistas de la empresa que fabrica Atheros, ni siquiera trabajamos con el equipo que desarrolla software para el proyecto madwifi. A estas alturas del documento, puede que alguna mente retorcida pueda pensar algo por el estilo. Usamos (y aconsejamos a otros que usen) tarjetas wifi con chip Atheros por la misma razón que aconsejamos cualquier otro hardware que sea compatible con Linux. Por comodidad (no es agradable tener problemas para configurar el hardware) y para "apoyar de modo indirecto" a las empresas (como ésta) que liberan* las especificaciones técnicas que permiten que "programadores de las comunidades* de software libre/abierto" puedan escribir los drivers necesarios para que OS *BSD y *Linux puedan usar ese hardware con todas sus funcionalidades. Otros fabricante de hardware (sobre todo de tarjetas gráficas) optan últimamente por escribir drivers para OS *Linux y ofrecerlos en forma de binarios*. No estamos en contra de este método, pero preferiríamos que
facilitasen las especificaciones técnicas del hardware a programadores libres que conocen nuestros* OS, porque ellos escriben mejores drivers, los mantienen actualizados y liberan el código fuente para que otros puedan auditar, corregir, mejorar o añadir funcionalidad a esos drivers. Apoyamos a quienes nos tuvieron en cuenta como sector minoritario que somos, los usuarios de OS UNIX y tipo UNIX y a las empresas que liberan especificaciones y código ¡¡¡¡ ****
CRÉDITOS
Es obligado recordar que todo lo que figura en este documento referido las distintas técnicas expuestas se puede encontrar en otros documentos existentes en la red Internet. He recogido algunos consejos y curiosidades de otras webs, los links a todas ellas y algunos más figuran en el apartado anterior.
Leyendo detenidamente elFreeBSD Handbook
(también existe una versión en castellano, aunque no está tan completa ni tan actualizada como la original, por razones evidentes. Los "man" de ifconfig, iwconfig, netstat, sockstat, y el resto de programas que se mencionan en este documento, algunos disponibles en OS *Linux, otros en OS *BSD y otros, en todas las versiones de los dos sistemas operativos. Es posible hacer las mismas cosas y llegar a similares resultados, sin haber leído nunca este HOWTO.
Este documento ha sido creado gracias a las aportaciones de un grupo de personas, partiendo de una idea que un día discutimos algunos usuarios habituales del canal #wifi, de la red del IRC-Hispano. Un avance de esa idea se puede leer en el blog ankalima, también se puede copiar, ampliar, corregir y cambiar, siempre que se nombre a los autores y la web de origen. Algunos de ellos han colaborado activamente, aportando ideas, enlaces, textos, correcciones y ánimo. Menciono los nicks que utilizan en el IRC y todos los datos que me está permitido facilitar.
Apartado: ESTILO Gentooza (Topo)
Apartado HABILITANDO WPA + AES en Debian/Linux (Erni_)
Textos Linux: (PeriBrown, madre y eluthingol)
Textos FreeBSD: (eluthingol)
Correcciones: (Erni_, PeriBrown, NoWired y Koji) (de www.eldemonio.org, en el apartado de OS FreeBSD
Redacción y maquetaciones: (eluthingol, NoWired, Koji y madre
Aprovecho una vez más, para dar las gracias a todas las personas que emplean su tiempo y sus conocimientos en escribir, empaquetar y testear, tantos millones de líneas de código, para después "regalarlo" a la humanidad.
En especial a la gente que desarrolla y mantiene FreeBSD. A Patrick J. Volkerding y quienes le ayudan en el desarrollo de Slackware. A la gente que pica código, empaqueta, testea y mantiene Debian. También a los activos miembros de la comunidad* que mantiene Gentoo.
Sin olvidar a aquellos que mantienen sitios web y listas de correo para estos OS. A los que traducen manuales, HOWTOS, FAQs, artículos y por supuesto a quienes los escriben. Así como a todos los que usan el IRC para comunicar sus conocimientos y experiencias con estos OS.
He puesto links a todas las webs en las que he encontrado información valiosa, habrá otras en las que haya buena información sobre este tema que yo no he visto. Si alguien cree que su web o una que conoce debiera de figurar enlazada desde este howto, que me envíe el link a eluthingol y si aporta información que complementa este documento será añadido.
Salve fratris