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

23

Minha wpa_supplicant.confaparência é 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 essa combinação específica de WPA-EAP e MSCHAP-v2, existe uma maneira de não incluir minha senha clara 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 Esse aviso afirma que o uso de uma senha com hash significa que o hash se torna a senha. Isso é tecnicamente verdade, mas pelo menos o hash é uma senha apenas de wifi , que é um progresso significativo ao vazar uma senha compartilhada que concede acesso a vários serviços.

Clemente
fonte

Respostas:

20

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

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

Prefixe-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

Observe que você não ganha muita segurança. Se um invasor encontrar o arquivo com o hash, ele poderá ingressar na rede de maneira trivial (da mesma forma que o seu computador), portanto, o hash da senha não ajuda em nada. Se a senha for usada em qualquer outro lugar, o invasor terá que usar força bruta para encontrar a senha original (por exemplo, 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 usar facilmente tabelas pré-computadas, já que o hash é sem sal. O NT é realmente horrível como um algoritmo de hash de senha.

Guido
fonte
Obrigado! Isso parece promissor, mas não está funcionando para mim; olhando para o -dtraço de wpa_supplicant, recebo diferentes EAP-PEAP: Derived Session-Id, EAP-PEAP: Decrypted Phase 2 EAP, MSCHAPV2: auth_challenge - hexdump(len=16):, e MSCHAPV2: password hash - hexdump(len=...)saídas, e, finalmente, duas mensagens dizendo EAP-TLV: TLV Result - FailureeEAPOL authentication completed - result=FAILURE
Clément
Apenas para esclarecer: eu recebo uma MSCHAPV2: password hash - hexdumplinha no rastreamento de depuração com falha, o que é encorajador (o não criptografado tem uma MSCHAPV2: password - hexdump_asciilinha), mas a conexão falha
Clément
1
@ Clément Apenas para garantir que o hash correto esteja sendo gerado: o comando acima executado em seu sistema calcula o mesmo hash que esta calculadora on-line , certo?
Guido
1
Isso não funciona se a senha tiver mais de 14 caracteres.
tjohnson
1
@ Olden Muito barato. Não há como voltar diretamente do hash para a entrada, mas você pode tentar várias senhas possíveis e calcular seus hashes até encontrar a correspondente. O MD4 é muito rápido, 1 bilhão em 2 segundos com uma GPU de 6 anos .
Gilles 'SO- stop be evil'
16

Terminal aberto e tipo:

wpa_passphrase YOUR_SSID YOUR_PASSWORD

Saída de amostra:

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

Abra o wpa_supplicant.confarquivo e adicione a seguinte linha:

psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702
GAD3R
fonte
2
Um WPA PSK (que é uma combinação de hash de SSID e senha) não é o mesmo que um hash NTLM / NtPasswordHash (que é um hash MD4 de 16 bits apenas da senha).
Guido
5
O OP perguntou sobre o WPA-EAP, não o WPA-PSK.
Guido
2
Desculpe se a postagem não deixou claro: esta é exatamente a solução na primeira não duplicada que listei. Não há chave pré-compartilhada na configuração que estou perguntando.
Clément
1
essa pode não ser a pergunta específica que está sendo solicitada, mas me ajudou a resolver meu problema. Obrigado.
Typelogic