5 de Julio, 2006

Probando Kismet y Aircrack

La verdad es que nunca me había puesto con este tema. Si alguna vez he usado la red inalámbrica del alguien ha sido de la forma más inocente: echo un vistazo a las redes disponibles, me asocio a una abierta (sin cifrado), y ya no hay mucho más que hacer porque el cliente DHCP se encarga de todo.

Además el uso ha sido muy puntual, ojear el correo o alguna web, y siempre realizando un túnel cifrado a casa para emplear efectivamente mi propia conexión, para respetar la privacidad (la mía y la del buen ciudadano que comparte su conexión a Internet, por supuesto).

Pero vamos, que el cifrado WEP no es seguro ya lo hemos repetido muchas veces por aquí. Aún así voy a hacer un pequeño repaso práctico, y me pongo al día con Kismet, que reconozco que soy novato porque siempre he tenido OpenBSD y dstumbler en el portátil (hasta hace poco).

En primer lugar vamos a hacer funcionar a Kismet en condiciones, aunque en Ubuntu (y derivados) el paquete está bastante bien preparado y no hay que hacer gran cosa.

Editando /etc/kismet/kismet.conf hay que atender a dos lineas, o una solo si no queremos más que buscar redes inalámbricas:

# fuentes para kismet
# forma: tipo,interfaz,nombre_servidor
source=orinoco,eth0,Kismet

# si queremos analizar tramas, debe estar 'dump' en la lista
logtypes=dump,network,csv,xml,weak,cisco,gps

Yo solo tuve que configurar la linea de source, el resto estaba perfecto. La información capturada va a parar a /var/log/kismet/, y hay que andar con ojo porque con el tiempo se nos puede llenar el disco.

Los tipos de fuente soportados están en la documentación. Yo uso una tarjeta PCMCIA con chip PRISM2, y Xubuntu usa por defecto el driver orinoco_cs, cosa que no se suele recomendar.

Confieso que probé el driver hostap_cs, pero la integración con las herramientas de configuración de esta distribución no es tan buena, y como el uso que le doy yo a la tarjeta no es muy extremo (y además la firmware que lleva es vieja y tampoco muy recomendable), pues he vuelto al driver orinoco_cs y he adoptado el algoritmo del avestruz ;).

Existen básicamente dos formas de atacar al cifrado WEP: ataques pasivos y ataques activos inyectando tráfico. El driver orinoco_cs no permite inyectar tráfico, así que me veo obligado a probar con el ataque pasivo... que consiste en escuchar y analizar lo escuchado (con la potencia de mi portátil, ¡que tiemble la humanidad!).

Una vez configurado, ya es cuestión de arrancar con comodidad el programa, yo tengo un botón con algo como:

xterm -e "sudo kismet"
Kismet
Kismet en acción, solo he dejado legible mi red

Aunque esto se puede mejorar, como por ejemplo usando un usuario sin privilegios, pero tampoco hay que pasar de novato a mastah muy rápido, no nos hagamos daño :P.

Una vez tenemos funcionando Kismet, es bastante sencillo de manejar. En verde podemos ver la redes con cifrado, y en amarillo las que están abiertas. Salimos del modo de ordenación automático y pasamos, por ejemplo, a que ordene usando el WEP como criterio pulsando s seguido de w. Entonces nos ponemos con el cursor sobre la red que queramos inspeccionar, y pulsamos enter.

En esta vista, que abandonaremos pulsando q, podemos ver información interesante.

Kismet, detalle
El detalle de mi red inalámbrica, destacando lo importante

Destacar el tipo de red (modo infraestructura en este caso), el BSSID (vamos, la MAC del punto de acceso), el canal, si tiene WEP o no, los paquetes que se han capturado, resaltando las tramas IV.

Bueno, ¿por qué son las tramas IV tan importantes? Pues porque independientemente de que usemos claves de 64 o 128 bits, siempre se usa un vector de inicialización de 24 bits, que va en esas tramas IV.

Las tramas de inicialización contienen una sub-clave variable que se concatena a la clave real, para evitar que se repitan secuencias (el cifrado que se usa es simétrico, así que si el mismo mensaje cifrado con la misma clave da lugar siempre al mismo texto cifrado, lo que facilita mucho el análisis). Lamentablemente, en puntos de acceso con un nivel de tráfico razonable, es posible que se den vectores de inicialización repetidos, con lo que realmente se repiten secuencias y nos permite obtener la clave con más facilidad.

Mientras escribía esto he tenido a Kismet capturando tramas en mi red inalámbrica, así que es momento de que entre aircrack en acción.

El funcionamiento es sencillo: indicamos el BSSID de la red que queremos analizar (en este caso mi red inalámbrica privada), y dónde está la información capturada por Kismet:

$ aircrack -m 00:80:5A:32:ff:ff /var/log/kismet/*.dump

En mi prueba se habían capturado solo 277 tramas IV, según aircrack, que son insuficientes para realizar un ataque en condiciones, pero como solo estamos probando y de todas formas el procesador de mi portátil no está para romper claves... pues no pasa nada. Que no se haya dado con la clave también es un resultado, ¿verdad?

Después de 30 minutos se habían probado unas 300 mil claves (a ojo, lo he parado sin apuntar cifras), y sin éxito. Lo he parado para que no se hiciera daño con tanto pensar para nada :P.

¿Cuánto tráfico hay que capturar para asegurarnos dar con la clave? Bueno, he leído que desde 0.5 GB ya se puede hablar de posibilidades de éxito, aunque todo dependerá de la cantidad de tramas IV capturadas más que del tráfico en general (aunque no deja de haber una relación).

Hay mucha literatura en la red sobre estos temas, y si tengo que recomendar un documento, sería este texto de Michael Ossmann para Security Focus: WEP, Dead Again, Part 1. Pero cuidado: no es lo mismo hacer un uso incocente de la red inalámbrica del vecino que estar jugando contra las debilidades del cifrado WEP ;).

Acutalización: Hablábamos de kismet y aircrack, pero como bien apunta Felipe en los comentarios, puede ser más últil emplear airodump. Recomendable leer los comentarios de esta anotación :).

Anotación por Juan J. Martínez, clasificada en: wireless, security.

Hay 9 comentarios

Gravatar

1) En el fichero de configuración de kismet verás algo así:

# Users outside the US might want to use this list:
# defaultchannels=IEEE80211b:1,7,13,2,8,3,14,9,4,10,5,11,6,12
defaultchannels=IEEE80211b:1,6,11,2,7,3,8,4,9,5,10

Debes descomentar la primera linea defaultchannels y comentar la segunda. Lo mismo te digo si tu tarjeta soporta 802.11a (unas lineas más abajo).

2) Kismet no es el mejor capturador de paquetes, mas que nada porque también captura basura innecesaria para lo que nos concierne. Hay muuuchos otros (en el propio artículo mencionas uno).

3) Es la cantidad de IV lo que condiciona que se pueda abrir una clave WEP. Dicen ;-) que con 500.000 es suficiente, aunque con una captura pasiva te puedes aburrir para conseguir esa cantidad de vectores de inicialización.

por Felipe, en 2006-07-05 16:34:30

Gravatar

En efecto, airodump viene con aircrack y es más eficiente que kismet. Pero kismet es más bonito y fácil de usar, y tampoco estamos en modo mastah :P

Buena la puntualización de la configuración de kismet. La regulación de los canales no es igual en USA que en España. Gracias :)

por Juanjo, en 2006-07-05 16:36:58

Gravatar

Estabamos hablando de tu portatil. El espacio en disco es algo a tener en cuenta.
En un entorno con varias redes, la captura con kismet puede llegar a llenarte el HD. Con airdump, filtras tipo de paquete (IV) y BSSID, lo que lo hace ideal.

De todas formas, nadie te impide capturar con airdump mientras trasteas con kismet ;-)

por Felipe, en 2006-07-05 16:41:32

Gravatar

Es fácil (parece).

Podemos quitar los logs de kismet y dejar, por ejemplo network y csv para tener registro de qué redes hemos encontrado, y luego usar airodump fácilmente:

$ sudo airodump eth0 dump 8 1

Así, por ejemplo, usamos el interfaz eth0, guardando a ficheros con nombre dump, lo que se capture en el canal 8 y solo atendiendo a las tramas IV interesantes (el último 1).

Lo malo es que usar las dos herramientas a la vez parece problemático. kismet ha interferido, al menos un rato, porque luego ha petado :D

por Juanjo, en 2006-07-05 16:57:05

Gravatar

Interesante entrada, pensaba que WEP solo se podía afrontar desde un ataque inyectando (estoy en tu misma situación, sin soporte), no sabía que de forma pasiva se pudiera conseguir algo. Probaré a cambiar contraseñas y ver tiempos de 'respuesta'.

No estaría mal abordar el inyectado ya que en horas intempestivas es demasiada aburrida la espera. Felipe, muy buenos apuntes :).

por r0sk, en 2006-07-06 11:37:26

Gravatar

Hablando de petar WEP con aircrack, en mi experiencia con esto (que es mucha menos de la que quisiera ;) lo que no petes en 2 o 3 minutos +- no lo petas. Me refiero una vez tengo mis logs con las capturas, y ejecuto aircrack. Y hablando de máquinas x86 de unos 800Mhz hacia arriba.

¿Alguno habeís visto al aircrack funcionar a los 15, 20 o más minutos?

¿O realmente si no cruje rápido no cruje?

Saludos y ya era hora de que saborearas Kismet xD :P Por cierto, probarlo con festival, flite o cualquier otra opción para speech ;)

por nrktk, en 2006-07-07 15:53:26

Gravatar

Hace algo más de un año puse el kismet con festival y un gps.

Mi hijo decía que la voz que salía de aquella cosa con teclas era Juanjo XDD

por Felipe, en 2006-07-07 18:07:42

Gravatar

xDDDD

por nrktk, en 2006-07-08 14:02:28

Gravatar

traten de leer un poco de inyeccion de tramas y veran lo bonito del asunto....


pd. si es solo ver y no tocar no da nota... honker for freedom..

por un visitante, en 2006-07-19 05:05:41

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: