Como se genera la llave WPA por defecto de numerosos modelos Belkin

[h]Algoritmo para generar la llave WPA por defecto de varios modelos de puntos de acceso fabricados por Belkin[/h]

https://www.wifi-libre.com/img/members/3/belkin1.jpeg

Nuestra historia empieza el 12 de noviembre 2012.
Es este día que Jakob Lell’s publicó en su blog el articulo CVE-2012-4366: Insecure default WPA2 passphrase in multiple Belkin wireless routers
Se trata de un “ful disclosure” que no es “full” del todo. Me explico :
El autor habla de dos cosas.
[list=1]
]Una cosa obvia : la llave WPA por defecto es débil. Como lo sabemos, para ser segura, una llave WPA debería tener un mínimo de 12 caracteres y mezclar todos tipos de símbolos. Es un consejo básico que se repite por todos lados. Consejo que no respectaron los expertos en seguridad del primer fabricante norte americano de rourters,/]
]segundo elemento en este “casi-full disclosure”: Jakob Lell’s anuncia que sabe como formar la llave a parte del bssid. Pero no explicó como./]
[/list]

El desenlace de este misterio toma lugar el 21 de febrero 2014.
Es en el foro Kali linux (Belkin Mac Address and WPA/WPA2 key correlation: CRACKED!) que el usuario eftecno comparte un PDF (descarga aqui) que explica el como.
El PDF es obra de Numlock del foro italiano wifi-shark
Veamos en detalles estos dos puntos:

[h]8 caracteres hexadecimales : la receta del fracaso[/h]

Como podéis ver en estas fotos, las llaves por defecto de estos puntos de acceso son realmente muy básicas: longitud mínima posible (8 caracteres) y un juego de caracteres de los más tristes (hexadecimal - 16 posibilidades)
Contraseña con símbolos hexadecimales mayúsculas
https://www.wifi-libre.com/img/members/3/belkin2.jpg
O bien contraseña en formato hexadecimal con letras minúsculas
https://www.wifi-libre.com/img/members/3/belkin3.jpg

Es según el modelo
En todos casos tenemos un problema : son 16⁸ posibilidades.
Si sacamos la calculadora vemos que tenemos 4 294 967 296 llaves posibles.
Con este volumen de llave a tratar un brute force con un pentium 3 es iluso. ¿Que pasaría si disponemos, por ejemplo, de una tarjeta ATI tipo HD5xxx que se encuentran en segunda mano por 40€?
Podemos usar hascat y gastar los recurso GPU para el crack WPA. Y alcanzaremos mas de 50 000 llaves por segundos.
Y **el brute force se hace en menos de un día **
4 294 967 296 (toal possiblidades) ÷ 50 000 (velocidad de crack) ÷ 3600 (segundos por hora) = 23,860929422 (horas)
Un nivel de seguridad casi grotesco en si y la cosa no parra aquí.

[h]La WPA que se genera con la mac : siniestro total[/h]

Para crear la lave WPA los ingenieros de belkin han usado unas tablas de conversiones estáticas.
No es una buena idea, deberían haber usado un proceso dinámico, que no se repite en cada router.
Pero el gran problema, origen de todos las males, es que lo que usaron para pasar a través de esta tablas de conversión son los últimos 8 caracteres de la mac ethernet o el bssid.
Gran problema porque conociendo el bssid que se emite en claro, conocemos el bssid o la MAC ethernet y entonces conocemos la cadena empleada para generar la llave
Otra cagada en la historia: haber elegido los 8 últimos dígitos de la mac. Si los 6 últimos dígitos cambian con cada modelo no es el caso de los dos anteriores.
Esto hace que estos dos dígitos se repiten en cada contraseña y que nos dan claves sobre los valores de las tablas de conversiones
veamos los patrones desvelados :

[h]Modelos F7D1301 F7D3302 F7D3402 F7D4301 F7D7301 (essid por defecto de tipo Belkin.XXXX )[/h]
https://www.wifi-libre.com/img/members/3/belkin4.jpg

Para estos modelos las cosas se hacen así:
[list=*]
]pillamos los 8 últimos dígitos de la mac.
En los datos expuestos serían 94:44:52:89:D7:E5
/
]
*]los mezclamos siguiendo el orden expuesto (ordine)

 :  __:__:62:38:51:74

O sea empezamos con 6. Significa que aquí (primer digito de la nueva cadena) viene el sexto dígito de la porción de mac que hemos cortado en el primer paso.
Nuestro sexto dígito es 7 : 52:89:D7:E5
Y será lo que pondremos al incio de nuestra cadena
El segundo dígito es el dos y el tercero es el tres así que estos dígitos no cambian y ponemos el segundo y tercero dígito de la porción de mac que hemos pillado anteriormente: 52:89:D7:E5
La cadena formada es 728
Y seguimos así mezclando los dígitos hasta llegar a 7285D5E9
/*]
*]Para llegar a la lave WPA tenemos ahora que aplicar la tabla fija de conversiones de valores. La tabla es así :

    Valor inicial                            |   ** 0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F**
    --------------------------------------------|-----------------------------------------------------------------------------------------------
    Valor después conversión       |    **0  2  4  6  1  3  5  7  8  A  C  E  9  B  D  F**

Y 7285D5E9 se convierte entonces en 7483B3DA y es nuestra lave WPA :cool:
/*]
[/list]

…Esto era solo el entrante, seguimos…

[h]Modelo F5D7234-4 (essid por defecto de tipo Belkin_XXXXXX )[/h]
https://www.wifi-libre.com/img/members/3/belkin6.jpg

Es exactamente lo mismo que en el caso expuesto anteriormente…
[list=]
]Mezclamos los 8 últimos dígitos del bssid siguiendo el orden : __:__:62:38:51:74 Y con el bssid 08:86:3B:BF:83:7A formamos la cadena 3BBA837F /]
]Aplicamos la misma tabla de conversiones que la de antes
Valor inicial | ** 0 1 2 3 4 5 6 7 8 9 A B C D E F
*
--------------------------------------------|-----------------------------------------------------------------------------------------------
Valor después conversión | 0 2 4 6 1 3 5 7 8 A C E 9 B D F
Y transformamos nuestro 3BBA837F en la llave WPA, a saber 6EEC867F
/
]
[/list]

… seguimos degustando…

[h]Modelos F9J1101 F9J1102 F9J1105 F9K1001 F9K1002 F9K1003 F9K1004 F9K1105 (essid por defecto de tipo belkin.xxx )[/h]
https://www.wifi-libre.com/img/members/3/belkin5.jpg

En este caso notamos dos cosas el essid usa minúsculas en lugar de mayúsculas y en el pass WPA se usan también letras hexadecimales minúsculas en lugar de mayúsculas.
Otro elemento importante para estos modelos,** no se usa el bssid directamente sino la mac ethernet**.
La mac ethernet es muy facil de deducir: solo añadimos uno a nuestro bSSID. Hagamos los pasos:
[list=]
]pillamos el bSSID y añadimos 1 para obtener la mac ethernet que vamos a emplear :
08:86:3B:B7:39:2F + 1 = 08:86:3B:B7:39:30 (estamos en base 16) /
]
[/list]
[list=
]
*]El orden a seguir para mezclar los dígitos de la mac es el mismo :

__:__:62:38:51:74

Así que B7:39:30 nos da la cadena 9BB03337/*]
*]Ultimo paso : pasar por la tabla de conversiones. La tabla es esta

 Valor inicial                            |   **0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F**
 --------------------------------------------|-----------------------------------------------------------------------------------------------
 Valor después conversión       |   **9  4  4  6  2  6  3  7  8  a  c   e   9  b  d   f**

Y 9BB03337 se convierte en aee96667; la llave WPA
/*]
[/list]

  • el autor advierte de dos casos particulares : - en unos modelos se ha de añadir 2 en lugar de uno para deducir la mac ethernet
    - en otros se ve que se el dígito 6 y uno son iguales

Espero que tienen aún algo de hambre para tomar el postre…

[h]Modelos F7D2301 F7D4402 F7D5301 F7D8301 (essid por defecto de tipo belkin.xxxx )[/h]
https://www.wifi-libre.com/img/members/3/belkin8.jpg

[list=*]
]En este caso debemos añadir uno al bSSID para conocer la mac ethernet que se va emplear : 94:44:52:BB:45:A3 + 1 = 52:BB:45:A4 /]
]Mesclamos estos carcteres siguiendo el mismo patrón ( ::62:38:51:74 ) y obtenemos 52B445AB/]
*]Paso final : pasar estos valores por la tabla de conversión siguiente (es la misma que para el caso anterior) :

 Valor inicial                            |   **0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F**
 --------------------------------------------|-----------------------------------------------------------------------------------------------
 Valor después conversión       |   **9  4  4  6  2  6  3  7  8  a  c   e   9  b  d   f**

La cadena52B445AB se convierte así en 64e226ce que es nuestra llave WPA/*]
[/list]

¡Jaque mate! :cool: