漏洞原理:
Windows系统通过解析 .LNK 后缀文件时,是使用二进制来解析的,而当恶意的二进制代码被系统识别执行的时候就可以实现远程代码执行,由于是在explorer.exe进程中运行的,所以load进内存的时候与当前用户具有相同的权限。
于是攻击者利用这一解析过程的漏洞,将包含恶意二进制的代码被附带进可移动驱动器(或远程共享过程中),受害者使用powershell解析 .LNK 文件后就会被黑客所控制。
受影响版本:
windows 7(32/64位)
windows 8(32/64位)
windows 8.1(32/64位)
windows 10(32/64位,RTM/TH2/RS1/RS2)
windows server 2008(32/64位/IA64)
windows server 2008 R2(64位/IA64)
windows server 2012
windows server 2012 R2
windows server 2016
windows Vista
复现过程:
1. 首先搭建环境为:
攻击机Kali : kali-linux-amd64
靶机Win10 : windows 10 x64 1703版本
靶机Win7 : windows 7 x64 SP1
在攻击之前,首先需要在Kali中安装一个名为Empire的工具,其用法详见 :
https://www.anquanke.com/post/id/87328
2. 使用Empire工具对Win10系统进行攻击,如下图所示:
这里会发现,帝国工具与msf有着差不多的样子。
然后我们使用Windows能够识别的脚本,即生成 .bat文件,然后立刻会存放在/tmp 下:
使用记事本打开bat脚本时,可以看到,恶意二进制代码使用base64加密:
将这个名为launcher.bat的文件在Windows中运行起来时,回到监听端口就可以看到目标主机已经上线 :
如此,Windows就获得了当前用户权限:
3. 对Win7系统进行攻击 :
使用相同的方法,可以看到Win7也已经成功在监听方上线了:
接下来我们进入监听的win7,进行进一步的提权操作(这里我想使用将shell弹回msf进行提权,当然也可以在帝国提权):
这里usemodule code_execution/invoke_shellcode
set Lhost 与 Lport都为msf所在的IP地址和端口:
此处可以看到提权得到的权限为system,而使用mimikatz可以直接获得用户明文密码;
修复建议:
1. 及时针对CVE-2017-8464所对应的补丁进行安装
2. 禁止系统开启U盘自动播放
3. 安装杀软来进行防护