Que es wifi ?
*Un conjunto de standars que regulan la conexión entre tarjetas (hardware) o interfaces (software) que transmiten tramas tcp/ip sin cables, es decir haciendo uso de determinadas frecuencias de radio reservadas en el espectro radioeléctrico para este fin. Las frecuencias reservadas varían según los estandars o los países.
Para qué se usa ?
*802.11 (WiFi) es un conjunto de standars para redes wireless (del que hablaremos en este documento)
*Tres estándar 802.11 se usan comúnmente:
-802.11b a 2.4GHz, 11Mbit de velocidad máxima. (el más común)
-802.11g a 2.4GHz, 54Mbit de velocidad máxima. (relativamente nuevo, compatible con su antecesor 802.11b)
-802.11a a 5.8GHz, 54MBit de velocidad máxima. (Menos popular y de menor alcance.)
IEEE 802.11
-802.11a (5 Ghz)
-802.11b (2.4 Ghz) 11 Mbps
-802.11c Define características de AP como bridges.
-802.11d Permite el uso de 802.11 en países restringidos por el uso de las frecuencias.
-802.11e Define el uso de Os.
-802.11f Define el enlace entre SETA y AP. Roaming
-802.11g (2.4 Ghz a más velocidad que 802.11b , 54 Mbps ) Compatible con 802.11b
-802.11h Superior al 802.11a permite asignación dinámica de canales (coexistencia con el HyperLAN). Regula la potencia en función de la distancia.
-802.11i Estándar que define la encriptación y la autentificación segura , es el estándar que implementara una forma segura de trabajar
-802.11j Estándar que permitirá la armonización entre el IEEE, el ETSI HyperLAN2, ARIB e HISWANa.(Japón)
-802.11m Propuesto para mantenimiento de redes inalámbricas.
Hardware 802.11
Access Point (PA o Punto de Acceso):
*Es el centro de la red wireless. Los access points pueden funcionar como simples Bridges,
o pueden contener ruteo, NAT, u otras funcionalidades.
Wireless NIC (Tarjetas wifi):
*La tarjeta wireless cliente es la que permite a tu computadora conectarse a una red wireless.
Tanto *Linux como *BSD la tratan como un dispositivo estándar de red, del tipo: ath0, dl0, wlan0. Algunas tarjetas puedes operar como PA.
*Las tarjetas wifi pueden conectarse a buses tipo PCI, ISA, compactflash, PCMCIA, CardBus, USB.
Antenas:
*Las antenas son el elemento radiante que en cierta forma, modelan la forma con que la sale potencia de el equipo RF,
no agregan poder de transmisión, pero de su calidad, posición y orientación, depende mucho la calidad y
estabilidad de la señal de RF y por lo tanto la estabilidad y calidad de la red.
*Algunas antenas externas mejoran mucho el alcance, la calidad y la estabilidad de una red wifi
*Existen en el mercado antenas omnidirecionales y direccionales, de polarización vertical y parabólicas.
Vista rápida de 802.11
*Cada red 802.11 se define por su SSID, o Service Set Identifier. Esto define básicamente el nombre de la red.
*Pueden coexistir distintas redes wireless en el mismo canal, pero el ancho de banda se reducirá significativamente.
*Las redes 802.11b/g tienen que estar por lo menos a 3 canales de distancia entre sí.
Como funcionan las redes wifi
*Cuando un cliente quiere unirse a una red, escucha a través de los canales buscando la señal más fuerte y el ssid deseado.
*Las redes operan en modo infraestructura (BSS) y son coordinadas por un AP, o en modo Ad-hoc (IBSS), lo cual no requiere un AP.
Modo Infraestructura (BSS)
*El modo infraestructura (requiere un AP): Generalmente hay menos problemas que con Ad-hoc
(no todos los fabricantes implementan Ad-hoc de la misma forma).
*En infraestructura los interfaces wifi pueden configurarse de distintos modos
**Modo Managed
Los clientes se asocian/autentifican contra
un access point (AP) o tarjeta en modo Master.
Es necesario conocer el ESSID de la red. Si no
se conoce se puede detectar entrando en modo
Monitor
**Modo Monitor
La tarjeta escucha en un canal específico
sin enviar ningún paquete.
No le importan los CRC's de los paquetes.
¡No es lo mismo que el modo promiscuo!
**Modo Master
La tarjeta se pone en modo AP y acepta
conexiones de otras tarjetas que estén
funcionando en modo Managed. Es necesario
establecer el ESSID, la IP y en su caso
la clave WEP
Modo Ad-hoc (IBSS)
*Puede resultar más barato si solo se conectan 2 o 3 computadoras.
Todas las computadores deben verse entre sí y no hay un punto coordinador.
*Todas las máquinas deben de tener sus interfaces wifi en modo ad-hoc
**Modo Ad-hoc ( Punto a Punto )
En este modo los equipos se conectan entre
sí. Similar al crossover en redes
cableadas pero permite conectar mas de 2 equipos.
No existe un AP que gestione todo el
tráfico de la red. La cobertura de la
red depende del alcance de los equipos.
Hardware wifi soportado en *BSD y *Linux
*El soporte wireless en Linux es relativamente nuevo y no siempre es un trámite fácil.
Como configurar una tarjeta wifi:
-1. Identificar el chipset de la tarjeta
-2. Bajar (conseguir) e instalar el driver.
-3. Configurar Pcmcia-cs si es necesario.
-4. Configurar los parámetros de la interfaz para hacer funcionar la red wireless.
*Lo más importante del tipo de tarjeta es el chipset que contiene. La mayoría de las companías como Linksys,
Dlink, Netgear, no fabrican sus propias tarjetas, sino que compran el chipset a otra compañía y le colocan la etiqueta,
lo cual es bueno porque cientos de modelos y marcas pueden juntarse en alrededor de 8 o 10 clases de chip.
Lo malo de eso es que cuando se compra una tarjeta casi nunca indica en la caja que chipset contiene, y es difícil saber que es lo que tiene dentro.
Tarjetas que se pueden configurar bien en *BSD y *Linux:
*Algunos de estos chips tienen soporte en el kernel tanto en los Linux como en los *BSD,
para el resto es necesario compilar los módulos de forma externa y enlazarlos con el kernel.
Otros chips no tienen soporte en Linux y *BSD y no hablaremos de ellos en este documento.
-Intersil Prism2: Linksys, Netgear, Dlink, Senao, teletronics usan el chip Prism2, es uno de los más comunes.
-Orinoco.
-PrismGT Intersil 802.11 a/b/g chipset.
-SMC 802.11B/G cards, and others.
-Atheros 802.11A/B/G.
-Realtek 8180.
Como identificar una tarjeta wifi
-Como primer paso, se puede identificar el chip de la tarjeta mirando si la marca/modelo aparece en la lista que mantiene LinuxWlan (AbsolutValue Systems) en esta web:
http://www.linux-wlan.org/docs/wlan_adapters.html.gz
-Si no hay suerte, se intenta de otra forma:
*Para tarjetas PCI o mini-PCI:
-Ejecutar lspci
*Para tarjetas pcmcia:
-Insertar la tarjeta, y ejecutar cardctl ident, para obtener la información.
*Para tarjetas USB:
-Ejecutar dmesg y buscar el ID del fabricante.
*Otra buena idea es buscar en www.google.com y bajar e instalar el driver (controlador, módulo o módulos)
*Como ya se dijo anteriormente, muy pocos chips están soportados directamente en el kernel de *Linux o *BSD.
Si se necesitan drivers que no están en el kernel, generalmente se presentan de esta forma:
-1. Drivers independientes que se compilan en su propio directorio con un script estándar de configuración
y makefile (./configure y make). Generalmente es necesario tener el código fuente del kernel, que esté instalado
y los links que apuntan al directorio de las fuentes.
-2. Drivers que patchean o se instalan sobre el paquete pcmcia-cs. Estos drivers requieren tener el código fuente de pcmcia-cs, el cual hay que bajarlo directamente u obtener el paquete source de la distribución que se está usando.
-3. Drivers binarios incluídos en la distribución.
Cosas de Debian
En Debian Linux : también puede hacerse bajando los kernel-headers del kernel correspondiente,
"apt-get install kernel-headers-2.6.x"
Algunas bibliotecas para compilar adecuadamente (make menuconfig)
"apt-get install libncurses5-dev"
Compilador de c en Linux
"apt-get install gcc"
también hará falta make
"apt-get install make"
con esto debertía ser suficiente para, por lo menos, compilarlos.
Una vez hecho esto, ejecutar "dmesg" y ver el módulo o módulos creados,
cargarlo con "modprobe <nombre_modulo>" o "insmod <nombre_modulo>" y en su caso insertarlo
en el fichero /etc/modules para que se carguen automáticamente al arranque del sistema.
Configuración
*En primer lugar se puede usar "ifconfig" para ver los interfaces de que disponibles
después es posible usar "iwconfig" para configurar los interfaces wifi. En *BSD se debe de hacer la configuración, también con "ifconfig"
Usando iwconfig
*Algunos comandos básicos:
(en el resto del documento se usa un interfaz llamado wlan0, pero puede ser ath0, rl0, eth1 o cualquier otro)
*Establecer el SSID:
"iwconfig wlan0 essid ElNombreQueSeQuiera"
(o el nombre del ESSID de la red a la que se quiere asociar (conectar) el interfaz wlan0.
*Si se setea el essid como "" se le está diciendo a la la tarjeta que se asocie a cualquier red disponible.También se puede, simplemente no usar la opción essid.
*Establecer el cifrado:
"iwconfig wlan0 key cafedad123" (la clave debe escribirse en hexadecimal, como e sta de 64 bits 0009090909).
*Quitar el cifrado
"iwconfig wlan0 key off"
*Cambiando de modos
*Modos posibles en infraestructura (BSS)
-Modo managed, el más común, pone la tarjeta en modo cliente de un AP.
"iwconfig wlan0 mode managed"
-Modo AP. No todos los drivers soportan este modo.
"iwconfig wlan0 mode master"
-Modo monitor (sniffers como kismet utilizan este modo para capturar las tramas 802.11)
"iwconfig wlan0 mode monitor"
*Modo ad-hoc (IBSS)
-Modo ad-hoc (todas las interfaces en la red ad-hoc tienen que estar en este modo o no funcionarán).
"iwconfig wlan0 mode ad-hoc"
*Otros comandos útiles
"iwconfig wlan0 channel 11"
-Cambia el canal de TX-RX, este comando es útil en modo AP, cuando se esta en modo managed o cliente, la tarjeta escanea todos los canales automáticamente buscando el SSID deseado.
Cosas de Debian
**Un ejemplo de configuración para el /etc/network/interfaces de las Debian Linux sería
iface wlan0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
wireless_essid nombre_de_ssid
wireless_key la_clave_para_acceder
Esto producirá las siguientes llamadas al levantar wlan0:
iwconfig wlan0 essid nombre_de_ssid
iwconfig wlan0 key la_clave_para_acceder
Tarjetas multimodo 802.11 a/b/g
"iwpriv wlan0 mode 1" - solo 802.11a.
"iwpriv wlan0 mode 2" - solo 802.11b.
"iwpriv wlan0 mode 3" - solo 802.11g.
"iwpriv wlan0 mode 0" - (default) automático
Como hacer un AP-bridge rápido
"ifconfig wlan0 0.0.0.0"
"ifconfig eth0 0.0.0.0"
"iwconfig wlan0 mode master"
"iwconfig wlan0 essid holamundo channell 11"
Como habilitar el modo bridge (es necesario bridge-utils y tener habilitado en el kernel 802.1d Ethernet Bridging)
"brctl addbr br0"
"brctl addif br0 eth0"
"brctl addif br0 wlan0"
"ifconfig br0 192.168.1.1 up"
Herramientas y Comandos
*Tanto *BSD como *Linux disponen de más comandos. Estos son algunos de los más usados para la configuración de las tarjetas wireless, así como para conocer el estado de los interfaces y en su caso scanear redes wireless. Estos comandos están disponibles en los paquetes, "wireless-tools" y "BSD-airtools"
**iwconfig <interfaz> <opciones>
Modo: <mode {Master,managed,monitor..}>
Frecuencia: <freq {frecuencia}>
Canal: <channel {canal}>
Velocidad: <rate>
Clave: <key {s:ascii | hex }>
**iwpriv <interfaz> <comando>
iwpriv ath0
ath0 Available private ioctls :
wpa (000A) : set 1 int & get 0
get_wpa (000A) : set 0 & get 1 int
driver_caps (0010) : set 1 int & get 0
get_driver_caps (0010) : set 0 & get 1 int
maccmd (0011) : set 1 int & get 0
hide_ssid (0013) : set 1 int & get 0
get_hide_ssid (0013) : set 0 & get 1 int
**iwlist <interfaz> <comando>
iwlist ath0 scanning
ath0 Scan completed :
Cell 01 - Address: 00:12:D9:B3:7C:50
ESSID:"alumnos"
Mode:Master
Frequency:2.437 GHz (Channel 6)
Quality=31/94 Signal level=-64 dBm Noise level=-95
dBm
Encryption key:off
**Iwevent
Recolecta los eventos que ocurren en la
interfaz wifi.
Cambios de SSID
Frecuencia
Canal
**Iwspy
Similar a /proc/net/wireless
Recolecta estadísticas de uno o varios AP o
de varias interfaces de red
cat /proc/net/wireless
Inter-| sta-| Quality | Discarded packets | Missed | WE
face | tus | link level noise | nwid crypt frag retry misc | beacon | 17
ath0: 0004 30. 191. 161. 0 0 0 1 1 0
Introducción a la detección de redes
-Poner la tarjeta en modo monitor :
"iwconfig wlan0 mode monitor"
-Quizás esto no funcione, entonces:
"iwpriv wlan0 monitor 1 1"
-Lanzar un sniffer (husmeador), de los siguientes:
Sniffers de redes inalámbricas :
GNU/LINUX : Airtraf, AirSnort, Kismet, Airodump, Wellenreiter, etc ..
BSD : WiStumble, dstumbler, etc ..
*Los mas usados de estos son el Kismet, Airodump y dstumbler.
Para configurar el kismet :
*No funciona por defecto así que deberemos editar el /etc/kismet/kismet.conf
suiduser=username
source=cardtype,iface,name
Cardtype {madwifi_b | prism2
Orinoco }
channelhop=true
Kismet
H menú de ayuda
I Info detallada de la red
S Diferentes maneras de ordenar las redes
D Muestra las cadenas de datos
P Muestra los tipos de paquetes
**Conceptos básicos.
ESSID
Extended Service Set IDentifier : Nombre identificativo de la red
Es necesario conocerlo para pasar a ser un usuario legítimo (asociación) de la red.
Beacon Frames
Tramas que anuncian la red. Portan el ESSID y son enviadas cada
100 milisegundos.
Management Frames
Tramas usadas en el proceso de autentificación.El cliente y el AP intercambian varios management frames en dicho proceso.
Proceso de Autentificación/Asociación:
Cliente Access Point
Beacon Frame
Authentication Request
Authentication Challenge
Authentication Response
Authentication Result
Authentication Challenge
Authentication Response
Authentication Result
wep
Wired Equivalent Privacy
Wep: Conceptos Básicos
Nace con el objetivo de proporcionar seguridad equivalente a la de las redes cableadas
Basado en el algoritmo RC4
Usa claves de 64,128 y 256 bits
En realidad son 40,104 y 232 bits
24 bits -> IV (Vector de inicialización)
Uso de checksums (CRCs).
Esta llave se genera a partir de una passphrase automáticamente.
Existe software que permite introducir la llave manualmente.
La llave o passphrase deben conocerla todos los clientes
Vulnerabilidades en WEP
-Deficiencias en la encriptación
Características lineales del CRC
Descubierto en la Univ. de California en Berkeley
Se calcula el CRC del payload
-Dos graves problemas:
- El ICV no es independiente de la clave y del IV
- El CRC es lineal:
- CRC(m xor k) = CRC(m) xor CRC(k)
- Uso de "bit flipping"
- MIC independiente de la llave:
- No existe un mecanismo de chequeo dependiente de la llave (MIC)
- Conocido el plaintext de una trama es posible inyectar en la red.
- Tamaño del IV demasiado corto
- El tamaño del IV son 24 bits, luego 2^24 = 16.777.216 posibles IV's 16.777.216 tramas se generan en pocas horas con tráfico intenso.
- Si un AP envia paquetes de 1500 bytes completaría todo el espacio de 16M
posibilidades en 1500*8/(11*10^6)2^24 =~ 1800 segundos (5 horas)
- Reutilización del IV
- WEP no utiliza el algoritmo RC4 con cuidado
- Distintos ciphertexts pueden tener el mismo IV -> ataques estadísticos
- Esto deriva en análisis estadísticos que permiten obtener la clave
- Reutilización del IV
- Debido al corto espacio de los IV's (16M) es probable que se intercepten dos tramas con el mismo IV
- El estándar define que cambiar el IV es opcional
- El IV es normalmente un contador que comienza desde cero y aumenta de uno en uno.
Conclusion:
Un atacante con suficientes paquetes puede descifrar ciphertext incluso sin conocer la llave.
- Supongamos Z = RC4(key,IV)
- Los ciphertext son:
- C=P xor Z ; C'=P' xor Z
- C xor C' =(P xor Z)xor(P' xor Z) =>
(P xor P') xor (Z xor Z) = (P xor P')
Si conocemos uno de los plaintexts es fácil conocer el otro estadísticamente.
Ataque por fuerza bruta:
- La passphrase suelen ser caracteres ASCII escribibles por lo que el bit de más peso es siempre '0'
- Solo tendremos que buscar desde 00:00:00:00 a 7F:7F:7F:7F
- El PRNG es un generador lineal congruente por lo que sólo las semillas de 00:00:00:00 a 00:FF:FF:FF
son únicas!!
Ataque inductivo de Arbaugh
- Se basa en características lineales del CRC
- MIC independiente de la llave
- Necesitamos conocer parte del texto cifrado -> es fácil reconocer por ejemplo un DHCPDISCOVER (en los headers) origen 0.0.0.0 destino 255.255.255.255
- Creamos un ICMP con el tamaño del texto capturado mas un byte
- Si obtenemos respuesta conocemos un parte más del keystream, si no probamos con otro (solo hay 255 posibilidades)
- Debilidades del algoritmo de Key Scheduling de RC4 (FMS)
- IV vulnerable:
- El desarrollo de RC4 sólo afecta a bytes ya conocidos
- Resolved condition: (A,B+3,X) no es necesario desarrollar RC4 (9000 de los 16.777.216 posibles)
Necesitamos capturar
1500 a 400 IV's debiles
5 a 10 millones de paquetes cifrados
5 a 6 horas a varios días
Más vulnerabilidades en WEP
- Debilidades del algoritmo de Key Scheduling de RC4 (FMS)
- Esta vulnerabilidad fue publicada en 2001
- Desde entonces los fabricantes han ido modificando el firmware hasta hacerlo invulnerable
- Últimamente el FMS "Strikes back" ya que los fabricantes parecen haberse olvidado de él.
- Vulnerabilidades nuevas Korek Attacks ( Korek es el hacker de Aircrack )
- Estadísticos
- Requieren de 300.000 a 500.000 paquetes (Muchísimos menos que los demás ataques!!)
- Se requieren muchos IV's diferentes, el resto del ataque se hace estadísticamente sobre las tramas capturadas
- Si se intenta con pocos IV's diferentes es como la fuerza bruta.
CRÉDITOS
-Para la elaboración de este documento se ha recopilado información de los "man"
de los programas que figuran en los ejemplos de órdenes.
-Se ha hecho uso de información contenida en otros ducumentos que ya están en la red Internet, como el escrito por Antonio Storni, llamado:
Wireless con software libre
que puede encontrarse en: http://www.cafeconf.org/modules/mydownloads/
junto a otros ducumentos muy interesantes sobre software libre.
*Me pareció buena idea reunir algunas de mis experiencias con wifi en un pequeño HOWTO, se lo dije a mi tocayo y paisano y de momento hemos hecho este documento. Seguiremos ampliándolo y corrigiéndolo porque wifi es todavía joven y sigue evolucionando.
*Añadiremos algunos conceptos sobre antenas y radiación electromagnética. Probablemente algo de bricolaje útil para construir o mejorar elementos radiantes, tan importantes en cualquiera de las tecnologías que usen el espectro radioeléctrico en lugar de cables para unir host y redes.
*El presente documento es obra de los abajo firmantes y, aunque no está todo lo completo q ue deseamos, nos parece que ya puede ser de utilidad y por eso lo cuelgo aquí junto a otros, con el mismo propósito.
*Si encontráis que algo es erróneo o pudiera estar más claro, no dudéis en hacernos llegar un correo electrónico y las correcciones o ampliaciones serán incluídas, de inmediato.
Salute fratres
Colaboradores:
Jorge R. (PeriBrown en #wifi y #linux_novatos)
Jorge G. (madre en #wifi y #linux_novatos)
No hay comentarios:
Publicar un comentario