支持 NTLMv1 身份验证协议的系统的实际利用指南。尽管几乎不再需要 NTLMv1,但仍有数量惊人的组织仍在使用它,也许是在不知不觉中。然而,有些 VPN 产品目前仍然指示用户将 NLTM 身份验证降级到最低安全级别。给出的原因是 NLTMv2 不能与 RADIUS 或 MS-CHAPv2 一起使用,但是其他 VPN 解决方案似乎可以在仍然使用 NTLMv2 的同时解决该问题。
将涵盖两种不同的攻击方法:
-
认证降级->破解
-
LDAP 中继 -> 基于资源的约束委派 (RBCD)
当 LmCompatibilityLevel 注册表项设置为 0、1 或 2 时,可能会发生这些类型的攻击。这可以通过系统本身的注册表进行配置,也可以通过组策略强制执行。
攻击一:认证降级
我发现的第一个利用此问题的技术记录在Tim McGuffin的NetNTLMtoSilverTicket Github 存储库中。在自述文件中,它记录了执行此攻击的几个步骤:
-
配置响应程序以设置静态质询降级身份验证
-
强制系统进行身份验证
-
破解传入的哈希值
-
Sliver Ticket 和/或 DCSync
自述文件使用SpoolSample和Dementor通过滥用 Print Spooler 服务来强制进行身份验证。尽管一些组织现在选择禁用打印假脱机服务,但这种强制技术仍然非常重要。许多其他强制身份验证的方法已经在Petit Potam、DFSCoerce和Coercer等工具中被发现并实现。
下面是完整攻击的演示:
首先,您想要配置响应者以使用静态质询。默认情况下,这设置为随机。为了能够使用彩虹表破解后续哈希,挑战应设置为1122334455667788。
运行 Responder 时,您将需要使用类似于以下内容的命令:
Responder.py -I [接口] --lm
–lm 标志将允许您使用裂纹.sh的彩虹表几乎立即破解哈希值。如果这不起作用,您可以随时尝试 –disable-ess 标志。如果您无法删除 SSP,则将不再可能使用裂纹。sh 的彩虹表进行破解,尽管在使用 ntlmv1-multi 重新格式化后仍然可以使用 Hashcat 枚举它,或者使用assless - chaps,依赖于 pre - NT 哈希值的计算数据库。
为了进一步了解每种 NTLM 哈希类型的格式,我建议观看EvilMog的演讲– Anatomy of NTLMv1/NTLMv1-SSP。
下一步是以您认为合适的任何方式强制进行身份验证。大多数这些技术至少需要某种级别的身份验证,但是如果尚未应用安全更新,Petit Potam 将在未经身份验证的情况下工作。每个工具都有自己的语法,通常需要一组有效的域凭据以及侦听器和目标的 IP。
一旦破解,您将恢复被强制的计算机帐户的 NT 哈希值。然后,该哈希值可用于制作银票,然后可用于获得对系统的管理访问权限。如果主机是域控制器,则可以直接通过 PtH 将其用于 DCSync,而无需模拟任何其他帐户。
如果您想使用 Silver Ticket 路线,NetNTLMtoSilverTicket Github 存储库中对此进行了记录。我还推荐这篇博文,其中更详细地介绍了如何配置 Silver Ticket。
ticketer.py -nthash [DC HASH] -domain-sid [DOMAIN SID] -domain [DOMAIN] -spn cifs/[DC HOST NAME] -user-id [USER ID] -groups [DOMAIN GROUP ID] [USERNAME]br
当然,您需要域的 SID 以及用户和组 ID。您可能想要制作模拟现有域管理员的票证。我通常从ldapdomaindump或BloodHound数据中获取这些值。您可以通过使用 LM:NT 格式的破解 NT 哈希来使用哈希传递身份验证。
有时,crack.sh 会崩溃,因此破解哈希值并不是最佳选择,或者只是需要太长时间。虽然这种技术是最著名的,但还有一种同样有效的技术,根本不需要任何破解。
攻击2:LDAP中继
这通常会阻止通过PrinterBug或Petit Potam强制进行的身份验证被中继。由于 NTLM 包含用于完整 NTLM 协商的消息完整性代码 (MIC),因此无法在传输过程中删除签名。
NTLMv1 提供了一个例外,因为 NTLMv1 不支持计算 MIC。使用 Impacket 的ntlmrelayx .py,可以指定 –remove-mic 标志。这最初是为了利用 CVE-2019-1040,也称为“删除 MIC”。
利用 NTLMv1 的方式几乎与CVE-2019-1040完全相同。
攻击链如下所示:
-
设置 ntlmrelayx.py 以剥离 MIC,同时执行 RBCD 攻击
-
强制认证
-
为模拟用户制作服务票证
-
直流同步
与上次攻击相比,此攻击有更多先决条件:它需要至少两个域控制器在之间进行中继,并要求它们至少处于 Windows Server 2012 功能级别才能使 RBCD 攻击发挥作用。
首先,ntlmrelayx.py 设置为中继到其中一个域控制器:
ntlmrelayx.py -t ldaps://[DOMAIN CONTROLLER] --remove-mic -smb2support --delegate-accessbr
然后触发强制身份验证,目标是第二个域控制器。
然后,身份验证将中继到 LDAP,后者创建一个计算机帐户,并通过将新计算机帐户的 SID 添加到域控制器的 msDS-AllowedToActOnBehalfOfOtherIdentity 属性来修改目标域控制器上的委派权限。
一旦完成,就可以执行基于资源的约束委托攻击。
然后可以模拟域管理员来创建服务票证。
getST.py -spn cifs/[RELAYED DC] -impersonate
创建此票证后,就可以执行两种攻击来从域控制器恢复 NT 哈希值:
-
以管理员身份在系统上获取命令 shell,并使用ntdsutil等工具恢复 NTDS.dit 数据库[](https://www.trustedsec.com/blog/manipulating-user-passwords-without-mimikatz/)
-
对域控制器执行 DCSync 攻击以通过网络提取 NT 哈希值
此外,该 RBCD 可以通过影子凭证攻击进行交换。
原文始发于微信公众号(网络安全交流圈):针对NTLMv1的实用攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论