Ocultando senhas no wpa_supplicant.conf com WPA-EAP e MSCHAP-v2

16

Meu wpa_supplicant.conf é assim:

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

Com esta combinação específica de WPA-EAP e MSCHAP-v2, existe uma maneira de não incluir minha senha em clear neste arquivo de configuração?

O ChangeLog parece afirmar que isso é viável ( 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

Algumas notas:

1 Isso afirma que usar uma senha com hash significa que o hash se torna a senha. Isso é tecnicamente verdade, mas pelo menos o hash é uma senha somente wifi , que é um progresso significativo ao vazar uma senha compartilhada que concede acesso a múltiplos serviços.

    
por Clément 25.04.2016 / 16:41

2 respostas

14

Você pode gerar o NtPasswordHash (também conhecido como hash de senha NTLM) da seguinte maneira:

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

Prefixo-o com "hash:" no arquivo wpa_supplicant.conf, ou seja,

password=hash:6602f435f01b9173889a8d3b9bdcfd0b

No macOS, o código iconv é UTF-16LE

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

Note que você não ganha muita segurança. Se um invasor encontrar o arquivo com o hash, ele poderá se unir à rede de maneira trivial (da mesma forma que seu computador faz), portanto, ter a senha criptografada não ajuda em nada. Se a senha for usada em qualquer outro lugar, o invasor terá que usar a força bruta para encontrar a senha original (ou seja, tente as senhas mais prováveis e calcule seu hash até encontrar uma correspondência). Como você pode calcular cerca de 1 bilhão de hashes por segundo em um PC comum, isso não é um grande obstáculo, e os invasores podem facilmente usar tabelas pré-computadas, já que o hash é sem sal. O NTML é realmente horrível como um hash de senha.

    
por 25.04.2016 / 16:58
10

Abra o terminal e digite:

wpa_passphrase YOUR_SSID YOUR_PASSWORD

Exemplo de saída:

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

Abra o arquivo wpa_supplicant.conf e adicione a seguinte linha:

psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702
    
por 25.04.2016 / 17:39