“燕云实验室”是河北千诚电子科技有限公司成立的网络安全攻防技术研究实验室。专注于web安全,网络攻防,安全运维,应急溯源方面的研究,开发成果应用于产品核心技术转化,国家重点科技项目攻关。
漏洞概述
北京时间3月12日,Windows 10曝出一个威力惊人的可蠕虫化漏洞,漏洞编号为(CVE-2020-0796),该漏洞存在于Windows的SMBv3.0(服务消息块协议)中,利用此漏洞无需用户授权验证,可远程实现目标系统恶意代码执行,该漏洞类似于永恒之蓝。目前微软已紧急发布SMBv3漏洞的安全通告和修复补丁。
该漏洞与“永恒之蓝”系列漏洞极为相似,都是利用Windows SMB漏洞远程攻击获取系统最高权限,黑客一旦潜入,可利用针对性的漏洞攻击工具在内网扩散,综合风险不亚于永恒之蓝。除了直接攻击SMB服务端造成远程代码执行(RCE)外,该漏洞的亮点在于对SMB客户端的攻击,攻击者可以通过构造一个“特制”的网页、压缩包、共享目录、OFFICE文档等,向攻击目标发送,一旦被攻击者打开则瞬间触发漏洞受到攻击。
据了解,Microsoft服务器消息块(SMB)协议是Microsoft Windows中使用的一项Microsoft网络文件共享协议。在大部分windows系统中都是默认开启的,用于在计算机间共享文件、打印机等。
Windows 10和Windows Server 2016引入了SMB 3.1.1 。本次漏洞源于SMBv3没有正确处理压缩的数据包,在解压数据包的时候使用客户端传过来的长度进行解压时,并没有检查长度是否合法,最终导致整数溢出,攻击者可利用该特性远程执行任意系统代码,控制系统权限。
影响范围
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)
漏洞排查
查看“Windows规格”中的“版本号”,如果版本号显示为1903或1909,则证明受此漏洞影响,包括x64和x86的操作系统,建议立即安装补丁。
进一步确认有无该漏洞也可以通过以下工具检测。
Python检测脚本:
https://github.com/ollypwn/SMBGhost/blob/master/scanner.py
复制
import socket
import struct
import sys
from netaddr import IPNetwork
pkt = b'\x00\x00\x00\xc0\xfeSMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00\x08\x00\x01\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x02\x00\x00\x00\x02\x02\x10\x02"\x02$\x02\x00\x03\x02\x03\x10\x03\x11\x03\x00\x00\x00\x00\x01\x00&\x00\x00\x00\x00\x00\x01\x00 \x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00'
subnet = sys.argv[1]
for ip in IPNetwork(subnet):
sock = socket.socket(socket.AF_INET)
sock.settimeout(3)
try:
sock.connect(( str(ip), 445 ))
except:
sock.close()
continue
sock.send(pkt)
nb, = struct.unpack(">I", sock.recv(4))
res = sock.recv(nb)
if res[68:70] != b"\x11\x03" or res[70:72] != b"\x02\x00":
print(f"{ip} Not vulnerable.")
else:
print(f"{ip} Vulnerable")
复制
Nmap检测脚本:
https://github.com/cyberstruggle/DeltaGroup/blob/master/CVE-2020-0796/CVE-2020-0796.nse
复制
Powershell检测脚本:
https://github.com/T13nn3s/CVE-2020-0976/blob/master/CVE-2020-0796-Smbv3-checker.ps1
复制
漏洞修复
安装补丁:
微软官方已针对该漏洞发布了安全补丁KB4551762,建议受影响用户开启系统自动更新安装该补丁进行防护。
可从以下链接下载漏洞补丁:
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4551762
复制
官方对于漏洞的声明和补丁:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796
复制
弥补方式:
若有特殊业务需求无法安装漏洞补丁。可以通过以下方式临时补救该漏洞。
禁用SMBv3压缩:
右键点击桌面左下角的Windows图标,在弹出菜单中选择“运行”菜单项,在弹出的运行框中输入regedit,打开注册表编辑器。
“HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters”目录中添加一个DWORD类型的注册表项DisableCompression ,数值为1。
也可以直接关闭主机的(tcp:135/139/445)端口。
声明
署名:CC BY-NC-SA 3.0 CN
文中所涉及的技术,思路和工具仅供以安全为目的的学习交流使用,请勿做非法用途否则后果自负。
