保存Windows的无线网络配置文件凭据

3
有没有办法使用Windows API或其他方式来复制“802.1x设置”菜单中“保存凭据”按钮的功能?或者有其他方法可以永久保存PEAP凭据以供无线配置文件使用。
我尝试过使用WlanSetProfileEapXmlUserData函数来设置MsChapV2:Username和MsChapV2:Password。它会缓存凭据,但不会永久保存它们。
更新:成功找到存储在HKLM\SOFTWARE\Microsoft\Wlansvc\UserData\Profiles\{GUID}中的用户数据,但是它已经被加密了。我猜测CryptProtectData被用来加密它。如果我知道使用的盐是什么就好了。

请查看 netsh wlan 子命令。嗯,想了想,抱歉。这是我会做的事情。即启动IDA,然后检查我知道实现我想要查看的内容的东西,看它是如何工作的。 - 0xC0000022L
1
简单浏览了 netshell.dll。查看一下 Wlanapi.dll 中的函数(在 W7 中引入)。它们可能会帮助你入门。 - 0xC0000022L
谢谢你的建议。看起来 CryptProtectData 并不是直接从 Wlanapi.dll 调用的,而是通过某些其他函数通过 RPC 调用的。我们需要深入了解。 - pupkinsen
1
我在wlansvc.dll中找到了CryptProtectData调用。看起来这就是我需要的。没有盐,也没有LOCAL_MACHINE标志。因此,只有本地系统用户才能解码加密数据。我已经成功解码了Windows创建的一些配置文件数据,它们以某种二进制格式存在。我怀疑EapHostPeerCredentialsXml2Blob在这里起了作用。 - pupkinsen
2个回答

3

HKLM\SOFTWARE\Microsoft\Wlansvc\UserData\Profiles\{GUID}\MSMUserData包含与PEAP凭据相关的数据。

它使用CryptProtectData进行加密。解密后得到一个二进制块,很容易理解。其中包含纯文本的用户名和可能的登录域。密码信息再次使用CryptProtectData函数进行加密,并放置在块的末尾。

加密时没有使用LOCAL_MACHINE标志,因此只有本地系统用户可以生成新的凭据数据。当您将其放置到注册表键中后,Windows认为您拥有一个已保存的凭据集并且即使在验证失败的情况下也不会要求输入凭据。


0

您可以在我的回答https://superuser.com/a/1259271/780533中找到有关MSMUserData的WPA2-Enterprise凭据加密方案的更多信息,该回答是针对“如何在Windows 7上查找存储的无线网络的受保护EAP凭据?”问题的。特别地,在解密后的MSMUserData中,跟随用户名的“不可读字符”(请注意它们以01 00 00 00 d0 8c 9d df ...开头)是加密密码,因此您需要使用CryptProtectData再次进行解密。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接