解密Winscp客户端中保存的密码hash

君子藏器于身待时而动,安全不露圭角覆盂之安。

——AnonySec

https://payloads.cn

前言

WinSCP是一个Windows环境下使用的SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。而我们的主要目的是为了读取里面各种的SSH连接密码。

所有操作全部在管理员权限下进行

最新版Winscp为例

通过powershell脚本搞定,或者RDP直接登录连接查询等。 「绿色版无安装记录」

1
2
beacon> powershell-import /Users/anonysec/ListInstalledPrograms.ps1
beacon> powershell Get-list
18B6A955-5670-4950-80D6-BA57073CAF02

前提,目标得事先保存连接密码。

D22FE62A-7B30-4511-9C04-9258464CF131

确定Winscp存储位置

默认情况下,Winscp配置会存储在Windows对应的注册表项下(包括了连接的IP、用户名、密码Hash)。

HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions\

具体解密过程

  • 查看Winscp配置的Windows注册表(注册表项是固定的),如果有连接会话,再指定查询连接下所保存的密码Hash。
1
2
beacon> shell reg query "HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions"
beacon> shell reg query "HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions\root@192.168.144.128"

637E028F-A1C8-4CD1-8632-E299F7E43CE6

将查到的信息拷贝到本地的winscppwd.exe进行解密。

FA42B8F0-6909-45D7-9146-6E19D8720A14

  • RDP直接登录目标,导出Winscp配置文件,并下载到本地进行解密。
    (如果找到配置的ini文件,直接把对应文件down本地进行解密即可)

51B6E3C2-E260-441A-951D-21DC523A719F

image-20191010173601197

附脚本工具