Ocultar contraseñas en wpa_supplicant.conf con WPA-EAP y MSCHAP-v2

23

Mi wpa_supplicant.confaspecto es este:

network={
  ssid="Some name"
  scan_ssid=1
  key_mgmt=WPA-EAP
  eap=PEAP
  identity="my-user-id"
  password="(clear text password here)"
  ca_cert="/usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt"
  phase2="auth=MSCHAPV2"
}

Con esta combinación específica de WPA-EAP y MSCHAP-v2, ¿hay alguna manera de no incluir mi contraseña en claro en este archivo de configuración?

ChangeLog parece afirmar que esto es factible (¡desde 2005!):

* added support for storing EAP user password as NtPasswordHash instead
  of plaintext password when using MSCHAP or MSCHAPv2 for
  authentication (hash:<16-octet hex value>); added nt_password_hash
  tool for hashing password to generate NtPasswordHash

Algunas notas:

1 Esa respuesta afirma que el uso de una contraseña hash significa que el hash se convierte en la contraseña. Esto es técnicamente cierto, pero al menos el hash es una contraseña solo para wifi , que es un progreso significativo sobre la filtración de una contraseña compartida que otorga acceso a múltiples servicios.

Clemente
fuente

Respuestas:

20

Puede generar el NtPasswordHash(también conocido como hash de contraseña NTLM) de la siguiente manera:

echo -n plaintext_password_here | iconv -t utf16le | openssl md4

Prefijo con "hash:" en el archivo wpa_supplicant.conf, es decir

password=hash:6602f435f01b9173889a8d3b9bdcfd0b

En macOS, el código iconv es UTF-16LE

echo -n plaintext_password_here | iconv -t UTF-16LE | openssl md4

Tenga en cuenta que no gana mucha seguridad. Si un atacante encuentra el archivo con el hash, entonces puede unirse trivialmente a la red (de la misma manera que lo hace su computadora), por lo que tener la contraseña en hash no ayuda en absoluto. Si la contraseña se usa en cualquier otro lugar, entonces el atacante tendría que usar la fuerza bruta para encontrar la contraseña original (es decir, pruebe las contraseñas más probables y calcule su hash hasta encontrar una coincidencia). Dado que puede calcular aproximadamente mil millones de hashes por segundo en una PC normal, eso no es un gran obstáculo, y los atacantes pueden usar fácilmente tablas precalculadas ya que el hash no tiene sal. NT es realmente horrible como un algoritmo de hash de contraseña.

Guido
fuente
¡Gracias! Esto parece prometedor, pero no funciona para mí; mirar la -dhuella de wpa_supplicant, consigo diferentes EAP-PEAP: Derived Session-Id, EAP-PEAP: Decrypted Phase 2 EAP, MSCHAPV2: auth_challenge - hexdump(len=16):, y MSCHAPV2: password hash - hexdump(len=...)salidas, y finalmente dos mensajes diciendo EAP-TLV: TLV Result - FailureyEAPOL authentication completed - result=FAILURE
Clément
Solo para aclarar: obtengo una MSCHAPV2: password hash - hexdumplínea en la traza de depuración fallida, lo cual es alentador (el no cifrado tiene una MSCHAPV2: password - hexdump_asciilínea en su lugar), pero la conexión falla
Clément
1
@ Clément Solo para asegurarse de que se está generando el hash correcto: el comando anterior ejecutado en su sistema calcula el mismo hash que esta calculadora en línea , ¿verdad?
Guido
1
Esto no funciona si la contraseña tiene más de 14 caracteres.
tjohnson
1
@Alden Muy barato. No hay forma de volver directamente del hash a la entrada, pero puede probar muchas contraseñas posibles y calcular sus hashes hasta que encuentre la que coincida. MD4 es muy rápido, mil millones en 2 segundos con una GPU de 6 años .
Gilles 'SO- deja de ser malvado'
16

Abra la terminal y escriba:

wpa_passphrase YOUR_SSID YOUR_PASSWORD

Salida de muestra:

network={
    ssid="YOUR_SSID"
    #psk="YOUR_PASSWORD"
    psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702
}

Abra el wpa_supplicant.confarchivo y agregue la siguiente línea:

psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702
GAD3R
fuente
2
Un WPA PSK (que es una combinación hash de SSID y contraseña) no es lo mismo que un NTLM hash / NtPasswordHash (que es un hash MD4 de 16 bits de la contraseña solamente).
Guido
55
El OP preguntó sobre WPA-EAP, no sobre WPA-PSK.
Guido
2
Lo siento si la publicación no lo dejó claro: esta es exactamente la solución en el primer no duplicado que enumeré. No hay una clave previamente compartida en la configuración por la que pregunto.
Clément
1
Esta puede no ser la pregunta específica que se hace, pero me ayudó a resolver mi problema. Gracias.
typelogic