Ankalima


Por qué vendemos tan barata nuestra libertad ?? Por qué no perseguimos nuestros sueños con más ahínco ?? Por qué no amamos más ??

viernes, enero 06, 2006

Conceptos y Comandos WIFI para FreeBSD 5.3 RELEASE y Slackware 10.1



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)