NTLM-relay攻击的原理与实现

前言

由浅入深的讲解ntlm-relay攻击的相关原理以及最终的实现。

NTLM相关

1.用处

NTLM是一种windows的验证用户身份的一种机制,多存在于工作组环境下。可以与smb、http、ldap等协议嵌套使用,攻击者有可能利用这几种协议来进行NTLM-relay攻击。

2.认证流程

  1. 客户端向要访问的机器发送用户名,这个被访问的机器称为服务端。
  2. 服务端向客户端发送一个challenge。
  3. 客户收到challenge后用自己的 NTML hash对其进行加密生成response , 并将response发送给服务端
  4. 服务端将response、challenge、客户端的用户名一起发送给域控。
  5. 域控将用户名对应的hash用challenge进行加密后与response进行对比,如果一样那么认证成功。
    在这里插入图片描述

3.其他术语

NT-hash/NTLM-hash

通常是指Windows系统下Security Account Manager中保存的用户密码hash,也可以理解成mimikatz中就跑出来的哈希,也叫做ntlm-hash。
NT-hash可以直接用于pass the ticket攻击。
在这里插入图片描述

LM-hash

更早的时候windows用的是LAN Manager Challenge/Response 验证机制,简称LM。该方案比NTLM响应时间更早,安全性更低。而LM-hash就是当时配合LM机制所使用的一种hash,而现在基本已经弃用,NT-hash的出现就是为了代替LM-hash。
在这里插入图片描述

Net-NTLM hash

这个是指的是ntlm认证第三阶段的时候客户端发送给服务器的用自己的hash加密challenge后的那段密文也就是response。
在这里插入图片描述

SSPI

Security Service Provider Interface 或Security Support ProviderInterface。这是Windows定义的一套接口,此接口定义了与安全有关的功能函数,将整个安全认证模块化,就好比是各种各样的零件库,别人需要造什么样的车就拿什么样子的零件。这样可以使得其他协议可以去根据自己的需求进行个性化定制,进而实现一个适合于自身的安全认证方式。

SSP

结合SSPI生成一个针对于具体需求的安全认证机制,根据SSPI所生成的具体产物,就称为SSP。例如微软的NTLMSSP(NTLMSecurity Support Provider)为NTLM认证的实现提供了基本功能,是WindowsSSPI(SecuritySupport Provider Interface )的一种具体实现。除了NTLMSSP之外还有kerberos,Cred SSP,Digest SSP等。

NTLM-relay原理

在这里插入图片描述
基本流程如上图所示,在客户端的视角里,攻击者就是他要访问的服务端,它在与攻击者这台主机进行NTLM认证,而整个流程也只有攻击者这台主机与其进行交互。
在服务端的视角里,攻击者是客户端,是攻击者在向服务端证明自己的身份。通过中间人攻击的方法,攻击者可以伪造成客户端来完成身份验证。
在这里插入图片描述
攻击者所做的事情只是把所有客户端的请求relay到服务端,并把所有服务端的请求relay到客户端。而在服务端看来,一直以来只有攻击者在跟他交互,所以自然而然就认为攻击者就是客户端,这样子攻击者就达到了伪造成真正客户端的目的。

1.不同版本的NTLM认证对应的response

主要分为NTLMv1版本与NTMLv2版本,NTLMv1版本的response可以很容易爆破出用户的hash,相比较而言不安全。而NTLMv2版本使用了HMAC_MD5函数,所以通过response很难被爆破出真正的用户hash,只能通过暴力破解。

NTLM-relay攻击

1.如何获取到NET-NTLM hash

1.1通过responder或者inveigh工具

这两个工具利用的是LLMNR和NetBIOS欺骗。首先我们需要知道Windows系统名称解析顺序为:

  1. 本地hosts文件(%windir%\System32\drivers\etc\hosts)

  2. DNS缓存/DNS服务器

  3. 链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBT-NS) 当用户解析一个无法被解析的主机名的时候,就会走LLMNR协议或者NBT-NS协议。这时候我们就可以做手脚来让用户认为我们就是它想访问的目标,进而跟我们进行NTLM认证,这样子我们就能够获取到其NET-NTLM。
    hash。

Responder:
python编写,下载地址:
https://github.com/lgandx/Responder
Inveigh:
powershell编写,下载地址:
https://github.com/Kevin-Robertson/Inveigh

1.1.1 Inveigh

管理员权限打开攻击机器的powershell依次输入以下命令:
. .\Inveigh.ps1
Invoke-Inveigh -ConsoleOutput Y
如果有执行策略限制再加一条Set-ExecutionPolicy Bypass -Scope Process
在这里插入图片描述
在被攻击机器上的运行框输入一个任意的主机名并点击确定:
在这里插入图片描述
这时候返回攻击机,发现已经抓取到NET-NTLM hash
在这里插入图片描述
如果对方访问的是正确的主机,则显示的是:
在这里插入图片描述
它与域控进行NTLM协商,并没有经过我们的攻击机,也没有走LLMNR与NETBIOS协议。

1.1.2responder

攻击机执行responder -I eth0 -f,I后面跟的是当前的网卡名字。被攻击机上执行的操作与Inveigh一样,得到结果如下,依旧抓到了目标用户的NET-NTML hash。
在这里插入图片描述

2.破解NET-NTLM hash(v2)

利用hashcat可以完成,用hashcat执行命令:hashcat -m 5600 <net-ntlm hash> 密码字典路径 -force -show
我选择将上述命令放在.sh文件中直接执行。结果如下:
在这里插入图片描述
得到密码为123
破解ntlmv1的hash请参考Windows内网协议学习NTLM篇之Net-NTLM利用

3.其它方式的NTLM-relay攻击

当破解不出密码的时候,我们就需要用到其他的NTLM-relay攻击了,是真正的将凭据relay到其他的主机上,如果这个凭据权限足够,那么就可以控制对方主机,所以凭据的权限很重要,但是这属于一种被动攻击,能获得什么权限全看运气,因为ms06068已经被修复,所以不能将凭据relay到凭据真正持有者的主机,只能relay到其他主机。

这个攻击的前提是:

  1. 目标主机没有开启smb签名。这里提供一种关闭smb签名的方式,这里说一下,一般情况下域控默认开启smb签名,其余域内机器不开启

修改注册表的两个键值为0:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"requiresecuritysignature"=dword:00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lanmanworkstation\Parameters"requiresecuritysignature"=dword:00000000

  1. 使用Runfinger脚本探测出主机
    修改完成后使用responder其中的一个名为Runfinger的脚本探测是否设置成功,只有这里显示成功的才能进行攻击,如果探测不出来则无法进行攻击,即使有一个主机你知道它确实满足条件,但Runfinger脚本就是探测不出来,那么这个主机也是无法被攻击的
    在这里插入图片描述
    攻击无法攻击的机器会显示如下错误:
    在这里插入图片描述

当我们确定域内有可攻击的主机后,就可以开展以下攻击。

3.1利用impacket的smbrelayx

第一步:打开responder并修改配置文件responder.conf,将smb与http两项改为Off,注意大小写,这里面responder的作用就是,创建一个可以被访问的虚拟路径并且模拟与其他主机进行NTLM认证交互,而smbrelayx脚本进行ntlm-relay。
在这里插入图片描述
第二步输入命令./smbrelayx.py -h 受害者ip -c '要执行的命令',这时候只要域内主机触发了LLMNR协议即可,触发方式与上免例子的触发方式一致,即通过smb协议或者http协议访问一个不存在的主机。
在这里插入图片描述

3.2利用impacket的ntlmrelays

第一步跟3.1中第一步相同,操作responder,第二步输入以下命令,。
./ntlmrelayx.py -t 受害者ip -c whoami -smb2support
在这里插入图片描述
此时只要当前域内有主机通过smb协议或者http协议访问了不存在的主机,我们就会利用其用户凭据去登陆这台192.168.124.139,并执行命令whoami。

3.3利用responder里面的MultiRelay.py获取shell

这种攻击的前提条件跟前面几种一模一样。第一步打开responder,改配置文件。第二步执行MultRelay脚本。执行成功后,如果获取到足够权限的用户凭据,就可以控制被攻击机并获得其shell。
命令:./MultiRelay.py -t 受害者ip -u ALL
在这里插入图片描述
这时候我们使用域内一个域管的主机触发smb协议去访问一个不存在的主机,然后看攻击机就会发现反弹回了shell,这个shell是受害者的shell,而不是那台域管主机的shell,最后一行执行了whoami。
在这里插入图片描述

附录:其他正常用户触发攻击的方式

只要其他正常的域内用户通过以下两种方式访问了一个错误的主机,那么我们作为攻击者就可以窃取到其凭据进行ntlm-relay攻击。

通过http协议触发

在这里插入图片描述
在这里插入图片描述

通过smb协议触发

在这里插入图片描述
或者在cmd中执行net use \\wasdf也可以触发smb协议。

补充:ntlm-relay与cve-2019-1040的其他理解

  1. 通过smb得到的ntlm-hash一般是无法进行身份认证的,最多只能进行RCE,因为这种ntlm-hash有mic标识位,并且这种标识为无法改变。如果可以移除掉mic标识位,那么通过smb得到的ntlm-hash就可以配合ntlm-relay攻击进行身份验证并执行其他操作,例如修改其他账号的ldap属性。
  2. cve-2019-1040可以删除通过smb得到的ntlm-hash的mic标识位,并且使得此hash依旧有效,可以配合ntlm-relay进行身份验证。
  3. spoolservice漏洞可以出发目标主机对当前主机的smb身份验证,如果对exchange服务器进行此漏洞的利用,会使得exchange服务器的机器账户来进行smb身份验证。
  4. exchange机器账户默认可以修改Domain object对象的所有属性,domain object就是域内所有的主机与用户。
  5. 使用exchange机器账户的权限,修改域控主机的基于资源的约束性委派的配置可以控制域内所欲主机。或者选择给域内某个主机赋予dcsync权限,这样子也能变像获得域内所有主机的权限。
  6. ntlm-relay不能将ntlm认证relay回原机器。例如截取到exchange主机的ntlm-hash,可以将其relay到域内其他主机上进行rce攻击,但不能将其relay回exchange主机进行命令执行。

ntlm-relay攻击的前提是,smb认证获取的机器没有开启smb签名,例如从域控制器或者exchange server上获取到的smb认证请求就无法被relay,因为它们默认开启smb签名,而cve-2019-1040漏洞绕过了这个限制,使得域控制器即使开启了签名,也能成功利用进行ntlm-relayh。攻击者利用打印机漏洞,让exchange sever对攻击者机器做smb认证,然后攻击者机器将这个请求修改并relay到域控制器上进行攻击,这个修改可以实现给指定用户添加dcsync权限、添加基于资源的约束性委派权限等。

参考文章

Windows下的密码hash-NTLM-hash和Net-NTLM-hash介绍

跟着玄武大佬学NTLM relay攻防

NTLM Relay

内网渗透研究:LLMNR和NetBIOS欺骗攻击分析

内网渗透测试:NTLM Relay攻击分析

Windows内网协议学习NTLM篇之Net-NTLM利用

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
NTLM Relay 是一种攻击技术,利用了 NTLM(Windows 网络身份验证协议)的漏洞。该攻击允许黑客在网络中伪装成受害者与服务器进行通信,从而获取敏感信息或执行一些恶意操作。 NTLM Relay 攻击原理如下: 1. 受害计算机通过 NTLM 协议与服务器进行身份验证。在此过程中,受害计算机和服务器之间会进行一系列的挑战-响应验证,包括凭据传递和会话密钥生成。 2. 黑客在网络中进行监听,并截获受害计算机与服务器之间的 NTLM 通信数据。这可以通过中间人攻击或通过 ARP 欺骗攻击完成。 3. 黑客将截获的 NTLM 通信数据传输给目标服务器,冒充受害者的身份与服务器进行通信。 4. 目标服务器接收到黑客发送的伪造的验证请求并验证其身份。由于黑客已经截获到了真实的 NTLM 通信数据,因此服务器会认为该请求来自于受害者。 5. 服务器将响应返回给黑客,并黑客将该响应转发给受害计算机。 6. 受害计算机将响应解密并发送给黑客。 通过 NTLM Relay 攻击,黑客可以实施多种恶意操作,例如获取受害者的用户名和密码、执行远程命令、篡改数据等。这种攻击技术在企业中尤其危险,因为它可能导致黑客获取管理员权限并在网络中横向移动,进一步危害整个系统的安全。 为了防止 NTLM Relay 攻击,企业应采取以下措施:禁用 NTLM 认证、启用 Kerberos 认证、使用防火墙限制对 NTLM 端口的访问、使用多因素身份验证、及时修补操作系统中的漏洞并使用最新版本的软件。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shanfenglan7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值