NOTA: Este tutorial debe ser usado únicamente con fines de aprendizaje y pruebas en tu propia red. El intento de acceso ilícito a redes puede ser considerado como delito penal. No nos hacemos responsables del uso que le déis 🙂
Introducción
WEP
Hasta hace algunos años, se había estado utilizando el cifrado WEP para la interconexión de dispositivos wifi a través de la frecuencia de 2.4Ghz. La rotura del protocolo allá por el, creo, 2006, permitió a hackers y, posteriormente, a todos los script kiddings conectarse a redes ajenas para su uso ilícito.
Ojo, del mismo modo que la gente se aprovechó de estas redes WEP, también aparecieron individuos maliciosos que dejaron sus redes abiertas o con cifrado inseguro con objeto de que terceros se conectaran a las mismas consiguiendo husmear el tráfico que emitían/recibían los terceros o, incluso, montar webs falsas (phising) para capturar datos personales del incauto.
La explicación de la obtención de las claves de redes WEP ya no tiene sentido ya que está muy bien explicado y tenéis scripts que lo hacen por pasos en el Wifislax (menú principal->Wifislax->Suite aircrack-ng->airoscript wifislax). Hoy día será difícil encontrar alguna red con cifrado WEP y, si la encuentras, sospecha de ella ya que puede ser una trampa.
WPA/WPA2
Se trata del Wireless Protected Access, o acceso protegido a redes wifi. La pretensión inicial de este tipo de cifrado es su uso con autenticación por terceros, es decir, añadir un servidor (RADIUS) que, una vez conectado a la red usando la clave WPA especificada, se encargue de autenticar al usuario y le dé paso a la misma. De este modo aumentaríamos la seguridad en los accesos ya que no bastaría con obtener la clave wifi, además sería necesario obtener un usuario y su clave de acceso creados en el servidor RADIUS.
Puesto que es poco probable que exista un RADIUS en una red doméstica o en pequeña empresa, podemos esperar que, una vez obtenida una clave WPA tengamos acceso a la red de destino.
A priori, una WPA es imposible de romper debido a la fortaleza de su cifrado. Según este tipo (Cristopher Smith), usando John the Ripper (al final del artículo tenéis la referencia) y un buen diccionario, podría llevar entre 1 segundo y 100.000 años, así que es virtualmente imposible conocer el tiempo.
El problema aparece cuando se requiere simplicar la instalación y uso de las redes en el entorno doméstico y las pequeñas empresas que no cuentan con un profesional informático en su plantilla: Se requiere preparar el sistema para que cualquier usuario (o Luser, como lo llama el colega Wardog) pueda conectar sus dispositivos de un modo sencillito y sin quebraderos de cabeza. Para ello, se inventaron el WPS.
WPS
Para facilitar la tarea a los usuarios, se inventaron el WPS que es, básicamente, un botoncillo que traen los routers y puntos de acceso y que permite vincular los dispositivos sin necesidad de conocer la clave. Además, permite vincular usando un número PIN de 8 cifras bastante más fácil de recordar que el “chorizo” usado para el WPA.
El problema es que facilitar las cosas implica, probablemente, fallos en la seguridad, como ha resultado ser el caso. Así tenemos que, según esta web, de los 100 millones de combinaciones posibles que nos ofrece tener un PIN de 8 dígitos usando números del 0 al 9, podemos pasar a sólo 11.000 combinaciones por un error al usar bloques de 4 dígitos (dos mitades) que se verifican por separado. La primera mitad con 10^4 combinaciones (10.000) a 1 PIN por segundo se puede escanear completa en apenas 2 horas y pico. La segunda mitad tiene sólo 10^3 (1000 combinaciones) debido a que uno de los números es el valor checksum, con lo que en sólo 16 minutos pasamos por todas las combinaciones posibles.
Vale, como humanos podemos ir probando combinaciones una a una hasta encontrar la clave correcta, pero es implicaría ir tecleando claves en la casilla en un bucle de 11.000 disparos, terminando con callos en los dedos y las uñas desgastadas, así que un tipo llamado Craig Heffner (<cheffner@tacnetsol.com>) ha creado un programa que se encarga de comprobar combinaciones hasta obtener la clave WPA de la red wifi atacada.
Tutorial paso a paso
¿Qué necesitarás?
- Un portátil o sobremesa con tarjeta WIFI
- Una distro linux cualquiera o, mejor, una Wifislax o Kali Linux (porque ya vienen con las herramientas necesarias). Para esta práctica usaremos Kali Linux. Si no sabes cómo montarlo en un pendrive para hacerlo live, te dejo aquí un minitutorial.
- Si ya tienes linux, necesitarás: airmon-ng, reaver, wifite, wash.
- Redes WPS vulnerables en la zona. Vulnerables significa que deben tener el WPS activado.
- Paciencia y tiempo. En las pelis crackean a toda velocidad y son capaces de hacer zoom infinito sobre cualquier bitmap, pero es ficción, ya sabes.
Empezamos
Una vez arrancado el escritorio del Kali, abre un par de terminales:
Abrir dos terminales nos permite trabajar en ambas al mismo tiempo por referencia.
Antes de empezar la tarea, debemos activar el modo monitor en la tarjeta de red wifi que vayamos a usar. En el portátil que estamos utilizando ahora tenemos dos, que identificaremos usando el siguiente comando:
ifconfig
que nos dará una salida similar a la siguiente:
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether 54:234:LL:JK:50:1c txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 10 bytes 578 (578.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 10 bytes 578 (578.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.16.0.101 netmask 255.255.255.0 broadcast 172.16.0.255 inet6 fe80::62d8:56QW:fe3c:b308 prefixlen 64 scopeid 0x20<link> ether 60:d8:b3:08 txqueuelen 1000 (Ethernet) RX packets 6863 bytes 6089789 (5.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 5713 bytes 2384063 (2.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wlan1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether 00:TT:TU:PL:00:17 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
En nuestro caso, activaremos la “wlan1”:
airmon-ng start wlan1
La tarjeta se “convertirá” en “wlan1mon” y podremos usarla para escanear las proximidades.
Ahora buscamos las redes susceptibles de recibir nuestros piropos:
wash -i wlan1mon
Por motivos obvios, he tapado las BSSID y las MACs de las redes localizadas. Ahora es momento de preparar el comando que nos permitirá obtener la clave WPA de las redes. Elige el objetivo que más te guste y dispara con el siguiente comando:
time reaver -i wlan1mon -b F8:100:LL:31:93:E0 -c 3 -v
Donde el “chorizo” numérico es la BSSID de la red que obtuvimos en el listado del comando “wash”; la opción “-c 3” indica el canal 3 y el parámetro “-v” te muestra lo que va haciendo el programa.
Usar el comando “time” antes de “reaver” hace que el sistema controle el tiempo que tarda hasta terminar la ejecución, permitiéndote saber cuánto ha tardado en realizarse la operación.
El resultado en caso de éxito debe ser parecido a este:
AP SSID: es el nombre de la red que has comprobado
WPA PSK: te devuelve el código WPA para conectarte a esa red.
Si tienes suerte, será rápido pero es cierto que hay 11.000 opciones, con lo que el tiempo puede llegar a ser de 10h.
Obtener claves usando WIFITE
Wifite es un programa para linux que optimiza, automatiza y facilita la anterior gestión:
Da una pasada por todos los canales buscando y marcando las redes por proximidad o potencia de emisión, dejando las más potentes las primeras de la lista:
Una vez obtenidas todas las redes de la zona, paras el escaneo pulsando CTRL+C, quedando el programa a la espera de la selección de redes que quieres preparar.
Si eliges “all”, el sistema entra en modo automático pasando todas las combinaciones a cada una de las redes. Es ideal para dejar el equipo trabajando mientras te dedicas a otros menesteres más productivos como leer, trabajar o buscar pokémons.
También puedes indicar redes individuales o una selección de ellas separando por comas los números de orden: “1,2,3,15,30”.
El proceso puede ser lento o rápido dependiendo de las vulnerabilidades de cada red.
FIN
Como decía al principio del artículo, ten en cuenta que es ilegal romper claves de redes ajenas. También lo es conectarse a las mismas y obtener datos o información husmeando. Usa este tutorial para escanear y asegurar tu red o para practicar temas de seguridad. No nos hacemos responsables del uso que realices de estos programas.
Te recomiendo que eches un vistazo a las referencias y definiciones a continuación. Siempre es bueno aprender 😉
Referencias y definiciones:
http://www.isaac.cs.berkeley.edu/isaac/wep-faq.html (In)Seguridad de WEP
Pixie Dust explicado en español
Pixie Dust en inglés
Pixie Attack en el foro de Kali. Muy muy interesante.
La inseguridad del WPS. Explicación completa.
Script Kidding: Persona que presume de tener conocimientos que no posee y que no tiene intención de aprender.
Distribución Wifislax para hackeo de redes
Servidor RADIUS en wikipedia
¿Cuánto tiempo se necesita para romper una WPA por fuerza bruta?
John the Ripper crackeador de claves por fuerza bruta
Un informático en el lado del mal. Algunos tutoriales para la obtención de claves usando la fuerza bruta y diccionarios.
Premio para el que observe algo raro en el tutorial 😀