Crackeando una wep con Intel/Pro 3945 ...
Actualizado por última vez el 27/09/2008:
Por fin, algo de material interesante para el blog...
Primero, pongámonos en situación, y ya de paso, un poquito de teoría...
Hasta ahora, había intentado desde Windows hacer todo lo que voy a explicar, pero los resultados fueron bastante penosos... Con mi vieja tarjeta wifi, chip atheros incluído en el paquete, supuestamente no debería haber problemas. Existen drivers para colocarla en modo monitor e inyectar paquetes en la red tanto desde windows como desde linux, pero aún así nunca me puse a fondo a mirar como hacerlo.
Sumando un poco de tiempo libre y aburrimiento, me puse a buscar alguna solución para hacerlo con la tarjeta del portátil que tengo ahora, tarjeta que se está implantando bastante... Una Intel/Pro Wireless 3945abg... Que yo sepa, por ahora en windows solo soporta el modo monitor, pero no permite inyectar paquetes en la red, cosa bastante importante para personas impacientes como yo...
Para seguir leyendo, haz clic aquí
Por tanto, habrá que tirar un poquillo de linux. Instalé Ubuntu 7.10 (aka Gutsy Gibbon), y me puse a trastear un poquillo. Los drivers que carga por defecto esta distribución son los ipw3945, drivers no abiertos, y que permiten colocar la tarjeta en modo monitor (capturar tráfico) pero no permiten inyectar paquetes (generar tráfico falso) Ya veremos porqué es importante el hecho de inyectar paquetes, sin hacer esto, podrían pasar semanas hasta conseguir capturar suficientes datos como para desencriptar una clave wep.
Lo primero, es instalar los drivers ipwraw. Estos, nos permitirán hacer todo lo necesario, incluyen extensiones wireless, y en resumen, están muy currados. Antes de instalar los drivers, necesitamos un par de paquetes:
sudo apt-get install build-essential
sudo apt-get install libssl-dev
Descargamos los drivers de Aquí
Los descomprimimos en una carpeta, abrimos un terminal, y vamos a donde los tengamos descomprimidos.
cd ipwraw-ng (carpeta donde estén, vamos...)
make
sudo make install
sudo make install_ucode
sudo echo "blacklist ipwraw" | sudo tee /etc/modprobe.d/ipwraw
sudo depmod -ae
Con las dos últimas lineas, hacemos que no se cargue automáticamente este módulo cada vez que se inicia el equipo. Para poder iniciar el módulo, tenemos que parar antes el ipw3945. Con los drivers ipwraw no podremos conectarnos a internet, ya que están diseñados para el escaneo de redes. Por tanto, primero acabamos de instalar todo lo necesario.
sudo apt-get install aircrack-ng
Además, aunque supongo que estaréis haciendo las pruebas con vuestro propio ap, y no hay problema, descargamos macchanger, que nos sirve para cambiar la mac de nuestra tarjeta a nuestro antojo (virtualmente, por supuesto)
sudo apt-get install macchanger
Al final del tutorial añado los pasos necesarios por si necesitamos cambiar de mac, pero por ahora continuamos con lo que estabamos.
Para descargar ipw3945 y cargar ipwraw:
sudo modprobe -r ipw3945
sudo modprobe ipwraw
Comprobamos:
iwconfig
Y sale algo tal que así:
tragy@Tragy:~$ iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
eth1 unassociated ESSID:off/any
Mode:Monitor Channel=1 Bit Rate=54 Mb/s
rtap0 no wireless extensions.
Configuramos un poquito la interfaz eth1:
sudo iwconfig eth1 rate 1M
sudo iwconfig eth1 txpower 16
Así, establecemos su velocidad máxima y su potencia de transmisión. Hecho esto, ya podemos subirla.
sudo ifconfig eth1 up
sudo ifconfig rtap0 up
Aunque tenemos que subir dos interfaces, realmente las dos hacen referencia a la misma tarjeta de red. Veremos que cada una tiene su utilidad.
Vamos a ver las redes que tenemos a nuestro alrededor. De la que queramos atacar, tendremos que apuntar su canal, su bssid, y su essid.
sudo airodump-ng eth1
Una vez tengamos los datos, paramos con Ctrl+C
Además, necesitamos nuestra dirección mac:
ifconfig
Y ahí, buscamos la dirección hw, o mac.
Hecho esto, tenemos los datos necesarios para empezar el ataque. La captura de datos la realizaremos con la interfaz rtap0, y la inyección de paquetes con eth1.
Queda por establecer el canal en el que vamos a operar, que supuestamente acabas de apuntar hace un momento:
sudo iwconfig eth1 channel 11
Es importante esta vez establecer el canal, ya que aunque sea en eth1 donde lo establezcamos, rtap0 cojerá de ahí el valor que hayamos introducido.
Hecho esto, podemos empezar la captura de datos
sudo airodump-ng -c 11 --bssid 00:01:02:03:04:05 -w Archivo rtap0
Esto empieza a guardar datos sobre un ap en el canal 11, con bssid 00:01:02:03:04:05, y guardará los datos en Archivo-01.cap. Ojo, que ahora la interfaz que usamos es rtap0.
Lo que tenemos que conseguir ahora es que aumente el tráfico, porque vereis que lo que aparece en la columna "data" sube muuuuy despacio, o incluso ni se mueve. Necesitamos que el número en esa columna suba, teóricamente se necesitan entre unos 250000 ivs para una wep de 64bits, y sobre 1000000 para una wep de 128 bits. Ya digo en teoría, porque con el método que usaremos despues para analizar las capturas, la clave puede salir con unos 50000 ivs nada mas, y como veremos, será cuestión de 10 o 15 minutos conseguir esa cantidad.
Para elevar el tráfico, tenemos que inyectar paquetes en la red. Dejamos el terminal capturando datos, y abrimos uno nuevo.
En el, vamos a hacer una "autenticación falsa" con el ap. No tengo ni idea de como funciona esto exactamente, pero el caso es que el punto de acceso nos reconocerá como un cliente asociado a su red, y podremos generar tráfico dentro de ella.
sudo aireplay-ng -1 0 -e WifiDeTragy -a 00:01:02:03:04:05 -h aa:ab:ac:ad:ae:af eth1
"-1 0" es el tipo de ataque, así que no hay que cambiarlo, WifiDeTragy es el essid del ap al que nos queremos conectar, 00:01:02:03:04:05 es el bssid que apuntamos antes, y aa:ab:ac:ad:ae:af la mac de nuestra tarjeta de red. Podemos usar la original, o la que antes hemos cambiado con macchanger.
Si todo va bien, deberíamos ver algo como:
Sending Authentication Request
Authentication successful
Sending Association Request
Association successful :-)
Si pone una y otra vez Sending Authentication Request, lo mas probable es que estemos demasiado lejos del ap (podemos ver sus datos, pero nuestros envíos no le llegan)
Si nos pone un error de que el ap ha rechazado los paquetes, lo más probable es que haya activado un filtro por mac. La solución, esperar a ver un cliente conectado a esa red, y utilizar su mac para nuestro beneficio con macchanger.
En fin, lo dicho, si todo fue bien, podemos seguir adelante. Abrimos otro terminal, y escribimos lo siguiente:
sudo aireplay-ng -3 -b 00:01:02:03:04:05 -h aa:ab:ac:ad:ae:af eth1
Lo mismo que antes, el "-3" es el tipo de ataque (inyección de paquetes) despues del -b va la mac del ap, y despues de -h va la mac de nuestra tarjeta de red.
Veremos en pantalla que el número de "Read packets" va subiendo. Despues de unos minutos leyendo paquetes, debería empezar a subir el número de ARP requests. ("got 0 ARP requests", debería poner en principio) Si empiezan a subir los ARP requests, y los "sent packets", estaremos inyectando paquetes correctamente. En la ventana que tenemos capturando datos, la columna "data" empezará a subir como la espuma, la velocidad depende de lo bien que se reciba la señal del ap. Vamos, que puede ir desde 10 paquetes/s, hasta 500 paquetes/s. Mientras siga subiendo, lo importante es no cerrar nada.
Si sigue en 0 ARP requests, puede que el router tenga algún tipo de protección, que estés demasiado lejos de él, o que te haya desautenticado. Puedes probar a asociarte a él otra vez:
sudo aireplay-ng -1 0 -e WifiDeTragy -a 00:01:02:03:04:05 -h aa:ab:ac:ad:ae:af eth1
Si se conecta otra vez, sigue esperando. Puede tardar bastante en recibir arp requests, todo es cuestión de esperar, y si no estás seguro de que el router te mantenga asociado, vuelves a ejecutar este comando. Una forma de saber si estás correctamente asociado, es mirar la pantalla que tienes capturando datos. Si estás asociado, deberías aparecer en la parte de abajo, como cliente asociado al ap que estás atacando. Si desapareces de ahí en algún momento, vuelves a ejecutar este comando. Si vuelves a aparecer ahí justo tras ejecutarlo, lo dicho, todo es cuestión de esperar y repetir esto una y otra vez.
Si este comando no te funciona, probablemente el ap tenga activado el filtro por mac. Si es así, necesitamos conocer una mac que tenga acceso al ap. En el terminal que está capturando datos, se captura también los datos de otros equipos que acceden al ap. Si alguien se conecta al ap durante nuestra captura, nos aparecerá su mac en la parte de abajo de la ventana de captura. La explicación de como usar su mac, al final del tutorial.
Bueno, supongo que ya tenemos en el terminal que está capturando un número elevado en la columna "data", supongamos que unos 50000-100000
Abrimos otro terminal, y ejecutamos:
sudo aircrack-ng -z Archivo*.cap
Si todo va bien, en un rato debería salir:
KEY FOUND! [ 11:12:13:14:15 ]
Decrypted correctly: 100%
Si dice que falló, podemos probar de nuevo cuando hayamos capturado mas datos, o incluso probar con otro método de desencriptación:
sudo aircrack-ng Archivo*.cap
Con este último es con el que se necesitan sobre 1000000 para que desencripte una clave de 128 bits, tarda mas, pero si el parámetro "-z" no te dio la clave, siempre puedes probar sin él a ver si funciona.
Los comandos de aircrack-ng se pueden hacer sin parar la captura de datos, así mientras comprueba las claves seguirá capturando datos. Incluso si paramos la captura, y luego la iniciamos de nuevo, en lugar de guardar los datos en Archivo-01.cap, los guardará en Archivo-02.cap, de ahí que a aircrack le indiquemos que utilice los archivos Archivo*.cap
Cuando tengamos la clave, bastará con hacer:
sudo modprobe -r ipwraw
sudo modprobe ipw3945
Así volvemos a cambiar el módulo que está cargado para la tarjeta wireless, y ya nos podemos conectar a la red con la contraseña que hemos conseguido. Como consejo, practicad con el router que tengais en casita, ponedle una clave wep de 64 bits, y sin filtro mac. Si lo conseguís, para el resto de claves wep el método es el mismo, puede tardar mas o menos, pero funcionará.
Para cualquier duda o similar, ya sabeis que los comentarios están ahí para algo.
Sobre macchanger:
Partimos de una situación en la que tenemos una mac que tiene permiso para acceder al ap que queramos atacar. Está comentado mas arriba el como conseguirla.
Para poder hacer el cambio correctamente, debemos hacerlo justo después de cargar ipwraw, ya que sino no se aplicará el cambio correctamente. Entonces, los pasos son:
sudo modprobe ipwraw
sudo macchanger -m XX:XX:XX:XX:XX:XX eth1
sudo macchanger -m XX:XX:XX:XX:XX:XX rtap0
sudo ifconfig eth1 up
sudo ifconfig rtap0 up
Esto debe hacerse con las interfaces bajadas, que es como están según se carga ipwraw. Para el caso de esta tarjeta, creará dos extensiones, eth1 y rtap0 (los nombres pueden variar, puede ser wifi0 o algo similar). Debemos ejecutar el comando para las dos interfaces.
A partir de aquí, ya tenemos nuestra mac "falseada", y podremos continuar normalmente, configurando el rate, txpower, y subiendo las interfaces.
Por supuesto, macchanger puede usarse en cualquier momento, aunque al principio sea lo mejor. Lo único que hay que recordar es que debemos bajar las interfaces antes:
sudo ifconfig eth1 down
sudo ifconfig rtap0 down
Y después volver a subirlas, como vimos antes.
Notas mentales, y más detalles sobre lo que estamos haciendo:
La interfaz eth1 puede no llamarse así en tu equipo, ya que depende de la nomenclatura que siga tu versión de linux. Por lo que he visto, wifi0 es otro nombre bastante común para esta interfaz.
Cuando establecemos el rate de la tarjeta de red, lo que hacemos es decirle a que velocidad va a trabajar enviando y recibiendo datos. Cuanta más alta sea esta velocidad, más rápido conseguiremos inyectar paquetes. El problema es que si el ap se encuentra bastante lejos, para estabilizar la conexión necesitamos bajar la velocidad de transferencia. En el tutorial, he usado 1M como velocidad, que es el mínimo. Podemos usar valores como 2M, 9M, 11M... Aunque para asegurarnos de que todo funciona bien, es mejor usar un rate bajo y tener un poco de paciencia.
Esto es todo por ahora, aunque iré actualizándolo cada cierto tiempo con más datos y problemas que vaya encontrando. Si tenéis cualquier problema, basta con dejar un comentario y echaré un vistazo a ver si encontramos una solución. Un saludo!