Masquage des mots de passe dans wpa_supplicant.conf avec WPA-EAP et MSCHAP-v2

23

Mon wpa_supplicant.confressemble à ceci:

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"
}

Avec cette combinaison spécifique de WPA-EAP et MSCHAP-v2, existe-t-il un moyen de ne pas inclure mon mot de passe en clair dans ce fichier de configuration?

Le ChangeLog semble affirmer que c'est faisable (depuis 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

Quelques notes:

  • L'utilisation d'un mot de passe différent n'est pas une option, car je n'ai aucun contrôle sur ce réseau (il s'agit d'un réseau d'entreprise et un seul nom d'utilisateur / mot de passe est utilisé pour accéder à tous les services, y compris la connexion au Wifi).

  • Un mot sur les doublons:

1 Cet anser affirme que l'utilisation d'un mot de passe haché signifie que le hachage devient le mot de passe. C'est techniquement vrai, mais au moins le hachage est un mot de passe uniquement en wifi , ce qui représente une avancée significative par rapport à la fuite d'un mot de passe partagé donnant accès à plusieurs services.

Clément
la source

Réponses:

20

Vous pouvez générer le NtPasswordHash(hachage de mot de passe NTLM) vous-même comme suit:

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

Préfixez-le avec "hash:" dans le fichier wpa_supplicant.conf, c'est-à-dire

password=hash:6602f435f01b9173889a8d3b9bdcfd0b

Sur macOS, le code iconv est UTF-16LE

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

Notez que vous ne gagnez pas beaucoup de sécurité. Si un attaquant trouve le fichier avec le hachage, il peut alors rejoindre trivialement le réseau (de la même manière que votre ordinateur), donc avoir haché le mot de passe n'aide pas du tout. Si le mot de passe est utilisé ailleurs, l'attaquant devrait utiliser la force brute pour trouver le mot de passe d'origine (c'est-à-dire essayer les mots de passe les plus probables et calculer leur hachage jusqu'à ce qu'ils trouvent une correspondance). Comme vous pouvez calculer environ 1 milliard de hachages par seconde sur un PC ordinaire, ce n'est pas un gros obstacle, et les attaquants peuvent facilement utiliser des tables précalculées car le hachage n'est pas salé. NT est vraiment horrible comme algorithme de hachage de mot de passe.

Guido
la source
Merci! Cela semble prometteur, mais cela ne fonctionne pas pour moi; regardant la -dtrace de wpa_supplicant, je reçois différents EAP-PEAP: Derived Session-Id, EAP-PEAP: Decrypted Phase 2 EAP, MSCHAPV2: auth_challenge - hexdump(len=16):et les MSCHAPV2: password hash - hexdump(len=...)sorties, et enfin deux messages disant EAP-TLV: TLV Result - FailureetEAPOL authentication completed - result=FAILURE
Clément
Juste pour clarifier: j'obtiens une MSCHAPV2: password hash - hexdumpligne dans la trace de débogage qui échoue, ce qui est encourageant (celle qui n'est pas chiffrée a une MSCHAPV2: password - hexdump_asciiligne à la place), mais la connexion échoue
Clément
1
@ Clément Juste pour être sûr de générer le bon hachage: la commande ci-dessus exécutée sur votre système calcule le même hachage que cette calculatrice en ligne , non?
Guido
1
Cela ne fonctionne pas si le mot de passe comporte plus de 14 caractères.
tjohnson
1
@Alden Très bon marché. Il n'y a aucun moyen de revenir directement du hachage à l'entrée, mais vous pouvez essayer de nombreux mots de passe possibles et calculer leurs hachages jusqu'à ce que vous trouviez celui qui correspond. MD4 est très rapide, 1 milliard en 2 secondes avec un GPU vieux de 6 ans .
Gilles 'SO- arrête d'être méchant'
16

Terminal ouvert et tapez:

wpa_passphrase YOUR_SSID YOUR_PASSWORD

Exemple de sortie:

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

Ouvrez le wpa_supplicant.conffichier et ajoutez la ligne suivante:

psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702
GAD3R
la source
2
Un PSK WPA (qui est une combinaison hachée de SSID et de mot de passe) n'est pas identique à un hachage NTLM / NtPasswordHash (qui est un hachage MD4 16 bits du mot de passe uniquement).
Guido
5
Le PO a posé des questions sur le WPA-EAP, pas sur le WPA-PSK.
Guido
2
Désolé si le message n'a pas été clair: c'est exactement la solution dans le premier non-duplicata que j'ai listé. Il n'y a pas de clé pré-partagée dans la configuration que je demande.
Clément
1
ce n'est peut-être pas la question spécifique posée, mais cela m'a aidé à résoudre mon problème. Merci.
typelogic