基于PyRDP工具从RDP流量中截获RDP NetNTLMv2哈希 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

基于PyRDP工具从RDP流量中截获RDP NetNTLMv2哈希

xiaohui 技术 2022-01-19 11:55:00
262992
收藏

导语:勒索软件组织将其作为攻击公共和私营部门的抓手,在 2019 年由远程桌面协议引起的攻击已经造成了 75 亿美元的损失。

远程桌面协议 (RDP) 在网络安全领域发挥的作用越老越大。勒索软件组织将其作为攻击公共和私营部门的抓手,在 2019 年由远程桌面协议引起的攻击已经造成了 75 亿美元的损失。在 2020 年,RDP 攻击增长了 768%。网络安全与基础设施安全局(Cybersecurity & Infrastructure Security Agency)等机构在其2020年的《勒索软件指南》(Ransomware Guide)中将RDP列为需要保护的焦点。而在另一方面,渗透测试团队正在定期使用RDP作为在网络内部进行横向移动、劫持会话和捕获哈希值等的有效工具。

GoSecure Titan Labs 团队看到了进一步探索哈希捕获主题的机会,这是任何进攻团队的必备工具。本文将研究 RDP 安全模式、它们如何工作以及如何使用 PyRDP(GoSecure 创建的库)通过 RDP 协议将其付诸行动以捕获 NetNTLMv2 哈希。这一努力始于每年长达一个月的Hacktoberfest期间的一个项目,该项目导致了PyRDP的几项改进。在这些改进中,我们让用户更容易捕获NetNTLMv2哈希。

首先,我们将介绍一种用于攻击性用例的技术,通过在NTLMSSP身份验证期间捕获NetNTLMv2哈希值来获得对远程RDP设备的访问。为了将其付诸实践,我们将利用 PyRDP 在 RDP 支持的两个主要身份验证场景中执行这些哈希的捕获:启用网络级别身份验证 (NLA) 和不启用 NLA。为了更多地了解这两种场景,让我们从详细介绍 RDP 协议中可用的安全模式开始。

RDP 安全模式

RDP 是一种通常用于通过 TCP/IP 使用终端客户端和服务器来远程管理计算机的协议。目前,它提供了不同类型的安全模式来加密客户端和服务器之间的通信:

RDP 标准安全性:根据客户端的支持和服务器选择的加密级别(低、客户端兼容、高、FIPS)对所有流量进行对称加密。这种方法在中间人攻击攻击的情况下是最不安全的,因为服务器控制加密方法并可以决定是否不需要加密,从而完全禁用它。

1.png

RDP 增强安全性:通过外部协议提供加密和安全机制。其中两种机制是:自RDP 5.2以来的TLS(传输层安全)和CredSSP,自RDP 6以来,除了使用TLS外,它还支持NLA(网络级别认证)。带有TLS的RDP还警告用户,如果服务器的证书是自签名的或不受信任的,可能会发生中间人攻击,但它不会阻止客户端接受风险。

当 RDP 使用 NLA 的增强安全性时,用于委派合适的身份验证方法的协议是凭据安全支持提供程序 (CredSSP)。这些授权的身份验证方法是 Kerberos 或 NTLMSSP,后者是用于捕获 NetNTLMv2 哈希的身份验证方法,这些哈希用于客户端和服务器之间的质询/身份验证消息。

通过网络级身份验证剖析身份验证

为了理解 NetNTLMv2 哈希捕获,本节将详细描述通过 NLA 进行的身份验证及其结构。为了简化这个过程,我们将把它分成四个阶段:

2.png

1.RDP 客户端和服务器之间建立了 TLS 连接;

2.CredSSP 的 SPNEGO 为客户端和服务器执行,以决定将使用哪种相互身份验证协议:Kerberos 或 NTLMSSP;

3.在这一步中,将发送服务器的公钥进行验证,并探测其真实性。这样做是为了避免中间人攻击;

4.一旦通过 TLS 和 SPNEGO 保护连接,客户端就会发送其凭据以进行身份验证。

我们的注意力将集中在最后一步,因为在使用 NTLMSSP 协议的情况下,客户端将以 NTLM 消息的形式发送凭据的哈希版本并将被拦截。这些消息是 ASN.1 编码的 TSRequest 结构,身份验证数据按以下顺序发送:

3.png

首先,客户端发送一个NEGOTIATION消息来启动NTLM认证,服务器端发送一个CHALLENGE消息来回应这个质询。在这个阶段,质询是包含随机数(用于防止重放攻击的随机字节序列)的 64 位值。然后,客户端使用个身份验证消息来响应这个请求,该消息包含完成身份验证过程所需的凭据。这是我们希望从客户短中提取质询响应(以 NTLMv2_RESPONSE 结构的形式)并进行中继或破解的阶段。

NTLMv2_RESPONSE结构很容易理解和解析,因为它只包含16字节的响应和可变大小的客户端质询。客户端的质询可以概括为使用从安全帐户管理器 (SAM) 或 Active Directory (AD) 获得的 NT 哈希构建的 LMv2 和 NTv2 哈希,并使用HMAC-MD5对用户和域名进行哈希。所有这些都形成了NetNTLMv2哈希,这是密码破解工具如 John the Ripper 或 hashcat所需要的。

使用 PyRDP 捕获 NetNTLMv2 哈希

PyRDPi 是我们开发的一个库,用于执行中间人攻击并试验 RDP 协议。在中间人攻击模式下,PyRDP有能力拦截NetNTLMv2哈希,即使它没有实服务器的证书和私钥,并且NLA是由服务器强制执行的。在本节中,我们将探索和描述两种可以执行哈希捕获的场景。

在第一种场景中,我们拥有受攻击服务器的证书和私钥。在本例中,RDP客户端和服务器之间的交互将在CredSSP支持下进行,PyRDP将以两种方式传输NTLMSSP消息。NetNTLMv2捕获是在RDP服务器发送CHALLENGE消息之后完成的,PyRDP从消息中提取服务器的CHALLENGE值,客户端响应PyRDP记录的哈希值,然后发送给RDP服务器继续身份验证过程。

4.png

我们最近实现了第二个场景:NLA 由服务器强制执行,但我们没有服务器的证书和私钥。在这个场景中,PyRDP将切断与原始服务器的连接,并继续进行客户端连接和NTLMSSP身份验证,以便执行前面所示的相同的NetNTLMv2提取。PyRDP在接收到客户端的NEGOTIATION消息后将生成CHALLENGE消息并发送它。通过这种方式,PyRDP可以控制质询值,稍后将接收AUTHENTICATION消息。

5.png

为了说明这种攻击,当 PyRDP 在未启用 NLA 的情况下运行(默认值,请参见——auth标志启用NLA攻击),并且客户端试图连接到执行NLA攻击的服务器,然后从AUTHENTICATION消息的哈希提取之后,日志如下所示:

6.png

请注意,在最后一个场景中,一旦提取了哈希,PyRDP 和客户端之间的连接就会关闭,因为中间人攻击进程无法完成服务器的连接,因为它受到 NLA 的保护。

总结

在本文中,我们展示了在RDP连接期间如何捕获NetNTLMv2,以及PyRDP可以用作一种实用的攻击工具。

本文翻译自:https://www.gosecure.net/blog/2022/01/17/capturing-rdp-netntlmv2-hashes-attack-details-and-a-technical-how-to-guide/如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务