jueves, 12 de diciembre de 2013

RWAP

En esta entrada os voy a presentar a RWAP (Rogue Wifi Access Point), un script en bash cuya función es sencillamente la que indica su nombre, levantar un punto de acceso wifi falso y realizar un ataque de MITM a los clientes que se conecten a ella.

Mucho se ha hablado ya de este tema (aquí tenéis un ejemplo y aquí tenéis una demo), de modo que no vamos a repetir lo que ya se ha explicado montones de veces, además de haber cientos de tutoriales perfectamente explicados por internet. Si os interesa el hacking wifi, aquí tenéis una serie de posts geniales para centraros en este tema.

Rwap tiene dos modos de funcionamiento principalmente: normal y "twin". En el modo normal, lo que hace rwap es levantar un punto de acceso wifi con un essid del tipo WLAN_XXXX, donde XXXX son los cuatro últimos dígitos de la mac generada aleatoriamente para cambiar la mac de la tarjeta wifi con la que hacemos el ataque. En el modo "twin", el script levanta airodump para escanear las redes wifi cercanas, y preguntar por el essid y el bssid que queremos clonar, he intentará funcionar con la máxima potencia posible.

Sea en un modo u en otro, se arranca un servidor dhcp para proporcionar ip's a los clientes (cuyo fichero de configuración se lo podemos pasar como parámetro, o cogerá el que trae rwap por defecto), y se arranca sslstrip y ettercap para realizar el ataque MITM. Por defecto, rwap abrirá 4 terminales en los que podremos visualizar las diferentes salidas de los scripts arrancados, o podemos especificar un fichero de salida al que volcar los logs de ettercap.

Lógicamente, rwap requiere que tengamos instalada la suite aircrack (o airodump y airmon), sslstrip, ettercap, macchanger y isc-dhcp-server.

Hay soluciones mucho mejores (y más bonitas) que ésta por internet, pero aquí la tenéis para quien quiera testearla, usarla, mejorarla, etc...

Os dejo con el "help" del script:



--EOF--

domingo, 3 de noviembre de 2013

DictMaker

A la hora de elegir una contraseña, dependiendo de para qué servicio sea, tenemos en cuenta unos factores u otros. Por ejemplo, si es para acceder a nuestro correo electrónico, solemos utilizar una contraseña fácil de recordar sobre todo, ya que la vamos a utilizar con frecuencia. Si es para darnos de alta en un servicio que rara vez vamos a utilizar, o incluso sólo la vamos a necesitar una única vez, utilizamos una contraseña cualquiera, del tipo "1234", o "pass", ya que nos importa bien poco la protección de la cuenta de turno.

Es muy frecuente también que utilicemos la misma contraseña para todos o muchos de los servicios a los que accedemos, con los riesgos de seguridad que ello conlleva, y a pesar de las miles de veces que se ha dicho que no se utilicen este tipo de "política de contraseñas". Todo esto, en un entorno "doméstico", digamos.

En cambio, si nos encontramos en entornos corporativos, es posible que se utilicen contraseñas aleatorias para acceder a los diferentes servidores de la empresa (ya que es poco probable que los usuarios utilicen este tipo de contraseñas). En este caso, lo más probable es que se acceda a algún servicio web del tipo randomkeygen.com por ejemplo, para generar éstas.

DictMaker es precisamente eso, un generador de los tipos más comunes de contraseñas aleatorias (no apto para lo más puristas de la aleatoriedad), y está escrito en python. Así, tenemos un tipo de contraseñas "decentes" (que constan de letras mayúsculas, minúsculas y números, con una longitud de 10 caracteres), contraseñas frecuentemente utilizadas para acceso root (mayúsculas, minúsuculas, números y caracteres especiales con una longitud de 30), diferentes tipos para wep y wpa, etc...

Sólo hay que pasarle como parámetros los tipos de contraseñas que queremos generar, y el tamaño total del diccionario (tamaño aproximado):


Así, el diccionario generado se puede utilizar para hacer un "reparto" de contraseñas, o bien para realizar un ataque de diccionario a algún hash o algún servicio de login. Tampoco nos engañemos, en un espacio de caracteres donde puede haber billones de combinaciones posibles, es poco probable que, generando un diccionario de 100M, demos en el blanco.

No obstante, ahí queda para quien quiera testearlo, mejorarlo o simplemente enviarlo a /dev/null.

-- EOF --

viernes, 18 de octubre de 2013

Cracking WPA/WPA2 con reaver

Hace poco estuve cacharreando con reaver-wps, una herramienta que se publicó hace un tiempo para crackear las contraseñas de tipo WPA y WPA2 en conexiones Wifi.

Esta herramienta aprovecha una vulnerabilidad en el método de asocación cliente-router WPS, por el cual el cliente envía un número pin de 8 dígitos, y si éste coincide con el configurado en el router, se permite la asociación. De esta forma, existen 100 millones de combinaciones posibles.

El fallo reside en que el router envía una respuesta ante el envío de los 4 primeros dígitos. Si éstos no son correctos, el router envía una señal EAP-NACK, con lo cual reducimos el número de combinaciones a 10.000 en una primera atacada (10 elementos en grupos de 4 donde el orden es relevante y se pueden repetir). Una vez tenemos los 4 primeros dígitos correctos, nos quedarían 3 dígitos restantes, puesto que el último dígito es un checksum.

De esta forma tenemos en total 11.000 combinaciones posibles, las cuales se pueden completar en un período de tiempo medio de entre 4 y 10 horas (en mis pruebas, en la mayoría de los casos he conseguido descifrar la contraseña en torno al 95% del proceso total, unas 8 horas aprox.), pero también depende del tiempo entre cada comprobación de pin, de que el router bloquee durante un tiempo el intento de acceso, etc...

La herramienta en sí tiene varias opciones:


Entre ellas, las más típicas son:
   -i Para seleccionar la interfaz wifi que utilizaremos para el ataque
   -b Para seleccionar el BSSID del PA que queremos atacar
   -v o -vv Para que la herramienta nos reporte información adicional sobre el proceso
   --mac Para especificar la mac de nuestra tarjeta wifi

Para nuestras pruebas, lo primero que haremos será cambiar la mac de la tarjeta wifi para no revelar datos "comprometedores" en el ataque:


Después ponemos la tarjeta wifi en modo monitor:


Iniciamos airodump para ver las redes a nuestro alcance, el tipo de cifrado y el bssid:


Sé lo que estáis pensando, ¿para qué te vas a complicar con WPA2 si tienes disponible una WEP? Ya, pero no es el caso.

Así que iniciamos reaver (utilizaremos NUESTRO punto de acceso con nombre H0m3). Cabe destacar que como hemos spoofeado la mac de la tarjeta wifi, a reaver le tenemos que indicar la mac nueva que nos hemos puesto:



Al cabo de un tiempo (dependiendo de los segundos que pasen entre cada comprobación de pin), si el router que queremos atacar tiene activado la asociación por WPS, obtendremos la contraseña de acceso:



Hay que decir que durante el proceso se cayó la conexión wifi varias veces, con lo cual podemos estar provocando un DoS con este ataque.

La herramienta posee otras opciones también bastante interesantes, como restaurar una sesión o enviar claves DH pequeñas para incrementar la velocidad, pero esto lo dejamos para el lector.

La forma de protegerse frente a este tipo de ataques es desactivando la asociación por WPS en el router, dependiendo del modelo se hará de una forma u otra, pero básicamente basta con entrar en la configuración avanzada y desactivar esta opción.

Como dijeron al final de la RootedCon '10, Hack The World!

--EOF--

jueves, 10 de octubre de 2013

Wireless usb TP-Link TL-WN821N en Debian Wheezy

Normalmente suelo tener una máquina para hacer pruebas y cacharrear un poco, conectada a un router mediante cable ethernet. Pero esta vez se trataba de jugar con la tarjeta wifi, para lo cual eché mano de una tarjeta wireless usb que tenía por ahí. Cual fue mi sorpresa que al conectar el usb la típica interfaz wlan0 no se levantaba (que raro...) en mi Debian Wheezy. Reviso el syslog y encuentro lo siguiente: 



Vale, no encuentra el firmware. Reviso el directorio /lib/firmware y efectivamente, allí no está. Googleando un poco encuentro la descarga de carl9170-1.fw, puesto que el fabricante sólo proporciona drivers para Windows en este caso. Descargo el archivo, lo muevo al directorio de firmware, hago un rmmod carl9170 y modprobe carl9170, y la interfaz sigue sin levantarse. Vuelvo a revisar el syslog, el directorio, y lo que encuentro es un carl9170-1.bin.

Googleando un poco más, veo en las páginas de Debian que para instalar ese driver basta con instalar desde repositorios el paquete firmware-linux-free:



Instalo, hago un ifconfig y allí está, una bonita interfaz wlan0 levantada (entre otras).



Por curiosidad, vuelvo a revisar el directorio de firmware, y efectivamente, ahí está nuestro carl9170-1.fw