Estudio recopilatorio en redes wlan4xx

Iniciado por Wazowski, 29 Diciembre 2010, 16:29 PM

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

Wazowski

Hola a todos,

soy Wazowski::iWazDev, conocido por algunos y odiado por otros por ser el creador de iwep Pro para iPhone.

/* Actualizacion a fecha 30/12/2010 */

Visto que tampoco a levantado mucho polvo, ni nada de nada, cuelgo un programita para demostrar que se puede calcular el password de las wlan4xx de forma rápida y sencilla de la misma forma que lo hacen las apliaciones de seguridadwireless.

este es el enlace:

http://iwazowski.com/downloads/wlan4xx.rar

Espero vuestros comentarios.  ;D

Feliz año nuevo.

/* Primer post a fecha 29/12/2010 */

Llevaba tiempo barruntando la idea de ir devolviendo todo el soporte y conocimiento que me ha rindado este magnifico foro y sus usuarios.

Parto de la base que la creación de este tema no tiene la intencion de crear enemistades con nadie. Los creditos de todos los programas son de sus creadores, simplemete, si no se nombran es por pereza del autor de este post.

Entrando en materia. Como actualmente hay un tema caldente con muy poca información, me gustaría arrojar un poco de luz sobre lo que se han llamado redes wlan4xx de yacom, con proteccion WEP.

Cabe destacar que puedo cometer y cometeré errores de libro, pero la intencion es tratar de "descubrir" como funciona los routers y las apps que utlizan su vulnerabilidad.

Esto es lo que he descifrado yo:

Partimos de la base de un router denominado:

WLAN9CD098
XX:XX:XX:X9:CD:BE

Las X son numeros que, a continuacion beremos si afectan o no, al calculo de las contraseñas.

Utilizando la aplicación de calculo de contraseñas obtenemos los siguientes resultados:

317360175943E
327353175A40D
337342175B41C
347335175C46B
357324175D47A
367317175E449
377306175F458
3873F917504A7
3973E817514B6
3A73DB1752485

Hasta aquí bien, veamos que datos está utilizando la app para calcular las claves. Si utilizamos los siguientes datos con la aplicación de calculo observamos que:

WLAN9CD000
00:00:00:09:CD:00

90 40 00 90 00 99 4
91 40 11 90 01 98 5
92 40 22 90 02 9B 6
93 40 33 90 03 9A 7
94 40 44 90 04 9D 0
95 40 55 90 05 9C 1
96 40 66 90 06 9F 2
97 40 77 90 07 9E 3
98 40 88 90 08 91 C
99 40 99 90 09 90 D

WLAN9CD000
00:26:4D:49:CD:00

90 40 00 90 00 99 4
91 40 11 90 01 98 5
92 40 22 90 02 9B 6
93 40 33 90 03 9A 7
94 40 44 90 04 9D 0
95 40 55 90 05 9C 1
96 40 66 90 06 9F 2
97 40 77 90 07 9E 3
98 40 88 90 08 91 C
99 40 99 90 09 90 D

Este primer paso nos ayuda a decidir que los primeros bytes del BSSID y del ESSID no se estan utilizando para el calculo del hash.

Segundo paso, veamos si se estan utilizando el resto de bytes para el calculo. Probamos con 2 nuevos datos de entrada en la app, y obtenemos:

WLAN000000
00:26:4D:40:00:00

0000000000000
0100110001011
0200220002022
0300330003033
0400440004044
0500550005055
0600660006066
0700770007077
0800880008088
0900990009099

WLANA00000
00:26:4D:4A:00:00

0000000000000
0100110001011
0200220002022
0300330003033
0400440004044
0500550005055
0600660006066
0700770007077
0800880008088
0900990009099

En este paso hemos descubierto una dos cosas, una es que el byte 5 del ESSID y el byte 8 del BSSID deben ser iguales pero no afectan al calculo de la clave, además, podemos ver cual es el patron de inicio para el calculo de las claves.

Siguiente paso, añadimos el byte 6 del essid y el 9 del bssid. Y obtenemos:

WLANA10000
00:26:4D:4A:10:00

1010001000111
1110111001100
1210221002133
1310331003122
1410441004155
1510551005144
1610661006177
1710771007166
1810881008199
1910991009188

Comprobamos que la comprobacion del byte 5 del essid sigue valiendo:

WLAN510000
00:26:4D:45:10:00

1010001000111
1110111001100
1210221002133
1310331003122
1410441004155
1510551005144
1610661006177
1710771007166
1810881008199
1910991009188

Ok, todo igual con el byte 5, pero el byte 6 del essid y el byte 9 del bssid si que afectan al calculo.

Siguiente paso, al ser un algoritmo relativamente corto, podemos ver que el comportamiento del calculo de la contraseña parece sencillo. Con este paso, trataremos de avanzar y sacar un patrón de calculo para los primeros bytes de la clave.

Probamos 4 entradas, con estos resultados:

WLAN520000 WLAN521000 WLAN522000 WLAN523000
00:26:4D:45:20:00     00:26:4D:45:21:00     00:26:4D:45:22:00       00:26:4D:45:23:00
                                                                                     
2020002000222         3020003000332         4060004000446           5060005000556  
2120112001233         3120113001323         4160114001457           5160115001547  
2220222002200         3220223002310         4260224002464           5260225002574  
2320332003211         3320333003301         4360334003475           5360335003565  
2420442004266         3420443004376         4460444004402           5460445004512  
2520552005277         3520553005367         4560554005413           5560555005503  
2620662006244         3620663006354         4660664006420           5660665006530  
2720772007255         3720773007345         4760774007431           5760775007521  
28208820082AA         38208830083BA         48608840084CE           58608850085DE  
29209920092BB         39209930093AB         49609940094DF           59609950095CF  


WLAN530000 WLAN531000   WLAN532000              WLAN533000        
00:26:4D:45:30:00     00:26:4D:45:31:00     00:26:4D:45:32:00       00:26:4D:45:33:00
                                                                                     
3030003000333         4050004000445         5070005000557           6050006000665  
3130113001322         4150114001454         5170115001546           6150116001674  
3230223002311         4250224002467         5270225002575           6250226002647  
3330333003300         4350334003476         5370335003564           6350336003656  
3430443004377         4450444004401         5470445004513           6450446004621  
3530553005366         4550554005410         5570555005502           6550556005630  
3630663006355         4650664006423         5670665006531           6650666006603  
3730773007344         4750774007432         5770775007520           6750776007612  
38308830083BB         48508840084CD         58708850085DF           68508860086ED  
39309930093AA         49509940094DC         59709950095CE           69509960096FC  



De estos resultados, de momento lo que podemos ver es que los bytes [1 2] del pass se obtienen de la suma de los bytes [9 10] del Essid o del Bssid, todavía queda por ver si el resto de bytes afecta (ya avanzo yo, que si afectan)

Pero vamos bién, vamos a usar esta nomenclatura, a los bytes del ESSID los llamamos [E1 - E6], a los del BSSID los llamamos [B1 - B12] y a los del pass los llamaremos [P1 - 13]

P1 = dec(B9) + dec(B10);
P2 = 0; y va incrementando de uno en uno.
P3 = ??; erratico de momento.
P4 = 0; de momento.
P5 = P2; en incremento, no en valor
P6 = P2; en incremento, no en valor
P7 = P1; en formato, no en valor
P8 = ??; depende de algun valor que no se ha tocado aún.
P9 = ??; depende de algun valor que no se ha tocado aún.
P10 = P2; en incremento, no en valor
P11 = P1; en formato, no en valor
P12 =  ??;
P13 = ??;


De momento ya está bién, que ya no me entero ni yo.

agradeceria mucho vuestras aprtaciones.

Mañana tato de seguir un rato más.

Un saludo.

keitaronet

A raiz que mi anterior aportación de cierta herramienta me llamaron programador de m entre otras cosas . Ha conseguido que la llama de mi vena altruista se ponga alta y os eche una mano con este tema , porque por lo visto no se ha publicado el source de las herramientas (que conste que no es critica es solo extrañeza)

Asi que bien os voy a echar una manita con esto . Hoy no os voy a explicar como conseguir un algoritmo de un router . Sino como hacer un poco de ingenieria inversa a la picaresca sobre alguna tool.

Horas para lograr un algoritmo útil: 14 horas mas o menos
Habilidades necesarias: Soltura en algún lenguaje de programación rápido , usar la cabeza(no para partir nueces).
consejos: usar eclipse a tope.

Bien la manera simple por donde debemos empezar es a analizar la tool . A partir de aquí podemos hacer dos cosas:

-decompilamos codigo (modo pro no aconsejable para no expertos entre los que me incluyo)

-analizamos la salida

Este algoritmo es a vistas algo no extremadamente complicado , por lo tanto al no tener encriptaciones como md5 sha-1 y etc , podemos intentarlo.

En mi caso primero me fije en que bits variaban el código , y ese es mi pequeño regalo , solo influyen el ultimo par del BSSID y todas las cifras menos la primera del ESSID.

A partir de ahí el metodo fue simple pero constante , monte mi programa con mi entrada y mi salida y me fije en algo curioso , con todo a 0 hay una tabla base por llamarla de tal manera , así que la use para ir modificando los valores.

Entonces he ido cifra por cifra aislándolas del resto viendo que modificaban . Una vez que sacas la primera y ves como influye en la tabla puedes ir a por la siguiente.(sacar el minialgoritmo en el que influye una cifra no tiene porque ser trivial, esta es la parte dura)

Al obtener la siguiente , tienes que ver a su vez como interactua la primera que has sacado y así sucesivamente con cada elemento influyente.

Consejos variados:

-olvídate del papel y lápiz , demasiadas cuentas , prográmarlo te ahorrara muchas horas y analiza las salidas de las operaciones que tu impongas .

-No mires el conjunto , ve solucionando los pequeños problemas que se planteen y poco a poco irá saliendo.


Y para finalizar y demostrar que no me he tirado el moco , aparte de que podéis verlo en la aplicación android que he creado (wlan4xx decrypter) , os mostraré una imagen (solo para incredulos):





ChimoC

Buenas:

@keitaronet: ¿Creo que pone que vale 1,20 Euros?  :silbar: :silbar: :silbar: :silbar: :silbar:

ChimoC



keitaronet

#3
El que he puesto gratuito es el otro el wlan_xxxx decrypter . Ademas este ( Wlan4xx Decrypter ) es mas barato que el que hay aquí "anunciado" (2.95€) (también ofrece menos funcionalidades ) . Espero que tu comentario no sea una critica por lo anteriormente dicho.

modificado:

Con lo de altruista , me he referido al método que he usado para extrapolar las variables.