sábado, 29 de diciembre de 2012

Atacando cifrado WEP con repetición de paquetes ARP

No se si es insomnio o le puedo echar la culpa a alguna sustancia ingerida esta noche (y me refiero a la lata de Monster que me acabo de tomar, no piense mal mi querido lector) pero viendo que la almohada no accede a transportarme al reino de Morfeo y sintiéndome generoso, me apetece elaborar una sencilla guía detallando uno de los muchos métodos que hay para romper un cifrado WEP en una red inalámbrica  de esos que usan los antiguos routers y no tan antiguos si tienen un administrador incauto.
Si se me permite, lo primero, voy a intentar explicar, a grosso modo, en que consiste un cifrado WEP o Wired Equivalent Privacy (algo así como Privacidad Equivalente a Cableado). Se trata de un sistema de cifrado usado en el estándar 802.11, lo que viene a ser el estándar de las redes wifi domésticas. Se trata de un algoritmo de cifrado (valga la redundancia) RC4 que encripta los paquetes que viajan de cliente a servidor con una clave de 64 o 128 bits dando (en su época) cierta confidencialidad a los paquetes, fácilmente interceptables que viajan en ondas de radio. Este protocolo de seguridad fue dado a conocer allá por 1999 y tardó 3 años en ser tachado de inseguro debido a múltiples vulnerabilidades. En su época, e incluso cuando el sistema se vio comprometido, seguía siendo efectivo en cierta manera, ya que por aquel entonces, los procesadores ni los métodos para vulnerarlo eran coherentemente rápidos para que supusiera una grave amenaza. No obstante las cosas han cambiado y los procesadores de varios núcleos unidos a la fuerza imparable de los módulos DDR3 que proporcionan tanta RAM operativa como antiguamente casi ni alcanzaban los discos duros han hecho posible que los cifrados WEP puedan ser vulnerados en lo que se tarda en beber un café con leche (de ahí la técnica de crackeo llamada cafe-latte). Esto ha supuesto que ahora, salvo excepciones, las redes protegidas bajo WEP sean las menos habituales dando paso a técnicas de negociación de dos vías como WPA o WPA2 o bien, en grandes redes, los servidores de acceso RADIUS. Pese a todo, con una buena antena wifi, en casi cualquier sitio de cualquier ciudad, todavía seguimos encontrando puntos de acceso wifi bajo "protección" WEP. El siguiente texto trata sobre como vulnerar una red con cifrado WEP con uno o varios clientes asociados usando las suite aircrack-ng. No hace falta señalar que esta y todas las guias de este blog se detallan para funcionar bajo sistemas linux, así que windowseros abstenerse.
Lo primero es descargarnos la herramienta en cuestión en su código fuente desde aquí: http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz y lo guardamos en un directorio como pentest dentro de nuestra carpeta personal (vamos a ir organizando nuestras herramientas desde el principio, eso nos evitará muchas búsquedas y demás a la larga).


Abrimos una pantalla en la consola (a familiarizarnos con la comandera de Linux toca) y nos situamos en la carpeta donde hemos guardado nuestra descarga, en mi caso: /home/chaosnet/pentest/ Tecleamos un ls para localizar el archivo descargado y damos la orden de descomprimirlo con un tar -xzvf seguido del nombre del archivo descargado. Cuando acabe de descomprimir entraremos en la nueva carpeta haciendo un cd aircrack-ng-1.1 . Antes de continuar instalaremos las librerias requeridas para aircrack, en sistemas basados en Debian (Ubuntu entre ellos) esto pasa por un simple sudo apt-get install build-essential openssl libssl-dev sqlite libsqlite-dev Si los paquetes están instalados apt los ignorará y si no, los instalará. El siguiente paso es compilar los archivos fuente haciendo un make y luego instalamos con un sudo make install. Si todo ha ido bien el programa está instalado y tecleando el comando airmon-ng debería reconocerlo diciendo que faltan parámetros. Resumiendo y descargando desde la consola en tu carpeta personal:
sudo mkdir pentest
wget http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz
tar -zxvf aircrack-ng-1.1.tar.gz
cd aircrack-ng-1.1
sudo apt-get install build-essential openssl libssl-dev sqlite libsqlite-dev
make
sudo make install
Puedes copiar y pegar todas las lineas en la consola, funcionará.

Empezamos...
Aircrack se usa desde la consola de comandos y requiere un nivel de super usuario (o root) para manejarla y otorgarle permiso para cambiar tu configuración de red así que para evitar repetir sudo en cada comando, mejor empieza con un sudo su que tras teclear tu contraseña te otorgará permiso de administrador hasta que cierres la shell o des la orden de exit. Para usar aircrack lo primero que tenemos que hacer es poner nuestra inalambrica en modo monitor, es decir, a la escucha. Esto puede ser una pena ya que hay algunas tarjetas inalámbricas que por sus drivers no lo permiten. Antes de desesperarte, haz la prueba y si algo falla, recomiendo buscar el modelo de tu tarjeta y buscar drivers mas actualizados en la web del fabricante, quizá eso pueda solucionar el problema. Para poner tu inalambrica en modo monitor aircrack-ng tiene la herramienta precisa. Desde la consola llama a:
airmon-ng
 Este comando sin atributos listará las tarjetas wifi de las que dispones dando su nombre en el sistema (wlan0 o similar) el chipset de esta (atheros, broadcom, ralink...) y su driver. Sin más el comando no hace nada. Para activar el modo monitor teclearemos:
airmon-ng start wlan0
Donde wlan0 será el nombre de nuestra trajeta. Con esto crearemos una nueva tarjeta virtual que llevará el nombre de mon0 y será la que usaremos durante toda nuestra interacción con aircrack. El siguiente paso es ver lo que tenemos alrededor, olfatear con nuestro monitor que redes hay a nuestro alcance y comprobar si tenemos un objetivo viable, para ello usaremos airodump-ng indicando la interfaz por la que queremos que escuche, mon0.
airodump-ng mon0
La salida en pantalla nos muestra algo como esto:
¿Que significa? Va, rápidamente. La columna BSSID se refiere a la dirección MAC de las estaciones, los routers si se prefiere. PWR es la fuerza con la que nuestro monitor recibe la señal, cuanto mas baja, mas intensa. Beacons son las balizas, los paquetes que manda cada punto de acceso o estación para decir ¡Eh, estoy aquí! que hacen que los clientes les identifique rápidamente y puedan intentar una asociación con ellas. Data se refiere al número de paquetes de datos cliente - estación interceptados. /s es la cantidad de Data (paquetes de datos) por segundo. CH se refiere al canal (rango de frecuencia) que usa la red. MB es la velocidad de la red. ENC de encriptación o acceso. CIPHER su algoritmo de cifrado, AUTH su autenticación y la ESSID es el nombre de la red asignado. La tabla siguiente es para los clientes en la que se muestra la BSSID de estos, la BSSID de la estación a la que están conectados, paquetes perdidos, frames y la prueba sobre la ESSID de la estación sobre la que están autenticados. OK.
(Por cierto, para parar de olisquear paquetes y salir del programa basta con presionar CTRL+C)
Nuestro objetivo será la red con la ESSID CH40SN37.router.nomap que usa cifrado WEP y tiene un cliente conectado. Apuntamos la BSSID de el punto de acceso objetivo y la del cliente además del canal de la red y definimos nuestra escucha hacia donde nos interesa guardando el dumpeo (lo que obtengamos) en un archivo y especificando la BSSID y el canal a escuchar:
airodump-ng --bssid 00:0C:F6:D2:A7:28 --channel 8 -w prueba1 mon0
Ahora la tabla solo muestra la red que le hemos indicado y esta guardando cada paquete en el archivo que hemos especificado con el flag -w.
 Necesitaremos una nueva ventana en nuestra consola, presionamos CTRL+shift+T para abrir otra pestaña en la consola y hacemos otro:
sudo su
Que nos otorgue privilegios de root. Lo que vamos a hacer ahora es usar un comando para identificar paquetes ARP y reenviarlos al punto de acceso para generar tráfico:
aireplay-ng --arpreplay -h 00:15:AF:ED:F0:41 -b 00:0C:F6:D2:A7:28 mon0
Donde -h es la BSSID del cliente cuya MAC falsearemos como fuente de los paquetes que mandaremos al punto de acceso (AP) y -b es la BSSID del AP destino. Si lo lanzamos empezaremos a ver como marca una lectura de paquetes esperando ARP y una vez obtenidos estos empieza a reenviarlos. Mientras esto sucede abriremos otra pestaña en la terminal CTRL+shift+T y empezaremos a crackear con los paquetes que vayamos obteniendo:
aircrack-ng ./prueba1-01.cap -0
Para cerciorarte de cual es el nombre del archivo que estas dumpeando haz un ls y buscalo. Aircrack suele añadir -01 al archivo. siempre será el .cap en mi caso prueba2-02.cap. Dependiendo del tráfico generado tardará más o menos, en mi caso con 98370 IVs el resultado es inmediato:

Listo. Ahora si, voy a ver si duermo algo. ¡Hasta la próxima!

1 comentario: