12

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!

12 comentarios:

0_LuSo dijo...

simplemente

AWESOME!

juan plablo dijo...

hola :

cuando hago "aireplay-ng -3 -b........"

me sale bn pero cuando me captura un ARP me empieza a salir este mensaje reitaradamente:

Notice: got a deauth/disassoc packet. Is the source MAC associated ?
Notice: got a deauth/disassoc packet. Is the source MAC associated ?
Notice: got a deauth/disassoc packet. Is the source MAC associated ?
Notice: got a deauth/disassoc packet. Is the source MAC associated ?
Notice: got a deauth/disassoc packet. Is the source MAC associated ?
Notice: got a deauth/disassoc packet. Is the source MAC associated ?
Notice: got a deauth/disassoc packet. Is the source MAC associated ?

es normal esto???? y lo que pasaba tmb q es no captura mucho en data?? que podra ser

gracias de antemano por tu ayuda

Tragy dijo...

Cuando haces:
sudo aireplay-ng -1 0......
Te sale esto?

Sending Authentication Request
Authentication successful
Sending Association Request
Association successful :-)

Ojo al association succesful, que es lo importante.

El error que comentas es porque no estás conectado correctamente con el router, de ahí que la columna data no suba. Puedes dejar abierto el terminal que te pone el error, y y volver a conectarte desde otro terminal. Si estás con tu router, asegurate de tener desactivado el filtrado de MAC... Si es del vecino... Esperas a que lo veas conectado, y usas macchanger para ponerte su dirección MAC.

Un saludo, y a ver si te sirve de ayuda!

juan plablo dijo...

logre solucoinar ese prblema .ahora si q no e podido sacar la clave..tengo como 400000 ded datos y no me funciona el comando con la "z" (el otro lo prbe pero lleva 30 min y aun no dea respuesta) tengo la versiuon 0.6.2 de aircrack.ojala me ayudes y gracias de antemano

SALUDOS::

Tragy dijo...

Quizá se te haya mezclado la captura de paquetes que hacías mal al principio, y la que haces bien ahora. Yo volvería a empezar desde cero, guarda datos en otro directorio, y si se hace la captura bien, no debería haber problema.

Y poco mas te puedo decir... Ahora mismo, no se me ocurre nada...

Anónimo dijo...

hola creo que no tengo bien instalado esto
cuando pongo iwconfig
me sale algo asi
lo no wireless extensions.
eth0 no wireless extension


sabes a que se debe esto¿?

Tragy dijo...

Muy buenas! Has probado a hacer el iwconfig antes de tocar nada? Si te sale alguna extensión, es que tienes los drivers para tu tarjeta bien configurados. Despues es cuando debes usar modprobe para descargar los "oficiales" y cargar los ipwraw. Si es al cargar los ipwraw cuando te dice que no hay "wireless extensions", puede que no tengas la tarjeta de red adecuada, seguro que tienes exactamente la misma?

Un saludo!

gonza dijo...

amigo mira yo lo coloco en "cd ipwraw-ng /home/gonzalo/drivers/" y probe tambien asi "cd ipwraw-ng /home/gonzalo/drivers" y no pasa nada me dice que el fichero no existe no se que hacer amigo ayuda por favor lo estoy haciendo en ubuntu 8.04

Tragy dijo...

Prueba "cd /home/gonzalo/drivers/ipwraw-ng/", no te vendría nada mal echar un vistazo a un manual con cosas básicas sobre linux. Para cualquier otro problema, aquí estamos.

gonzaloko dijo...

si lo intente amigo pero no me resulta no sabes si es ke puede ser por algun repositorio o otra cosa ayuda por favor man gracias

gonzaloko dijo...

y amigo otra cosa como revizo si mis drivers estan todos correctamente ???

Tragy dijo...

Como ya dije, echa un vistazo a un manual básico de linux, con los principales comandos, y como usarlos.

Los drivers sabes que los tienes bien instalados cuando ves que funcionan, si haces el modprobe ipwraw y no da ningún error, es que se cargó correctamente el driver ipwraw.

De lo contrario, o te has saltado algún paso, o ejecutaste mal alguno de los comandos...