Сохранение учетных данных профиля беспроводной сети Windows

Есть ли способ воспроизвести функциональность кнопки «Сохранить учетные данные» в меню «Настройки 802.1x» с помощью Windows API? Или какой-либо другой способ навсегда сохранить учетные данные PEAP для профиля беспроводной сети.

Я пробовал использовать функцию WlanSetProfileEapXmlUserData для установки MsChapV2:Username и MsChapV2:Password. Он кэширует учетные данные, но не сохраняет их постоянно.

UPD: удалось найти пользовательские данные, хранящиеся в HKLM\SOFTWARE\Microsoft\Wlansvc\UserData\Profiles\{GUID}, но они зашифрованы. Я предполагаю, что CryptProtectData используется для его шифрования. Если бы я только знал, какая соль используется.


person pupkinsen    schedule 18.03.2013    source источник
comment
Проверьте подкоманду netsh wlan. Хм, если подумать, извините. Это то, что я бы сделал. т.е. запустите IDA, а затем проверьте что-то, что, как я знаю, реализует то, что я хочу, чтобы увидеть, что оно делает.   -  person 0xC0000022L    schedule 19.03.2013
comment
Взглянул на netshell.dll. Ознакомьтесь с функциями из Wlanapi.dll (представлены в W7). Они могут помочь вам начать.   -  person 0xC0000022L    schedule 19.03.2013
comment
Спасибо за совет. Похоже, что CryptProtectData вызывается не из Wlanapi.dll напрямую, а через какую-то другую функцию, вызываемую RPC. Нам нужно идти глубже.   -  person pupkinsen    schedule 20.03.2013
comment
Я нашел вызов CryptProtectData в wlansvc.dll. Похоже, это тот, который мне нужен. Соли нет и флага LOCAL_MACHINE тоже нет. Таким образом, только пользователь локальной системы может декодировать зашифрованные данные. Мне удалось декодировать некоторые данные профиля, созданные Windows, и они представлены в каком-то двоичном формате. Я подозреваю, что здесь замешан EapHostPeerCredentialsXml2Blob.   -  person pupkinsen    schedule 20.03.2013


Ответы (2)


HKLM\SOFTWARE\Microsoft\Wlansvc\UserData\Profiles\{GUID}\MSMUserData содержит данные, относящиеся к учетным данным PEAP. Он зашифрован с помощью CryptProtectData. Расшифровка дала нам бинарный блоб, который, к счастью, легко понять. Он содержит имя пользователя и, возможно, домен входа в систему в виде обычного текста. Информация о пароле снова шифруется с помощью функции CryptProtectData и помещается ближе к концу большого двоичного объекта.

Шифрование выполняется без флага LOCAL_MACHINE, поэтому только пользователь локальной системы может генерировать новые учетные данные. После того, как вы поместите его в раздел реестра, Windows считает, что у вас есть сохраненный набор учетных данных, и никогда не будет запрашивать их даже в случае неудачной аутентификации.

person pupkinsen    schedule 22.03.2013

Дополнительную информацию о схеме шифрования учетных данных WPA2-Enterprise MSMUserData можно найти в моем ответе https://superuser.com/a/1259271/780533 на вопрос «Как найти защищенные учетные данные EAP беспроводной сети, хранящиеся в Windows 7?» вопрос. В частности, «нечитаемые символы» (обратите внимание, что они начинаются с 01 00 00 00 d0 8c 9d df ...), следующие за именем пользователя в расшифрованном MSMUserData, являются зашифрованным паролем, поэтому вам необходимо снова расшифровать его с помощью CryptProtectData.

person Andrea Giudiceandrea    schedule 22.10.2017