前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NTLM重放攻击

NTLM重放攻击

作者头像
Ms08067安全实验室
发布2024-01-11 18:22:17
2640
发布2024-01-11 18:22:17
举报
文章被收录于专栏:Ms08067安全实验室

NTLM重放攻击

Kerberos域网络中,默认NTLM协议是主要的替代认证协议,几乎伴随着Kerberos协议,NTLM协议的安全性会对域网络产生重要的冲击,所以我们单独成立一个独立的章节介绍与NTLM协议相关的漏洞和攻击手段。

NTLM Relay重放攻击(Replay Attacks)又称中间人攻击、回放攻击,是指攻击者截取认证相关的报文,对报文进行一定的篡改后,发送给目标主机,达到欺骗目标系统的目的,主要用于身份认证过程,破坏认证的正确性。重放攻击在任何网络通过程中都可能发生,是黑客常用的攻击方式之一。

NTLM重放攻击由最早由Dystic在2001年提出,用于攻击SMB协议的NTLM认证过程,作者发布了对应的SMBRelay攻击工具;2004年,发展为由HTTP协议重放至SMB协议的NTLM认证过程,即在HTTP协议中使用的NTLM认证信息重放至SMB协议的NTLM认证过程,该方式在Black Hat会议上发布,但是作者未公开发布对应的攻击工具,直到2007年,类似功能的工具才被集成到MetaSploit平台,可以进行跨应用层协议的重放攻击;2008年,HTTP重放至HTTP的NTLM重放攻击被实现(MS08-067,该补丁包含多个漏洞,也包含著名的远程攻击漏洞);最近这些年关于NTLM的重放攻击在很多基于NTLM认证的协议中被验证,例如Exchange Web Service、IMAP、POP3、SMTP等,导致了不少重大漏洞,后面我们将对几个最新的典型漏洞进行介绍。

NTLM重放攻击概念

NTLM重放攻击,开始的时候比较好理解,随着微软安全措施的加强和漏洞的成因更复杂化,后面理解NTLM重放攻击更加困难,为了能让读者们能够清晰掌握,我们从最基本的应用场景开始,逐渐深入,层层分解剖析NTLM重放攻击。

NTLM重放攻击原理示意图

我们从图上最简单的场景开始。在内网中有一个客户端,有一个应用服务器,应用服务器在445端口开放了SMB服务;在客户端、应用服务器之间,存在一个中间人攻击者,在445端口开放了伪造的SMB服务。中间人攻击者通过ARP、NETBIOS等欺骗手段,使得客户端认为中间人就是应用服务器,开始连接中间人的445端口SMB服务,并发起NTLM认证,中间人攻击者将NTLM认证重放至真正的应用服务器,从而获取访问真正应用服务器SMB服务的权限。具体步骤如下:

1、客户端与中间人攻击者建立了SMB服务的TCP连接会话(会话A),在会话A的基础上,客户端以eviluser的身份向中间人攻击者发送NTLM认证协商报文NTLM_NEGOTIATE;

2、中间人攻击者与应用服务器建立SMB服务的TCP连接会话(会话B),在会话B基础上,将收到的NTLM_NEGOTIATE报文重放转发至应用服务器;

3、应用服务器在会话B中发送NTLM_CHALLENGE挑战报文给中间人攻击者,中间人攻击者将在会话B中收到的NTLM_CHALLENGE挑战报文通过会话A转发给客户端;

4、客户端使用eviluser的口令NTLM值加密挑战报文得到NTLM_AUTHENTICATE认证报文,通过会话A发送给中间人,中间人攻击者将在会话A中收到的认证报文通过会话B转发给应用服务器;

5、应用服务器依托认证服务器(本书中等同于域服务器)通过认证后,认为中间人攻击者是合法eviluser客户端,真正的客户端收到认证通过的消息后,认为中间人攻击者是合法的应用服务器。

在这个场景中,从客户端的角度看,中间人攻击者开放了服务,并且在认证后能够提供正常的服务,所以中间人攻击者就是应用服务器;从应用服务器的角度看,中间人攻击者发起了服务请求,并进行了eviluser账号的合法认证,所以中间人攻击者就是客户端。这种重放攻击导致的结果是中间人重放eviluser账号的认证信息至应用服务器,获取了在应用服务器的访问权限,这也是NTLM重放攻击和NTLM中间人攻击概念等同的原因。在2005年左右,这个应用场景非常普遍,在现在的Windows操作系统中,读者可能认为这个场景不大可能以这么漏洞百出的直白方式出现,读者可以携带这个疑问进入后面的分析。

将上述的NTLM重放攻击应用场景进行提炼,概括为基本模式,可以表述为在攻击主机上开放伪造的SMB、HTTP等服务,通过ARP、NETBIOS或者社会工程学的方式诱骗高权限账号访问这些伪造的服务,一旦有来访者,便要来访者提供NTLM认证信息,攻击者将这些认证信息重放至重要的目标服务器,从而获取目标服务器的高访问权限。

上图中,有一个地方需要注意,客户端先发起服务请求,例如SMB、HTTP等,在服务请求的过程中需要有认证,认证发生在服务请求的会话中,认证完成后,才可以开始后续的访问行为,可以将服务请求的会话分作2个阶段,即认证阶段和访问阶段。前文提到,微软为了方便不同的应用层协议调用NTLM协议进行认证,提供了NTLM SSPI统一接口供应用层协议调用。

HTTP、POP3、SMTP、LDAP、SMB等应用层服务,不仅仅支持NTLM协议,还支持其他众多认证协议,例如Kerberos、NTLM、BASIC、MD等,这就注定应用层协议不能集成认证协议。为了解决这个问题,IETF小组设定了GSSAPI标准,用于封装认证协议,应用层协议通过简单调用GSSAPI接口即可实现认证功能,微软参照GSSAPI为Windows系统实现了一套对应的接口SSPI。在上面的例子中,SMB协议调用NTLMSSPI实现NTLM认证,认证完成后,SMB才开始后续的访问操作,HTTP、LDAP等协议类似。

注意,认证协议的具体信息和流程,与应用层协议无关,即HTTP协议中的NTLM认证、与SMB协议中的NTLM认证完全相同,这是后续跨应用层协议NTLM重放攻击的基础,例如由HTTP->SMB的重放攻击,上图中是SMB->SMB的重放攻击。

为了对抗NTLM重放攻击,微软已经推出多个安全举措,主要包括如下几个:

1、强制SMB签名和通信会话签名,防止攻击者重放NTLM身份验证消息以建立SMB和DCE/RPC会话;

2、启用消息完整性代码(MIC),防止攻击者篡改NTLM认证消息本身;

3、启用增强型身份验证保护(EPA),防止攻击者将NTLM认证消息重放至TLS会话,例如连接到各种HTTPS Web服务,访问用户电子邮件(通过中继到OWA服务器)、连接到云资源(通过中继到ADFS服务器)等各种操作;

4、强制LDAPS签名,在域服务器上强制启用LDAP签名和LDAPS安全通道绑定,使得LDAP协议转为LDAPS协议,符合第3点的满足要求。

我们以SMB签名为例说明微软的安全措施是如何发挥保护作用的。签名保护最重要的是签名密钥,算法、内容公开。上图中,中间人攻击者可以获取客户端和应用服务器之间的所有交换报文,签名机制为了对抗这种模式,就不能让中间人拿到或者解开密钥。有2种方式可以实现,一是不交换签名密钥,而采用事先约定的密钥;二是采用公私钥的方式交换密钥。目前,在基于NTLM认证的模式下,采用第1种方式。密钥生成的具体流程如下:

1、客户端基于eviluser账号的口令NTLM值,使用固定的算法对固定的内容进行加密计算,得到SessionKey,作为应用层协议会话的会话签名密钥,SessionKey的具体算法如下;

代码语言:text
复制
// NTLMv1版本下

Key = MD4(NT Hash)



// NTLMv2版本下

NTLMv2_Hash = HMAC_MD5(NT Hash, Uppercase(Username) + UserDomain)

Key = HMAC_MD5(NTLMv2_Hash, HMAC_MD5(NTLMv2_Hash, NTLMv2_Response + Challenge))

2、认证服务器基于eviluser账号的口令NTLM值,使用固定的算法对固定的内容进行加密计算,得到相同的SessionKey,并将SessionKey通过安全会话返回给应用服务器(应用服务器会依托域服务器进行认证)。

在上述过程中,客户端和应用服务器分别拿到了相同的会话密钥SessionKey,并使用SessionKey进行签名。由于没有交换,中间人攻击者无法获取SessionKey。因此,即使中间人攻击者已经认证到应用服务器,但是由于无法进行签名,不能与应用服务器进行后续的会话操作,即使通过重放攻击完成认证也没有实际意义,这就是微软采用签名对抗NTLM重放攻击的原理。

会话签名的安全措施会产生几个细节问题,一是并不是所有的系统都支持签名,尤其是老版本的Windows操作系统,因此是否签名需要协商,NTLM协议的NTLM_NEGOTIATE阶段会协商是否需要签名;二是并不是所有的应用层协议都支持签名,例如HTTP几乎不支持,或者应用层协议本身已经加密,所以不再需要签名,例如LDAPS等。第1种情况,后续导致了几个典型的漏洞;第2种情况,攻击者只需将认证信息重放至不需要签名的应用层协议,可继续完成NTLM重放攻击,例如CVE-2017-8563漏洞,就是将认证信息重放至LDAPS协议,因为LDAPS协议拒绝采用签名模式。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ms08067安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档