解密WinSCP/MobaXterm密码(附工具)

admin 2023年6月24日00:45:26评论95 views字数 2187阅读7分17秒阅读模式
声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

来源:Medium,作者:@David Azria、@Zur Ulianitzky

0x00 概述

在我们的日常研究中,我们面临着可以从受感染的机器中提取什么以便横向移动或提取敏感信息的问题。

组织使用多种工具通过 SSH、FTP、TELNET 或 RDP 协议对服务器和数据库进行身份验证。这些工具提供了一种保存凭据以便更快地进行身份验证的方法。

在这篇博文中,我们将展示攻击者如何提取非明文凭据以便对数据库和服务器进行身份验证。

我们将介绍以下工具:

WinSCPRoboMongoMobaXterm

笔记:我们使用逆向工程技术来了解不同工具如何解密凭据,此处描述的方法不涉及利用漏洞

0x01 WinSCP

我们看到的第一个工具是 WinSCP,它提供了保存用于通过 SSH 连接到远程计算机的凭据详细信息的选项。

WinSCP 混淆凭据并将它们保存在 Windows 注册表中,凭据根本没有加密,任何知道用于混淆的算法的人都可以访问凭据。

保存在注册表中的凭据:

计算机HKEY_CURRENT_USERSOFTWAREMartin PrikrylWinSCP 2Sessions
解密WinSCP/MobaXterm密码(附工具)

WinSCP 的源代码在 GitHub 上,我们找到了使用的混淆算法:

  • https://github.com/winscp/winscp/blob/master/source/core/Security.cpp

解密WinSCP/MobaXterm密码(附工具)

我们使用了一个实现相同算法的工具来对凭据进行去混淆处理,并且我们获得了对明文凭据的访问权限:

解密WinSCP/MobaXterm密码(附工具)

实施混淆算法来保护存储的凭据并不是最佳做法,因为它很容易被逆转并导致凭据被盗。

让我们看看下一个分析的工具是否使用更好的方法来保护凭证存储。

0x02 RoboMongo

RoboMongo 是一个 MongoDB 客户端,用于连接到 Mongo 数据库服务器。当您保存凭据时,它们会被加密并保存在一个 JSON 文件中:
%USERPROFILE%.3Trobo-3t1.4.4robo3t.json
解密WinSCP/MobaXterm密码(附工具)
但是,用于加密凭据的密钥也以明文形式保存在文件中:
%USERPROFILE.3Trobo-3trobo3t.key:
解密WinSCP/MobaXterm密码(附工具)

这意味着获得计算机访问权限的攻击者可以使用以明文形式保存的密钥来解密凭据。
RoboMongo 是开源的,所以我们决定查看 GitHub 上的源代码,以了解如何使用密钥来加密密码。
我们发现 Qt 中的 SimplCrypt 库用于加密和解密凭据:

  • https://github.com/Studio3T/robomongo/blob/master/src/robomongo/utils/SimpleCrypt.cpp

解密WinSCP/MobaXterm密码(附工具)
每个人都可以访问这个库,所以我们可以用它来解密凭据:
解密WinSCP/MobaXterm密码(附工具)
RoboMongo 使用加密来安全地存储凭据,但密钥以明文形式保存,这也不是最佳实践。密钥以明文形式存储,任何有权访问工作站的用户都可以解密凭据。
让我们看看另一个工具并分析凭据是如何保存的。

0x03 MobaXterm

MobaXTerm 是一个强大的工具,用于使用各种协议(如 SSH、Telnet、RDP、FTP 等)连接到远程计算机。想要在 MobaXTerm 中保存凭据的用户将被要求创建一个主密码来保护他们的敏感数据。

默认选项是 MobaXTerm 将要求仅在新计算机上输入此主密码:

解密WinSCP/MobaXterm密码(附工具)

这意味着主密码保存在某个地方,MobaXTerm 将检索它以访问加密保存的凭据。

我们使用 Sysinternals Suite 中的 Procmon 来映射 MobaXTerm 访问的所有注册表项和文件,我们发现主密码保存在以下注册表项中:

计算机HKEY_CURRENT_USERSOFTWAREMobatekMobaXtermM
解密WinSCP/MobaXterm密码(附工具)

凭据和密码分别保存在 C 和 P 注册表项中,而 M 注册表项包含主密码。

Master Password好像是用DPAPI加密的,但是我们解密失败了。

在使用 base64 对其进行解码,并将其与使用 DPAPI 的标准加密密码进行比较后,我们了解到,始终相同的前 20 个 DPAPI 字节已被删除。

您可以在下面看到,第一行是我们使用 DPAPI 加密的密码,第二行是在注册表中找到的加密值。

解密WinSCP/MobaXterm密码(附工具)
右移后,我们可以看到字节是相同的。实际上,使用 DPAPI 加密的数据始终具有第一个恒定的 ~60 字节元数据
解密WinSCP/MobaXterm密码(附工具)
我们添加了前二十个字节,我们成功解密了 DPAPI 密码,它对应于主密码的 SHA512 哈希,此哈希用于加密和解密凭据。
我们编写了一个工具,可以使用上述方法解密保存的凭据:
解密WinSCP/MobaXterm密码(附工具)
在这里,用于安全存储凭据的加密密钥是使用 DPAPI 保存的,这意味着只有保存凭据的用户才能访问它们。但是,具有管理员访问权限用户或获得受害者会话访问权限的攻击者也可以解密存储在计算机上的凭据。

0x04 工具解密

上面使用的所有工具都可以在我们的Github存储库上以开源形式获得。只需运行它,您将获得以明文形式保存的所有凭据。

不断更新该工具——我们将在未来添加更多功能!
解密WinSCP/MobaXterm密码(附工具)

工具链接

链接

https://github.com/XMCyber/XMCredentialsDecryptor


原文始发于微信公众号(潇湘信安):解密WinSCP/MobaXterm密码(附工具)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月24日00:45:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   解密WinSCP/MobaXterm密码(附工具)https://cn-sec.com/archives/1828404.html

发表评论

匿名网友 填写信息