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 (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.
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):
(http://img826.imageshack.us/img826/4415/imagendp.th.png) (http://img826.imageshack.us/i/imagendp.png/)
Buenas:
@keitaronet: ¿Creo que pone que vale 1,20 Euros? :silbar: :silbar: :silbar: :silbar: :silbar:
ChimoC
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.