Skip to main content

历史漏洞的利用

CVE-2020-1472 ZeroLogon漏洞

因为脆弱的密码学设计,攻击者可以绕过认证并模仿任何域主机,包括域控制器,以实现提权。

Zerologon 的核心问题是 Netlogon 远程协议的加密实现中存在缺陷。该协议使用 AES-CFB8 加密方案的自定义实现,这需要一个初始化向量 (IV)。Microsoft 的实现使用 16 个零字节的固定 IV,使其容易受到攻击。

该漏洞允许攻击者模仿网络上的任何计算机,包括域控制器本身,并在目标域控制器上执行远程过程调用 (RPC)。攻击者可以通过向域控制器发送一系列具有全零客户端凭证的特制 Netlogon 消息来利用此漏洞,这导致域控制器接受攻击者作为具有特权的有效用户,从而使攻击者可以完全接管域。

这里我们使用来自 https://github.com/leitosama/SharpZeroLogon 的 exp。在之前的章节中,我们使用该工具的检测模式检测出了 dc01 受该漏洞影响。我们再来回顾一下:

在域内环境的话,我们只需要指定域控制器即可,发现该域控可被 zerologon 漏洞的攻击所接管。

image.png

增加 -reset 选项,来重置 dc01 主机的凭证:

image.png

这时,dc01 主机的哈希被重置为显示出的指定 NTLM。得到了 dc01 主机的新哈希后,我们可以使用 CobaltStrike 内置的 pth 命令。但是该命令需要当前主机的提升特权,而且因为会补丁 lsass.exe,一方面是特征较为显著,另一方面是会被 PPL 所阻止 (我们会在下一章节详细讲解 PTH 以及 PPL) 。

image.png

image.png

我们可以使用 Impacket 中的 secretdump 脚本来实现:

proxychains secretsdump.py  -dc-ip 172.16.1.11 -just-dc -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'dc01$'@prod.raven-med.local

image.png


CVE-2021-42278 NoPAC漏洞

该漏洞实际上利用了主机账号的伪造,攻击者可以从普通用户提升为域管理员。PAC默认情况下,因为考虑到 BYOD 政策,普通域用户可以最多添加 10 台 计算机。计算机账户 Kerberos 票据中的一种数据结构特殊的账户它包含与普通用户账户不同授权数据是,计算机账户以 $ 结尾,例如组归属信息 Srv01$在 Kerberos 身份认证过程中,KDC 向用户颁发包含 PAC 的 TGT,当用户请求访问服务时,TGT 将提交给服务,该服务会验证 PAC。

image.png

NoPac 漏洞

当添加了新的计算机,因为用户由于服务所有者,自然拥有 PAC 添加不正确验证而产生计算机写权限能够伪造或可以修改 PACSPNsAMAccountName 的攻击者可以利用此漏洞提升他们在目标系统上的权限等属性 (与 CVE-2022-26923 有异曲同工之妙)要利用此漏洞,攻击者需要已经获得清除计算机的 SPN,然后修改 sAMAccountName 属性,修改为与内普通用户权限一致 ( SPN 会随着 sAMAccountName 的改变而改变,因此需要先清除 SPN)。然后,攻击者使用 Rubeus 为新添加的主机申请一张 TGT,但由于我们修改用户了主机的名称,所以 /user 选项应该与域控的一致 (但没有 $ 结尾)。接着,恢复新添加主机PACsAMAccountName 初始名称。最后,使用之前请求的 TGT 通过 S4U2Self 来申请 TGS,因为 TGT 中的 sAMAccountName 查找不到,于是 KDC 添加额外的特权信息了一个 $ 后进行查找例如自然就找到了管理员组的成员归属。当修改后的 PAC 提供给服务时,并没有得到正确验证,攻击者获得提升的特权,从而允许他们破坏其他系统并有可能控制

听起来需要多个步骤可以完成,但这里我们可以使用来自 https://github.com/Ridter/noPacexp。exp,一键式地帮助我们完成利用。

指定明文帐号密码,以及域名,用扫描模式检测一下漏洞的存在

image.png

接下来,我们需要利用这个漏洞创建一个新的计算机帐号,指定计算机名密码服务类型。该工具集成了 Rubeus 中 S4U 的功能,因此能生成一张 Dc05$ 的 TGT 并将其转换为 CIFS 的 TGS

nopac.exe -domain white-bird.local -user serveradm -pass "Summer2024!" /dc dc05.white-bird.local /mAccount nopac /mPassword Passw0rd /service cifs /ptt

image.png

于是,我们可以访问 dc05 的资源了。

image.png