CATALOG
- NTLM相关
-
- 1.用处
- 2.认证流程
- 其他术语
-
- NT-hash/NTLM-hash
- LM-hash
- Net-NTLM hash
- SSPI
- SSP
- NTLM-relay原理
-
- 不同版本的NTLM认证对应的response
- NTLM-relay攻击
-
- 如何获取到NET-NTLM hash
-
- 通过responder或者inveigh工具
-
- Inveigh
- responder
- 破解NET-NTLM hash(v2)
- 其它方式的NTLM-relay攻击
-
- 利用impacket的ntlmrelays
-
- smb协议访问:
- http协议访问
- 参考文章
NTLM相关
1.用处
NTLM是一种windows的验证用户身份的一种机制,多存在于工作组环境下。可以与smb、http、ldap等协议嵌套使用,攻击者有可能利用这几种协议来进行NTLM-relay攻击。
2.认证流程
1.客户端发送一个明文的用户名给服务端,说明自己是谁。
2.如果当前用户存在,则服务端先会随机生成一段challenge,可以理解成一个随机字符串,然后用客户端所声明的用户的hash对当前这段challenge进行加密生成另一段密文,我叫它userhash-challenge。然后服务端会把challenge也就是最初生成的随机字符串发送给客户端。
3.客户端收到challenge,用自己密码的hash对其进行加密并将加密结果发送给服务器,这个发送给服务器的密文我们一般称为Net-NTLM hash或者是response。
4.服务器收到客户端发送过来的加密数据,将其与之前的userhash-challenge进行比较,如果相同则认证成功。
其他术语
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到客户端。而在服务端看来,一直以来只有攻击者在跟他交互,所以自然而然就认为攻击者就是客户端,这样子攻击者就达到了伪造成真正客户端的目的。
不同版本的NTLM认证对应的response
主要分为NTLMv1版本与NTMLv2版本,NTLMv1版本的response可以很容易爆破出用户的hash,相比较而言不安全。而NTLMv2版本使用了HMAC_MD5函数,所以通过response很难被爆破出真正的用户hash,只能通过暴力破解。
NTLM-relay攻击
如何获取到NET-NTLM hash
通过responder或者inveigh工具
这两个工具利用的是LLMNR和NetBIOS欺骗。首先我们需要知道Windows系统名称解析顺序为:
-
本地hosts文件(%windir%\System32\drivers\etc\hosts)
-
DNS缓存/DNS服务器
-
链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBT-NS)
当用户解析一个无法被解析的主机名的时候,就会走LLMNR协议或者NBT-NS协议。这时候我们就可以做手脚来让用户认为我们就是它想访问的目标,进而跟我们进行NTLM认证,这样子我们就能够获取到其NET-NTLM hash。
Inveigh
以管理员权限
打开攻击机器的powershell依次输入以下命令:
. .\Inveigh.ps1
Invoke-Inveigh -ConsoleOutput Y
如果有执行策略限制再加一条Set-ExecutionPolicy Bypass -Scope Process
在被攻击机器上的运行框输入一个任意的主机名并点击确定:
这时候返回攻击机,发现已经抓取到NET-NTLM hash
如果对方访问的是正确的主机,则显示的是:
它与域控进行NTLM协商,并没有经过我们的攻击机,也没有走LLMNR与NETBIOS协议。
responder
攻击机执行responder -I eth0 -f
,I后面跟的是当前的网卡名字。被攻击机上执行的操作与Inveigh一样,得到结果如下,依旧抓到了目标用户的NET-NTML hash。
破解NET-NTLM hash(v2)
利用hashcat可以完成,用hashcat执行命令:hashcat -m 5600 密码字典路径 -force -show
我选择将上述命令放在.sh文件中直接执行。结果如下:
得到密码为123
破解ntlmv1的hash请参考Windows内网协议学习NTLM篇之Net-NTLM利用
其它方式的NTLM-relay攻击
利用impacket的ntlmrelays
./ntlmrelayx.py -t smb://192.168.124.139 -c whoami -smb2support
被害者只需要通过smb协议或者http协议访问我们的攻击机即可。
smb协议访问:
http协议访问
参考文章
Windows下的密码hash-NTLM-hash和Net-NTLM-hash介绍
跟着玄武大佬学NTLM relay攻防
NTLM Relay
内网渗透研究:LLMNR和NetBIOS欺骗攻击分析
内网渗透测试:NTLM Relay攻击分析
Windows内网协议学习NTLM篇之Net-NTLM利用