0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NTLM中继+Zerologon漏洞利用的方法

蛇矛实验室 来源:蛇矛实验室 2024-07-14 11:15 次阅读

本期作者/ordar123

无需重置计算机帐户即可利用 Zerologon 的方法

什么是Netlogon 协议?

Active Directory中比较重要的一个服务:"Netlogon"服务,此服务在DC和域成员服务器上运行,为域身份验证提供重要服务,如果此服务停止成员服务器将无法登陆到域中。

客户端和认证服务器之间建立一个基于NETLOGON协议的安全会话有两个目的:一是用于认证;二是用于交换通信秘钥SessionKey。

Netlogon 认证过程简单来说就是是让客户端 (域内计算机)和服务器(域控制器)向分别对方证明他们都知道一个共同的秘密。此共享秘密是客户端计算机帐户密码的散列(其实就是NTLM)。

Netlogon协议身份验证握手过程详细说可以分为以下几个步骤:

客户端启动Netlogon会话,客户端和认证服务器通过该会话相互交换随机生成的8字节挑战(挑战就是一个随机数)。

客户端和认证服务器,同时使用密钥派生函数(KDF全称Key derivation function)将两个挑战与共享秘密(NTLM)混合来计算出SessionKey。SessionKey=KDF(NTLM,client challenge+server challenge),如果客户端和认证服务器使用的NTLM相同的话,客户端和认证服务器就拥有同一个SessionKey了,这一步是认证的基础。

客户端使用SessionKey和客户端挑战使用AES-CFB8算法加密后结果A1发给服务端,然后认证服务器内部使用同样的算法AES-CFB8算法生成A2,如果A1等于A2,那么认证服务器就知道客户端是知道NTLM的,然后客户端在服务器这里就认证通过了。同理,认证服务器使用SessionKey和服务端挑战加密后结果B1发给客户端,客户端内部使用同样的方法生成B2,如果B1等于B2,那么客户端就知道了服务端是知道NTLM的。到这里认证过程就结束了,双方互相认证了对方的身份;同时协商出来了一个加密密钥SessionKey,这样客户端和认证服务器后续的所有消息都使用SessionKey来加密,然后SessionKey来解密对方的消息。

这个过程直接引用网上的图片如下:

ee192f7e-406e-11ef-b8af-92fbcf53809c.png

ZeroLogon(CVE-2020-1472)

漏洞原理与风险

该漏洞存在一个加密缺陷,其中对于每256个随机生成的密钥中的1个,对由所有0组成的纯文本进行加密将导致也包含所有0的密文。简单来说就是通过将Client challenge置为0的方式来碰撞密文client credential为0的情况,不断重复这个过程直至服务器那端计算出来的密文hash也全是0,从而可以绕过认证过程。详情可以查看ZeroLogon(CVE-2020-1472) 分析与狩猎。

Netlogon协议在Active Directory中主要由工作站和服务器使用,以通过安全通道与域控制器进行通信。因为加入Active Directory的每个工作站或服务器都有一个计算机帐户,Active Directory知道该帐户的密码。Active Directory拥有多个从同一密码派生的密钥,这些密钥可用于Kerberos和NTLM等身份验证协议。

最初的Zerologon攻击的工作原理是将域中域控制器的Active Directory帐户的密码重置为空字符串。这允许攻击者以该域控制器的身份向另一个域控制器甚至同一域控制器进行身份验证。能够以域控制器身份进行身份验证是一项高权限,因为域控制器可以使用DRSUAPI协议同步Active Directory数据,包括NT哈希和Kerberos密钥。反过来,这些密钥可用于模拟域中的任何用户,或创建伪造的 Kerberos 票证。

这其实是有风险的。在Active Directory中重置域控制器计算机帐户密码为空的那一刻,DC 处于不一致状态。因为存储在注册表和内存lsass.exe中的加密计算机帐户密码不会更改。Active Directory中同一帐户的密码现在已更改,这将影响从此域控制器到此域控制器的身份验证。如果重新启动域控制器,则各种服务将不再启动,因为它们想要从Active Directory读取信息。如果执行漏洞利用的速度足够快,则可以从注册表中恢复原始密码,但是任然有风险,这就是为什么不建议在生产环境中利用它的原因。

什么是NTLM中继?

NTLM协议的认证过程分为三步:

协商:主要用于确认双方协议版本。

质询:就是挑战(Chalenge)/ 响应(Response)。

验证:验证主要是在质询完成后,验证结果,是认证的最后一步。

NTLM协议的认证过程如下图所示:

ee1d889e-406e-11ef-b8af-92fbcf53809c.png

应用服务器在收到用户客户端的认证信息后,由于本身没有存储用户的NT哈希,所以必须依赖域服务器进行认证,将收到的认证信息发送给域服务器,这个过程基于NETLOGON协议。服务器使用 Netlogon RPC 协议将身份验证消息发送到域控制器,该协议将此会话密钥(SessionKey)返回给服务器。如下图所示。

ee219006-406e-11ef-b8af-92fbcf53809c.png

NTLM中继攻击(NTLM Relay)本质上是中间人的利用手法:欺骗客户端向自己发起认证,自己再将完整认证过程转发给服务端,达到绕过挑战响应认证直接获取服务端权限的目的。

攻击者让客户端向攻击者服务器发起 NTLM 请求

攻击者服务器将客户端的NTLM 请求转发给真实服务器,真实服务端返回challenge

攻击者服务器将收到的challenge转发送给客户端

客户端返回response,攻击者服务器将response转发送给服务端

服务端验证通过,攻击者服务器获得服务端权限

如下图所示:

ee384e0e-406e-11ef-b8af-92fbcf53809c.png

由此可以得知,如果攻击者控制了任何一台域内主机(域内主机均具有自身主机账号的口令NTLM值),只要能获取此前客户端请求用户发送给应用服务器的认证信息,攻击者就可以向域服务器发起NETLOGON会话,从而获取SessionKey,随后可以发起重放攻击。

什么是DCSync

不同域控制器(DC)之间,每15分钟都会有一次域数据的同步。当一个域控制器(DC1)想从其他域控制器(DC2)获取数据时,DC1会向DC2发起一个GetNCChanges请求,该请求的数据包括需要同步的数据。如果需要同步的数据比较多,则会重复上述过程。DCSync就是利用的这个原理,通过DirectoryReplicationService(DRS)服务的GetNCChanges接口向域控发起数据同步请求。

在默认情况下,只有Administrators、Domain Controllers和Enterprise Domain Admins组内的用户有权限使用DCSync。

以前获取域的账号口令信息,需要登录域服务器,在域服务器上运行代码才可以获取。DCSync的最大特点,在于不用登录域服务器,即可远程通过域数据同步复制的方式获得想要的用户口令信息。

NTLM中继+Zerologon

在Active Directory中,有两种主要身份验证协议:NTLM和Kerberos。Kerberos是去中心化的,基于加密和共享机密工作。NTLM是中心化的,如果使用域帐户认证,则需要与域控制器通信才能工作。这是因为NTLM使用质询-响应身份验证机制,其中对服务器发送的质询执行加密操作,以证明用户拥有其密码(或确切地说是其密码的哈希版本)。对于ActiveDirectory帐户,服务器实际上并不知道尝试进行身份验证的用户的密码是什么,因此它会将其转发给域控制器,域控制器会告诉服务器响应是否适合给定的质询。这种转发实际上是通过Netlogon协议完成的,其中存在Zerologon漏洞。

NTLM协议的一个弱点是,如果攻击者可以诱使用户使用NTLM向他们进行身份验证,则他们可以将身份验证消息转发到其他服务器并模拟此服务器上的用户,这被称为NTLM中继。

“打印机错误”功能允许攻击者通过NTLM触发任何启用了后台处理服务的计算机的身份验证,还可以通过使计算机帐户向攻击者的IP地址而不是主机名进行身份验证来强制使用NTLM进行身份验证,从而使其使用NTLM而不是Kerberos来认证,这为NTLM中继提供了触发条件。

NTLM协议执行身份验证时对消息进行签名和加密的加密密钥称为SessionKey,SessionKey是基于用户的NT哈希和协议中协商的某些属性生成的。这意味着为了计算SessionKey,服务器需要拥有用户的NT哈希。除非服务器是域控制器,否则它不具有该NT哈希。因此,服务器会使用NetlogonRPC协议将身份验证消息发送到域控制器,该协议将此会话密钥返回给服务器。

我们可以使用中继连接直接向DRSUAPI协议的RPC端点进行身份验证,虽然该协议需要签名和加密,但我们可以使用Zerologon获取SessionKey,并遵守与该协议通信的所有加密要求。

所有这些结合在一起,我们有一个全新的攻击,它不依赖于重置机器帐户的密码来利用。它确实具有原始攻击所没有的一些先决条件,尽管这些先决条件默认存在,并且可能在大多数AD中起作用:

触发打印机bug需要一个帐户

打印后台处理程序服务应在DC上运行

DC应该容易受到Zerologon的攻击

域中至少应有2个DC,因为中继回同一DC不起作用

最终流程如下图所示:

ee3c7948-406e-11ef-b8af-92fbcf53809c.png

攻击实践

实验环境

ee403c72-406e-11ef-b8af-92fbcf53809c.png

ee43b5dc-406e-11ef-b8af-92fbcf53809c.png

Zerologon漏洞

漏洞复现

这里使用poc直接验证,如下图所示,证明DC1存在zerologon漏洞,并且成功dump出域控hash。

ee47d0fe-406e-11ef-b8af-92fbcf53809c.png

NTLM中继+Zerologon

环境搭建

接下来恢复快照,恢复DC到zerologon利用之前的快照。

然后搭建DC2

1.先设置DNS为DC的ip

ee4b4446-406e-11ef-b8af-92fbcf53809c.png

2.加入域rangenet.cn,同时将计算机名改成dc2。

ee56120e-406e-11ef-b8af-92fbcf53809c.png

3.重启之后搭建域环境

选择Active Directory 域服务,然后将此服务器提升为域控制器。这个过程相比大家都比较熟,这里就简化步骤了,只截图关键部分。

ee5a3794-406e-11ef-b8af-92fbcf53809c.png

选择将域控制器添加到现有域,然后更改操作所需凭据,凭据为主域控DC的账号密码。后面都是下一步就完了,之后会重启,重启之后输入的是主域控DC的账号密码。

ee635536-406e-11ef-b8af-92fbcf53809c.png

这样在同一个域(rangenet.cn)中就会有两个域控,接下来将两个域控互相设为备份。

4.互相设置DNS名称服务器

进入主域控DC,然后打开DNS管理器。在正向查找区域中找到rangenet.cn,然后右键选择属性,选择名称服务器选项卡,然后添加新的名称服务器。

ee6735b6-406e-11ef-b8af-92fbcf53809c.png

然后将备域控DC2的域名和ip填进去。

进入DC2,做同样的操作,将DC的名称服务器添加进去。

这样主域控DC和备域控DC2就互相冗余了。

ee7b4c72-406e-11ef-b8af-92fbcf53809c.png

ee7f3710-406e-11ef-b8af-92fbcf53809c.png

漏洞复现

因为DC和DC2互为主备,所以随便选一个进入,然后创建一个普通域用户user。这个普通域用户user是用于win10域成员登录的。

假设我们事先拿下了win10域成员,然后在win10上拿到了rangenet/user的账号密码。

ee965e72-406e-11ef-b8af-92fbcf53809c.png

1.在kali上开启NTLM中继,中继目标是主域控DC,中继成功之后直接执行DCSYNC来dump域控凭据。脚本会同时开启SMB、HTTP、WCF、WAW服务用来执行NTLM中继。

ee9bc240-406e-11ef-b8af-92fbcf53809c.png

2.在使用printbug攻击DC2,使DC2强制使用NTLM登录kali,这样kali就能通过NTLM中继拿到sessionkey。

ee9f6f76-406e-11ef-b8af-92fbcf53809c.png

3.通过NTLM中继+zerologon漏洞组合利用,模拟DC2$机器账户的身份,使用zerologon绕过NETLOGON协议认证,然后使用窃取到session key,再调用DRSUAPI执行DCSYNC操作,以DC2$的身份向DC请求同步凭据,然后域内凭据就被dump出来了。

eea2c2fc-406e-11ef-b8af-92fbcf53809c.png

之后凭据可以用来登录任意域控或域成员。

eea7bb68-406e-11ef-b8af-92fbcf53809c.png

eebaedaa-406e-11ef-b8af-92fbcf53809c.png

总结:这是一种无须重置域控密码即可使用zerologon漏洞攻击域控或提权的方法,但是利用条件又比直接zerologon漏洞攻击多出了许多。利用条件需要双域控同时需要一个域成员账号密码,但是没有重置密码的风险。

zerologon漏洞只需要域控主机名和ip即可利用,利用条件简单,但是一旦将域控密码置空就会造成域控脱域。因为在Active Directory中重置域控制器计算机帐户密码为空的那一刻,DC 处于不一致状态。因为存储在注册表和内存lsass.exe中的加密计算机帐户密码不会更改,但是Active Directory中同一帐户的密码现在已更改,这将影响从此域控制器到此域控制器的身份验证。如果重新启动域控制器,则各种服务将不再启动,因为它们想要从Active Directory读取信息。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15865

    浏览量

    175225
  • 计算机
    +关注

    关注

    19

    文章

    7160

    浏览量

    87102
  • 服务器
    +关注

    关注

    12

    文章

    8680

    浏览量

    84498
  • 中继
    +关注

    关注

    0

    文章

    51

    浏览量

    14556

原文标题:NTLM中继+Zerologon漏洞利用的方法

文章出处:【微信号:蛇矛实验室,微信公众号:蛇矛实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    multisim10中继电器的使用方法

    multisim10中继电器的使用方法,如何驱动照明电路
    发表于 04-25 11:08

    漏洞真实影响分析,终结网络安全的“狼来了”困境

    部署的时间延迟,和漏洞利用方法的普及因素的一条动态变化曲线。距离漏洞爆发的时间不同,漏洞的影响也会有比较大的差异,比如在
    发表于 12-25 15:18

    Spectre和Meltdown的利用漏洞的软件影响和缓解措施

    以下指南简要概述了称为Spectre和Meltdown的利用漏洞的软件影响和缓解措施,更准确地标识为: 变体1:边界检查绕过(CVE-2017-5753)变体2:分支目标
    发表于 08-25 08:01

    中继,帧中继是什么意思

    中继,帧中继是什么意思 帧中继技术是在开放系统互联(OSI)第二层上用简化的方法传送和交换数据单元的一种技术。 帧中继仅完成OSI的
    发表于 03-18 15:37 4949次阅读

    中继,帧中继技术原理是什么?

    中继,帧中继技术原理是什么? 帧中继技术是在开放系统互联(OSI)第二层上用简化的方法传送和交换数据单元的一种技术。 帧中继仅完
    发表于 04-06 11:44 4778次阅读

    基于MSOffice漏洞利用技术的研究_王俊卿

    基于MSOffice漏洞利用技术的研究_王俊卿
    发表于 03-17 17:14 0次下载

    基于指数迭代分割的弯道下中继点选择方法

    中继节点的选择决定了车际网中消息传播的效率和可靠性。现有的中继节点选择方法多集中于高速的直道和城市的十字路口场景,对于山区环境的弯道场景研究较少。提出一种基于指数迭代分割,适用于弯道下的中继
    发表于 11-22 10:39 1次下载
    基于指数迭代分割的弯道下<b class='flag-5'>中继</b>点选择<b class='flag-5'>方法</b>

    基于斜率预测的信道中继选择方法

    一般的协作中继选择方法利用过时的信道状态信息(CSI)进行中继选择,准确的信道预测能提供精确的CSI用于中继选择。已有的信道预测方法往往不能
    发表于 01-03 11:11 0次下载

    Axure实现中继器的筛选功能方法步骤介绍

    本文为大家介绍Axure实现中继器的筛选功能方法
    发表于 02-01 14:49 5958次阅读
    Axure实现<b class='flag-5'>中继</b>器的筛选功能<b class='flag-5'>方法</b>步骤介绍

    微软Windows Defender出现漏洞 攻击者可利用漏洞对计算机进行控制

    最近安全人员发现了一个Windows Defender漏洞,这个漏洞是一个远程代码执行漏洞,通过追溯微软自己使用的开源归档工具发现的。攻击者可以利用这个
    发表于 06-07 01:27 1129次阅读

    西门子ICS软件中的漏洞遭披露,难以阻止黑客利用漏洞

    西门子用于维护核电站等大型关键基础设施的工业控制系统存在漏洞,所幸该漏洞还未在野外被利用
    的头像 发表于 07-16 15:24 4611次阅读

    黑客正在积极利用该操作系统中的一个漏洞,称为Zerologon

    为了解决此漏洞,Microsoft建议用户立即应用2020年8月的安全更新CVE-2020-1472。CVE前缀是英语中``常见漏洞和披露‘’的缩写。
    的头像 发表于 10-16 14:54 1743次阅读

    lsarelayx NTLM中继工具

    ./oschina_soft/lsarelayx.zip
    发表于 06-16 09:55 0次下载
    lsarelayx <b class='flag-5'>NTLM</b><b class='flag-5'>中继</b>工具

    NTLM身份验证:揭秘Windows网络安全的秘密武器

    什么是NTLMNTLM是一种身份验证协议,用于验证IT系统中的用户身份。它于1993年发布,后来于1998年通过NTLMv2进行了改进。NTLM是较旧的LM协议的继承者,该协议曾在20世纪80年代
    的头像 发表于 09-23 08:04 1003次阅读
    <b class='flag-5'>NTLM</b>身份验证:揭秘Windows网络安全的秘密武器

    西门子中继器使用方法及作用

    西门子中继器在工业自动化和通信网络中扮演着重要角色,其主要使用方法和作用如下: 使用方法 安装 : 将中继器插入电源插座,确保其供电正常。 将中继
    的头像 发表于 09-05 09:45 95次阅读