[R-WlanXDecrypter 1.0] - Generador de diccionarios para claves por defecto de R

Iniciado por nhaalclkiemr, 7 Octubre 2010, 19:44 PM

0 Miembros y 3 Visitantes están viendo este tema.

nhaalclkiemr

R-WlanXDecrypter 1.0
by nhaalclkiemr & millanzarreta - (incluido en la suite Wifiway desde la versión 2.0.2)

Aqui os presento una utilidad que he creado para la generación de diccionarios de claves por defecto de R, una compañía de Galicia. Son las conocidas como R-WlanX (donde X es un número) o nombres similares. Recientemente también se ven bastantes redes wifimedia_R-XXXX (las X son números), las cuales también analizaremos.

He visto por aí que existe un Rwlandecrypter (por eso le puse otro nombre), sin embargo lo he probado y no me ha convencido, crea un diccionario de apenas 14 MB que incluye solo una pequeña parte de las posibles claves por defecto.

Antes de presentar el programa me gustaría analizar estas redes para tener claro que tipo de contraseñas utilizan los routers de R por defecto.

Analisis

Redes wifimedia_R-XXXX:

Estas redes son las que vienen con ciertos routers que proporciona R. La compañía los proporciona si tienes contratado un cierto servicio llamado wifimedia. Dicho servicio viene por defecto de forma gratiuta para conexiónes de 30Mb o más, aunque también se puede contratar por cierto precio para conexiones de menos velocidad, pero esto último no es común. Es decir, estas redes suelen ser de alta velocidad. Traen contraseña WPA/WPA2, sin embargo, la contraseña por defecto es ridicula. Por esto mismo en ocasiones el técnico que instala el router cambia esta contraseña, aunque eso no es lo normal.

La contraseña por defecto de estas redes es la MAC del router con el último digito terminado en 0, las letras suelen ser minúsculas pero en ocasiones pueden ser mayúsculas. Un ejemplo:

SSID: wifimedia_R-1234
MAC: 00:26:5B:1E:28:A5

La clave será: 00265b1e28a0
También puede ser: 00265B1E28A0


Como se puede observar la seguridad de estos routers es ridícula, no hace falta ni capturar paquetes ni usar el programa R-WlanXDecrypter ni nada.

Redes R-WlanX con Clave WEP:

Lo primero es aclarar que ni el SSID ni la MAC dan detalles sobre la clave. El numero del SSID normalmente suele ser el canal (aunque no siempre) del AP. No siempre se cumple el formato exacto de "R-WlanX", a veces se mezclan mayusculas minusculas, a veces hay espacios, a veces guiones, a veces nada separando las palabras; e incluso a veces se ven palabras adicionales en el SSID.

La manera más universal de definir las contraseñas por defecto de R es que son números seguidos de ceros. ¿Cuantos números antes de los 0's? Normalmente 8, en alguna ocasión 6. Ahora independiente de esto tenemos cuatro posibilidades de tipos de contraseñas por defecto (descartando contraseñas mayores de 128 bits):


  • Contraseña WEP 128 bit ASCII (ej.: "2010945600000") : El tipo de contraseña más común
  • Contraseña WEP 128 bit Hexadecimal (ej.: 20:10:94:56:00:00:00:00:00:00:00:00:00): Raras, pero haberlas hailas
  • Contraseña WEP 64 bit ASCII: Nunca he visto una de este tipo
  • Contraseña WEP 64 bit Hexadecimal (ej: 20:10:94:56:00): Se ven bastantes

¿Significan algo los números? ese tema es bastante misterioso:

-Algunas claves empiezan por un año (ej.: "2008") seguidas de 4 numeros aleatorios; se cree que el año es el de fabricación de router, pero nos encontramos muchos años futuros (ej.: "2023"), asi que no parece ser ese el caso. Igualmente la mayoría de claves empiezan por 2, si queremos reducir el intervalo de busqueda podemos empezar buscando claves que empiecen por 2. Recientemente se ha descubierto que este número parece ser el ID que R asigna a su cliente (dato completamente desconocido para nosotros que solo está presente en sus facturas).

-En otros casos, sobre todo cuando se tratan de 6 numeros seguidos de 0's (en vez de 8 ) se cree que puede ser el número de telefono sin el prefijo. Saber esto no nos ayuda mucho, pero en caso de estas claves tan solo son 6 números seguidos de 0's en vez de 8, lo que reduce muy sustencialmente nuestro intervalo de busqueda

Bueno, independientemente del origen de los numeros, nos encontramos con que solo varían como máximo 8 digitos, que siempre son numeros, por lo que  tenemos 10^8=100.000.000 de posibilidades para cada tipo de contraseñas, que no son tampoco muchas. En un ordenador portatil actual de gama media se comprobarían todas las claves en unas 2 horas o menos aproximadamente.

Redes R-WlanX con Claves WPA:

En la actualidad es más frecuente ver routers de R con claves por defecto WPA que con claves WEP, aunque el patrón de contraseñas es similar al WEP. En este caso las contraseñas por defecto son claves de 8 dígitos pero sin seguir de 0's, al estilo XXXXXXXX (ej.: "20109456"). Este número parece ser el ID del cliente, y parece ser que este número tambien empieza en la mayoría de ocasiones (hasta ahora en todas las probadas) por 2, por lo que las contraseñas se nos reducirian solamente a las que empiezan por 2 (estilo 2XXXXXXX).

Tambien se han detectado casos de claves WPA de 10 dígitos, aunque siguen siendo solo 8 dígitos variables, pero con dos 0's a continuación (aunque estas son mucho menos frecuentes). Al estilo XXXXXXXX00 (ej.: "2010945600"). Al igual que con las claves de 8 dígitos, solo se han encontrado casos de contraseñas que empezaran por 2 al estilo 2XXXXXXX00.

El tercer patrón de claves WPA que se ha detectado se trata de una contraseña de 16 dígitos, pero que realmente es una contraseña de 8 dígitos variables repetida dos veces, al estilo ABCDEFGHABCDEFGH (ej.: "2015483920154839").

A la modesta velocidad de crackeo de 1000key/sec, tardaríamos sobre 28horas en comprobar el diccionario completo de claves. Si probamos solo las claves que empiezan por 2, tardaríamos aproximadamente 3 horas en comprobarlas.

Con esto terminamos el análisis y procedo a explicar la aplicación.

R-WlanXDecrypter

El programa soporta actualmente plataformas Unix y Windows. Las opciones básicas son las necesarias para crear diccionarios para contraseñas WEP, y las opciones adicionales, que explicaré mas tarde, son una manera de crear diccionarios más personalizados y que también sirven para claves WPA.

El proyecto está ahora disponible con su código fuente en GitHub. Se creará un tag por cada versión que se libere, y los desarrollos principales se harán sobre el master:
https://github.com/millanzarreta/R-WlanXDecrypter



Opciones básicas


  • -n <nbits>: Crea el diccionario para claves de 64bits, 128bits, etc... Aunque tambien es compatible para claves más grandes como 512bits nunca me he encontrado una de R de ese tipo. Si no especificamos el parámetro el programa coge una clave por defecto de 128bits
  • -h <sep>: Se creará un diccionario en formato hexadecimal, no es un formato alternativo de guardar las claves, sino que es un diccionario diferente a uno creado sin esta opción -h. El parametro <sep> es el caracter (en decimal) separador de los bytes expresados en formato hexadecimal, si no se especifica por defecto es : , que es el símbolo más utilizado para esta función y el que utiliza aircrack-ng

Utilizando solo estas opciones podemos crear diccionarios universales para las contraseñas de R con claves WEP. Si creais el diccionario para aircrack-ng es importante recordar que no admite diccionarios mayores de 2GB. Por defecto el programa crea claves de 8 digitos seguido de 0's (y asi incluimos tambien a las de 6 dígitos). En las notas de la nueva versión de aircrack-ng comentan que debería soportar diccionarios mayores de 2GB, pero comprobandolo empíricamente a mi me siguen sin funcionar.

-Primero crearemos un diccionario ASCII para contraseñas de 128bits, ocupará 1,40GB:

R-WlanXDecrypter rwlan128.txt

-Ahora crearemos un diccionario Hexadecimal para contraseñas de 64 bits, ocupará 1,48GB:

R-WlanXDecrypter rwlan64hex.txt -h -n 64

-Con esos dos diccionarios deberían bastar para la mayoría de routers de R. Aún asi siempre podremos generar un diccionario Hexadecimal para contraseñas de 128bits. Este diccionario ocuparía 3,72GB:

R-WlanXDecrypter rwlan128hex.txt -h

Si creamos el diccionario para aircrack-ng hay que recordar que no admite diccionarios de más de 2GB, por lo que tendremos que dividir en dos este diccionario (por ejemplo: dos diccionarios de 1,86GB cada uno):

R-WlanXDecrypter rwlan128hex1.txt -h -max 49999999
R-WlanXDecrypter rwlan128hex2.txt -h -min 50000000


-Tambien podremos crear un diccionario para claves ASCII de 64bits, aunque nunca vi ninguna de este tipo en R el diccionario tan solo ocupa 683KB:

R-WlanXDecrypter rwlan64.txt -n 64


    Se supone que en estos diccionarios están todas las claves que puede contener un router de R, pero tenga en cuenta que pueda que existan claves de mayor longitud que 128bits, aunque nunca he visto ninguna hasta la fecha.

Opciones avanzadas:


  • -c <nchar>: Por defecto en las palabras del diccionario varian 8 digitos y despues se rellenan con 0's asta completar la longitud de la clave. Se puede utilizar esta opción si queremos especificar otro numero de digitos variables
  • -cm <decchar>: Por defecto las claves se rellenan con 0's. Con este parámetro podremos especificar otro carácter de relleno (especificar el codigo decimal del carácter)
  • -min <num>: Con esta opción podemos definir el comienzo del diccionario especificando el valor mínimo. Se especifica el valor minimo excluyendo el relleno (es decir, solo contando el número formado por los bytes variables)
  • -max <num>: Con esta opción podemos definir el final del diccionario especificando el valor máximo. Se especifica el valor máximo excluyendo el relleno (es decir, solo contando el número formado por los bytes variables)
  • -rep <num>: Con esta opción podemos especificar que la parte variable de las contraseñas generadas se repita num veces
  • -r: Si especificamos esta opción las palabras del diccionario estarán separadas por el byte LF (char 10). Por defecto están separadas por 2 bytes: CR+LF (char 13)(char 10). La mayoría de programas reconocen ambos formatos. Con esta opción ahorramos 1 byte por cada palabra.
  • -m <nbytes>: Hace lo mismo que -n (por eso no es compatible con esa opción) pero con esta opción podemos definir manualmente el número de bytes de la clave. Cuando hablamos de contraseñas de pongamos 128bits, 24 de estos se utilizan para el IV, por lo que la clave es realmente de solo (128-24)/8=13 bytes.-n 64 es equivalente a -m 5, -n 128 a -m 13, etc...
  • -q: No mostrara el estado del proceso de creación del diccionario

Con las opciones por defecto los diccionarios generados son de un gran tamaño y con muchas palabras, y se puede tardar mucho tiempo en comprobarlas todas dependiendo del equipo. Con estas opciones avanzadas podemos definir diccionarios más personalizados. Varios ejemplos útiles:

-Como ya hemos dicho, en algunas ocasiones las claves son solo 6 numeros seguidos de 0's, en ese caso crearemos los diccionarios anteriores (excepto el de 64bits ASCII ya que no tiene sentido reducirlo) pero para 6 bytes variables en lugar de 8. Los diccionarios creados ocupan tan solo 67,7MB los 3 juntos. De esta manera podemos hacer una comprobación rapida con el aircrack-ng para claves con 6 numeros variables antes de utilizar los diccionarios grandes:

[/list]R-WlanXDecrypter rwlan128-c6.txt -c 6
R-WlanXDecrypter rwlan64hex-c6.txt -h -n 64 -c 6
R-WlanXDecrypter rwlan128hex-c6.txt -h -c 6

-Ya nombramos que muchas de las contraseñas por defecto de R suelen empezar por 2. Utilizando -min y -max podremos definir diccionarios de solo ese rango (empiecen por 2). Los 3 diccionarios que estamos creando (128bits ascii, 64bits hex y 128bits hex) ocuparían la decima parte cada uno:

R-WlanXDecrypter rwlan128-start2.txt -min 20000000 -max 29999999
R-WlanXDecrypter rwlan64hex-start2.txt -h -n 64 -min 20000000 -max 29999999
R-WlanXDecrypter rwlan128hex-start2.txt -h -min 20000000 -max 29999999

Caso WPA:

-Podemos utilizar el programa con las opciones vistas para crear un diccionario para claves WPA. En este caso tenemos que indicar que cree un diccionario de 8 digitos, todos variables. El diccionario tendrá 100.000.000 claves y ocupará 953.67MB:

R-WlanXDecrypter rwlanwpa.txt -m 8

-Si queremos reducir el tiempo de búsqueda, podemos crear un diccionario que contenga unicamente las claves que empiezan por 2. El diccionario tiene 10.000.000 claves y ocupa 95.37MB:

R-WlanXDecrypter rwlanwpa-start2.txt -m 8 -min 20000000 -max 29999999

La mayoría de claves WPA de R son de 8 cifras, pero tambien se han detectado algunos casos de claves de 10 cifras con 8 dígitos variables seguidas de dos 0's. Para crear ese diccionario sería así:

-El diccionario completo para WPA de 10 cifras tiene 100.000.000 claves y ocupa 1144.41MB:

R-WlanXDecrypter rwlanwpa10.txt -m 10

-Si solo queremos reducir el tiempo de búsqueda, podemos probar las claves que empiezan por 2. Este diccionario tiene 10.000.000 claves y ocupa 114.44MB.

R-WlanXDecrypter rwlanwpa10-start2.txt -m 10 -min 20000000 -max 29999999

Por último, también se ha detectado un patrón de contraseñas de 16 dígitos, que son realmente contraseñas de 8 dígitos variables que se repiten.

-El diccionario completo para WPA de 16 cifras tiene 100.000.000 claves y ocupa 1716.61MB:

R-WlanXDecrypter rwlanwpa16-rep1.txt -m 16 -rep 1

-Si solo queremos reducir el tiempo de búsqueda, podemos probar las claves que empiezan por 2. Este diccionario tiene 10.000.000 claves y ocupa 171.77MB.

R-WlanXDecrypter rwlanwpa16-rep1-start2.txt -m 16 -rep 1 -min 20000000 -max 29999999


Hasta ahora todas las redes analizadas empiezan por el número 2. Por eso se recomienda empezar con los diccionarios que solo recojen claves que empiezan por 2, y utilizar los diccionarios generales de 8 y 10 cifras solo en el caso de que estos no funcionen.

Descarga

Incluye versiones compiladas para linux y windows y el código fuente.

-Versión actual (1.0 ):

-Mirror 1: https://www.dropbox.com/s/5aojiwb58nqqvkm/R-WlanXDecrypter1.0.zip?dl=1
-Mirror 2: https://github.com/millanzarreta/R-WlanXDecrypter/raw/release-1.0/R-WlanXDecrypter1.0.zip

-Versiones antiguas (0.9 ):

-Mirror 1: https://www.dropbox.com/s/srlrovcubxm3son/R-WlanXDecrypter0.9.zip?dl=1
-Mirror 2: https://github.com/millanzarreta/R-WlanXDecrypter/raw/release-0.9/R-WlanXDecrypter0.9.zip

-Versiones antiguas (0.8 ):

-Mirror 1: https://www.dropbox.com/s/p0mt5t0uyjmqdxt/R-WlanXDecrypter0.8.rar?dl=1
-Mirror 2: https://github.com/millanzarreta/R-WlanXDecrypter/raw/release-0.8/R-WlanXDecrypter0.8.rar

Changelog

v1.0 [27/10/2014]
-----------------
+Añadida opción -rep <num> que permite que la parte variable se repita <num> veces
+Cambio en el tipo de variables por otros más adecuados
+Corregido el error que mostraba mal el proceso de creación si el diccionario era mayor a 2GB
+Corregido un error que se producia en ocasiones al crear diccionarios hexadecimales y que producia un tamaño de palabra diferente al especificado
+Corrección de varios errores menores

v0.9 [11/10/2010]
-----------------
+Mostrar tamaño archivo final y numero de claves
+Mostrar status del proceso
+Añadido quiet mode -q
+Corregido bug en las opciones -min y -max
+Pequeña optimización del bucle generador de claves
+Corrección de pequeños fallos generales

v0.8 [06/10/2010]
-----------------
+Primer lanzamiento publico

Anexo: Como usar diccionarios Hexadecimales en aircrack-ng

Para definir en aircrack-ng un diccionario hexadeximal hay que especificar h: antes de la ruta del diccionario y siempre debemos especificar la longitud de las claves WEP del diccionario que estamos usando:

aircrak-ng -n 128 -w h:"rwlan1281hex.txt" captura.cap
aircrak-ng -n 64 -w h:"rwlan64hex.txt" captura.cap

Aun así, en la versión actual de aircrack-ng 1.1, existen varios bugs y dificultades que impiden el correcto funcionamiento de los diccionarios hexadecimales. He creado un post al respecto aqui que explica detalladamente como solucionar este problema.

Parece que en la nueva versión de aircrack-ng aún siguen presentes estos bugs.

Saludos ;)




LAST EDIT: Actualizado a la versión 1.0
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

nhaalclkiemr

Post actualizado a la última versión 0.9

Realmente no varía mucho a la primera versión, principalmente he corregido algunos pequeños errores y ahora se verá antes de crear el diccionario lo que ocupará y el número de claves que tendrá, tambien se verá el status del proceso de creación del diccionario por pantalla (puede ser util en ordenadores lentos o con diccionarios grandes para ver el progreso actual). En el post principal en el apartado 'Changelog' están los principales cambios.

Saludos ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

aaronduran2

Hola.

Una preguntita... intento poner un separador con el parámetro -h, pero siempre me dice parámetro no reconocido.

¿Cómo se debe poner para que funcione correctamente?

nhaalclkiemr

Para que funcione correctamente hay que poner el valor del separador en formato decimal. Si por ejemplo quieres separar los bytes con el simbolo # (por poner un ejemplo) no puedes poner esto:

R-WlanXDecrypter diccionario.txt -h #

Con eso no funcionará, hay que expresar el valor del caracter en su formato decimal, el valor decimal del caracter # es 35. Por lo tanto tienes que poner:

R-WlanXDecrypter diccionario.txt -h 35

Lo mismo se aplica para el parámetro -cm, no puedes especificar el símbolo directamente tienes que poner su representacion decimal

Recuerda que si no especificas el valor para -h se coje 58 (el simbolo : ) y para -cm se coje 48 (la representacion decimal del 0 ascii).

Y una pregunta por curiosidad, porque quieres cambiar el separador? hay algun programa que utilice un formato diferente para diccionarios hexadecimales o algo?
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

aaronduran2

Ah, vale...

No es que haya otro separador, el problema era que por no leer atentamente no me di cuenta que con poner únicamente -h ya servía para añadir los : y yo intentaba ponerlo a mano...

Funciona perfectamente, hice pruebas con otro par de redes de 64 y las coge bien. Tengo una de 128, mañana le echo un vistazo.

Un saludo ;)

nhaalclkiemr

Reabro el post para comentar ciertas cosas:

-He actualizado el post para dar información sobre como usar el programa para las cada vez más comunes claves WPA por defecto de R (antiguamente solo trataba las WEP)

-El programa ahora viene incluido por defecto en la suite Wifiway desde la versión 2.0.2

-Recuerdo que para tratar claves WEP hexadecimales hay que utilizar la versión parcheada del programa aircrack-ng 1.1, de lo contrario o bien dará errores o nunca encontrará la contraseña. El source del aircrack-ng parcheado y los binarios parcheados tanto para linux como para windows se pueden encontrar aqui

-Actualmente estoy desarrollando un script (en Windows un BATCH y en Linux un BASH) para hacerlo todo más simple y automatizado, además de sacarle el máximo partido a los diccionarios. Incluso tendrá la opción para repartir el trabajo entre varias CPUs. En cuanto tenga terminada una primera versión la colgaré en este mismo hilo.

Saludos ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

ikam

Hoola!!! las wpa de R son solo numericas? las wep creo que si lo eran pero no se los routers nuevos como van.

ikam

Estoy intentando hacer un diccionario de 10 cifras y me da error. utilizo esto     "  R-WlanXDecrypter rwlanwpa-start2.txt -m 10 -min 2000000000 -max 2999999999 "
Alguna solucion? que estoy haciendo mal? o es que no se puede un  diccionario mayor de 8 cifras.

nhaalclkiemr

Cita de: ikam en  4 Agosto 2011, 11:58 AM
Hoola!!! las wpa de R son solo numericas? las wep creo que si lo eran pero no se los routers nuevos como van.

Si todas las claves de R son solo numéricas (tanto WEP como WPA), por eso son más fáciles de sacar al tener solo 10 carácteres posibles.

Cita de: ikam en 26 Agosto 2011, 09:04 AM
Estoy intentando hacer un diccionario de 10 cifras y me da error. utilizo esto     "  R-WlanXDecrypter rwlanwpa-start2.txt -m 10 -min 2000000000 -max 2999999999 "
Alguna solucion? que estoy haciendo mal? o es que no se puede un  diccionario mayor de 8 cifras.

Si se puede, el problema es que tal como lo estás poniendo estás indicando un diccionario de 10 cifras pero de solo 8 dígitos variables (los 2 dígitos restantes serían 0's). Para especificar que las 10 cifras sean variables tienes que ponerlo mediante la opción -c o sino tomará por defecto 8. En resumen tu comando te quedaría asi:

R-WlanXDecrypter rwlanwpa-start2.txt -m 10 -c 10 -min 2000000000 -max 2999999999

Eso si, el diccionario ocupará algo más de 11GB y tendrá 1.000.000.000 de claves.

Solo por curiosidad, ¿para que quieres realizar un diccionario de estas carácteristicas?

Saludos ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

ikam

"""""Si todas las claves de R son solo numéricas (tanto WEP como WPA), por eso son más fáciles de sacar al tener solo 10 carácteres posibles.

Solo por curiosidad, ¿para que quieres realizar un diccionario de estas carácteristicas?"""""



lo quiero xq tal y como dices las claves son de 10 cifras y ese cpnfiguración solo crea de 8 cifras. De que me vale un diccionario de 8 si la clave tiene 10!!! de todas formas "CREO" que los nuevos routers R con clave WPA no empiezan por 2, pero no estoy 100% seguro.
Aprovecho para hacer otra pregunta: los nombres de las redes por ejemplo R-wlan XX, influye para algo en la clave???

Un saludo