来源:Medium,作者:@David Azria、@Zur Ulianitzky
现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安“设为星标”,否则可能看不到了!
0x00 概述
组织使用多种工具通过 SSH、FTP、TELNET 或 RDP 协议对服务器和数据库进行身份验证。这些工具提供了一种保存凭据以便更快地进行身份验证的方法。
在这篇博文中,我们将展示攻击者如何提取非明文凭据以便对数据库和服务器进行身份验证。
我们将介绍以下工具:
WinSCP
RoboMongo
MobaXterm
笔记:我们使用逆向工程技术来了解不同工具如何解密凭据,但此处描述的方法不涉及利用漏洞 。
0x01 WinSCP
WinSCP 混淆凭据并将它们保存在 Windows 注册表中,凭据根本没有加密,任何知道用于混淆的算法的人都可以访问凭据。
保存在注册表中的凭据:
计算机\HKEY_CURRENT_USER\SOFTWARE\Martin Prikryl\WinSCP 2\Sessions
WinSCP 的源代码在 GitHub 上,我们找到了使用的混淆算法:
我们使用了一个实现相同算法的工具来对凭据进行去混淆处理,并且我们获得了对明文凭据的访问权限:
实施混淆算法来保护存储的凭据并不是最佳做法,因为它很容易被逆转并导致凭据被盗。
让我们看看下一个分析的工具是否使用更好的方法来保护凭证存储。
0x02 RoboMongo
%USERPROFILE%\.3T\robo-3t\1.4.4\robo3t.json
%USERPROFILE\.3T\robo-3t\robo3t.key:
这意味着获得计算机访问权限的攻击者可以使用以明文形式保存的密钥来解密凭据。
RoboMongo 是开源的,所以我们决定查看 GitHub 上的源代码,以了解如何使用密钥来加密密码。
我们发现 Qt 中的 SimplCrypt 库用于加密和解密凭据:
https://github.com/Studio3T/robomongo/blob/master/src/robomongo/utils/SimpleCrypt.cpp
0x03 MobaXterm
默认选项是 MobaXTerm 将要求仅在新计算机上输入此主密码:
这意味着主密码保存在某个地方,MobaXTerm 将检索它以访问加密保存的凭据。
我们使用 Sysinternals Suite 中的 Procmon 来映射 MobaXTerm 访问的所有注册表项和文件,我们发现主密码保存在以下注册表项中:
计算机\HKEY_CURRENT_USER\SOFTWARE\Mobatek\MobaXterm\M
凭据和密码分别保存在 C 和 P 注册表项中,而 M 注册表项包含主密码。
Master Password好像是用DPAPI加密的,但是我们解密失败了。
在使用 base64 对其进行解码,并将其与使用 DPAPI 的标准加密密码进行比较后,我们了解到,始终相同的前 20 个 DPAPI 字节已被删除。
您可以在下面看到,第一行是我们使用 DPAPI 加密的密码,第二行是在注册表中找到的加密值。
0x04 工具解密
上面使用的所有工具都可以在我们的Github存储库上以开源形式获得。只需运行它,您将获得以明文形式保存的所有凭据。
点击下方名片进入公众号
回复关键字【230430】获取工具链接
信 安 考 证
CISP、PTE、PTS、DSG、IRE、IRS、NISP、PMP、CCSK、CISSP、ISO27001...
推 荐 阅 读