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

新闻资讯   2023-06-24 09:47   217   0  
声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

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


现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安设为星标”,否则可能看不到了


0x00 概述

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


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


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


我们将介绍以下工具:

WinSCPRoboMongoMobaXterm

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


0x01 WinSCP

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


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


保存在注册表中的凭据:

计算机\HKEY_CURRENT_USER\SOFTWARE\Martin Prikryl\WinSCP 2\Sessions


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

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


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


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


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


0x02 RoboMongo

RoboMongo 是一个 MongoDB 客户端,用于连接到 Mongo 数据库服务器。当您保存凭据时,它们会被加密并保存在一个 JSON 文件中:
%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


每个人都可以访问这个库,所以我们可以用它来解密凭据:

RoboMongo 使用加密来安全地存储凭据,但密钥以明文形式保存,这也不是最佳实践。密钥以明文形式存储,任何有权访问工作站的用户都可以解密凭据。

让我们看看另一个工具并分析凭据是如何保存的。

0x03 MobaXterm

MobaXTerm 是一个强大的工具,用于使用各种协议(如 SSH、Telnet、RDP、FTP 等)连接到远程计算机。想要在 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 加密的密码,第二行是在注册表中找到的加密值。


右移后,我们可以看到字节是相同的。实际上,使用 DPAPI 加密的数据始终具有第一个恒定的 ~60 字节元数据


我们添加了前二十个字节,我们成功解密了 DPAPI 密码,它对应于主密码的 SHA512 哈希,此哈希用于加密和解密凭据。

我们编写了一个工具,可以使用上述方法解密保存的凭据:


在这里,用于安全存储凭据的加密密钥是使用 DPAPI 保存的,这意味着只有保存凭据的用户才能访问它们。但是,具有管理员访问权限用户或获得受害者会话访问权限的攻击者也可以解密存储在计算机上的凭据。

0x04 工具解密

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


不断更新该工具——我们将在未来添加更多功能!

点击下方名片进入公众号

回复关键字【230430】获取工具链接



信 安 考 证



需要考以下各类安全证书的可以联系我,价格优惠、组团更便宜,还送【潇湘信安】知识星球1年!

CISP、PTE、PTS、DSG、IRE、IRS、NISP、PMP、CCSK、CISSP、ISO27001...


推 荐 阅 读





文章引用微信公众号"潇湘信安",如有侵权,请联系管理员删除!

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。