Скрытие паролей в wpa_supplicant.conf с WPA-EAP и MSCHAP-v2

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

Некоторые заметки:

  • Использование другого пароля не вариант, так как я не контролирую эту сеть (это корпоративная сеть, и одно имя пользователя / пароль используется для доступа ко всем службам, включая подключение к Wi-Fi).

  • Несколько слов о дубликатах:

1 Этот ансер утверждает, что использование хешированного пароля означает, что хеш становится паролем. Это технически верно, но, по крайней мере, хеш является паролем только для Wi-Fi , что является значительным прогрессом по сравнению с утечкой общего пароля, предоставляющего доступ к нескольким службам.

Клеман
источник

Ответы:

20

Вы можете сгенерировать NtPasswordHash(он же хэш пароля NTLM) следующим образом:

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

Добавьте в префикс «hash:» в файле wpa_supplicant.conf, т.е.

password=hash:6602f435f01b9173889a8d3b9bdcfd0b

На macOS код iconv UTF-16LE

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

Обратите внимание, что вы не получаете много безопасности. Если злоумышленник найдет файл с хешем, он может тривиально подключиться к сети (так же, как ваш компьютер), поэтому хеширование пароля не поможет вообще. Если пароль используется где-либо еще, то злоумышленнику придется использовать грубую силу, чтобы найти оригинальный пароль (то есть попробовать наиболее вероятные пароли и вычислить их хэш, пока не найдет совпадение). Поскольку на обычном ПК вы можете вычислять около 1 миллиарда хэшей в секунду, это не является большим препятствием, и злоумышленники могут легко использовать предварительно вычисленные таблицы, поскольку хэш не засолен. NT действительно ужасен как алгоритм хеширования паролей.

Guido
источник
Благодарность! Это выглядит многообещающе, но это не работает для меня; глядя на -dслед wpa_supplicant, я получаю разные EAP-PEAP: Derived Session-Id, EAP-PEAP: Decrypted Phase 2 EAP, MSCHAPV2: auth_challenge - hexdump(len=16):и MSCHAPV2: password hash - hexdump(len=...)выходы, и , наконец , два сообщения о том , EAP-TLV: TLV Result - FailureиEAPOL authentication completed - result=FAILURE
Клеман
Просто чтобы уточнить: я получаю MSCHAPV2: password hash - hexdumpстроку в неудачной трассировке отладки, что обнадеживает (у незашифрованной MSCHAPV2: password - hexdump_asciiстроки есть строка), но соединение не удается
Clément
1
@ Clément Просто чтобы убедиться, что генерируется правильный хеш: вышеуказанная команда, выполняемая в вашей системе, вычисляет тот же хеш, что и этот онлайн-калькулятор , верно?
Гвидо,
1
Это не работает, если пароль длиннее 14 символов.
tjohnson
1
@ Алден Очень дешево. Невозможно вернуться непосредственно от хэша к входу, но вы можете попробовать множество возможных паролей и вычислить их хэши, пока не найдете соответствующий. MD4 очень быстрый, 1 миллиард за 2 секунды с 6-летним GPU .
Жиль "ТАК - перестань быть злым"
16

Откройте терминал и введите:

wpa_passphrase YOUR_SSID YOUR_PASSWORD

Пример вывода:

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

Откройте wpa_supplicant.confфайл и добавьте следующую строку:

psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702
GAD3R
источник
2
WPA PSK (который представляет собой хешированную комбинацию SSID и пароля) - это не то же самое, что хеш NTLM / NtPasswordHash (который является 16-битным MD4-хэшем только для пароля).
Гвидо
5
ФП спросил о WPA-EAP, а не о WPA-PSK.
Гвидо
2
Извините, если пост не прояснил: это именно то решение, которое я нашел в первом неповторном экземпляре. В конфигурации, о которой я спрашиваю, нет предварительного общего ключа.
Clément
1
это может быть не конкретный вопрос, который нужно задать, но он помог мне решить мою проблему. Спасибо.
typelogic