使用WPA-EAP和MSCHAP-v2将密码隐藏在wpa_supplicant.conf中


23

我的wpa_supplicant.conf样子是这样的:

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

通过WPA-EAP和MSCHAP-v2的这种特定组合,是否有办法不在此配置文件中明确包含我的密码?

ChangeLog似乎声称这是可行的(自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

一些注意事项:

1分析器声称使用哈希密码意味着哈希成为密码。从技术上讲,这是正确的,但至少散列是用于wifi的密码,与泄漏授予多个服务访问权限的共享密码相比,这是一个重大进步。

Answers:


20

您可以自己生成NtPasswordHash(也称为NTLM密码哈希),如下所示:

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

在wpa_supplicant.conf文件中以“ hash:”为前缀,即

password=hash:6602f435f01b9173889a8d3b9bdcfd0b

在macOS上,iconv代码为 UTF-16LE

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

请注意,您不会获得太多安全性。如果攻击者找到带有散列的文件,则他们可以轻松地加入网络(与您的计算机相同),因此对密码进行散列完全没有帮助。如果在其他任何地方都使用了密码,则攻击者将不得不使用蛮力查找原始密码(即尝试使用最可能的密码并计算其哈希值,直到找到匹配的密码)。由于您可以在普通PC上每秒计算约10亿个哈希,因此这并不是一个大障碍,并且由于哈希值未加盐,攻击者可以轻松使用预先计算的表。作为密码哈希算法,NT确实很可怕。


谢谢!这看起来很有前途,但对我不起作用。看-d的wpa_supplicant的痕迹,我得到不同的EAP-PEAP: Derived Session-IdEAP-PEAP: Decrypted Phase 2 EAPMSCHAPV2: auth_challenge - hexdump(len=16):,和MSCHAPV2: password hash - hexdump(len=...)输出,最后两个消息说EAP-TLV: TLV Result - FailureEAPOL authentication completed - result=FAILURE
克莱门特

只是为了澄清:我得到一个MSCHAPV2: password hash - hexdump在失败的调试跟踪,这是令人鼓舞的(非加密的一个有一行MSCHAPV2: password - hexdump_ascii行,而不是),但连接失败
克莱门特

1
@Clément只是为了确保生成正确的哈希值:在系统上执行的上述命令的确计算出与该在线计算器相同的哈希,对吗?
Guido

1
如果密码长度超过14个字符,则此方法无效。
tjohnson

1
@Alden非常便宜。没有办法直接从哈希返回输入,但是您可以尝试很多可能的密码并计算其哈希值,直到找到匹配的密码为止。MD4速度非常快,使用6年的GPU可以在2秒内达到10亿
吉尔斯(Gilles)'所以

16

打开终端并输入:

wpa_passphrase YOUR_SSID YOUR_PASSWORD

样本输出:

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

打开wpa_supplicant.conf文件并添加以下行:

psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702

2
WPA PSK(是SSID和密码的哈希组合)与NTLM哈希/ NtPasswordHash(仅是密码的16位MD4哈希)不同。
Guido

5
OP询问的是WPA-EAP,而不是WPA-PSK。
Guido

2
抱歉,如果帖子没有清楚说明:这正是我列出的第一个非重复项中的解决方案。我要询问的配置中没有预共享密钥。
克莱门特

1
这可能不是要问的特定问题,但这帮助我解决了问题。谢谢。
typelogic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.