Nascondere le password in wpa_supplicant.conf con WPA-EAP e MSCHAP-v2


23

Il mio wpa_supplicant.confassomiglia a questo:

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 questa combinazione specifica di WPA-EAP e MSCHAP-v2, c'è un modo per non includere la mia password in chiaro in questo file di configurazione?

Il ChangeLog sembra affermare che questo è fattibile (dal 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

Alcune note:

1 Quella risposta afferma che l'uso di una password con hash significa che l'hash diventa la password. Ciò è tecnicamente vero, ma almeno l'hash è una password solo wifi , che rappresenta un progresso significativo rispetto alla perdita di una password condivisa che consente l'accesso a più servizi.

Risposte:


20

Puoi generare tu stesso NtPasswordHash(noto anche come hash della password NTLM) come segue:

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

Aggiungi il prefisso "hash:" nel file wpa_supplicant.conf, ad es

password=hash:6602f435f01b9173889a8d3b9bdcfd0b

Su macOS il codice iconv è UTF-16LE

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

Nota che non ottieni molta sicurezza. Se un utente malintenzionato trova il file con l'hash, può unirsi banalmente alla rete (allo stesso modo del tuo computer), quindi avere l'hash della password non aiuta affatto. Se la password viene utilizzata in qualsiasi altro luogo, l'utente malintenzionato dovrebbe utilizzare la forza bruta per trovare la password originale (ovvero provare le password più probabili e calcolare il loro hash fino a trovare una corrispondenza). Dal momento che puoi calcolare circa 1 miliardo di hash al secondo su un normale PC, questo non è un grosso ostacolo e gli attaccanti possono facilmente usare tabelle precalcolate poiché l'hash non è salato. NT è davvero orribile come un algoritmo di hashing della password.


Grazie! Sembra promettente, ma non funziona per me; guardando la -dtraccia di wpa_supplicant, ho diversi EAP-PEAP: Derived Session-Id, EAP-PEAP: Decrypted Phase 2 EAP, MSCHAPV2: auth_challenge - hexdump(len=16):, e MSCHAPV2: password hash - hexdump(len=...)le uscite, e infine due messaggi dicendo EAP-TLV: TLV Result - FailureeEAPOL authentication completed - result=FAILURE
Clément

Solo per chiarire: ottengo una MSCHAPV2: password hash - hexdumplinea nella traccia di debug non riuscita, il che è incoraggiante (quella non crittografata ha una MSCHAPV2: password - hexdump_asciilinea), ma la connessione fallisce
Clément

1
@ Clément Solo per assicurarsi che venga generato l'hash giusto: il comando sopra eseguito sul tuo sistema calcola lo stesso hash di questa calcolatrice online , giusto?
Guido,

1
Questo non funziona se la password è più lunga di 14 caratteri.
tjohnson,

1
@Alden Molto economico. Non c'è modo di tornare direttamente dall'hash all'input, ma puoi provare molte password possibili e calcolare i loro hash fino a trovare quella corrispondente. MD4 è molto veloce, 1 miliardo in 2 secondi con una GPU di 6 anni .
Gilles 'SO- smetti di essere cattivo'

16

Apri terminale e digita:

wpa_passphrase YOUR_SSID YOUR_PASSWORD

Uscita campione:

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

Apri il wpa_supplicant.conffile e aggiungi la seguente riga:

psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702

2
Un PSK WPA (che è una combinazione hash di SSID e password) non è lo stesso di un hash NTLM / NtPasswordHash (che è solo un hash MD4 a 16 bit della password).
Guido,

5
L'OP ha chiesto di WPA-EAP, non di WPA-PSK.
Guido,

2
Scusate se il post non ha chiarito: questa è esattamente la soluzione nel primo non duplicato che ho elencato. Non esiste una chiave precondivisa nella configurazione di cui sto chiedendo.
Clément,

1
questa potrebbe non essere la domanda specifica che viene posta, ma mi ha aiutato a risolvere il mio problema. Grazie.
dattiloscritto
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.