¿Cómo funciona un ataque de duendecillo WPS?

En realidad, los enrutadores vienen con un pin wps de 8 dígitos (en realidad solo hay 7 dígitos, el último dígito es un dígito de suma de verificación) y el fabricante los activa automáticamente. Dominique Bongard descubrió que algunos AP tienen formas débiles de generar nonces (conocidos como E-S1 y E-S2 ) que se supone que son secretos. Si podemos averiguar cuáles son estos nonces, podemos encontrar fácilmente el PIN WPS de un AP ya que el AP debe dárnoslo en un hash para demostrar que también conoce el PIN y que el cliente no se está conectando a un AP rojo. Estos E-S1 y E-S2 son esencialmente las “claves para desbloquear la caja de bloqueo” que contiene el pin WPS. Puedes pensar que todo es un problema de álgebra, si conocemos todas las variables menos una en una ecuación, solo tenemos que resolver para x. X en este caso es el pin WPS (este no es un ejemplo perfecto, pero para principiantes debería ayudar).

Partes importantes de un intercambio WPS: M1, M2, M3 otro.

Afiliado Nonce

Clave pública PKE (Clave pública inscrita)

Registrar Nonce

Clave pública PKR (clave pública del registrador)

E-HASH1 = HMAC-SHA-256 (authkey) (E-S1 | PSK1 | PKE | PKR)

E-HASH2 = HMAC-SHA-256 (authkey) (E-S2 | PSK2 | PKE | PKR)

AUTHKEY = [derivado del KDK (Clave de derivación de clave)]

COMPONENTES

E-HASH1: es un hash en el que fuerza bruta la primera mitad del PIN.

E-HASH2: es un hash en el que aplicamos fuerza bruta a la segunda mitad del PIN.

HMAC: es una función que agrupa todos los datos. La función es HMAC-SHA-256.

PSK1: es la primera mitad del PIN del enrutador (10.000 posibilidades)

PSK2: es la segunda mitad del PIN del enrutador (10.000 posibilidades)

PKE: es la clave pública del afiliado (utilizada para verificar la legitimidad de un intercambio de WPS y evitar repeticiones).

PKR: es la clave pública del registrador (utilizada para verificar la legitimidad de un intercambio de WPS y evitar repeticiones).

Implementaciones de proveedores

En BroadCom eCos, estos dos nonces se generan justo después del nonce inscrito (el nonce público generado por el AP). También conocemos la función que nos proporciona estos datos, por lo que si sustituimos en semillas, finalmente encontraremos nonces coincidentes, y de allí podemos encontrar los nonces E-S1 y E-S2.

E-S1 y E-S2 se generan a partir del mismo PRNG que genera el nonce inscrito N1.

En RealTech, el PRNG es una función que utiliza el tiempo en segundos desde el 1 de enero de 1970 hasta que se generen los datos (básicamente cuando comienza el intercambio de WPS). La parte vulnerable es que el chip usa el mismo generador para hacer que el Enrollee no funcione como lo hace para hacer E-S1 y E-S2.

Entonces, si todo el intercambio completo ocurre en ese mismo segundo, E-S1 = E-S2 = Enrollee Nonce. Si ocurre en el transcurso de unos pocos segundos, entonces todo lo que tenemos que hacer es encontrar la semilla que nos dio el Enrolle Nonce, y luego incrementarlo y tomar la salida como E-S1 y E-S2. Es una fuerza bruta multivariable, por lo que puede llevar un poco más de tiempo pero no más de unos minutos en una PC moderna.

E-S1 = E-S2 = N1 Afiliado no generado o generado con semilla = tiempo.

En Railink E-S1 y E-S2 nunca se generan. Siempre son 0. Por lo tanto, solo tenemos que forzar el PIN con fuerza bruta y listo.

E-S1 = ES1 = 0

En Mediatech existe el mismo problema que Ralink. E-S1 y E-S2 nunca se generan.

E-S1 = E-S2 = 0